52 votes

Comment visualiser le contenu binaire d'un fichier en mode natif sous Windows 7 (est-ce possible) ?

J'ai un fichier d'un peu plus de 500 Mo qui pose des problèmes.

Je pense que le problème réside dans la convention de fin de ligne (EOL) utilisée. J'aimerais examiner le fichier dans sa forme brute non interprétée (1) pour confirmer la convention de fin de ligne du fichier.

Comment puis-je voir le "binaire" d'un fichier en utilisant quelque chose d'intégré à Windows 7 ? Je préférerais ne pas avoir à télécharger quoi que ce soit d'autre.

(1) Mon collègue et moi-même avons ouvert le fichier dans des éditeurs de texte, qui affichent les lignes comme on pourrait s'y attendre. Mais les deux éditeurs de texte ouvrent des fichiers avec des conventions EOL différentes et les interprètent automatiquement. (TextEdit et Emacs 24.2. Pour Emacs, j'ai créé un deuxième fichier avec seulement les 4 premiers octets en utilisant head -c4096 sur une machine linux et l'a ouvert depuis ma machine Windows.

J'ai essayé d'utiliser le mode hexl dans Emacs, mais lorsque je suis passé au mode hexl et revenu au mode texte, le contenu du tampon avait changé, ajoutant un ^M visible à la fin de chaque ligne, donc je ne m'y fie pas pour l'instant.

Je pense que le problème réside dans le(s) caractère(s) de fin de ligne utilisé(s). Les éditeurs que mon collègue et moi avons essayés (1) reconnaissaient automatiquement la convention de fin de ligne et nous montraient des lignes. Et d'après d'autres éléments, je pense que la convention de fin de ligne est le retour chariot uniquement. (2) retour uniquement.

Pour savoir ce que contient réellement le fichier, j'aimerais examiner le contenu binaire du fichier, ou au moins quelques milliers d'octets du fichier, de préférence en hexadécimal, bien que je puisse travailler avec du décimal ou de l'octal. Uniquement des uns et des zéros seraient assez grossiers à regarder.

MISE À JOUR

Sauf celle qui suggère DEBUG Toutes les réponses ci-dessous fonctionnent dans une certaine mesure. J'ai ajouté une note à chacune d'entre elles pour indiquer qu'elles étaient utiles. Ma question était mal formulée. En testant chaque solution suggérée, je me suis rendu compte que je voulais vraiment que les contenus hexadécimaux et textuels soient affichés côte à côte, et que lorsque j'avais le curseur sur quelque chose, que ce soit une valeur d'octet ou un caractère textuel, la chose correspondante de l'autre côté était mise en surbrillance.

J'ai en fait résolu mon problème lorsque le mode hexl d'Emacs a commencé à fonctionner "correctement". J'ai donc fini par n'utiliser aucune de ces réponses, me contentant de les tester (je devrais vraiment enquêter sur le comportement bizarre d'Emacs et déposer un rapport de bogue).

104voto

AzizSM Points 1141

Si vous disposez de la version 5.0 de powershell ou d'une version ultérieure, vous pouvez utiliser la commande powershell fonction intégrée Format-Hex

PS:21 C:\Temp >Format-Hex application.exe

            0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F

00000000   42 4D 5E 00 00 00 00 00 00 00 36 00 00 00 28 00  BM^.......6...(. 
00000010   00 00 0A 00 00 00 01 00 00 00 01 00 20 00 00 00  ............ ... 
00000020   00 00 00 00 00 00 C4 0E 00 00 C4 0E 00 00 00 00  ......Ä...Ä..... 
00000030   00 00 00 00 00 00 B7 59 71 FF B7 59 71 FF B7 59  ......•Yq.•Yq.•Y 
00000040   71 FF B7 59 71 FF B7 59 71 FF B7 59 71 FF B7 59  q.•Yq.•Yq.•Yq.•Y 
00000050   71 FF B7 59 71 FF B7 59 71 FF B7 59 71 FF        q.•Yq.•Yq.•Yq.

31voto

Rich Points 101

Intégré, vite fait bien fait : démarrer powershell exécuter :

gc -encoding byte -TotalCount 100 "your_file_path" |% {write-host ("{0:x}" -f $_) -noNewline " "}; write-host   

TotalCount est le nombre d'octets que vous voulez lire dans le fichier.

Google 'powershell hexdump' permet d'obtenir des versions beaucoup plus élaborées et fonctionnelles.

Si vous disposez de Windows Resource Kit Tools (pas vraiment intégré, mais presque), vous pouvez également utiliser un utilitaire de ligne de commande appelé list.exe . Il s'agit d'un petit éditeur avec mode hexagonal. Conçu spécifiquement pour travailler avec de gros fichiers :

Outil de fichier texte de la liste (L d'afficher et de rechercher un ou plusieurs fichiers texte. Contrairement à d'autres outils d'affichage de texte, List ne lit pas l'intégralité du fichier en mémoire lorsque vous l'ouvrez. Il permet à un d'éditer un fichier texte au format hexadécimal.

La liste est utile pour afficher du texte ou des fichiers journaux. sur les serveurs où les administrateurs s'inquiètent de la dégradation de l'efficacité du système. performances du système.

17voto

Daniel R Hicks Points 6107

Vous avez besoin d'un "éditeur hexagonal". J'utilise "Hex Editor Neo" depuis des années et il est très bon. Il est disponible en versions gratuite et payante . (Et je suis sûr qu'il existe d'autres outils similaires).

11voto

sparks Points 173

Cela fonctionne également sur tous les systèmes postérieurs à XP :

certutil -encodehex MyProgram.exe MyProgram.txt

XP nécessite le pack d'outils d'administration Windows Server 2003 disponible ici :

https://www.microsoft.com/en-us/download/details.aspx?id=16770

7voto

jackrabbit Points 2990

Comme Windows 7 est livré avec le cadre dotnet 3.5, vous aurez le compilateur C# intégré, de sorte que vous pouvez prendre, par exemple, la liste de http://illegalargumentexception.blogspot.co.uk/2008/04/c-file-hex-dump-application.html puis compiler en utilisant

  \windows\Microsoft.NET\Framework\v3.5\csc printhex.cs 

et vous devriez obtenir un printhex.exe qui affichera à la fois des caractères hexagonaux et ascii.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X