Πίνακας περιεχομένων:

Αυτό το PNG είναι μυστικό διαμέρισμα: 4 βήματα
Αυτό το PNG είναι μυστικό διαμέρισμα: 4 βήματα

Βίντεο: Αυτό το PNG είναι μυστικό διαμέρισμα: 4 βήματα

Βίντεο: Αυτό το PNG είναι μυστικό διαμέρισμα: 4 βήματα
Βίντεο: Ο Γιώργος Χατζηνάσιος στον καναπέ του «Στούντιο 4» | 10/1/2024 | ΕΡΤ 2024, Νοέμβριος
Anonim
Αυτό το είναι μυστικό διαμέρισμα
Αυτό το είναι μυστικό διαμέρισμα
Αυτό το είναι μυστικό διαμέρισμα
Αυτό το είναι μυστικό διαμέρισμα

Η πρόκλησή σας, αγαπητέ αναγνώστη, είναι να καταλάβετε ποιο μήνυμα κρύβεται στην εικόνα output-p.webp

Οι δύο εικόνες εδώ φαίνονται πανομοιότυπες αλλά δεν είναι. Αυτές είναι οι εικόνες greenman-p.webp

Αυτό το διδακτικό είναι εμπνευσμένο από ένα υπέροχο βίντεο στο youtube. Αφού είδα αυτό το βίντεο αργά τη νύχτα μια μέρα και αγωνίστηκα να σκεφτώ μια δροσερή διάλεξη και ενδιάμεση εξέταση για ένα προηγμένο μάθημα προγραμματισμού Java, αυτό το έργο γεννήθηκε. Οι παραπάνω εικόνες, μαζί με τον κωδικό που περιγράφεται σε αυτό το εκπαιδευτικό, είναι δωρεάν στο Github.

Προμήθειες

Θα χρειαστείτε έναν υπολογιστή και θα πρέπει να ξέρετε πώς να μεταγλωττίσετε και να εκτελέσετε ένα πρόγραμμα Java. Αυτό το πρόγραμμα είναι μόνο δύο σύντομα αρχεία και θα πρέπει να το εκτελέσετε στη γραμμή εντολών.

Βήμα 1: Τι είναι η στεγανογραφία

Θα πρέπει να παρακολουθήσετε το βίντεο στο youtube που συνδέσα στο προηγούμενο βήμα, αλλά εδώ είναι η περίληψη:

Εάν πρέπει να αποκρύψετε ένα μυστικό μήνυμα σε έναν φίλο, ένας δροσερός τρόπος για να το κάνετε είναι με τη Στεγανογραφία. Η ιδέα της εικόνας Steganography είναι απλή. Οι εικόνες του υπολογιστή είναι φτιαγμένες από εικονοστοιχεία και κάθε εικονοστοιχείο είναι ένας συνδυασμός κόκκινου, πράσινου και μπλε. Σε πολλές μορφές εικόνας υπολογιστή οι ποσότητες κόκκινου, πράσινου και μπλε σε κάθε εικονοστοιχείο εκφράζονται ως τιμές από 0-127. Έτσι, για παράδειγμα, ένα πολύ κόκκινο εικονοστοιχείο θα έχει κόκκινη τιμή 127 και πράσινες και μπλε τιμές μηδέν. Το κόλπο είναι αυτό: μια κόκκινη ένταση 126 δεν διακρίνεται από μια κόκκινη ένταση 127 (σε ανθρώπινο μάτι). Και έτσι παίζοντας με συν ή πλην ένα σε κάθε κόκκινο εικονοστοιχείο μπορούμε να κρύψουμε κομμάτια σε εικονοστοιχεία. Αν βρούμε έναν ύπουλο τρόπο για να συγκεντρώσουμε τα κομμάτια, μπορούμε να ανακτήσουμε τα δεδομένα που είχαμε εισάγει στην εικόνα!

Να είσαι δημιουργικός! Η στεγανογραφία μπορεί να γίνει με οποιοδήποτε ψηφιακό μέσο! Μπορείτε να παίξετε με κομμάτια σε αρχεία μουσικής ή βίντεο, για παράδειγμα, αλλά αυτό απαιτεί να κάνετε περισσότερες έρευνες εκτός του πεδίου αυτού του οδηγού.

Βήμα 2: Πώς κωδικοποιείται το κείμενο σε υπολογιστές

Πώς κωδικοποιείται το κείμενο σε υπολογιστές
Πώς κωδικοποιείται το κείμενο σε υπολογιστές

Αυτό που ακολουθεί εδώ μπορεί να απαιτεί πτυχίο CS ή πολύ χόμπις πάθος για να το καταλάβετε. Οι υπολογιστές αποθηκεύουν δεδομένα σε bits ως 1s και 0s. Αυτά τα 1 και 0 συνήθως ομαδοποιούνται σε δέσμες των 8 και αναφέρονται ως "bytes". Όπως εξηγείται εδώ και εδώ υπάρχουν μερικοί τρόποι με τους οποίους μπορούμε να πούμε σε έναν υπολογιστή να ερμηνεύει τα byte ως κείμενο. Για να αξιοποιήσετε στο έπακρο αυτήν τη διάλεξη/διδάσκοντας τη στεγανογραφία, πρέπει να κατανοήσετε λίγο πολύ τα ASCII και UTF8. Αυτοί είναι δύο συνηθισμένοι τρόποι κωδικοποίησης δεδομένων γλώσσας σε μια σειρά byte.

Μόλις αποκτήσετε μια ιδέα για αυτό το θέμα, θα το καταλάβετε: Στο ASCII και το UTF8 η λέξη "the" αντιπροσωπεύεται από τα ακόλουθα byte (σε εξάγωνο) 0x74 0x68 0x65. Σε δυαδική μορφή, αυτά τα byte είναι: 01110100b 01101000b 01101101b

Επιπλέον, θα καταλάβετε ότι στο UTF8 ένα Grinning Face Emoji αντιπροσωπεύεται από τα ακόλουθα byte (σε εξάδα) 0xF0 0x9F 0x98 0x80. Στα δυαδικά αυτά τα bytes είναι 11110000b 10011111b 10011000b 10000000b.

Σε κάθε περίπτωση θα δείτε στο συνημμένο στιγμιότυπο οθόνης ότι ο υπολογιστής μου κάνει κάτι με αυτά τα byte. Τα έχω επισημάνει στην έξοδο του προγράμματος με βέλη και ένα μεγάλο "LOOK!".

Βήμα 3: Πώς λειτουργεί το πρόγραμμα

Η σύνταξη του προγράμματος από το github είναι εύκολη. Αποκτήστε το repo που εμφανίζεται στην πρώτη σελίδα εδώ και έπειτα

Το πρόγραμμα εκτελείται έτσι από τη γραμμή εντολών: java Main input-p.webp

στα συνημμένα παραδείγματα θα δείτε ότι έχω τρέξει το java Main greenman-p.webp

Θα κάνεις το ίδιο πράγμα.

Αν κοιτάξετε το Main.java θα δείτε ότι αυτό συμβαίνει:

  1. Το πρόγραμμα διαβάζει την εικόνα σε έναν πίνακα 2D
  2. Το πρόγραμμα μετατρέπει το μήνυμα που δώσατε σε πίνακα byte (byte )
  3. Το πρόγραμμα στη συνέχεια χρησιμοποιεί μια κλάση MessageHider για να αποκρύψει τα byte μηνυμάτων στον πίνακα εικόνας.
  4. Το πρόγραμμα στη συνέχεια γράφει τον πίνακα εικόνας 2d σε ένα αρχείο (output.png) με τα κρυμμένα δεδομένα μέσα. Αν κοιτάξετε αυτήν την εικόνα, δεν διακρίνεται από την αρχική
  5. Το πρόγραμμα διαβάζει στη συνέχεια το output-p.webp" />

Λίγο πολύ ο κώδικας λειτουργεί όπως περιμέναμε.

Βήμα 4: Συμπέρασμα

Σας έδωσα λοιπόν έναν κώδικα εργασίας, απόδειξη ότι λειτουργεί με τη μορφή εικόνας και μερικές σημειώσεις διάλεξης που δίνω στους φοιτητές του πανεπιστημίου μου. Σας έδωσα επίσης μια πρόκληση! Πέρασα μερικές ώρες γράφοντας τον κώδικα και ετοιμάζοντας σημειώσεις διάλεξης, έτσι λυπάμαι που αυτό το διδακτικό δεν έχει πολλές εικόνες. Εάν πιστεύετε ότι η στεγανογραφία είναι ενδιαφέρουσα, παραδεχτείτε την πρόκληση μου!

Συνιστάται: