Oprogramowanie

Ukrywanie plików w obrazach JPEG (JPG)

folder na dłoni

Czy nigdy nie miałeś ochoty ukrycia jakiegoś pliku przed oczami rodziny, narzeczonej czy innych użytkowników? Zapewne miałeś i to nie raz 😉 W tym poradniku zajmiemy się ukrywaniem danych w plikach graficznych.

Sam proces ukrywania nie jest skomplikowany. Wykorzystamy do tego celu polecenie copy, które wraz z przełącznikiem /B, posłuży do łączenia zawartości plików. A więc zaczynamy!

Czym jest ukrywanie danych w plikach graficznych?

Ukrywanie danych w plikach graficznych, znane także jako steganografia, to proces, w którym informacje są dyskretnie ukrywane w obrazach cyfrowych, tak aby były niewidoczne dla nieświadomego obserwatora. Na pierwszy rzut oka to skomplikowana technika kodowania, która pozwala na przechowywanie poufnych informacji, takich jak wiadomości tekstowe, pliki dźwiękowe, wideo, a nawet programy, bez wzbudzania podejrzeń. W przeciwieństwie do kryptografii, która koncentruje się na zabezpieczaniu informacji poprzez ich szyfrowanie, steganografia dąży do tego, aby ukryte informacje były w ogóle niezauważalne dla przeglądającej obraz osoby.

Technika ta może być wykorzystywana zarówno w legalnych, jak i niestety nielegalnych celach. Na przykład, może być stosowana przez korporacje do ochrony własności intelektualnej lub przez osoby poszukujące skutecznego sposobu przechowywania danych wewnętrznych, takich jak hasła lub numery kont bankowych. Z drugiej strony, przestępcy mogą wykorzystywać steganografię do przechowywania i przesyłania nielegalnych materiałów, takich jak choćby materiały propagandowe, które wzbudzałyby podejrzenia, gdyby nie były ukryte lub do przesyłania i infekowania komputerów złośliwym kodem. W tym poradniku zajmiemy się wyłącznie kwestiami legalnymi, które są powszechnie dostępne nie tylko dla studentów informatyki.

Na czym polega steganografia? W dużym skrócie mówiąc, działanie steganografii polega na manipulacji niewielkimi wartościami pikseli obrazu, zmieniając je tak, aby prezentowały ukryte dane. Istnieje wiele metod umieszczania takich informacji, jedną z nich jest metoda LSB (Least Significant Bit), która polega na zmianie ostatniego (najmniej istotnego) bitu piksela, tak aby wartość ta reprezentowała dane wejściowe.

Jak ukryć dane w obrazach JPG?

Tworzymy na Pulpicie dwa pliki, archiwum ZIP o przykładowej nazwie archiwum1.zip oraz plik graficzny grafika1.jpg, które będzie kontenerem dla poufnych danych. Aby dodatkowo zwiększyć stopień bezpieczeństwa, można zastosować szyfrowanie (założyć hasło).

  • Otwieramy wiersz poleceń, Start => Uruchom => cmd
  • Zmieniamy katalog, w naszym przykładzie pliki są na Pulpicie więc wpisujemy:

    cd /d "%userprofile%/Desktop"

  • Łączymy pliki przy użyciu polecenia copy:

    copy /B grafika1.jpg + archiwum1.zip grafika2.jpg

    grafika1.jpg – plik graficzny, w którym ukrywamy dane.
    archiwum1.zip – archiwum ZIP z poufnymi danymi.
    grafika2.jpg – plik wynikowy.

Aby dostać się do archiwum wystarczy otworzyć zdjęcie JPG w dowolnym programie do kompresji plików i folderów. Z drugiej strony, otwierając ten sam plik, przy użyciu przeglądarki grafiki pojawi się zdjęcie. Jest to bardzo prosta metoda, aby szybko ukryć jakieś dane. W ten sposób możemy ukrywać inne typy plików jak TXT, RAR, a nawet EXE.

Proces ukrywania danych w plikach JPG można zautomatyzować przy pomocy skryptu batch. Otwieramy notatnik (Start => Uruchom => notepad) i wklejamy poniższy kod:

echo off
cd /d "%userprofile%/Desktop"
copy /B grafika1.jpg + archiwum1.zip grafika2.jpg

Z menu wybieramy Plik => Zapisz jako. Typ ustalamy na wszystkie pliki, a nazwę pliku jako ukryj.bat (należy pamiętać, aby podać rozszerzenie pliku – BAT).

Analogicznie do ręcznej metody, na Pulpicie tworzymy archiwum ZIP, w tej samej lokalizacji umieszczamy zdjęcie. Dopasowujemy nazwy pliku do schematu i uruchamiamy plik ukryj.bat. W tym akurat przypadku zastosowaliśmy skrypt pod konkretne nazwy plików i dla z góry ustalonej lokalizacji.

Jak widać, metoda jest banalna, lecz niezwykle przydatna. Opisałem tę metodę w ramach wstępu do ukrywania danych, albowiem tę tematykę będę chciał szerzej omówić, prezentując ciekawe oprogramowanie do ukrywania informacji w plikach (nie tylko graficznych).

O autorze

Mariusz Kołacz

Z zawodu mgr inż. informatyk, zwolennik nowoczesnych technologii i fan Nikoli Tesla. Prowadzi kilka blogów o tematyce technologicznej. Po godzinach lubi przeczytać dobrą książkę, pozwiedzać ciekawe miejsca w Polsce lub spędzić wolny czas na łonie natury.

2 komentarze

  • Bardzo ciekawy sposób 🙂
    Rozumiem, że można łączyć ze sobą dowolne pliki, na przykład w .doc zaszyć .jpg albo w jakimś .avi ukryć .rar?
    Muszę się pobawić 🙂

    Szczekam na więcej podobnych wpisów.

  • Każdy format ma swą specyfikację, zapisu/odczytu przez aplikacje stąd też nie można dowolnie łączyć plików. Mimo to opisana metoda sprawdza się świetnie przy ukrywaniu danych skompresowanych w zdjęciach. Dodatkową zaletą takiego rozwiązania jest fakt, że można zaszyfrować archiwum, czyli niejako utworzyć podwójne zabezpieczenie, z jednej strony maskowanie, które jest trudne do wychwycenia gołym okiem (pomijam rozmiar pliku), z drugiej strony szyfrowanie, gdzie bez hasła lub pliku klucza nie dostaniemy się do danych.

    Samo maskowanie już jest skuteczne, aby zidentyfikować plik trzeba by było użyć odpowiednich programów do analizy obrazu lub też w edytorze heksadecymalnym poszukać charakterystycznych cech dla konkretnego typu pliku. Można też oczywiście otwierać każdy plik graficzny w innych aplikacjach na chybił trafił, lecz nietrudno sobie wyobrazić, że przy setkach zdjęć właściciel takiego pliku mógł ukryć dane w dowolnym z nich, otworzenie ich wszystkich ręcznie to sporo pracy. Pewnie osoby bardzo zdeterminowane wykorzystają gotowy skrypt do otwierania, lecz na ścisłość, gdy dodatkowo zaszyfrujemy dane, praktycznie taka osoba nie ma szans na dostanie się do ukrytych danych.

    Metodę z copy /B może praktycznie każdy zastosować, są też do tego specjalistyczne programy, które ułatwiają ukrywanie.

Kliknij tutaj aby skomentować