Ich versuche benutzerdefinierte Dissector für Wireshark, die Byte/hex-Ausgabe in ASCII-Zeichenfolge ändern wird schreiben.Umwandlung der Sequenz von Bytes in ASCII-Zeichenfolge in lua
Ich konnte den Körper dieses Dissektors schreiben und es funktioniert. Mein einziges Problem ist die Umwandlung dieser Daten in ASCII-Zeichenfolgen.
Wireshark deklariert diese Daten als Bytefolge. Zu Lua ist der Datentyp userdata
(getestet mit type(data)
). Wenn ich es einfach in Zeichenfolge mit tostring(data)
konvertieren, gibt mein Dissektor 24:50:48
zurück, die die genaue hexadezimale Darstellung von Bytes in einem Array ist.
Gibt es eine Möglichkeit, diese Bytefolge direkt in ASCII zu konvertieren, oder können Sie mir helfen, diese Doppelpunkt getrennte Zeichenfolge in ASCII-Zeichenfolge zu konvertieren? Ich bin völlig neu in Lua. Ich habe so etwas wie split(tostring(data),":")
versucht, aber diese gibt Lua Error: attempt to call global 'split' (a nil value)
Mit Jakuje Antwort ich in der Lage war, so etwas zu schaffen:
function isempty(s)
return s == nil or s == ''
end
data = "24:50:48:49:4A"
s = ""
for i in string.gmatch(data, "[^:]*") do
if not isempty(i) then
print(string.char(tonumber(i,16)))
s = s .. string.char(tonumber(i,16))
end
end
print(s)
Ich bin nicht sicher, ob diese wirksam ist, aber zumindest funktioniert;)
Ich sah jemanden mit Split auf die gleiche Weise, also habe ich es auch versucht. Später habe ich auch herausgefunden, dass es in Lua keine Trennung gibt :(Ich werde versuchen, deinen Weg zu gehen. Zuerst muss ich leere Einträge von string.gmatch überspringen. –
hat funktioniert, danke;) –
Irgendein Grund für den Downvote , tapferer Ranger? – Jakuje