Comment trouver les fichiers cachés à l'intérieur des fichiers image (Jpg/Gif/Png)
Je suis tombé sur un lien qui montre comment masquer le nombre de fichiers à l'intérieur d'un fichier image: http://lifehacker.com/282119/hide-files-inside-of-jpeg-images plus de discussion sur la détection ici: http://ask.metafilter.com/119943/How-to-detect-RARsEXEs-hidden-in-JPGs
J'essaie de trouver ce qui est un bon moyen de faire de détecter si un fichier image a d'autres fichiers cachés à l'intérieur? Devrais-je essayer de décompresser le fichier pour voir si d'autres fichiers en sortir?
Je ne suis pas lié par programme, mais quelque chose qui fonctionne bien sur la JVM serait génial.
Mise à jour
Une Approche:
Serait quelque chose comme ce travail (suggéré par quelqu'un sur metafilter)
$ cat orig.jpg test.zip > stacked.jpg
$ file stacked.jpg
stacked.jpg: JPEG image data, JFIF standard 1.01
$ convert stacked.jpg stripped.jpg # this is an ImageMagick command
$ ls -l
11483 orig.jpg
322399 stacked.jpg
11484 stripped.jpg
310916 test.zip
Je pourrais utiliser JMagick pour cette approche.
- J'ai mis à jour le lien. Vous avez raison, les fichiers cachés ne serait pas dans les métadonnées. Cependant, le problème est toujours debout - comment puis-je détecter que le fichier image contient quelques fichiers cachés à l'intérieur.
- Vous ne pouvez pas par magie, vous avez pu deviner que la façon dont les fichiers ont été cachés dans une instance donnée. Mais qui peut varier complètement à partir d'une instance à l'autre, vous pouvez créer une autre cachette méthode par exemple.
- Oui, vous pouvez détecter que par la magie en.wikipedia.org/wiki/Magic_number_(programmation)
- faites-vous référence à des numéros de magie que d'identifier les formats de fichier ? Je peux simplement les supprimer.
- J'ai mis à jour la question avec l'une des méthodes que j'ai trouvé sur internet
Vous devez vous connecter pour publier un commentaire.
Grande question!
Si vous souhaitez vérifier est un RAR ou ZIP fichier est ajouté à la fin d'un
fichier image, puis en l'exécutant à travers le
unrar
ouunzip
de commande est lela plus simple façon de le faire.
Si vous voulez une plus rapide, mais moins exacte vérifier, vous pouvez vérifier certains des
format de fichier spécial signatures qui indiquent que certains types de fichiers. L'
d'habitude UNIX outil de pour identifier le format de fichier est
file
. Il utilise unbase de données de fichier binaire signatures, dont le format est
défini dans le magie(5) page de man. Il ne sera pas trouver un fichier RAR pour
vous à la fin d'un fichier JPEG, parce qu'il ne regarde que le début de fichiers
essayez de les identifier rapidement, mais vous pourriez être en mesure de modifier son code source
pour faire ce que vous voulez. Vous pouvez également réutiliser sa base de données de signatures de fichiers. Si vous regardez le fichier d'archive dans sa base de données dans les fichiers Rar section, il montre ce:
qui indique que si votre fichier JPEG contient les quatre octets
Rar!
queserait suspect. Mais vous aurez à examiner la Rar format de fichier
spec en détail pour vérifier si plus de la Rar structure de fichier est
présent pour éviter les faux positifs—cette page contient aussi les quatre octets
Rar!
mais il n'y a pas les fichiers cachés attaché à elle 😛Mais si quelqu'un connaît les détails de vos contrôles automatisés, ils pourraient
facilement travailler autour d'eux. La solution la plus simple consisterait à inverser tous les octets
des fichiers avant de les ajoutant aux JPEG. Alors qu'aucun de vos
signatures serait attraper la version inversée du fichier.
Si quelqu'un veut vraiment cacher un fichier dans une image, il y a toutes sortes
de façons de le faire que vous ne serez pas en mesure de détecter facilement. Le général
terme c'est “la stéganographie.” Le Page Wikipedia, pour
exemple, montre une photo d'arbres qui a une image d'un chat caché à l'intérieur
c'. Pour de plus simple stéganographiques méthodes, il y a les tests statistiques
peut indiquer quelque chose de drôle qui a été fait pour une image, mais si quelqu'un
passe beaucoup de temps à venir avec leur propre méthode pour masquer d'autres fichiers
à l'intérieur des images, vous ne serez pas en mesure de le détecter.
Rar!
, de sorte que vous pourriez scanner, octet par octet, jusqu'à ce que vous frapper, puis de traiter les octets à partir de là comme un fichier RAR—mais launrar
de l'outil est déjà fait. Pour faire quelque chose de beaucoup plus compliqué, vous serait essentiellement ré-écrireunrar
en Java :/Vous pouvez rechercher le fichier de signature.
http://en.wikipedia.org/wiki/List_of_file_signatures
par exemple, pour le fichier 7z la sigature est de 37 7A BC AF 27 1C
pour les fichiers rar c'est 52 61 72 21 1A 07 00
et pour zip 50 4B 03 04
Jetez un oeil à un fichier compressé dans un éditeur hexadécimal par exemple HxD
Pour voir si il n'y a pas de métadonnées ou d'autres informations ajoutées au fichier, vous pouvez décoder l'image et le ré-encoder pour voir si la taille diminue de façon spectaculaire. Pour un fichier JPEG que vous voulez faire quelque chose comme une rotation sans perte qui en conserve l'original de la DCT de données, sinon, la taille du fichier peut changer seulement par le biais de l'encodage des différences.
Un petit résultat ne serait pas une preuve de données cachées, mais il serait un indicateur que vous avez besoin de regarder de plus près.
Vous n'avez jamais partagé votre motivation pour poser la question, mais je suppose que c'est sur le téléchargement des images sur un site public. Dans ce cas, vous ne devriez vraiment pas de soins si le soumis image contient des données superflues, il suffit de nettoyer l'entrée indépendamment. Le décoder/encoder processus serait parfait pour cela.
P
. Tout échoue. Notez que les données de l'image (c'est à dire, de ses pixels intensités, largeur, hauteur) est intact.