Differences between revisions 2 and 3
Revision 2 as of 2006-01-06 14:46:53
Size: 3304
Comment:
Revision 3 as of 2006-01-06 14:51:03
Size: 3300
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
= Semestralni prace =
=
= Analyza protokolu ustredny Siemens EWSD ==
= Analyza protokolu ustredny Siemens EWSD =
Line 5: Line 4:

== Preambule ==
Line 49: Line 50:
Line 55: Line 55:
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
||level||dir||pltype||komentar||
||x||?||?||nejvyssi uroven bloku ma, zda se, nahodne ID||
||x-3||0x0c||1||
||x-4||
||x-4-3||4||0||
||x-4-3-2||4||0||
||x-5||2||0||
||x-5||0x0e||0||
||x-6||
||x-8||
Line 67: Line 68:
offset/delka/vyznam
3 2 unknown1
5 2 job number
7 ? unknown2
||offset||delka||vyznam||
||3||2||unknown1||
||5||2||job number||
||7||?||unknown2||

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).

Preambule

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):

level

dir

pltype

komentar

x

?

?

nejvyssi uroven bloku ma, zda se, nahodne ID

x-3

0x0c

1

x-4

x-4-3

4

0

x-4-3-2

4

0

x-5

2

0

x-5

0x0e

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