Gehaxelts Blog

IT-Security & Hacking

StrToHex/HexToStr in Python

Funktionsweise der Umwandlung eines Strings in einen Hexstring und umgekehrt in Python.

Vor ein paar Tagen wurde ich gefragt, ob ich wisse, wie ein String, z.B. “Hallo” in den entsprechenden Hexwert umgewandelt wird. Da ich zunächst passen musste und dies nicht auf mir sitzen lassen wollte, habe ich nochmal scharf nachgedacht.

Da ich mal Base64 in Python umgesetzt hatte und man dort die Zeichen zunächst in ihre binäre Darstellung gebracht hat, dachte ich mir, man könnte das bei Hex auch mal so versuchen.

Die Vermutung hat sich bestätigt, denn nach den ersten Zeilen Python-Code konnte ich die Ausgabe meiner StrToHex Funktion erfolgreich mit einem Onlinedienst verifizieren.

Die Umwandlung ist also kein Geheimnis mehr:

  • Lese das erste Zeichen aus dem String

  • Wandle das Zeichen in den entsprechenden ASCII-Zeichenwert um

  • Rechne die Decimalzahl in eine Hexadecimal um

  • Füge das Ergebnis an einen Ergebnisstring an

  • Wiederhole Schritt 1 bis 4, solange noch Zeichen im String sind.

StrToHex

1
2
3
4
5
6
7
def StrToHex(string):
    hex_str=''
    for char in string:
        int_char = ord(char)
        hex_num = hex(int_char).lstrip("0x")
        hex_str+=hex_num
    return hex_str

HexToStr

1
2
3
4
5
6
def HexToStr(string):
    clear_str=''
    for counter in xrange(0,len(string),2) :
        hex_char=string[counter]+string[counter+1]
        clear_str+=unhexlify(hex_char)
    return clear_str

Aufrufe

1
2
print StrToHex("Hallo")
print HexToStr(StrToHex("Hallo"))

Fazit

Man kann das alles noch schöner implementieren, jedoch soll das hier nur die grobe Funktionsweise darstellen.

Gruß

gehaxelt