DaftAcademy / daftacademy-python4beginners-autumn2021

6 stars 3 forks source link

Steganography - pytania pomocnicze #20

Open vbaaccess opened 2 years ago

vbaaccess commented 2 years ago

pytania pomocnicze:

1) Rozumiem że możemy korzystać z bibliotek, np struct do odczytu danych w nagłówka, czy os do operacji na plikach.

2) Z początku wykładu zrozumiałem że nie da się od tak sprawdzić czy ogarniamy pip czy to oznacza że w ramach zadania trzeba coś doinstalować ? jakąś bibliotekę ? Czy jeśli się okaże że bez instalowania uda się realizacja to będzie ok ? Czy lepiej poszukać jakiej biblioteki do procesowania i prościej będzie (nie licząc nauki obsługi biblioteki),

3) Rozumiem że dane są ukryte w bitmapie i mamy ich szukać w PixelArray w RGB, i w ALFA. ? czyli w tych czterech bitach ?

4) Czy możecie polecić jakiś artykuł do nauki poruszania się po wielowymiarowych tablicach (macierzach). Ewentualnie czy można założyć że mamy do czynienia tylko z bmp, tylko 2D i najbardziej popularny standardzie , czyli taka tablica pixeli [R,G,B,ALFA]. Bo to chyba dokładnie od konkretnego momentu by się zaczynała informacja o pixelach.

Nawiązując do przykładu: 5) Czy sprawdzamy pary pixeli (1i2, 3i4 itd) , czyli docelowy ASCII"wyciągamy" z RGBARGBA (gdzie A to alfa) czy jakoś inaczej?

6) Czy zaczynamy sprawdzanie od samego początku pliku? czy mamy jakoś wyszukać informację od którego miejsca sprawdzać ?

7) Jeśli sprawdzamy cały plik (pkt6) to rozumiem że jak trafimy na literki EOF, to kończymy. Czy mamy tez zwracać te literki EOF? czy tylko poprzedzające ?

8) Rozumie że dane są jawne (nieszyfrowane znaki ASCII)

krwiozercza-szynszyla commented 2 years ago

Rozumiem że możemy korzystać z bibliotek, np struct do odczytu danych w nagłówka, czy os do operacji na plikach.

Można korzystać ze wszystkiego co jest w standardowej bibliotece pythona i wykorzystywać wbudowane moduły. Zadanie da się rozwiązać bez importowania żadnego dodatkowego modułu ale nie będzie to błędem jeżeli ktoś z dodatkowego modułu skorzysta.

czy to oznacza że w ramach zadania trzeba coś doinstalować ?

Nic nie instalujemy.

Rozumiem że dane są ukryte w bitmapie i mamy ich szukać w PixelArray w RGB, i w ALFA. ? czyli w tych czterech bitach ?

Treść zadania dosyć jasno precyzuje ile bajtów zajmuje pojedynczy pixel.

Czy możecie polecić jakiś artykuł do nauki poruszania się po wielowymiarowych tablicach (macierzach).

Nie znam żadnego dobrego a i nie jest to potrzebne. Bajty w pliku nie tworzą wielowymiarowej tablicy.

Ewentualnie czy można założyć że mamy do czynienia tylko z bmp

Znowu, polecenie dosyć jasno mówi o typie plików. Informacja o położeniu pixeli znajduje się w tym samym miejscu dla każdego z formatów bmp wymienionych w podlinkowanym artykule.

tylko 2D

a to istnieją bmp 3D? O.o

najbardziej popularny standardzie

nie mam zielonego pojęcia który jest najbardziej popularny więc nie jestem w stanie odpowiedzieć na tę część pytania

Bo to chyba dokładnie od konkretnego momentu by się zaczynała informacja o pixelach.

Jest możliwe, że informacje o pixelach dla każdego z plików zaczynają się w tym samym miejscu ale tego nie jestem w stanie zagwarantować. Co bezpiecznie można założyć to że informacja o położeniu (offsecie od początku) bajtów odpowiadających pixelom znajduje się w każdym z tych plików w tym samym miejscu bo to definiuje standard.

Czy sprawdzamy pary pixeli (1i2, 3i4 itd) , czyli docelowy ASCII"wyciągamy" z RGBARGBA (gdzie A to alfa) czy jakoś inaczej

To też jest w treści zadania, 2 pixele -> 8 bajtów. To czy kolejne bajty danego pixela interpretowane są jako RGBA, ABGR czy jakoś inaczej nie ma znaczenia. Analizujemy tak jak jest to zapisane w pliku biorąc po kolei kolejne bajty.

Czy zaczynamy sprawdzanie od samego początku pliku

Sprawdzamy bajty odpowiadające pixelom. To gdzie się one znajdują można wyczytać na wiki.

jak trafimy na literki EOF, to kończymy

Jak chcesz ale po EOF nic sensownego tam nie wyczytasz ;p

Czy mamy tez zwracać te literki EOF

Cała wiadomość, EOF też.

Rozumie że dane są jawne

Nie oczekuję, żeby w tym zadaniu łamać bliżej nieokreślone szyfry.

vbaaccess commented 2 years ago

Z próbki (white-small.bmp) udaje mi się 'coś' wyciągną ale nie jest to oczekiwany ciąg tylko TEYTEOL Z dalszych plików ... niestety jest bezsensowny (z white.bmp 29 znaków) ciąg znaków ale totalny ale nie ma tam EOF Co może być źle ? źle odczytuje z ASCII ? ale tylko dla niektórych liter ???

krwiozercza-szynszyla commented 2 years ago

nie wiem, jest dużo sposobów na które można źle rozwiązać to zadanie. Bez spojrzenia w kod nie jestem w stanie powiedzieć nic poza stwierdzeniem, że TEYTEOL nie jest oczekiwanym rezultatem