Divertissement - À malin, malin & demi

ѠOOT

Divertissement - À malin, malin & demi

par ѠOOT »

Bonjour,

J'ai terminé de rédiger une épreuve que je soumettrai la semaine prochaine.
J'en ai donc dérivé une version + allégée, - complexe & + divertissante.
Une petite révision sur les encapsulations de formats de fichiers ?
Avis aux allumés du clavier... désolé, il n'y a rien à gagner.

« L'important c'est de participer » (Coubertin)

Difficulté: 2 / 5

Description:

D'insupportables cris s'échappent du fond des limbes.
Mais quel abruti a ouvert les portes de la géhenne !?
Retrouvez la clé légendaire pour refermer le portail.

La clé en votre possession, utilisez le script de validation
Complétez les variables O,K,E,Y avec les valeurs de la clé,
dès lors, vous tendrez vers la triste vérité de l'histoire.

Ci-dessous, le portrait robot du coupable.
Image

Diantre, quelle drôle de mystification !
ѠOOT

Re: Divertissement - À malin, malin & demi

par ѠOOT »

Bonjour,

Une semaine s'est écoulée, voici une solution sous commandes Linux pour l'étape 1.
Vous aviez trouvé cette étape ? Venez nous expliquer votre méthode sous Windows.

Lorsqu'une image s'affiche sur votre écran, il y a une multitude de traitements.
Comme vous le savez probablement, l'ordinateur ne comprends pas l'humain.
Pour votre machine, c'est une représentation binaire, il n'y a que des 0 & 1.
Changer l'approche, l'angle de vue, s'adapter, ... percevoir autrement.
Il ne faut pas tenter de "voir" l'image avec la "vue", le sens.
Mais "voir" comme la machine avec des "représentations".


Wake up, Neo...

Pour afficher ces représentations, il faut un "éditeur" de fichiers et il y en a de toutes sortes.
Un éditeur hexadécimal affiche la représentation hexadécimale et la représentation ASCII.

Les images, comme la plupart des fichiers, sont "normalisées" et respectent un format de fichier.
Ces formats sont publiques ou partiellement/totalement privés. Merci la "propriété intellectuelle".
Parfois c'est aisément compréhensible, parfois non. Rassurez-vous pour GIF, ça l'est.
Un non respect du format ne rends pas systématiquement les fichiers invalides.
La preuve, ce gentil hamster continue de remuer la croupe pour nous narguer.

En violet, les notions à assimiler. En bleu, les commandes / utilitaires sous Linux.

Télécharge l'image au format GIF.
wget "http://secuboxlabs.fr/misc/skyfall.gif" -O /tmp/skyfall.gif

Affiche les informations de l'image
exiftool /tmp/skyfall.gif

Vue en représentation hexadécimale.
xxd /tmp/skyfall.gif | less
Image

Isole le bloc de données encodé en Base64.

Extraction du bloc, décodage et redirection de la sortie dans un fichier.
dd bs=1 skip=235 count=74131 if=/tmp/skyfall.gif | base64 -i -d > /tmp/skyfall

Détermine le type du fichier.
file /tmp/skyfall
Audio file with ID3 version 2.4.0, contains: MPEG ADTS, layer III, v2.5, 8 kbps, 8 kHz, JntStereo

Écoute du fichier MP3.
mplayer /tmp/skyfall

On distingue un son de mauvaise qualité.
Que renferme ces battements de cœur ?

À la semaine prochaine,
Bon courage pour l'étape 2.
Malekal_morte
Messages : 116936
Inscription : 10 sept. 2005 13:57

Re: Divertissement - À malin, malin & demi

par Malekal_morte »

Ca ne m'est pas du tout venu à l'esprit d'aller voir l'image que tu avais mise.
Trop focalisé sur le script \o
Première règle élémentaire de sécurité : on réfléchit puis on clic et pas l'inverse - Les fichiers/programmes c'est comme les bonbons, quand ça vient d'un inconnu, on n'accepte pas !
Comment protéger son PC des virus
Windows 11 : Compatibilité, Configuration minimale requise, télécharger ISO et installer Windows 11

Comment demander de l'aide sur le forum
Evaluer le site malekal.com
Partagez malekal.com : n'hésitez pas à partager les articles qui vous plaisent sur la page Facebook du site.
Gof

Re: Divertissement - À malin, malin & demi

par Gof »

Pour ceux qui voudraient se lancer dans cette étape sous Windows, il y aurait d'innombrables façons de procéder. Proposition de l'une d'entre elles ci-dessous.

Récupérer le GIF de la petite souris narquoise en local. Ouvrez le fichier avec un éditeur Hexa (vous pouvez regarder du côté de l'utilitaire HxD )

Nous allons retrouver notre ressource tierce cachée dans ce qui devrait être un commentaire ajouté à l'image : Comment Extension. Ici, le 'block' du comment label a été modifié pour que cela ne soit pas aussi évident (nous avons un 0xEF à la place d'un 0xFE, volontairement modifié). Sa correction permet de rendre ce commentaire visible dans les propriétés de l'image (capture ci-dessous avec XnView, une fois le comment label corrigé), alors qu'il ne l'était pas auparavant.

Image

Notez que cela n'empêchait en rien le GIF de s'afficher normalement, la partie qui ne lui était pas familière était ignorée, permettant malgré tout l'affichage de l'image. Corriger le comment label du comment extension permet de rendre visible dans les propriétés de l'image son contenu. Mais il n'est en rien impératif de le faire pour extraire la ressource.

Quoi qu'il en soit, c'est ce commentaire que nous allons extraire et décoder (ce dernier étant encodé en Base64). Vous trouverez toutes sortes d'outils en local ou en ligne vous permettant cela, comme le service canadien vicheck.

Cette ressource extraite s'avère être un format audio MP3 (premiers bytes caractéristiques ). Pour être sûr d'obtenir le bon résultat, sa signature MD5 est la suivante : e831ee406f5379f7521f4946e1ac2da4.

Reste à extraire les informations de cette nouvelle ressource à présent.
Malekal_morte
Messages : 116936
Inscription : 10 sept. 2005 13:57

Re: Divertissement - À malin, malin & demi

par Malekal_morte »

vu la capture des propriétés de l'image, ça sent l'illustration du topic des métadonnées PDT_005
Première règle élémentaire de sécurité : on réfléchit puis on clic et pas l'inverse - Les fichiers/programmes c'est comme les bonbons, quand ça vient d'un inconnu, on n'accepte pas !
Comment protéger son PC des virus
Windows 11 : Compatibilité, Configuration minimale requise, télécharger ISO et installer Windows 11

Comment demander de l'aide sur le forum
Evaluer le site malekal.com
Partagez malekal.com : n'hésitez pas à partager les articles qui vous plaisent sur la page Facebook du site.
ѠOOT

Re: Divertissement - À malin, malin & demi

par ѠOOT »

Bonjour,

Une semaine s'est écoulée, voici une solution sous commandes Linux pour l'étape 2.

Affiche les informations du fichier
exiftool /tmp/skyfall

File Name : skyfall
File Size : 53 kB
File Type : MP3
MIME Type : audio/mpeg
MPEG Audio Version : 2.5
Audio Layer : 3
Audio Bitrate : 8 kbps
Sample Rate : 8000
Channel Mode : Joint Stereo
MS Stereo : On
Intensity Stereo : Off
Copyright Flag : False
Original Media : True
Emphasis : None
ID3 Size : 51161
Title : messe
Artist : tino baldi
Genre : Bass
Album : CD Antesk
Recording Time : 2015
Comment (xxx) : ʚ
Warning : Invalid ID3 frame size
Picture MIME Type : image/png
Picture Type : Other
Picture Description : 666.png

Picture : (Binary data 50891 bytes, use -b option to extract)


Le fichier au format MP3 comporte plusieurs étiquettes ( tags ) ID3.
Le warning d'exiftool indique une anomalie sur le poids de l'image.

Extraction binaire des métadonnées.
dd bs=1 skip=142 count=50891 if=/tmp/skyfall of=/tmp/skymeta

Détermine le type du fichier.
file /tmp/skymeta
skymeta: PNG image, 185 x 185, 8-bit grayscale, non-interlaced

L'image nommée "666.png" est un QR-Code au format PNG.

Message du QR Code : "LES LITANIES DE SATAN SERONT EN RÉPÉTITIONS"

Le moins que l'on puisse dire c'est qu'il y a du Baudelaire dans l'air.
Le poids n'est-il pas un peu lourd pour une image de 185 x 185 ?

À la semaine prochaine,
Bon courage pour l'étape 3.
_________________________________________________________________________________

Ces mêmes actions peuvent-être réalisées sous Windows.
À la demande, voici une liste d'utilitaires qui vous aiderons:

- L'éditeur HxD de Maël Hörz.
- L'encodeur & décodeur base64 de Luigi Auriemma.
- L'analyseur TrID + pack de définitions de Marco Pontello.
- Le compresseur 7-Zip d'Igor Pavlov.
- Le convertisseur de fichiers audio SoX
Gof

Re: Divertissement - À malin, malin & demi

par Gof »

Bonsoir,

Ma poursuite pour la 3e étape, dans un environnement Windows cette fois-ci.

Extraction et identification de la ressource inconnue du PNG

Nous avions donc obtenu, à l'étape 2 un fichier au format PNG représentant un QR Code que nous avions interprété. Mais pour une image de 185x185 pixels, le fichier semble un peu lourd : il y a matière à creuser.

Exécutons notre éditeur hexa HxD de Maël Hörz et appuyons nous sur les spécifications du format PNG. Nous retrouvons bien nos chunks critiques, IHDR, IDAT et IEND du format permettant son affichage. En revanche, nous avons beaucoup de code non interprété ensuite. La partie Chunk layout nous permet d'identifier où se termine précisément le fichier image PNG en lui même, à savoir juste derrière le CRC de l'IEND.
00 00 00 00 49 45 4E 44 AE 42 60 82

Length : il est à 0, il n'y a pas de data (0x00 0x00 0x00 0x00)
Chunkt type : IEND (0x49 0x45 0x4E 0x44
Chunk Data : il n'y en a pas
CRC : 0xAE 0x42 0x60 0x80
Supprimons la partie PNG et travaillons sur cette nouvelle ressource.
Sa signature MD5 est : 8b53e130d29eb52c0964190a4508b593.

En récupérant les premiers éléments (0x00 0x00 0x01 0x00), on s'aperçoit bien vite que nous avons les premiers bytes d'un .ICO (Windows icon file).


Extraction de la nouvelle ressource de l'ICO

Son affichage laisse perplexe et ne nous apprend rien de pertinent. exiftool ne gérant pas le format, il ne nous sera pas non plus d'une grande aide. Poursuivons donc avec l'éditeur HxD et quelques recherches pour s'enquérir de quelques spécifications du format ICO.

Wikipedia nous rappelle que ce format est un conteneur (à PNG ou BMP habituellement, mais qui finalement peut contenir n'importe quoi pour peu qu'on ait de l'imagination). Les indications MDSN sont un peu rébarbatives à consulter, et suite à quelques recherches, cette page synthétique devrait pouvoir vous aiguiller. Identifions consciencieusement les parties balisées du début de fichier :

Image

Le format étant un conteneur, taillons dans le vif ces données identifiées et travaillons sur la nouvelle ressource. Sa signature MD5 est : 5826a1d45d62d179591acc62dfe24cf3

L'en-tête en hexa ne semble pas familier, mais TrID de Marco Pontello fait bien son travail et identifie un format valide :
TrID/32 - File Identifier v2.20 - (C) 2003-15 By M.Pontello
Definitions found: 6065
Analyzing...

Collecting data from file: (...)
100.0% (.LZMA) LZMA compressed archive (3000/1)
Plus qu'à décompresser cette archive avec 7-Zip d'Igor Pavlov et travailler sur cette nouvelle ressource pour avancer à la prochaine étape. Ce nouveau fichier a la signature : fbde89c43b498b875e6b8b245fd9fa3e.
xtrem47

Re: Divertissement - À malin, malin & demi

par xtrem47 »

Bonsoir,

On a donc extrait un fichier avec pas grand chose de lisible. On l'ouvre avec un éditeur hexadécimal, comme HxD. On voit rapidement que le début du fichier laisse apparaitre un semblant de structure, avec des enchainements de caractères.

Toujours avec le même outil, on extrait les 200 premiers octets du fichier auxquels on applique une analyse statistique (menu Analyse-> Statistiques). Le graphique de l'analyse fréquentielle laisse alors apparaitre un maximum affirmé pour le caractère 80h (€) qui représente 7% des occurrences totales. Or ce caractère n'est pas spécialement connu pour apparaitre dans les en-têtes de fichiers habituels.

Pour la suite, j'ai eu pas mal de chance, on a une structure apparente et on sait qu'un certain caractère apparait très souvent dans les headers, c'est le caractère nul. J'ai donc tenté un décalage de 80h à la main depuis HxD, et là bingo, on voit apparaitre %PNG qui correspond au début d'une image au format PNG.

Il reste alors à automatiser le processus. Pour cela j'ai écris un tout petit script (qui pourrait être largement amélioré :p) avec Python

Code : Tout sélectionner

ch='\x09\xD0\xCE\xC7\x8D......'
dec=[]
for c in ch:
        dec.append(hex((ord(c) + 128) % 256))
print (dec)
On récupère alors le code hexadécimal du fichier PNG et il n'y a plus qu'à l'insérer dans HxD
Le MD5 du fichier obtenu : 4f66d99b1a1096026d50f71719ecbd11.

Que peut bien cacher cette image ?

Il existe une autre solution totalement différente et très intéressante menant à ce même résultat, elle produit un fichier intermédiaire, il faut continuer à travailler sur l'en-tête du fichier pour y parvenir ;)

Bon courage pour la suite !
Gof

Re: Divertissement - À malin, malin & demi

par Gof »

Il existe une autre solution totalement différente et très intéressante menant à ce même résultat, elle produit un fichier intermédiaire, il faut continuer à travailler sur l'en-tête du fichier pour y parvenir ;)
Solution alternative à l'étape précédente, à celle de xtrem47, en s'aidant de l'indice laissé par ѠOOT et quelques recherches complémentaires, sous Windows.

Après avoir isolé en hexa le début du fichier, on remarque par une analyse statistique et un coup d’œil visuel la redondance des 0x80, par série de 3.

Image

En s'aidant de cette redondance et en s'appuyant sur les bytes d'avant et celui d'après pour une recherche via les moteurs en ligne sur chacune des séries, on retrouve beaucoup de résultats renvoyant à des problématiques audio et de son. Mais l'importation en RAW du fichier sous Audacity ne donne rien, même après de laborieuses manipulations manuelles et automatiques permises par l'outil. Certains pourtant croient y discerner une voix ;)

En revanche, ѠOOT évoque en fin de son post précédent le convertisseur de fichiers audio SoX. Cet indice couplé aux résultats des différentes recherches incite à se pencher sur cette piste.

SoX peut tout faire en fait avec une ressource audio. Ce panel d'opportunités désarçonne et on ne sait pas vraiment par où commencer. Considérons que nous avons une ressource brute (en RAW) et exportons là en un format audio basique avec les différents encodages supportés par l'outil. Soit notre fichier renommé son0.raw :
sox -r 16k −b 8 −e unsigned son0.raw 01son0__16k_8b_unsigned.wav
sox -r 16k −b 8 −e signed-integer son0.raw 02son0__16k_8b_signed_integer.wav
sox -r 16k −b 8 −e unsigned-integer son0.raw 03son0__16k_8b_unsigned_integer.wav
sox -r 16k −b 8 −e floating-point son0.raw 04son0__16k_8b_flotaing_point.wav
sox -r 16k −b 8 −e ms-adpcm son0.raw 05son0__16k_8b_ms_adpcm.wav
sox -r 16k −b 8 −e ima-adpcm son0.raw 06son0__16k_8b_ima_adpcm.wav
sox -r 16k −b 8 −e oki-adpcm son0.raw 07son0__16k_8b_oki_adpcm.wav
sox -r 16k −b 8 −e gsm-full-rate son0.raw 08son0__16k_8b_gsm_gull_rate.wav
sox -r 16k −b 8 −e u-law son0.raw 09son0__16k_8b_u_law.wav
sox -r 16k −b 8 −e mu-law son0.raw 10son0__16k_8b_mu_law.wav
sox -r 16k −b 8 −e a-law son0.raw 11son0__16k_8b_a_law.wav
En sortie, les exportations unsigned, signed-integer, unsigned-integer, u-law, mu-law, a-law sont exploitables. Les autres n'ont pas été générées. L'écoute de chacun de ces formats ne révèle rien. Mais en revenant sur notre éditeur hexa, on reconnait l'entête d'un fichier de format connu, un PNG, avec l'exportation signed-integer.

On retombe sur le PNG obtenu par xtrem47 dans son dernier post, et dont le MD5 est le suivant : 4f66d99b1a1096026d50f71719ecbd11.

Pour récapituler tout ce qui a été entrepris depuis le début : de notre GIF taquin du départ (d'un peu plus de 141 Ko), nous avons obtenu un MP3 et un PNG ; de ce PNG nous avons extrait un ICO ; de cet ICO nous avons extrait un fichier compressé ; de ce fichier compressé nous avons obtenu un PNG (ou un WAV puis un PNG).

Maintenant, il me reste à faire parler cette nouvelle image :)

Revenir à « Tech, Tips & Tricks »