Advertisement
Guest User

Untitled

a guest
May 12th, 2013
3,029
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 17.19 KB | None | 0 0
  1. --- mifare-mad.pl   2011-02-06 08:41:06.000000000 +0100
  2. +++ mifare-mad.pl   2012-06-28 10:59:36.000000000 +0200
  3. @@ -7,16 +7,20 @@
  4.  # MIFARE Application Directory (MAD)
  5.  # http://www.nxp.com/acrobat_download2/other/identification/MAD_overview.pdf
  6.  
  7. -use Data::Dump qw(dump);
  8. +use Data::Dumper;
  9.  
  10.  my $debug = $ENV{DEBUG} || 0;
  11.  
  12.  my $function_clusters;
  13.  my $mad_id;
  14. +my $wkm_ttid;
  15. +my $wkm_pos;
  16. +my $wkm_line;
  17.  
  18.  while(<DATA>) {
  19.     chomp;
  20.     next if m/^#?\s*$/;
  21. +   $_=~s/\s+#.*//;
  22.     my ( $code, $function ) = split(/\s+/,$_,2);
  23.     my $h = '[0-9A-F]';
  24.     if ( $code =~ m/^($h{2})-($h{2})$/ ) {
  25. @@ -25,6 +29,15 @@
  26.         }
  27.     } elsif ( $code =~ m/^($h{2})$/ ) {
  28.         $function_clusters->{ lc $code } = $function;
  29. +   } elsif ( $code =~ m/^WKM_TTID:($h{2})$/i ) {
  30. +       my (undef,$ttid) = split(/:/,$code,2);
  31. +       $wkm_ttid->{lc $ttid}=$function;
  32. +   } elsif ( $code =~ m/^WKM_POS:($h{2})$/i ) {
  33. +       my (undef,$pos) = split(/:/,$code,2);
  34. +       $wkm_pos->{lc $pos}=$function;
  35. +   } elsif ( $code =~ m/^WKM_LINE:(\d+|\d+x\d+)$/i ) {
  36. +       my (undef,$line) = split(/:/,$code,2);
  37. +       $wkm_line->{lc $line}=$function;
  38.     } elsif ( $code =~ m/^($h{4})$/ ) {
  39.         $mad_id->{ lc $1 } = $function;
  40.     } else {
  41. @@ -32,6 +45,10 @@
  42.     }
  43.  }
  44.  
  45. +sub bin2dec {
  46. +    return unpack("N", pack("B32", substr("0" x 32 . shift, -32)));
  47. +}
  48. +
  49.  my $access_condition_data = {
  50.  0b000 => 'R:AB W:AB I:AB DTR:AB transport conf',
  51.  0b010 => 'R:AB W:-- I:-- DTR:-- r/w block',
  52. @@ -62,8 +79,10 @@
  53.  
  54.  
  55.  if ( $debug ) {
  56. -   warn "# function_clusters ",dump($function_clusters);
  57. -   warn "# mad_id ", dump($mad_id);
  58. +   warn "# function_clusters ",Dumper($function_clusters);
  59. +   warn "# mad_id ", Dumper($mad_id);
  60. +   warn "# wkm_ttid ", Dumper($wkm_ttid);
  61. +   warn "# wkm_line ", Dumper($wkm_line);
  62.  }
  63.  
  64.  local $/ = undef;
  65. @@ -76,6 +95,9 @@
  66.  
  67.  my $pos = 0;
  68.  
  69. +my $wkm=0;
  70. +my $zdm=0;
  71. +
  72.  foreach my $sector ( 0 .. 39 ) {
  73.  
  74.     my $blocks = $sector < 32 ? 4 : 16;
  75. @@ -151,6 +173,7 @@
  76.         ;
  77.  
  78.     my $condition = '';
  79. +
  80.     foreach my $j ( 0 .. $blocks - 1 ) {
  81.         my $offset = $pos + $j * 0x10;
  82.         my $block = substr($card, $offset, 0x10);
  83. @@ -188,6 +211,7 @@
  84.  
  85.         my $hex = unpack('H*',$block);
  86.         $hex =~ s/(....)/$1 /g;
  87. +       $hex =~ s/0000/..../g; #/k./
  88.  
  89.         if ( $ENV{SWAP} ) {
  90.             my $hex_sw = unpack('h*',$block);
  91. @@ -196,6 +220,100 @@
  92.         }
  93.  
  94.         printf "%x %03x  %s%s\n", $j, $offset, $hex, $condition;
  95. +
  96. +       # -----------------
  97. +
  98. +       if ($sector == 1 and $j == 0 and substr($block,0,1) eq "\x10") {
  99. +           $wkm = 1;
  100. +           my (undef,$ttid,undef,$pos,undef) = unpack('H2 H2 H8 H2 H*',$block);
  101. +           my ($card_b1, $card_b2, $card_b3, $card_b4) = unpack('H2 H2 H2 H2',substr($card,0,4));
  102. +           printf "# WKM: karta nr %03d %08d\n# WKM: [numer kontraktu %d] %s (%s) POS: %s\n", hex($card_b4), hex($card_b3 . $card_b2 . $card_b1), hex($ttid), ($wkm_ttid->{$ttid})?$wkm_ttid->{$ttid}:'kontrakt nieznany', (hex($ttid)%2==1)?'stara taryfa':'nowa taryfa',($wkm_pos->{$pos})?$wkm_pos->{$pos}:$pos;
  103. +       }
  104. +
  105. +       if ($wkm and $sector == 1 and $j == 1) {
  106. +           my $selector = unpack('H*',substr($block,0,1));
  107. +           printf "# WKM: ostatnie skasowanie w sektorze %s\n", $selector+2;
  108. +       }
  109. +
  110. +       if ($wkm and ($sector == 2 or $sector == 3) and $j == 0 and substr($block,0,1) eq "\x10") {
  111. +           my (undef,$ti,$ty,$tm,$td,$th,$tt,$vy,$vm,$vd,$vh,$vt,$vl,$vb,$vs)=unpack('A8 A8 A7 A4 A5 A5 A6 A7 A4 A5 A5 A6 A14 A10 A*',unpack('B*',$block));
  112. +           # print Dumper($tt,$ti,$ty,$tm,$td,$th,$tt,$vy,$vm,$vd,$vh,$vt,$vl,$vb,$vs);
  113. +           printf "# WKM: [skasowanie %d]\n# WKM:   kontrakt wazny do: 20%02d/%02d/%02d %02d:%02d\n# WKM:   bilet skasowany w: 20%02d/%02d/%02d %02d:%02d linia: %s %s: %s%s\n",
  114. +               &bin2dec($ti),
  115. +               &bin2dec($ty),
  116. +               &bin2dec($tm),
  117. +               &bin2dec($td),
  118. +               &bin2dec($th),
  119. +               &bin2dec($tt),
  120. +               &bin2dec($vy),
  121. +               &bin2dec($vm),
  122. +               &bin2dec($vd),
  123. +               &bin2dec($vh),
  124. +               &bin2dec($vt),
  125. +               # &bin2dec($vl),
  126. +               ($wkm_line->{&bin2dec($vl)})?$wkm_line->{&bin2dec($vl)}:&bin2dec($vl),
  127. +               # &bin2dec($vb),
  128. +               ($wkm_line->{(&bin2dec($vl).'x'.&bin2dec($vb))})?'stacja':'brygada',
  129. +               ($wkm_line->{(&bin2dec($vl).'x'.&bin2dec($vb))})?$wkm_line->{(&bin2dec($vl).'x'.&bin2dec($vb))}:&bin2dec($vb),
  130. +               ($vs>0)?(' extra dane: '.&bin2dec($vs)):'';
  131. +       }
  132. +
  133. +       # -----------------
  134. +
  135. +       if ($sector == 7 and $j == 0 and substr($block,0,2) eq "\x01\x01") {
  136. +           $zdm = 1;
  137. +           my (undef, # trailer \x01\x01
  138. +               $loadno,
  139. +               undef, # always \x00
  140. +               $loadday,
  141. +               $loadmonth,
  142. +               $loadyear,
  143. +               $validday,
  144. +               $validmonth,
  145. +               $validyear,
  146. +               $pos_group,
  147. +               $pos_no,
  148. +               $unknown1,
  149. +               $unknown2) # ???
  150. +               = unpack('v c c c c v c c v c c H2 H2', $block);
  151. +           printf "# ZDM: karta zaladowana %d raz, data ladowania: %04d/%02d/%02d, data waznosci %04d/%02d/%02d, punkt sprzedazy: %03d\\%d extra 2 bajty: %s %s\n", $loadno, $loadyear, $loadmonth, $loadday, $validyear, $validmonth, $validday, $pos_no, $pos_group, $unknown1, $unknown2;
  152. +       }
  153. +
  154. +       if ($zdm and $sector == 7 and ($j == 1 or $j == 2)) {
  155. +           my ($credits1,
  156. +               $const_0000,
  157. +               $checksum,
  158. +               $const_ffff,
  159. +               $credits2,
  160. +               $const_000000ff00ff)
  161. +               = unpack ('v H4 v H4 v H12', $block);
  162. +           printf "# ZDM: Unexpected value %s - should be 0000\n", $const_0000 if $const_0000 ne '0000';
  163. +           printf "# ZDM: Unexpected value %s - should be ffff\n", $const_ffff if $const_ffff ne 'ffff';
  164. +           printf "# ZDM: Unexpected value %s - should be 000000ff00ff\n", $const_000000ff00ff if $const_000000ff00ff ne '000000ff00ff';
  165. +           printf "# ZDM: Credits mismatch\n" if $credits1 ne $credits2;
  166. +           printf "# ZDM: Verify mismatch\n" if 65535 - $credits1 ne $checksum; # (0xffff - credits = checksum)
  167. +           printf "# ZDM: [%s] %.2f zl\n", ($j==1)?'srodki na karcie':'wartosc doladowania', $credits1/10;
  168. +       }
  169. +
  170. +       if ($zdm and $sector == 8 and $j == 0) {
  171. +           my ($transday,
  172. +               $transmonth,
  173. +               $unknown1,
  174. +               $transhour,
  175. +               $transminute,
  176. +               $const1,
  177. +               $transno,
  178. +               $transval,
  179. +               $const2,
  180. +               $transid,
  181. +               $unknown2)
  182. +               = unpack ('c c H2 c c H6 c v H4 v H2', $block);
  183. +           printf "# ZDM: Unexpected value %s - should be 000000\n", $const1 if $const1 ne '000000';
  184. +           printf "# ZDM: Unexpected value %s - should be 0000\n", $const2 if $const2 ne '0000';
  185. +           printf "# ZDM: [ostatnia tranzakcja] dzien=%02d miesiac=%02d godzina=%02d:%02d numer=%d identyfikator=%d oplata=%.2f zl, extra 2 bajty: %s %s\n", $transday, $transmonth, $transhour, $transminute, $transno, $transid, $transval/10, $unknown1, $unknown2 if $transval ne 0;
  186. +       }
  187. +
  188. +       # -----------------
  189.     }
  190.  
  191.     printf "KEY A:%s | %s GDP: %s | B:%s %s\n"
  192. @@ -292,3 +410,243 @@
  193.  887C - electronic purse MIKROELEKTRONIKA spol.s.r. MIKROELEKTRONIKA spol.s.r.o. Europe         4 01.05.2009 electronic purse
  194.  887D - electronic purse Mikroelektronika spol.s r.o Mikroelektronika spol.s r.o EUROPE,Czech R 4 01.08.2009 Electronic purse
  195.  
  196. +WKM_TTID:00 czysty bilet
  197. +WKM_TTID:02 bilet jednorazowy strefa 1, normalny
  198. +WKM_TTID:16 bilet dobowy strefa 1, normalny
  199. +WKM_TTID:18 bilet trzydniowy strefa 1, normalny
  200. +WKM_TTID:21 bilet dobowy strefa 1, normalny (nowa)
  201. +WKM_TTID:22 bilet trzydniowy strefa 1, normalny
  202. +WKM_TTID:23 bilet dobowy strefa 1, normalny
  203. +WKM_TTID:24 bilet trzydniowy strefa 1, normalny
  204. +WKM_TTID:25 bilet siedmiodniowy strefa 1, normalny
  205. +WKM_TTID:27 bilet 14-dniowy strefa 1, normalny
  206. +WKM_TTID:29 bilet 30-dniowy imienny na 1 linie strefa 1, normalny
  207. +WKM_TTID:2a bilet 30-dniowy imienny na wszystkie linie strefa 1, normalny
  208. +WKM_TTID:2b bilet 30-dniowy imienny na wszystkie linie strefa 1, normalny
  209. +WKM_TTID:2e bilet 90-dniowy imienny na wszystkie linie strefa 1, normalny
  210. +WKM_TTID:2f bilet 90-dniowy imienny na wszystkie linie strefa 1, normalny
  211. +WKM_TTID:34 bilet jednorazowy strefa 1, ulgowy 50
  212. +WKM_TTID:48 bilet dobowy strefa 1, ulgowy 50
  213. +WKM_TTID:4a bilet trzydniowy strefa 1, ulgowy 50
  214. +WKM_TTID:53 bilet dobowy strefa 1, ulgowy 50
  215. +WKM_TTID:54 bilet trzydniowy strefa 1, ulgowy 50
  216. +WKM_TTID:55 bilet dobowy strefa 1, ulgowy 50
  217. +WKM_TTID:56 bilet trzydniowy strefa 1, ulgowy 50
  218. +WKM_TTID:57 bilet siedmiodniowy strefa 1, ulgowy 50
  219. +WKM_TTID:59 bilet 14-dniowy strefa 1, ulgowy 50
  220. +WKM_TTID:5b bilet 30-dniowy imienny na 1 linie strefa 1, ulgowy 50
  221. +WKM_TTID:5c bilet 30-dniowy imienny na wszystkie linie strefa 1, ulgowy 50
  222. +WKM_TTID:5d bilet 30-dniowy imienny na wszystkie linie strefa 1, ulgowy 50
  223. +WKM_TTID:60 bilet 90-dniowy imienny na wszystkie linie strefa 1, ulgowy 50
  224. +WKM_TTID:61 bilet 90-dniowy imienny na wszystkie linie strefa 1, ulgowy 50
  225. +WKM_TTID:66 bilet jednorazowy strefa 1+2, normalny
  226. +WKM_TTID:6f bilet 20 minutowy strefa 1+2, normalny
  227. +WKM_TTID:70 bilet 40 minutowy strefa 1+2, normalny
  228. +WKM_TTID:71 bilet 60 minutowy strefa 1+2, normalny
  229. +WKM_TTID:7a bilet dobowy strefa 1+2, normalny
  230. +WKM_TTID:7c bilet trzydniowy strefa 1+2, normalny
  231. +WKM_TTID:85 bilet dobowy strefa 1+2, normalny
  232. +WKM_TTID:86 bilet trzydniowy strefa 1+2, normalny
  233. +WKM_TTID:87 bilet dobowy strefa 1+2, normalny
  234. +WKM_TTID:88 bilet trzydniowy strefa 1+2, normalny
  235. +WKM_TTID:89 bilet siedmiodniowy strefa 1+2, normalny
  236. +WKM_TTID:8b bilet 14-dniowy strefa 1+2, normalny
  237. +WKM_TTID:8d bilet 30-dniowy imienny na 1 linie strefa 1+2, normalny
  238. +WKM_TTID:8e bilet 30-dniowy imienny na wszystkie linie strefa 1+2, normalny
  239. +WKM_TTID:8f bilet 30-dniowy imienny na wszystkie linie strefa 1+2, normalny
  240. +WKM_TTID:90 bilet 30-dniowy na okaziciela na wszystkie linie strefa 1+2, normalny
  241. +WKM_TTID:91 bilet 30-dniowy na okaziciela na wszystkie linie strefa 1+2, normalny
  242. +WKM_TTID:92 bilet 90-dniowy imienny na wszystkie linie strefa 1+2, normalny
  243. +WKM_TTID:93 bilet 90-dniowy imienny na wszystkie linie strefa 1+2, normalny
  244. +WKM_TTID:94 bilet 90-dniowy na okaziciela na wszystkie linie strefa 1+2, normalny
  245. +WKM_TTID:95 bilet 90-dniowy na okaziciela na wszystkie linie strefa 1+2, normalny
  246. +WKM_TTID:96 bilet seniora, waĹźny 365 dni na wszystkie linie strefa 1+2
  247. +WKM_TTID:98 bilet jednorazowy strefa 1+2, ulgowy
  248. +WKM_TTID:a1 bilet 20 minutowy strefa 1+2, ulgowy
  249. +WKM_TTID:a2 bilet 40 minutowy strefa 1+2, ulgowy
  250. +WKM_TTID:a3 bilet 60 minutowy strefa 1+2, ulgowy
  251. +WKM_TTID:ac bilet dobowy strefa 1+2, ulgowy
  252. +WKM_TTID:ae bilet trzydniowy strefa 1+2, ulgowy
  253. +WKM_TTID:b7 bilet dobowy strefa 1+2, ulgowy
  254. +WKM_TTID:b8 bilet trzydniowy strefa 1+2, ulgowy
  255. +WKM_TTID:b9 bilet dobowy strefa 1+2, ulgowy
  256. +WKM_TTID:ba bilet trzydniowy strefa 1+2, ulgowy
  257. +WKM_TTID:bb bilet siedmiodniowy strefa 1+2, ulgowy
  258. +WKM_TTID:bd bilet 14-dniowy strefa 1+2, ulgowy
  259. +WKM_TTID:bf bilet 30-dniowy imienny na 1 linie strefa 1+2, ulgowy
  260. +WKM_TTID:c0 bilet 30-dniowy imienny na wszystkie linie strefa 1+2, ulgowy
  261. +WKM_TTID:c1 bilet 30-dniowy imienny na wszystkie linie strefa 1+2, ulgowy
  262. +WKM_TTID:c2 bilet 30-dniowy na okaziciela na wszystkie linie strefa 1+2, ulgowy
  263. +WKM_TTID:c3 bilet 30-dniowy na okaziciela na wszystkie linie strefa 1+2, ulgowy
  264. +WKM_TTID:c4 bilet 90-dniowy imienny na wszystkie linie strefa 1+2, ulgowy
  265. +WKM_TTID:c5 bilet 90-dniowy imienny na wszystkie linie strefa 1+2, ulgowy
  266. +WKM_TTID:c6 bilet 90-dniowy na okaziciela na wszystkie linie strefa 1+2, ulgowy
  267. +WKM_TTID:c7 bilet 90-dniowy na okaziciela na wszystkie linie strefa 1+2, ulgowy
  268. +WKM_TTID:d2 ??? 210 bilet nieznany - pokazuje wersje kasownika bez blokowania (pracowniczy?) - waĹźny 3 lata od skasowania
  269. +WKM_TTID:d3 "przepustka na stacje metra" (pasazerska/HDK/70+)
  270. +WKM_TTID:d4 "przepustka na stacje metra" (pasazerska/HDK/70+)
  271. +WKM_TTID:d6 "przepustka na stacje metra" (SOM/policja/obsluga techniczna), waĹźny rok od skasowania
  272. +WKM_TTID:dd "ZTM pass - karta testowa", waĹźny rok od skasowania
  273. +WKM_TTID:e7 bilet pracowniczy ZTM, waĹźny rok od skasowania
  274. +WKM_TTID:e8 bilet pracowniczy MZA, waĹźny rok od skasowania
  275. +WKM_TTID:e9 bilet pracowniczy TW, waĹźny rok od skasowania
  276. +WKM_TTID:ea bilet pracowniczy MW, waĹźny rok od skasowania
  277. +WKM_TTID:eb bilet pracowniczy SKM, waĹźny rok od skasowania
  278. +WKM_TTID:ef bilet dzieci z rodzin wielodzietnych, waĹźny rok od skasowania
  279. +WKM_TTID:f0 bilet osoby niepeĹnosprawnej, waĹźny rok od skasowania
  280. +WKM_TTID:f5 ??? 245 bilet nieznany - "poza dozwolonym terminem uzycia"
  281. +WKM_TTID:fa "precode" (nie rozpoznawany przez kasowniki)
  282. +WKM_TTID:fe "navette" (karta kontrolerska)
  283. +WKM_TTID:ff admin
  284. +
  285. +WKM_POS:01 POP ZTM
  286. +WKM_POS:15 Mennica
  287. +WKM_POS:2a ASEC
  288. +
  289. +WKM_LINE:81 WKD # prooved
  290. +
  291. +WKM_LINE:91 METRO LINIA 1 # prooved
  292. +WKM_LINE:91x1 Kabaty # prooved
  293. +WKM_LINE:91x2 Natolin # prooved
  294. +WKM_LINE:91x3 Imielin # prooved
  295. +WKM_LINE:91x4 Stoklosy # prooved
  296. +WKM_LINE:91x5 Ursynow # prooved
  297. +WKM_LINE:91x6 Sluzew # prooved
  298. +WKM_LINE:91x7 Wilanowska # prooved
  299. +WKM_LINE:91x8 Wierzbno # prooved
  300. +WKM_LINE:91x9 Raclawicka # prooved
  301. +WKM_LINE:91x10 Pole Mokotowskie # prooved
  302. +WKM_LINE:91x11 Politechnika # prooved
  303. +WKM_LINE:91x12 Centrum # prooved
  304. +WKM_LINE:91x13 Swietokrzyska # prooved
  305. +WKM_LINE:91x14 Ratusz Arsenal # prooved
  306. +WKM_LINE:91x15 Dw. Gdanski # prooved
  307. +WKM_LINE:91x16 Pl. Wilsona # prooved
  308. +WKM_LINE:91x17 Marymont # prooved
  309. +WKM_LINE:91x18 Slodowiec # prooved
  310. +WKM_LINE:91x19 Stare Bielany # prooved
  311. +WKM_LINE:91x20 Wawrzyszew # prooved
  312. +WKM_LINE:91x21 Mlociny # prooved
  313. +WKM_LINE:92 METRO LINIA 2 # guess
  314. +
  315. +WKM_LINE:1001 Z-1 # guess
  316. +WKM_LINE:2901 Z-1 # prooved
  317. +WKM_LINE:1005 Z-5 # prooved (wk)
  318. +WKM_LINE:2905 Z-5 # prooved (wk)
  319. +WKM_LINE:1009 Z-9 # prooved
  320. +WKM_LINE:2909 Z-9 # guess
  321. +WKM_LINE:1019 Z19 # guess
  322. +WKM_LINE:2919 Z19 # guess
  323. +WKM_LINE:1019 Z19 # guess
  324. +WKM_LINE:2919 Z19 # guess
  325. +
  326. +WKM_LINE:3001 L-1 # guess
  327. +WKM_LINE:3002 L-2 # guess
  328. +WKM_LINE:3003 L-3 # guess
  329. +WKM_LINE:3004 L-4 # guess
  330. +WKM_LINE:3005 L-5 # guess
  331. +WKM_LINE:3006 L-6 # guess
  332. +WKM_LINE:3007 L-7 # prooved (wk)
  333. +WKM_LINE:3008 L-8 # guess
  334. +WKM_LINE:3009 L-9 # guess
  335. +WKM_LINE:3010 L10 # guess
  336. +WKM_LINE:3011 L11 # guess
  337. +WKM_LINE:3013 L13 # guess
  338. +WKM_LINE:3014 L14 # guess
  339. +WKM_LINE:3015 L15 # guess
  340. +WKM_LINE:3016 L16 # guess
  341. +WKM_LINE:3017 L17 # guess
  342. +WKM_LINE:3018 L18 # guess
  343. +
  344. +WKM_LINE:601 N01  # guess
  345. +WKM_LINE:6001 N01 # guess
  346. +WKM_LINE:602 N02  # guess
  347. +WKM_LINE:6002 N02 # guess
  348. +WKM_LINE:603 N03  # guess
  349. +WKM_LINE:6003 N03 # guess
  350. +WKM_LINE:611 N11  # guess
  351. +WKM_LINE:6011 N11 # prooved
  352. +WKM_LINE:612 N12  # guess
  353. +WKM_LINE:6012 N12 # guess
  354. +WKM_LINE:613 N13  # guess
  355. +WKM_LINE:6013 N13 # prooved
  356. +WKM_LINE:614 N14  # guess
  357. +WKM_LINE:6014 N14 # guess
  358. +WKM_LINE:622 N22  # guess
  359. +WKM_LINE:6022 N22 # guess
  360. +WKM_LINE:624 N24  # guess
  361. +WKM_LINE:6024 N24 # prooved
  362. +WKM_LINE:625 N25  # guess
  363. +WKM_LINE:6025 N25 # prooved
  364. +WKM_LINE:631 N31  # guess
  365. +WKM_LINE:6031 N31 # prooved
  366. +WKM_LINE:632 N32  # guess
  367. +WKM_LINE:6032 N32 # prooved
  368. +WKM_LINE:633 N33  # guess
  369. +WKM_LINE:6033 N33 # prooved
  370. +WKM_LINE:634 N34  # guess
  371. +WKM_LINE:6034 N34 # prooved
  372. +WKM_LINE:635 N35  # guess
  373. +WKM_LINE:6035 N35 # prooved
  374. +WKM_LINE:636 N36  # guess
  375. +WKM_LINE:6036 N36 # prooved
  376. +WKM_LINE:637 N37  # prooved
  377. +WKM_LINE:6037 N37 # guess
  378. +WKM_LINE:638 N38  # guess
  379. +WKM_LINE:6038 N38 # guess
  380. +WKM_LINE:641 N41  # guess
  381. +WKM_LINE:6041 N41 # guess
  382. +WKM_LINE:642 N42  # prooved
  383. +WKM_LINE:6042 N42 # guess
  384. +WKM_LINE:643 N43  # guess
  385. +WKM_LINE:6043 N43 # prooved
  386. +WKM_LINE:644 N44  # guess
  387. +WKM_LINE:6044 N44 # prooved
  388. +WKM_LINE:645 N45  # guess
  389. +WKM_LINE:6045 N45 # guess
  390. +WKM_LINE:646 N46  # prooved
  391. +WKM_LINE:6046 N46 # guess
  392. +WKM_LINE:650 N50  # guess
  393. +WKM_LINE:6050 N50 # guess
  394. +WKM_LINE:652 N52  # guess
  395. +WKM_LINE:6052 N52 # guess
  396. +WKM_LINE:653 N53  # guess
  397. +WKM_LINE:6053 N53 # guess
  398. +WKM_LINE:658 N58  # guess
  399. +WKM_LINE:6058 N58 # guess
  400. +WKM_LINE:661 N61  # guess
  401. +WKM_LINE:6061 N61 # guess
  402. +WKM_LINE:662 N62  # prooved
  403. +WKM_LINE:6062 N62 # guess
  404. +WKM_LINE:663 N63  # guess
  405. +WKM_LINE:6063 N63 # guess
  406. +WKM_LINE:664 N64  # guess
  407. +WKM_LINE:6064 N64 # guess
  408. +WKM_LINE:671 N71  # guess
  409. +WKM_LINE:6071 N71 # prooved
  410. +WKM_LINE:672 N72  # guess
  411. +WKM_LINE:6072 N72 # prooved
  412. +WKM_LINE:675 N75  # guess
  413. +WKM_LINE:6075 N75 # guess
  414. +WKM_LINE:681 N81  # guess
  415. +WKM_LINE:6081 N81 # guess
  416. +WKM_LINE:683 N83  # guess
  417. +WKM_LINE:6083 N83 # guess
  418. +WKM_LINE:685 N85  # guess
  419. +WKM_LINE:6085 N85 # guess
  420. +WKM_LINE:688 N88  # guess
  421. +WKM_LINE:6088 N88 # guess
  422. +WKM_LINE:691 N91  # guess
  423. +WKM_LINE:6091 N91 # guess
  424. +WKM_LINE:695 N95  # guess
  425. +WKM_LINE:6095 N95 # guess
  426. +
  427. +WKM_LINE:9002 E-2 # prooved (wk)
  428. +WKM_LINE:9004 E-4 # guess
  429. +WKM_LINE:9006 E-6 # guess
  430. +WKM_LINE:9008 E-8 # guess
  431. +
  432. +WKM_LINE:9101 S1 # prooved
  433. +WKM_LINE:9102 S2 # guessed
  434. +WKM_LINE:9109 S9 # guessed
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement