Differences between revisions 1 and 2
Revision 1 as of 2006-01-06 14:42:59
Size: 3364
Comment:
Revision 2 as of 2006-01-06 14:46:53
Size: 3304
Comment:
Deletions are marked like this. Additions are marked like this.
Line 39: Line 39:
||1||||2||?||something!!! - parsuj jako blok||
dir==2 && subseq>1 Continued answer - interpretuj primo
dir==2 && pltype==1 && subseq<=1 Long answer - parsuj jako blok
dir==2 && pltype==2 Short answer - parsuj jako blok
dir==3 && pltype==1 Command confirmation - parsuj jako blok
dir==4 && pltype==0 Login attempt ? - parsuj jako blok
dir==0x0c && pltype==1 Login accept ? - parsuj jako blok
dir==0x0e && pltype==0 Something!!! - parsuj jako blok
dir==3 && pltype==6 Answer confirmation, send more data - datova cast neexistuje
||1||2||?||something!!! - parsuj jako blok||
||2||?||>1||Continued answer - interpretuj primo||
||2||1||<=1||Long answer - parsuj jako blok||
||2||2||?||Short answer - parsuj jako blok||
||3||1||?||Command confirmation - parsuj jako blok||
||4||0||?||Login attempt ? - parsuj jako blok||
||0x0c||1||?||Login accept ? - parsuj jako blok||
||0x0e||0||?||Something!!! - parsuj jako blok||
||3||6||?||Answer confirmation, send more data - datova cast neexistuje||
Line 50: Line 50:
Datova cast: == Datova cast ==

Semestralni prace

Analyza protokolu ustredny Siemens EWSD

Nebudu su zde zabyvat nizsimi transportnimi vrstvami. V praxi je pro transport vyuzit protokol X.25 nebo jeho IP verze XOT (X.25 over TCP).

Kazda datova zprava zacina sekvenci 11-ti bytu, nazyvejme je preambuli. Volitelne pak nasleduje datova cas nesouci uzitecnou informaci. O tom, jestli se datova cast objevi, ci ne, rozhoduje prave obsah preambule.

Rozbor preambule:

offset

delka

vyznam

0

1

family

1

1

unknown1

2

1

direction

3

1

payload type

4

2

connection id

6

1

sub-sequence

7

1

unknown2

8

2

unknown3

10

1

tail

Preambule podrobneji: family Zda se, ze v komukaci se vyskytuji dve hlavni rodiny zprav. Rodina COMMAND (family == 0xf1) a ANSWER (family == 0xf2).

direction Zprvu se zdalo, ze tento byte ma neco spolecneho se smerem komunikace (ustredna->terminal nebo opacne), ale dalsi nasbirana data to nepotvrdila.

payload type Tento byte vypovida o typu datove casti nebo o jeji samotne existenci, zatim vsak neni presne popsano jakym zpusobem.

connection id Zda se, ze tento word je unikatni pro kazdou sub-komunikaci (pozadavek+odpoved).

sub-sequence Pokud je odpoved prilis dlouha, je nutne ji rozfragmentovat. Zda se, ze k identifikaci poradi fragmentu slouzi tento byte.

Tabulka podminek pro dalsi operace:

dir

pltype

subseq

operace

1

2

?

something!!! - parsuj jako blok

2

?

>1

Continued answer - interpretuj primo

2

1

<=1

Long answer - parsuj jako blok

2

2

?

Short answer - parsuj jako blok

3

1

?

Command confirmation - parsuj jako blok

4

0

?

Login attempt ? - parsuj jako blok

0x0c

1

?

Login accept ? - parsuj jako blok

0x0e

0

?

Something!!! - parsuj jako blok

3

6

?

Answer confirmation, send more data - datova cast neexistuje

Datova cast

Datova cast se sklada z nekolika bloku, ktere mohou byt dokonce obsazeny rekurentne samy v sobe. Kazdy takovyto blok je uvozen trojici bytu, kde prvni byte identifikuje cislo bloku (ID) a nasledujici word jeho delku (LEN). Nasleduje uzitecna informace o delce LEN. Ja jsem jiz predeslal, nektere kombinace ID vypovidaji o tom, ze uzitecna cast bloku se ma opet parsovat a vyhledat v ni dalsi bloky.

Rekurentni bloky se objevuji pro sekvence ID bloku (x oznacuje, ze na ID nezalezi): x - nejvyssi uroven bloku ma, zda se, nahodne ID x-3 && direction==0x0c && pltype==1 x-4 x-4-3 && dir==4 && pltype==0 x-4-3-2 && dir == 4 && pltype==0 x-5 && dir==2 && pltype==0 x-5 && dir==0x0e && pltype == 0 x-6 x-8

Dalsi bloky se jiz neparsuji rekurentne a maji nasledujici vyznam: x-2 offset/delka/vyznam 3 2 unknown1 5 2 job number 7 ? unknown2

x-3-1 Exchange name x-3-2 APS version x-3-3 Patch version x-3-5 Username

x-4-1 && dir==4 && pltype==0 Terminal name

x-4-1 Exchange name x-4-2 APS version x-4-3 Patch version

x-4-3-2-2 Username

x-4-3-2-3 3 6 Date (string) 9 6 Time (string) 15 ? unknown

x-4-4 Terminal name x-4-5 Username

x-4-6 3 1 Year 4 1 Month 5 1 Day

x-4-7 3 1 Hour 4 1 Minute 5 1 Second

x-5-2 && family==COMMAND && dir==2 && pltype==0 Command error

x-6-1 && family==COMMAND Command

x-7 && family==ANSWER Answer