Beiträge anzeigen

Diese Sektion erlaubt es dir alle Beiträge dieses Mitglieds zu sehen. Beachte, dass du nur solche Beiträge sehen kannst, zu denen du auch Zugriffsrechte hast.


Themen - supernicky

Seiten: [1]
1
Lowlevel-Coding / Berechnung der Prüfsumme im TCP Header
« am: 17. October 2015, 14:08 »
Hallo zusammen,

ich beschäftige mich zur Zeit mit der Netzwerkprogrammierung und möchte (muss) zum senden von Packeten
die Prüfsumme berechnen. Die Wikipedia Artikel sind wirklich gut, jedoch verstehe ich den Satz
Zitat
Die Prüfsumme ist das 16-Bit-Einerkomplement der Einerkomplement-Summe aller 16-Bit-Wörter im Header und der Nutzdaten des unterliegenden Protokolls
nicht ganz...

Hier erstmal mein empfangenes Packet als Beispiel:

Zitat
Ethernet Frame (14 Byte)
Ziel Mac                  Quelle Mac              Type
44:94:FC:13:61:AE    00:1E:C9:5C:3B:FB   0800

Zitat
IP Header (20 Byte)
Version       IHL       Gesamtlänge
0x45          0x0       0x34:0x0
Ident.         Flags/Fragment
0x1D85       0x4000
TTL/Prot     Prüfsumme
0x80/0x06   0x4C23
QuellIP  A:10:A8:C0         
ZielIP   58:8C:11:34


Zitat
TCP Header (20 Byte)
s-port         d-port
0xC01Ch      0x0050h
seqnr          0xE64C007Ch
acknr          0x3830A282h
off/flag        window
0x80/0x10    0x00FE
checksum     u-pointer
0xB06A        0x0

Zitat
Nutzerdaten (32 Byte)
0x1    0x1   0x5    0xA   0x38  0x30  0xA2  0x6D
0x38  0x30  0xA2  0x82  0x8B  0x8   0x25  0xF3
0x30  0x39  0x3A  0x33  0x38  0xAA 0xF2  0x22
0xB4  0xAB  0x99  0xD4  0x30  0x31 0x39  0x30

Zur Berechnung der Prüfsumme benötige ich die fett markierten Daten (Pseudoheader)
QuellIP  A:10:A8:C0         
ZielIP    58:8C:11:34
Prot       0x006
Länge    0x3400
0x1    0x1   0x5    0xA   0x38  0x30  0xA2  0x6D
0x38  0x30  0xA2  0x82  0x8B  0x8   0x25  0xF3
0x30  0x39  0x3A  0x33  0x38  0xAA 0xF2  0x22
0xB4  0xAB  0x99  0xD4  0x30  0x31 0x39  0x30

Nun liegen alle Header Daten im BigEndian Format vor. Müssen die Header Daten vorher nach LittleEndian
umgewandelt werden? Wie verfahre ich dann weiter?

Gruß und Danke

Nicky

2
tyndur / Download
« am: 27. January 2014, 22:15 »
wo kann man sich denn Tyndur downloaden (Diskettenimage) ohne googlen zu müssen wie man das entpackt?

Nicky
3
Lowlevel-Coding / Rückkehr aus Task mit IRET geht nicht
« am: 08. January 2014, 21:18 »
Hallo Gemeinde,

ich versuche seit einiger Zeit den Taskswitch mittels IRET.
Mein Programm erstellt nur eine GDT, 2 TSS Segmente mit den Descriptoren.
Alles läuft außerdem in Ring 0.

Der Aufruf des Tasks mittels CALL funktioniert tadellos. Am Ende soll mit IRET wieder zurückgesprungen werden,
da streikt aber die CPU. (Prozessorfehler)

Beide Tasks nutzen die selben Segmente (CS, DS) nur ESP ist unterschiedlich.

Ich habe mich schon auf Fehlersuche begeben und die Stacks und die TSS Segmente untersucht.
Das Backlink Feld wird richtig gesetzt und das Busy-Bit wird auch gesetzt. Jedoch finde ich weder
auf den Stacks, im TSS noch im EFlag Register das gesetzte NT-Bit was dafür erforderlich ist.

Die CPU muss das doch irgendwo speichern oder?

Wenn ich anstatt Call, JMP benutze springt er fehlerfrei zwischen beiden Tasks hin und her.

ESP des ersten Task = 0x80000 beim zweiten ist ESP auf 0x80500

Ich weiß nicht mehr weiter

Nicky
Seiten: [1]

Einloggen