Skip to content
This repository was archived by the owner on Aug 12, 2020. It is now read-only.

elegios/badbank

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Badbank

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:

String name Description
LOGIN_INTRO before providing login info
LOGIN_CARD_NUMBER before entering card number
LOGIN_PIN_CODE before entering pin code
LOGIN_SUCCESS after successfully logging in
LOGIN_FAIL after failing to log in
BALANCE will be followed by a space and the balance
MENU_BANNER before chosing an action
MENU_BALANCE description of 'print account balance'
MENU_DEPOSIT description of 'deposit'
MENU_WITHDRAW description of 'withdraw'
MENU_CHANGE_LANGUAGE description of 'change language'
MENU_QUIT description of 'quit'
CHANGE_AMOUNT before entering amount to deposit/withdraw
DEPOSIT_CODE before entering two-digit code
DEPOSIT_FAIL after a deposit has failed
CHANGE_LANGUAGE_QUESTION before entering language to change to
LANGUAGE_WILL_CHANGE after iam has been sent

Exempeltrafik i Update

Klient Riktning Server
Iam -->
<-- update
... ... ...
<-- update
TCP CLOSE

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages