Il fut un temps où je voulais afficher le résultat du vidage d'un fichier binaire en binaire (uniquement avec la commande linux). Je vais vous présenter ce que j'ai fait à ce moment-là. (Il peut y avoir d'autres bonnes façons.)
Tout d'abord, préparez le script shell suivant.
hex2bin.sh
#!/bin/bash
hexdump -v -e '/1 "%02X\n"' $1 | awk '{print substr($1,1,1) " " substr($1,2,1)}' | awk -f hex2bin.awk
Tout d'abord, la première commande hexdump sort en unités de 1 octet.
hexdump -v -e '/1 "%02X\n"' $1
Exemple de sortie
$ hexdump -v -e '/1 "%02X\n"' file
7F
45
4C
46
02
01
01
00
$
Alors, donnez cette sortie à awk et mettez un espace entre eux.
$ hexdump -v -e '/1 "%02X\n"' file | awk '{print substr($1,1,1) " " substr($1,2,1)}'
7 F
4 5
4 C
4 6
0 2
0 1
0 1
0 0
$
Je donnerai à nouveau cette sortie à awk. Spécifiez maintenant le script suivant avec l'option -f.
hex2bin.awk
function hex2bin(shex) {
bins["0"] = "0000";
bins["1"] = "0001";
bins["2"] = "0010";
bins["3"] = "0011";
bins["4"] = "0100";
bins["5"] = "0101";
bins["6"] = "0110";
bins["7"] = "0111";
bins["8"] = "1000";
bins["9"] = "1001";
bins["A"] = "1010";
bins["B"] = "1011";
bins["C"] = "1100";
bins["D"] = "1101";
bins["E"] = "1110";
bins["F"] = "1111";
return bins[shex];
}
{
print hex2bin($1) " " hex2bin($2);
}
Cela produira la sortie suivante.
sample.txt
0111 1111
0100 0101
0100 1100
0100 0110
0000 0010
0000 0001
Maintenant que nous avons fait cela, convertissons-le au format binaire avec uniquement les commandes linux standard. J'ai préparé le script awk suivant.
bin2hex.awk
function bin2hex(sbin) {
hex["0000"] = "0";
hex["0001"] = "1";
hex["0010"] = "2";
hex["0011"] = "3";
hex["0100"] = "4";
hex["0101"] = "5";
hex["0110"] = "6";
hex["0111"] = "7";
hex["1000"] = "8";
hex["1001"] = "9";
hex["1010"] = "A";
hex["1011"] = "B";
hex["1100"] = "C";
hex["1101"] = "D";
hex["1110"] = "E";
hex["1111"] = "F";
return hex[sbin];
}
{
printf "echo -en \"\\x%c%c\" >> hoge.bin\n",bin2hex($1),bin2hex($2)
}
avec ça
0111 1111
Est la chaîne de caractères
echo -en "\x7F" >> hoge.bin
Est converti en commande echo. Si vous redirigez vers un nom de fichier soigné et exécutez ce fichier comme indiqué ci-dessous, un fichier binaire sera généré.
$ awk -f bin2hex.awk sample.txt > text2bin.sh
$ bash text2bin.sh
Recommended Posts