⇤ ← Revision 1 as of 2006-01-06 14:42:59
3364
Comment:
|
3304
|
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