[LINUX] Sortie d'un vidage binaire en binaire et retour dans un fichier binaire

Je veux faire quelque chose avec juste des commandes Linux!

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 
La description

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

Essayez de renvoyer le résultat de sortie

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

Sortie d'un vidage binaire en binaire et retour dans un fichier binaire
Créer un fichier binaire en Python
Changer la destination de sortie standard en un fichier en Python
Comment créer un fichier JSON en Python
Comment lire des fichiers dans différents répertoires
Comment compter le nombre d'éléments dans Django et sortir dans le modèle
Utilisez libsixel pour générer Sixel en Python et générer le graphe Matplotlib vers le terminal.
[Python] Combiner des listes contenant des nombres en chaînes et les écrire dans un fichier de sortie
La synchronisation de la sortie est incorrecte lorsque la sortie standard (erreur) est convertie en fichier en Python
Comment lire les fichiers de numéros de série en boucle, les traiter et les représenter graphiquement
Analyser une chaîne JSON écrite dans un fichier en Python
Création d'un module pour surveiller les mises à jour des fichiers et des URL
Convertir un fichier texte avec des valeurs hexadécimales en fichier binaire
Un mémorandum pour exécuter un script python dans un fichier bat
Je veux échantillonner au hasard un fichier avec Python
[Mac] Un moyen très simple d'exécuter des commandes système en Python et de générer les résultats
Télécharger un fichier sur Dropbox
Lire et écrire des fichiers
Écrire et lire des fichiers
Comment sortir un document au format pdf avec Sphinx
Comment importer des fichiers où vous le souhaitez en Python
Un moyen standard de développer et de distribuer des packages en Python
[Python] Comment générer une table pandas dans un fichier Excel
Essayez simplement de recevoir un webhook avec ngrok et Python
Que faire si vous chattez ou suivez un fichier binaire et que le terminal est brouillé
Compter des chaînes spécifiques dans un fichier
Comment comparer des listes et récupérer des éléments communs dans une liste
Enregistrez le fichier binaire en Python
[Introduction à Python] Comment générer une chaîne de caractères dans une instruction Print
Traitez le résultat de l'exécution de Splunk en utilisant Python et enregistrez-le dans un fichier
Sortie vers un fichier csv avec Python
Diff d'un fichier binaire (fichier image, etc.)
Lisez le binaire big endian en Python et convertissez-le en ndarray
Comment spécifier un fichier .py à charger au démarrage dans IPython 0.13
Comment afficher le résultat de sortie de la commande man Linux dans un fichier
[Python] Comment récupérer un fichier html local et le générer au format CSV à l'aide de Beautiful Soup
Je veux créer un fichier pip et le refléter dans le menu fixe
Exporter et exporter des fichiers en Python
Journalisation Python et vidage vers json
Comment créer un fichier de configuration
[Python scraping] Affiche l'URL et le titre du site contenant un mot-clé spécifique dans un fichier texte
Comment saisir une chaîne de caractères en Python et la sortir telle quelle ou dans la direction opposée.
Remplacez le nom du répertoire et le nom du fichier dans le répertoire par une commande Linux.
Créez des raccourcis pour exécuter des fichiers Python sur le terminal avec VScode
Comment obtenir un nom de colonne et un nom d'index spécifiques avec Pandas DataFrame
Comment spécifier un fichier .ui dans la boîte de dialogue / interface graphique du widget dans PySide
Comment mettre un espace demi-largeur avant les lettres et les chiffres en Python.
Connectez-vous à postgreSQL depuis Python et utilisez des procédures stockées dans une boucle.
Comment rendre le nom du conteneur accessible dans Docker en tant que sous-domaine
Le nom du fichier était mauvais en Python et j'étais accro à l'importation
J'ai fait un programme pour vérifier la taille d'un fichier avec Python
Comment arrêter le programme jusqu'à une date et une heure spécifiques en python
Comment diviser et enregistrer un DataFrame
Traitement des données 1 Formatage des données et entrée / sortie de fichier
Je veux imprimer dans la notation d'inclusion
Convertir un fichier psd en png en Python
Ecrire le fichier O_SYNC en C et Python