Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1229 connectés 

  FORUM HardWare.fr
  Programmation
  Divers

  Aide ! Récupérer le langage binaire d'un fichier.

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

Aide ! Récupérer le langage binaire d'un fichier.

n°2074013
ElaxisP
Posté le 05-05-2011 à 11:30:34  profilanswer
 

Salut ! Je suis un gros newbie, donc désolé d'avance pour les termes que je vais utiliser, si ils ne sont pas corrects.
 
Je suis en école d'art et pour l'un de mes projets, j'ai besoin de récupérer les données binaires d'un fichier (jpeg, mp3, peu importe...). Je ne maîtrise que bien peu les langages de programmation (ActionScript 2 tout au plus) malheureusement.
 
J'ai trouvé un logiciel, Hexfiend, qui me permet de récupérer les données hexadécimal de mon fichier, mais je n'ai rien trouvé qui me permette de transformer ces données en binaire : les seules choses que j'ai trouvées me permettent simplement de transformer des minuscules portions du code. Je me dis que le script doit être plus ou moins le même, sauf que je veux l'appliquer sur la totalité de mon fichier hexadécimal (qui comporte, comme vous pouvez l'imaginer, une grosse quantité de chiffres et de lettres).
 
Sinon, sur des forums je suis tombé sur des lignes de code en langage Delphi 5, ou C. J'ai essayé de les trafiquer un peu avec TextMate, mais ça n'a rien donné de bien concluant, étant donné que je ne suis pas programmateur. Donc je n'ai pas réussi à compiler ça.
 
Donc ce que je cherche, concrètement, c'est un script, ou même un programme, qui me permette de récupérer sous forme de texte, le langage primaire du fichier : des 0 et des 1. Le concept me paraît simple, mais pourtant, je n'ai rien trouvé de concret sur internet à propos de cela. (Peut etre que j'ai mal cherché aussi).
 
Pour information, je suis sous Mac OSX Snow Leopard, j'ai la suite Adobe et quelques logiciels de programmation (le Apple Developer Kit, avec Dashcode, Xcode, et Quartz Composer, le seul des trois auxquels j'ai déjà un peu touchés).
 
Donc si il y en a qui sont chauds pour m'aider, c'est Hyper cool !
 
En attendant, je vous souhaite de passer une bonne après-midi !
 
bisous,
Alexis

mood
Publicité
Posté le 05-05-2011 à 11:30:34  profilanswer
 

n°2074016
esox_ch
Posté le 05-05-2011 à 11:51:05  profilanswer
 

Donc ce que tu veux c'est passer du code hexa au code binaire? c'est bien ça?


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°2074019
ElaxisP
Posté le 05-05-2011 à 11:53:50  profilanswer
 

Ouais ! Passer un gros code hexa en binaire.

n°2074020
esox_ch
Posté le 05-05-2011 à 11:57:02  profilanswer
 

D'accord, mais t'as compris, conceptuellement parlant, quel est le lien entre l'hexa et le binaire? Parce que ça me semble couler de source ensuite..


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°2074021
ElaxisP
Posté le 05-05-2011 à 12:02:00  profilanswer
 

Ben en fait dans mon processus de vouloir revenir au langage le plus primitif d'un fichier, j'ai cru comprendre que l'hexadécimal était une sorte d'intermédiaire. Comme j'ai réussi à trouver un moyen de récupérer ce code hexa, je me suis dit que c'était peut-être plus facile ensuite de récupérer le binaire, étant donné que c'était déjà transformé en texte. J'ai peut-être faux.
Encore une fois, ce qui m'intéresse, c'est le binaire, l'hexadécimal ne m'intéresse pas. Si il y a une méthode (gratuite, bien sur) pour passer du fichier fini (jpeg etc.) à son langage binaire directement, je prends !

n°2074048
shaoyin
Posté le 05-05-2011 à 13:20:32  profilanswer
 

Ton besoin n'est pas clair du tout. Tu peux être plus précis sur la finalité de l'opération ?
 
Ton fichier est déjà du binaire ! Hexfiend t'affiche son contenu sous une forme hexadécimale parce que c'est plus exploitable (comprends "lisible pour un humain" ) que des 0 et des 1 bruts.
 
Dans ton éditeur, chaque octet de ton fichier est représenté par 2 caractères en hexadécimal. Un caractère représente donc un demi octet, soit 4 bits, d'où la correspondance suivante :
car. hexa              séquence de bits
     0        ------->        0 0 0 0
     1        ------->        0 0 0 1
     2        ------->        0 0 1 0
               .
               .
               .
     e        ------->        1 1 1 0
     f        ------->        1 1 1 1
 
Je ne vois pas ce que tu veux de plus...

n°2074050
ElaxisP
Posté le 05-05-2011 à 13:45:40  profilanswer
 

La finalité de l'opération, d'avoir, en .txt, la suite de 0 et de 1 qui correspond à la photographie que j'ai prise. Le but n'est pas que ce soit "lisible pour un humain", c'est purement abstrait.

n°2074053
rufo
Pas me confondre avec Lycos!
Posté le 05-05-2011 à 13:50:03  profilanswer
 

Clair, je comprends pas le besoin final :??: Concrètement, tu veux faire quoi avec le code binaire?
 
Comme l'a dit shaoyin, un .exe est précisément du binaire (c'est pour ça du rste, que pour désigner un exécutable on parle souvent de binaire).


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2074054
Fabz49
Bouh !
Posté le 05-05-2011 à 13:52:28  profilanswer
 

C'est pour une utilisation visuelle du code et non à des issus de programmation.
 
En gros c'est comme s'il voulais avoir la matrice sous les yeux. Sauf que plutôt qu'avoir un code bidon, il veux le vrai code qui correspond au fichier, le vrai authentique.

n°2074055
ElaxisP
Posté le 05-05-2011 à 13:54:59  profilanswer
 

Voilà ! Fabz a clairement explicité la situation je pense.

mood
Publicité
Posté le 05-05-2011 à 13:54:59  profilanswer
 

n°2074065
shaoyin
Posté le 05-05-2011 à 14:17:56  profilanswer
 

Ah d'accord... Je vois le truc !
 
Je ne connais pas d'outil qui fasse ca et je doute qu'il en existe un... Parce que produire un fichier 8 fois plus gros que l'original et qui ne sert à rien, c'est un besoin assez spécifique tout de même !
 
Cela dit, ça n'est pas d'une grande complexité.

n°2074069
ElaxisP
Posté le 05-05-2011 à 14:24:21  profilanswer
 

Si c'est pas d'une grande complexité, c'est donc encourageant ! Alors du coup, ce serait de quelle manière ?

n°2074076
olivthill
Posté le 05-05-2011 à 14:35:05  profilanswer
 

Le problème est que les fichiers d'image, ou de son, sont presque tout le temps compressés.
 
Pour avoir les pixels d'une image, il est donc nécessaire de décompresser le fichier et ce n'est pas facile à faire.  
Cela dépend de la méthode de compression utilisée, et des outils à sa disposition pour le faire.
 
Bon courage !

n°2074081
ElaxisP
Posté le 05-05-2011 à 14:46:20  profilanswer
 

Et si je prends mes photos en RAW ? Ce sera quand même compressé ?

n°2074083
shaoyin
Posté le 05-05-2011 à 14:59:43  profilanswer
 

Ah oui, j'avais oublié ce petit détail qui change toute la donne ! Enfin, peut-être pas. Tout dépend du besoin en fait.
 
Mais j'imagine que c'est le contenu décompressé que tu veux, ElaxisP ?  
 
Et si c'est le contenu pur que tu veux, j'imagine que l'entête du fichier ne doit pas être traité non plus ? Dans ce cas, ce n'est pas aussi simple que je pensais au premier abord...

n°2074089
rufo
Pas me confondre avec Lycos!
Posté le 05-05-2011 à 15:13:26  profilanswer
 

Ben suffit de faire afficher en mode binaire le contenu du fichier ou coder un petit programme qui transforme le binaire en sa représentation 0/1 sous forme de caractères...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2074091
ElaxisP
Posté le 05-05-2011 à 15:18:10  profilanswer
 

Dans l'idéal, j'aimerais que le code soit le plus universel possible, donc sans compression, sans métadonnées.
Peut-être qu'une solution serait le bitmap, bien sûr, mais je pense que ce serait un peu trop facile :D. Cela dit, si déjà on trouve comment faire avec un bitmap, ce sera hyper bien.

n°2074092
gilou
Modérateur
Modzilla
Posté le 05-05-2011 à 15:20:31  profilanswer
 

Tu peux essayer un truc de ce genre, en perl, si tu veux juste une représentation avec des 0 et des 1 du contenu d'un fichier quelconque:
 
fichier binstring.pl

Code :
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4.  
  5. while (<> ) {
  6.  print unpack("B*", pack("a*", $_));
  7. }

si je l'essaie sur un fichier quelconque (ici, hello.exe, un executable qui affiche hello world)
C:\Perl>perl binstring.pl hello.exe
0100110101011010011000000000000000000001000000000000000000000000........................................
(une seule ligne assez longue)
 
Apres, si pour un fichier image comprimée, tu veux l'équivalent juste pour l'image, il faudra
1) avoir au départ une image non comprimée (donc sauvée en tiff par exemple)
2) virer les headers de l'image
3) appliquer une transformation comme précédemment au reste
A+,


Message édité par gilou le 05-05-2011 à 15:24:01

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2074095
ElaxisP
Posté le 05-05-2011 à 15:29:21  profilanswer
 

Merci gilou pour ton post !
 
Comme je n'ai pratiquement aucune notion en programmation, j'ai un peu du mal à cerner la chose, mais j'ai l'impression que ta méthode fonctionne.
 
Donc j'ai quelques questions : avec quoi peut-on faire du perl sur mac, et qu'est-ce que vous appelez "headers de l'image" (et en même temps du coup, comment les virer ?)

n°2074098
shaoyin
Posté le 05-05-2011 à 15:40:28  profilanswer
 

Le header stocke différentes infos sur le contenu du fichier : taille, checksum, paramètres d'échantillonage, type de fichier...
 
Chaque format d'image, de son, etc. utilise un header avec une structure spécifique. Comme son nom l'indique, il est stocké en tête de fichier et ne fait pas partie de l'image ou du son lui même. Il est juste là pour permettre le décodage du fichier.
 
Pour les virer, il "suffit" de sauter les n premiers octets du fichier où n est la taille de l'entête. Mais cela sous-entend que le contenu n'est pas compressé.

n°2074099
gilou
Modérateur
Modzilla
Posté le 05-05-2011 à 15:49:08  profilanswer
 

Pour le perl: Active Perl gratuit
http://www.activestate.com/activeperl/downloads
Il y a peut être déja un perl en standard sur Mac mais je n'en sais rien, à vérifier avant.
 
Les headers, ce sont des en têtes du fichier qui contiennent des données telles que Date de creation du fichier, taille de l'image, etc. La spécification tiff se trouve ici: http://partners.adobe.com/public/d [...] index.html mais en fait je pense pas trop qu'elle vous soit utile.
 
L'outil le plus courant pour manipuler les images a travers perl est ImageMagick:  http://www.imagemagick.org/script/ [...] mageMagick Une fois installé, et le module perl Image::Magick de CPAN installé, il doit y avoir moyen de récupérer uniquement la bitmap (et plus tard, avec ImageMagic, il doit y avoir moyen de faire tout ça pour des fichiers compressés en jpg aussi)
 
A+,
 


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2074100
gilou
Modérateur
Modzilla
Posté le 05-05-2011 à 15:53:47  profilanswer
 

shaoyin a écrit :

Le header stocke différentes infos sur le contenu du fichier : taille, checksum, paramètres d'échantillonage, type de fichier...
 
Chaque format d'image, de son, etc. utilise un header avec une structure spécifique. Comme son nom l'indique, il est stocké en tête de fichier et ne fait pas partie de l'image ou du son lui même. Il est juste là pour permettre le décodage du fichier.
 
Pour les virer, il "suffit" de sauter les n premiers octets du fichier où n est la taille de l'entête. Mais cela sous-entend que le contenu n'est pas compressé.

C'est pour cela que j'ai dit de passer par du TIFF (rarement compressé dans la pratique, quoique ça doit être possible dans la spec).
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2074170
Fabz49
Bouh !
Posté le 05-05-2011 à 20:54:58  profilanswer
 

sinon comme jte disais programmer une petite calculette sous flash qui converti ton code hexa :p

n°2074211
esox_ch
Posté le 06-05-2011 à 08:26:19  profilanswer
 

Fabz49 a écrit :

sinon comme jte disais programmer une petite calculette sous flash qui converti ton code hexa :p


 
Pourquoi pas en Labview ou Matlab tant qu'à faire dans l'inutilement lourd?


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°2074237
ElaxisP
Posté le 06-05-2011 à 10:33:01  profilanswer
 

Salut ! Bon bah je n'arrive pas à faire fonctionner ActivePerl (il n'apparaît pas dans mon dossier Applications). Est-ce que vous pourriez m'expliquer comment ça fonctionne ?

n°2074245
shaoyin
Posté le 06-05-2011 à 10:58:53  profilanswer
 

Normalement, perl est déjà installé sur Mac OS X. Si tu as saisi le script de gilou dans un fichier texte (par exemple "script.pl" ), il ne reste qu'à mettre des droits d'exécution dessus.
 
Pour l'exécuter, tu ouvres un terminal, et tu lances ton script en tapant :
<chemin de ton script>/script.pl <nom du fichier binaire que tu veux traiter>
 
Bon, voilà déjà une base. Tu vas sûrement rencontrer des erreurs, alors on traitera au cas par cas.

n°2074261
ElaxisP
Posté le 06-05-2011 à 11:27:47  profilanswer
 

J'ai fait un premier test. J'ai collé le code de gilou comme tel dans TextEdit, et je l'ai enregistré en UTF-8, et j'ai donné l'extension .pl
 
Ensuite, j'ai ouvert le terminal et j'ai fait un glissé déposé tu .pl dedans, pour avoir son chemin d'accès. J'ai ensuite rajouté le nom d'une image en .tiff entre les balises, comme shaoyin m'a dit de faire.
 
Voila ce que ca donne :
 
http://images.imagehotel.net/pdgyb99g95.jpg

n°2074275
shaoyin
Posté le 06-05-2011 à 11:56:54  profilanswer
 

Heu... non ! Les balises étaient juste là pour identifier des champs à adapter selon ton cas. Ici, il faut simplement mettre 26-lennon.tiff, sans les "<" ">"

n°2074279
ElaxisP
Posté le 06-05-2011 à 12:02:57  profilanswer
 

Malheureusement ca ne marche toujours pas.
 
"Permission denied"

n°2074281
shaoyin
Posté le 06-05-2011 à 12:05:50  profilanswer
 

As-tu mis les droits d'exécution sur ton fichier ? Dans ton terminal, tape la commande :
chmod u+x /Users/ElaxisP/Desktop/binaire.pl
 
Puis refais une tentative.

n°2074287
ElaxisP
Posté le 06-05-2011 à 12:20:12  profilanswer
 

Ca me met ça :
 
MacBook-de-Alexis-Petard:~ ElaxisP$ chmod u+x /Users/ElaxisP/Desktop/binaire.pl MacBook-de-Alexis-Petard:~ ElaxisP$ /Users/ElaxisP/Desktop/binaire.pl 26-lennon.tif
/Users/ElaxisP/Desktop/binaire.pl: line 2: use: command not found
/Users/ElaxisP/Desktop/binaire.pl: line 3: use: command not found
/Users/ElaxisP/Desktop/binaire.pl: line 5: syntax error near unexpected token `)'
/Users/ElaxisP/Desktop/binaire.pl: line 5: `    while (<> ) {'
MacBook-de-Alexis-Petard:~ ElaxisP$  
 
 

n°2074297
shaoyin
Posté le 06-05-2011 à 13:08:38  profilanswer
 

Assure toi que le caractère '#' de la première ligne du script soit bien en tout début de ligne (supprime tous les espaces situés avant).
 
Autrement, tu peux essayer aussi de lancer ton script en tapant :
perl /Users/ElaxisP/Desktop/binaire.pl 26-lennon.tif
 
Si cette dernière commande ne marche pas, c'est que perl n'est pas installé sur ta machine.

n°2074300
gilou
Modérateur
Modzilla
Posté le 06-05-2011 à 13:19:51  profilanswer
 

Il a peut être pas perl en /usr/bin, je ne sais pas comment c'est sur un mac.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2074302
shaoyin
Posté le 06-05-2011 à 13:21:41  profilanswer
 

C'est vrai ! Bonne remarque...
Si c'est le cas cependant, la dernière commande devrait marcher.

n°2074303
gilou
Modérateur
Modzilla
Posté le 06-05-2011 à 13:23:17  profilanswer
 

Notes qu'au vu de cet article, ça devrait pourtant être la cas: http://www.mactech.com/articles/ma [...] index.html
perl devrait être en /usr/bin
 
Déja s'il est en mode console et qu'il tape perl -v on devrait être fixé.
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2074314
Fabz49
Bouh !
Posté le 06-05-2011 à 13:40:45  profilanswer
 

Citation :

Pourquoi pas en Labview ou Matlab tant qu'à faire dans l'inutilement lourd?


héhé sauf qu'on ne connait que l'AS3. On est dans le graphisme donc pas dutout développeur mais utilisateur.
 
 
Sinon si tu y arrive Elax tu me montrera comment tu aura fait, ça m'intéresse ces bidouilles la ^^

n°2074318
ElaxisP
Posté le 06-05-2011 à 13:48:57  profilanswer
 

après avoir tappé perl -v, je tombe sur "this is perl v5.10.0" etc. etc.
 
Donc j'ai perl.
 
j'ai enlevé tous les espaces avant le # dans mon script, et j'ai essayé cette ligne de code dans le terminal :
 
perl /Users/ElaxisP/Desktop/binaire.pl 26-lennon.tif  
 
voilà le résultat :
 
MacBook-de-Alexis-Petard:~ ElaxisP$ perl /Users/ElaxisP/Desktop/binaire.pl 26-lennon.tif  
Can't open 26-lennon.tif: No such file or directory at /Users/ElaxisP/Desktop/binaire.pl line 5.
MacBook-de-Alexis-Petard:~ ElaxisP$  
 
 

n°2074319
shaoyin
Posté le 06-05-2011 à 13:55:04  profilanswer
 

Il faut indiquer le chemin complet de ton fichier image, parce qu'autrement le script le cherche dans le répertoire courant.


Message édité par shaoyin le 06-05-2011 à 13:55:31
n°2074322
ElaxisP
Posté le 06-05-2011 à 14:04:11  profilanswer
 

Ca marche ! C'est nickel
 
Merci beaucoup pour votre aide en tout cas !

n°2074347
gilou
Modérateur
Modzilla
Posté le 06-05-2011 à 15:26:08  profilanswer
 

Au cas ou, sur un gros fichier, tu atteindrais les limites de taille pour pack et unpack (je ne les connais pas), tu peux utiliser cette variante, qui découpe l'entrée en morceaux de taille fixe avant de faire la transformation (ici, j'ai fixé la taille de découpage à 4096 octets).

 
Code :
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4.  
  5. my $maxsize = 4096; # ou plus si ça passe
  6. my $line;
  7.  
  8. while (<> ) {
  9.  my $i = 0;
  10.  do {
  11.    $line = substr $_, $maxsize*$i, $maxsize;
  12.    print unpack("B*", pack("a*", $line));
  13.    ++$i;
  14.  } while ($maxsize*$i < length $_);
  15. }
 

A+,


Message édité par gilou le 06-05-2011 à 15:26:35

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Divers

  Aide ! Récupérer le langage binaire d'un fichier.

 

Sujets relatifs
envoi de gros fichier par socketUne question peut être bête : reconnaitre nombre binaire
Validation formulaire d'upload de fichier sans changer de pageaide choix cms svp urgent!
[Shell] lecture fichier configurationlecture d'un fichier .txt et retourner un tableau et une variable P,sv
aide script batchbesoin d'aide en C++ ou VB6 svp ma soutenance dans 20 jour :""(
Aide projet Web - recherche d'associésAide pour créer un script bot
Plus de sujets relatifs à : Aide ! Récupérer le langage binaire d'un fichier.


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR