
Python-Programm zum Einbetten von Dateien in Bilder mittels Steganografie unter Verwendung des Least Significant Bit.
Python-Programm, das auf steganografischen Methoden basiert, um Dateien in Bildern unter Verwendung der Technik des niederwertigsten Bits zu verstecken.
Ich habe die grundlegendste Methode verwendet, nämlich das niederwertigste Bit. Ein Farbpixel besteht aus Rot, Grün und Blau, die jeweils auf einem Byte kodiert sind. Die Idee ist, Informationen im ersten Bit jeder RGB-Komponente eines Pixels zu speichern. Im schlimmsten Fall unterscheidet sich der Dezimalwert um eins, was für das menschliche Auge nicht sichtbar ist. In der Praxis sollte man, falls nicht genug Platz vorhanden ist, um alle Daten im ersten Bit jedes Pixels zu speichern, mit dem zweiten Bit beginnen usw. Man muss bedenken: Je mehr Daten in einem Bild gespeichert werden, desto leichter kann dies erkannt werden.
Das LSBSteg-Modul basiert auf OpenCV, um Daten in Bildern zu verstecken. Es verwendet das erste Bit jedes Pixels und jeder Farbe eines Bildes. Der Code ist recht einfach zu verstehen; wenn jedes erste Bit verwendet wurde, beginnt das Modul mit dem zweiten Bit – je größer die Daten, desto stärker wird das Bild verändert. Das Programm kann alle Daten verstecken, wenn im Bild genügend Platz vorhanden ist. Die Hauptfunktionen sind:
encode_text: Sie geben einen String an und das Programm versteckt ihnencode_image: Sie geben ein OpenCV-Bild an und die Methode iteriert über jedes Pixel, um es zu verstecken. Eine gute Praxis ist, einen Träger zu verwenden, der 8-mal größer ist als das zu versteckende Bild (damit jedes Pixel nur im ersten Bit platziert wird).encode_binary: Sie geben eine Binärdatei zum Verstecken an; diese Methode kann jede Art von Datei verschleiern.Es werden nur Bilder ohne Komprimierung unterstützt, also kein JPEG, da LSB-Bits während der Komprimierungsphase verändert werden könnten.
Dieses Tool erfordert nur OpenCV und dessen Abhängigkeiten.
pip install -r requirements.txt
LSBSteg.py
Usage:
LSBSteg.py encode -i <input> -o <output> -f <file>
LSBSteg.py decode -i <input> -o <output>
Options:
-h, --help Show this help
--version Show the version
-f,--file=<file> File to hide
-i,--in=<input> Input image (carrier)
-o,--out=<output> Output image (or extracted file)
Textkodierung:
#encoding
steg = LSBSteg(cv2.imread("my_image.png"))
img_encoded = steg.encode_text("my message")
cv2.imwrite("my_new_image.png", img_encoded)
#decoding
im = cv2.imread("my_new_image.png")
steg = LSBSteg(im)
print("Text value:",steg.decode_text())
Bildsteganografie:
#encoding
steg = LSBSteg(cv2.imread("carrier.png")
new_im = steg.encode_image(cv2.imread("secret_image.jpg"))
cv2.imwrite("new_image.png", new_im)
#decoding
steg = LSBSteg("new_image.png")
orig_im = steg.decode_image()
cv.SaveImage("recovered.png", orig_im)
Binärsteganografie:
#encoding
steg = LSBSteg(cv2.imread("carrier.png"))
data = open("my_data.bin", "rb").read()
new_img = steg.encode_binary(data)
cv2.imwrite("new_image.png", new_img)
#decoding
steg = LSBSteg(cv2.imread("new_image.png"))
binary = steg.decode_binary()
with open("recovered.bin", "rb") as f:
f.write(data)
Diese Software ist MIT-lizenziert.