You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Aug 12, 2020. It is now read-only.
Protokoll och implementation av Badbank TCP protokollet. Skolarbete i kursen programmeringsparadigmer.
Protokollet delas upp i två portar. Transaction för användartrafik och Update för klientuppdateringar. Alla data är big-endian.
Del
Port
Typ
Transaction
1337
10 byte binary
UIUpdate
1338
lang package
Transaction
Transaction hanterar allt som har med användare att göra. Att logga in, felmeddelanden, kontoförändringar osv. Transaction är ett binärt protokoll med ett enda format med fyra tolkningsmöjligheter beroende på de två första bitarna.
Område
Längd (bitar)
Tolkning
opcode
2
unsigned int
special
14
*olika
large
64
signed int
Opcode
Opcode specificerar meddelandets typ. Det finns 4 olika opcodes.
Opcodes
namn
binärkod
0
change
00
1
login
01
2
iam*
10
3
info
11
skickas över Update porten.
Change
Skickas från klient till server.
Large är den siffra som ska adderas till användarens saldo. Om large är negativ ska special vara en två-siffrig säkerhetskod från en lista som banken tillhandahålligt användaren. Varje kod fungerar enbart en gång.
Large = 0 är giltigt.
Servern kommer svara med ett info-meddelande med en flagga som meddelar om förändringen lyckades.
Format
opcode
special
large
områden
change
säkerhetskod
mängd
exempel
00
01
-299
--
--
00
Login
Skickas från klient till server.
Login måste vara det första meddelandet en klient skickar över Transaction. Special ska vara en fyrsiffrig pinkod, large ska vara ett kortnummer
Format
opcode
special
large
områden
login
pinkod
kortnummer
exempel
01
4444
3141592654
Iam
Skickas från klienten till servern över UIUpdate.
Triggar en updatering av klientens språkdata och meddelar servern om vilket språk klienten vill ha uppdateringar i. Special är två ascii-tecken utan den första biten, dvs 7 bitar var.
Format
opcode
special
large
områden
iam
språk
0
exempel
10
"sv"
0
exempel
10
"en"
0
Info
Skickas från servern till klienten.
Large är användarens nuvarande saldo om användaren är inloggad (inklusive just blev inloggad). Special är ett antal flaggor som kan vara satta. Flaggorna listas nedan, i ordning från minst signifikant bit till mest signifikant:
Specialfältet
namn
0
login success
1
withdraw success
Format
opcode
special
large
områden
info
flaggor
saldo
exempel
11
2
300
Exempeltrafik i Transaction
Klient
Riktning
Server
Login
-->
<--
info
Change
-->
<--
info
Change
-->
<--
info
TCP CLOSE
UIUpdate
Över den här porten skickas Iam till servern och lang package till klienten. Ett Iam ska trigga ett lang package, men i övrigt kan ett lang package komma utan förvarning.
Ett lang package är ett antal utf8-kodade, null-terminerade strängar. Null tas bort vid tolkning av paketet, strängar får ej innehålla null. Strängarna ska skickas i ordning som nedan: