Mam plik binarny, który mogę wysłać netcat
:
$ nc -l localhost 8181 < my.dat
Plik zawiera to:
$ xxd my.dat
0000000: 0006 3030 3030 4e43 ..0000NC
Naprawdę chcę bezpośrednio wysłać ciąg szesnastkowy. Próbowałem tego:
$ echo '0006303030304e43' | nc -l localhost 8181
Jednak powyższe polecenie po prostu wysyła ciąg ascii bezpośrednio do nc
.
md5sum ../it/manifest.json | awk '{print $1}' | xxd -r -p | hd
Oto rozwiązanie bez
xxd
lubperl
:Jeśli
echo
wbudowana powłoka obsługuje tę funkcję (bash
izsh
robi to, ale nie robi tegodash
), wystarczy użyć właściwego znaku ukośnika odwrotnego:Jeśli masz
/bin/echo
z GNU coreutils (prawie standardowy w systemach Linux) lub z busybox, możesz go również użyć.Dzięki
sed
możesz wygenerować wzór zmiany znaczenia:Łączny:
źródło
echo
zprintf
Usuwa zgadywanie jeśli ECHO wspiera rozszerzone funkcje, czy nie.printf "$(echo '0006303030304e43' | sed -e 's/../\\x&/g')" | nc -l localhost 8181
.Jeśli tak
xxd
, to proste: można przekonwertować na format szesnastkowy iz powrotem.Nie sądzę, aby istniał rozsądny (i dość szybki) sposób konwersji szesnastkowej na binarną przy użyciu tylko narzędzi POSIX. W Perlu można to zrobić dość łatwo. Poniższy skrypt konwertuje wartość szesnastkową na binarną, ignorując każdy znak wejściowy, który nie jest cyfrą szesnastkową. Narzeka, jeśli wiersz wejściowy zawiera nieparzystą liczbę cyfr szesnastkowych.
Jeśli naprawdę chcesz trzymać się POSIX (np. Na urządzeniu osadzonym), zalecam użycie Base64 zamiast szesnastkowego. Możesz użyć kodu uudecode do zdekodowania Base64. Dane wejściowe muszą mieć format nagłówka i linię końcową wygenerowane przez uuencode , nie może być surowym kodem Base64.
źródło
Podobne do tego: https://stackoverflow.com/questions/1604765/linux-shell-scripting-hex-string-to-bytes/47253233#47253233
Napisałem narzędzie, które wykonuje różne transformacje ze standardowego wejścia i wyrzuca wynik na standardowe wyjście.
cryptocli dd
zrobi tylko te transformacje i nic więcej.Będzie działać dla ciebie.
Narzędzie jest open source, można je znaleźć tutaj: https://github.com/tehmoon/cryptocli
Edytować:
Możesz również zakodować bezpośrednio do heksadecymalnego za pomocą mojego narzędzia:
źródło
616263
ma wspólnego z tym pytaniem? Proszę użyć danych z pytania. (2) Czy możesz wyjaśnić, jak to działa? Nie odpowiadaj w komentarzach, edytuj swoją odpowiedź, aby była jaśniejsza i bardziej kompletna.