[LINUX] Geben Sie einen Binärspeicherauszug in Binärdatei und zurück in eine Binärdatei aus

Ich möchte etwas nur mit Linux-Befehlen machen!

Es gab Zeiten, in denen ich die Speicherauszugsergebnisse einer Binärdatei in Binärdatei anzeigen wollte (nur mit dem Befehl linux). Ich werde vorstellen, was ich damals gemacht habe. (Es kann andere gute Wege geben.)

Bereiten Sie zunächst das folgende Shell-Skript vor.

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 
Erläuterung

Zunächst wird der erste Hexdump-Befehl in 1-Byte-Einheiten ausgegeben.

hexdump -v -e '/1 "%02X\n"' $1

Ausgabebeispiel

$ hexdump -v -e '/1 "%02X\n"' file
7F
45
4C
46
02
01
01
00
$

Geben Sie diese Ausgabe also awk und setzen Sie ein Leerzeichen dazwischen.

$ 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
$

Ich werde diese Ausgabe wieder awk geben. Geben Sie nun das folgende Skript mit der Option -f an.

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);
}

Dies erzeugt die folgende Ausgabe.

sample.txt


0111 1111
0100 0101
0100 1100
0100 0110
0000 0010
0000 0001

Versuchen Sie, das Ausgabeergebnis zurückzugeben

Nachdem wir dies getan haben, konvertieren wir es mit nur den Standard-Linux-Befehlen zurück in das Binärformat. Ich habe das folgende awk-Skript vorbereitet.

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)
}

mit diesem

0111 1111

Ist die Zeichenkette

echo -en "\x7F" >> hoge.bin

Wird in den Echo-Befehl konvertiert. Wenn Sie zu einem sauberen Dateinamen umleiten und diese Datei wie unten gezeigt ausführen, wird eine Binärdatei ausgegeben.

$ awk -f bin2hex.awk sample.txt > text2bin.sh
$ bash text2bin.sh

Recommended Posts

Geben Sie einen Binärspeicherauszug in Binärdatei und zurück in eine Binärdatei aus
Erstellen Sie eine Binärdatei in Python
Ändern Sie das Standardausgabeziel in eine Datei in Python
So erstellen Sie eine JSON-Datei in Python
So lesen Sie Dateien in verschiedenen Verzeichnissen
So zählen Sie die Anzahl der Elemente in Django und geben sie in die Vorlage aus
Verwenden Sie libsixel, um Sixel in Python auszugeben und das Matplotlib-Diagramm an das Terminal auszugeben.
[Python] Kombinieren von Listen mit Zahlen zu Zeichenfolgen und Schreiben in eine Ausgabedatei
Das Ausgabe-Timing ist falsch, wenn die Standardausgabe (Fehlerausgabe) in eine Datei in Python konvertiert wird
So lesen Sie Seriennummerndateien in einer Schleife, verarbeiten sie und zeichnen sie grafisch auf
Analysieren Sie eine JSON-Zeichenfolge, die in eine Datei in Python geschrieben wurde
Erstellt ein Modul zur Überwachung von Datei- und URL-Aktualisierungen
Konvertieren Sie eine Textdatei mit hexadezimalen Werten in eine Binärdatei
Ein Memorandum zum Ausführen eines Python-Skripts in einer Bat-Datei
Ich möchte eine Datei mit Python zufällig testen
[Mac] Eine supereinfache Möglichkeit, Systembefehle in Python auszuführen und die Ergebnisse auszugeben
Laden Sie eine Datei in Dropbox hoch
Dateien lesen und schreiben
Dateien schreiben und lesen
So geben Sie ein Dokument im PDF-Format mit Sphinx aus
So importieren Sie Dateien in Python an eine beliebige Stelle
Eine Standardmethode zum Entwickeln und Verteilen von Paketen in Python
[Python] So geben Sie eine Pandas-Tabelle in eine Excel-Datei aus
Versuchen Sie einfach, einen Webhook mit ngrok und Python zu erhalten
Was tun, wenn Sie eine Binärdatei katzen oder verfolgen und das Terminal verstümmelt ist?
Zählen Sie bestimmte Zeichenfolgen in einer Datei
So vergleichen Sie Listen und rufen allgemeine Elemente in einer Liste ab
Speichern Sie die Binärdatei in Python
[Einführung in Python] So geben Sie eine Zeichenfolge in einer Print-Anweisung aus
Verarbeiten Sie das Ausführungsergebnis von Splunk mit Python und speichern Sie es in einer Datei
Ausgabe in eine CSV-Datei mit Python
Diff eine Binärdatei (Bilddatei, etc.)
Lesen Sie die Big-Endian-Binärdatei in Python und konvertieren Sie sie in ndarray
So geben Sie eine .py-Datei an, die beim Start in IPython 0.13 geladen werden soll
So geben Sie das Ausgabeergebnis des Linux-Befehls man in eine Datei aus
[Python] So kratzen Sie eine lokale HTML-Datei und geben sie mit Beautiful Soup als CSV aus
Ich möchte eine Pipfile erstellen und im Docker wiedergeben
Exportieren und Ausgeben von Dateien in Python
Python-Protokollierung und Dump an JSON
So erstellen Sie eine Konfigurationsdatei
[Python-Scraping] Geben Sie die URL und den Titel der Site mit einem bestimmten Schlüsselwort in eine Textdatei ein
So geben Sie eine Zeichenfolge in Python ein und geben sie unverändert oder in die entgegengesetzte Richtung aus.
Ersetzen Sie den Verzeichnisnamen und den Dateinamen im Verzeichnis zusammen mit einem Linux-Befehl.
Erstellen Sie Verknüpfungen, um Python-Dateien auf dem Terminal mit VScode auszuführen
So erhalten Sie mit pandas DataFrame einen bestimmten Spaltennamen und Indexnamen
So geben Sie eine .ui-Datei in der Dialog- / Widget-GUI in PySide an
So setzen Sie in Python ein Leerzeichen mit halber Breite vor Buchstaben und Zahlen.
Stellen Sie von Python aus eine Verbindung zu postgreSQL her und verwenden Sie gespeicherte Prozeduren in einer Schleife.
So machen Sie den Containernamen in Docker als Subdomain zugänglich
Der Dateiname war in Python schlecht und ich war süchtig nach Import
Ich habe ein Programm erstellt, um die Größe einer Datei mit Python zu überprüfen
So stoppen Sie das Programm bis zu einem bestimmten Datum und einer bestimmten Uhrzeit in Python
So teilen und speichern Sie einen DataFrame
Datenverarbeitung 1 Datenformatierung und Dateieingabe / -ausgabe
Ich möchte in der Einschlussnotation drucken
Konvertieren Sie die psd-Datei in Python in png
Schreiben Sie die O_SYNC-Datei in C und Python