Ich habe eine Binärdatei, mit der ich senden kann netcat
:
$ nc -l localhost 8181 < my.dat
Die Datei enthält Folgendes:
$ xxd my.dat
0000000: 0006 3030 3030 4e43 ..0000NC
Was ich wirklich tun möchte, ist die Hex-Zeichenfolge direkt zu senden. Ich habe es versucht:
$ echo '0006303030304e43' | nc -l localhost 8181
Der obige Befehl sendet jedoch nur die ASCII-Zeichenfolge direkt an nc
.
md5sum ../it/manifest.json | awk '{print $1}' | xxd -r -p | hd
Hier eine Lösung ohne
xxd
oderperl
:Wenn das
echo
Built-in Ihrer Shell dies unterstützt (bash
undzsh
zwar, aber nichtdash
), müssen Sie nur die rechten Backslash-Escapes verwenden:Wenn Sie
/bin/echo
von GNU coreutils (fast Standard auf Linux - Systemen) oder von Busybox können Sie es auch.Mit können
sed
Sie ein Escape-Muster erzeugen:Kombiniert:
quelle
echo
durchprintf
wird die Vermutungsarbeit aufgehoben, wenn Echo erweiterte Funktionen unterstützt oder nicht.printf "$(echo '0006303030304e43' | sed -e 's/../\\x&/g')" | nc -l localhost 8181
.Wenn
xxd
ja, ist das ganz einfach: Es kann hexadezimal konvertiert werden.Ich glaube nicht, dass es eine vernünftige (und relativ schnelle) Möglichkeit gibt, Hexadezimalzahlen nur mit POSIX-Tools in Binärzahlen zu konvertieren. In Perl ist das ziemlich einfach. Das folgende Skript konvertiert hexadezimal in binär und ignoriert jedes Eingabezeichen, das keine hexadezimale Ziffer ist. Es beschwert sich, wenn eine Eingabezeile eine ungerade Anzahl von Hexadezimalziffern enthält.
Wenn Sie sich wirklich an POSIX halten müssen (z. B. auf einem eingebetteten Gerät), empfehle ich die Verwendung von Base64 anstelle von hexadezimal. Sie können uudecode verwenden , um Base64 zu dekodieren. Die Eingabe muss das von uuencode erzeugte Header-Format und die Endzeile haben , es darf kein Raw Base64 sein.
quelle
Ähnlich dazu: https://stackoverflow.com/questions/1604765/linux-shell-scripting-hex-string-to-bytes/47253233#47253233
Ich habe ein Tool geschrieben, das verschiedene Transformationen von stdin durchführt und das Ergebnis in stdout ausspuckt.
cryptocli dd
werde nur diese Transformationen machen und sonst nichts.Wird für Sie arbeiten.
Das Tool ist Open Source und hier zu finden: https://github.com/tehmoon/cryptocli
Bearbeiten:
Sie können mit meinem Tool auch direkt in hexadezimal kodieren:
quelle
616263
das mit dieser Frage zu tun? Bitte verwenden Sie die Daten aus der Frage. (2) Können Sie erklären, wie das funktioniert? Bitte antworten Sie nicht in Kommentaren, sondern bearbeiten Sie Ihre Antwort, um sie klarer und vollständiger zu gestalten.