
Ich debugge eine App für einen Kunden und habe in der Datenbank Informationen gefunden, die eine Lösung sein könnten. Ich habe den Kunden gebeten, sie zu extrahieren, aber leider hat der Kunde mir die Rohdaten im Hexadezimalformat gesendet ...
Ich bitte den Client, mir den Klartext aus den DB-Tools erneut zu senden, suche aber während ich auf seine Antwort warte, nach einer Bash-Lösung.
Ich weiß, dass es sich bei den codierten Daten um eine UTF-8-codierte Zeichenfolge handelt: Gibt es eine Möglichkeit, sie mit Unix-Tools zu decodieren?
Antwort1
Mit xxd
(normalerweise mitgeliefert vim
)
$ echo 5374c3a97068616e650a | xxd -p -r
Stéphane
Wenn der Zeichensatz Ihrer Lokalisierung (siehe Ausgabe von locale charmap
) nicht UTF-8 ist (aber alle Zeichen in der codierten Zeichenfolge darstellen kann), fügen Sie ein hinzu | iconv -f UTF-8
.
Wenn nicht alle Zeichen dargestellt werden können, können Sie versuchen, | iconv -f UTF-8 -t //TRANSLIT
eine Annäherung zu erhalten.
Antwort2
Zählt Perl?
$ echo "68656c6c6f0a" | \
perl -ne 'tr/a-fA-F0-9//cd; print pack("H*", $_)'
hello
Wenn nicht, könnte das hier vielleicht helfen:
$ echo "68656c6c6f0a" | sed -Ee 's/[0-9a-fA-F]{2}/\\\\x&/g' | xargs printf
hello
Wir benötigen einen wörtlichen Backslash für printf
, aber er ist für beide speziell xargs
und sed
muss daher zweimal verdoppelt werden. ( \\\\x
-> \\x
-> \x
)