Entwickler-Ecke

Basistechnologien - Hex Editor: bytes als char und Environment.NewLine Problem


Kasko - Sa 08.12.18 04:19
Titel: Hex Editor: bytes als char und Environment.NewLine Problem
Ich entwickle einen Network Sniffer mit PCapDotNet.

1. Problem: Ich möchte den Payload wie bei einem Hex-Editor wie HxD oder Nodepad++ darstellen.Meine Frage ist jetzt wie die Bytes bei einem HexEditor als chars interpretiert werden.Bei HxD ist ANSI der Standard.Wenn ich aber versuche das in C# umzusetzen, sieht das Ergebnis deutlich anders aus.

2. Problem: Manchmal werden bei der TextBox keine neuen Zeilenumbrüche hinzugefügt und wenn der Payload die aufeinanderfolgenden Bytes 0x0D und 0x0A entält wird beim umwandeln in einen char ein ungewollter Zeilenumbruch eingefügt.Wie kann ich dies verhindern?

LG Kasko.

Hier eine Beispielausgabe in der TextBox: - Line 3,11,12 sind richtig

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
00000000 01 00 5E 7F FF FA 42 49 79 A9 18 F2 08 00 45 00 00000010 00 98 98 83 00 00 04 11 BB 10 C0 A8 B2 1E EF FF 00000020 FF FA DB 06 07 6C 00 84 76 7C 4D 2D 53 45 41 52 ÿúÛl00000030 43 48 20 2A 20 48 54 54 50 2F 31 2E 31 0D 0A 48 CH * HTTP/1.1

00000040 4F 53 54 3A 20 32 33 39 2E 32 35 35 2E 32 35 35 OST: 239.255.255 
00000050 2E 32 35 30 3A 31 39 30 30 0D 0A 4D 41 4E 3A 20 .250:1900
MAN:  
00000060 22 73 73 64 70 3A 64 69 73 63 6F 76 65 72 22 0D "ssdp:discover"
 
00000070 0A 4D 58 3A 20 35 0D 0A 53 54 3A 20 75 72 6E 3A 
MX: 5
ST: urn: 
00000080 73 63 68 65 6D 61 73 2D 75 70 6E 70 2D 6F 72 67 schemas-upnp-org 
00000090 3A 64 65 76 69 63 65 3A 61 76 6D 6E 65 78 75 73 :device:avmnexus 
000000A0 3A 31 0D 0A 0D 0A :1



Moderiert von user profile iconTh69: Topic aus C# - Die Sprache verschoben am Sa 08.12.2018 um 10:29


Gausi - Sa 08.12.18 10:15

Zu deinem 2. Problem: 0D 0A ist ja der in Windows übliche Zeilenumbruch. Wenn du diese Bytefolge in einen String packst, dann wird das auch als Zeilenumbruch ausgegeben. Du musst also für die Ausgabe als String dafür sorgen, dass alle nicht-druckbaren und/oder Steuerzeichen in etwas unproblematisches geändert werden. Üblich dafür wäre ein Punkt oder ein Leerzeichen.

Fehlende Umbrüche in der Ausgabe dürften auch mit anderen Steuerzeichen oder einem Nullbyte zusammenhängen. :nixweiss: