Hej Flashbackare!
Då den förra tråden om detta ämne var som gjord för att skapa missförstånd lägger jag upp en ny för ändamålet.
För er som inte är intresserade av hur vi kommit fram till resultatet får ni redan här länken till en liten java-applikation till mobiltelefoner. Denna genererar semikorrekta SMS-biljetter som klarar av allt utom en grundlig koll.
Notera att Tricket endast är för studiebruk och används i SL-trafiken på egen risk!
http://84.55.91.134/Tricket.html
Tack Malako som kodade applikationen!
Nu till en snabb förklaring om vad jag kommit fram till om de olika siffrorna och bokstäverna i SMS:et. Som underlag har jag haft en hel del SMS att titta på. Mest mina egna och Malako's, men även några från andra användare.
72150
1110
2008-07-09 01:08
101-R-A 02:23
+'953296452'+
+'932547064'+
+'700663442'+
2008-07-09
SL Biljett giltig till kl. 02:23. RED.PRIS 18 kr (inkl. 6% moms).
0108U5294G09a3e373090
En sms-biljett består av ett flertal mer eller mindre viktiga delar. Jag har markerat de viktiga.
Avsändarnumret har två viktiga delar, 72150 AB CC
AB är zonkodning. Jag är har observerat detta:
7215011xx A = zon a
7215012xx B = zon b
72150xxxx C = zon c
7215024xx D = zon ab
72150xxxx E = zon bc
7215036xx F = zon abc
och drar då slutsatsen att det är byggt såhär:
7215011xx A = zon a
7215012xx B = zon b
7215013xx C = zon c
7215024xx D = zon ab
7215025xx E = zon bc
7215036xx F = zon abc
A är antal zoner man åker igenom och B är biljettypen. Bokstaven jag skrivit bredvid telefonnumret är det trettonde tecknet i kontrollkoden. Versal för helt pris och gemen för reducerat.
CC är ett tvåsiffrigt tal som jag kommer ta upp längre ner då jag behöver en siffra i slutet av kontrollkoden.
101-R-A 02:23
101 är helt enkelt CCB, om man tittar på avsändarnumret. Tecknet efter är alltid en matematisk operator (+-*/) som tillsynes väljs ut slumpmässigt. Pä senare tid har dock enbart "-" och "/" använts, så vi kan ignorera övriga tecken.
Sedan kommer vanlig information och tre ganska slumpade sifferrader som hänger ihop lite löst. Dessa kontrolleras inte så vitt jag vet, så vi har valt att helt enkelt slumpa fram större delen i Tricket.
Nu till kontrollkoden! Jag har kollat på några relativt nya sms och försökt lista ut hur det ligger till.
0108U5294G09a3e373090 - Tiden vid inköp. Behöver inte förklaras.
0108
U5294G09a
3e373090 - En kod för varje veckodag. Den byts vid månadsskifte. Till exempel: I juni 2008 hade alla fredagar K6-2 och alla söndagar H4-6. Den sista av dessa två siffror används för att räkna ut telefonnumret. Detta kommer om ett tag. Jag skrev upp månadsvis för varje veckodag från de jag har:
Kod:
5 6 7 8 9
mån A9-4 L5-2 P3-3 H8-4
tis E8-5 A4-6 A4-6
ons L3-2 U5-3 H8-5
tors P4-5 X6-5 B3-4
fre V1-2 K6-2 P9-2 M9-6 H7-4
lör Q6-5
sön K2-4 H4-6 U2-2 K1-2
Jag har letat mönster i dessa bokstäver och siffror i flera timmar utan att hitta något. Jag lämnar över stafettpinnen för detta till er.
0108U5
294G09a3e373090 - Sista siffrorna i ditt telefonnummer.
0108U5294
G09a3e373090 - Datum. Först månad: A=1 (Jan), B=2 (Feb), osv. och sen dagens datum. G09 är alltså nionde juli.
0108U5294G09
a3e373090 - Kod för biljettyp, vilket jag redan gått igenom.
0108U5294G09a3
e373090 - Det här är i princip biljettens serienummer. Då Malako på fyllan av misstag skickade iväg fem SMS inom en minut kan vi konstatera att de sex siffrorna rullar och bokstaven ändras lite hipp som happ.
0107H4524F29A6 a234984
0107H4524F29A6 f234987
0107H4524F29A6 g234988
0107H4524F29A6 z234990
0107H4524F29A6 h234991
72150AB
CC - De här två siffrorna är baserade på tiden i minuter vid biljettköpet och en siffra i koden (0108U5294G09a
3e373090)
Vi kallar siffran för x. Vi har sedan tidigare 72150
ABCC och antal minuter (01
08 /.../). Detta ger oss att
CC = x + antal minuter - A
Telefonnumret borde då sluta på 3 + 8 - 1 = 10
721501110, vilket är helt rätt.
Det här är alla koder jag tittat på för att komma fram till allt detta. Jag och Malako drog upp allt i excel för kontroll och alla avsändarnummer stämmer.
Kod:
1336V1294E02A2x091139
1247K2294E11A4v253542
1417E8294F03A5z697617
1250L3524F04A2t716551
1825L3524F04A2j725413
1328P4524F05A5f740285
1544P4524F05A5b743898
1709P4524F05A5e746697
0107K6294F06a2e755981
0108K6524F06A2e755985
0749A9524F09A4y809429
1216A9524F09A4c814933
0811E8524F10A5b831136
1725E8524F10A5j843616
1725L3524F11A2s866891
1234P4524F12A5u880872
1918P4524F12A5c890453
0801K6524F13A2x896312
1926K6524F13A2h912102
0056H4294F15a6c944005
1059H4294F15a6i948149
0949A9524F16A4y969015
1144A9524F16A4g971308
1821A9524F16A4f984764
1030E8524F17A5f996627
1858E8524F17A5t011540
1251L3524F18A2v025590
2040L3524F18A2a040664
1851P4524F19A5u063512
1005U2524F21D7x081604
0835A9524F23A4j106490
1818A9524F23A4y120564
0940E8524F24A5h129995
1754E8524F24A5a141863
0948L3524F25A2n153044
1736L3524F25A2u164518
1356P4524F26A5x180681
1810P4524F26A5h187887
0923K6294F27a2x197438
1359K6524F27A2r202238
1717K6524F27A2t208273
0107H4524F29A6a234984
0107H4524F29A6f234987
0107H4524F29A6g234988
0107H4524F29A6z234990
0107H4524F29A6h234991
1138H4675F29a6f239***
1329H4675F29a6i239***
0831A9524F30A4s251826
1714A9524F30A4x262278
2234U5524G02A3h289797
1341P9524G04A2e305932
1814P9524G04A2b310298
2124P9524G04A2j312796
1146L5524G07A2r346176
0108U5294G09a3e373090
0016Q6524G12A5k418426
2249Q6524G12A5c431194
1656A4524G15A6p464318
1555X6524G17A5f494678
1745Q6524G19A5j528454
2320U2524G20A2x546187
1357L5524G28A2a664280
2214A4524G29A6z688576
1804M9524H01A6d735702
0050K1524H03A2r762145
0154K1450H10a2p899***
1051P3524H11A3c918536
0830H8***H20A5i118925
1807H8***H20A5i133843
1755B3275H21A4k157***
1349A4524H26A2u258039
1603H8524H27A5m281581
1331M9***H29a6z320997
1549H8910I01f6f489253
1742H8524I01A4t393451
2358H8910I01c4t398881
2025H7587I05d4i483961
Säg till om ni hittar några fel eller har något annat att tipsa om! Jag svarar i den mån jag kan på frågor om systemets uppbyggnad eller om oklarheter i mina förklaringar.
Må väl!