Na začiatok môžem povedať len to,že Linux je skvelý(aj keď práve teraz píšem z widiel,ktoré tiež nie sú na zahodenie).Osobitne chcem vyzdvihnúť web abclinuxu ,kde som sa stretol s veľkou ústretovosťou a neobyčajnou snahou poradiť,zdieľať svoje poznatky a v neposlednom rade s veľmi príjemným správaním členov tohto portálu.
Linux.
Tí nešťastníci,ktorí nevedia programovať(vytvárať binárne súbory),musia si pomáhať ako sa dá.Napr. skriptami.
Dobrý skript nie je zlý,ale binárka je binárka.Povedal by básnik.Napadá mi ešte jedno prirovnanie-skripty sú ako slovenské pivo,pokiaľ možno-nepiť!No čo už,nemali sme v škole kresliť pitky po laviciach a možno by sme vedeli programovať.
Skript na sledovanie stavu kariet a ich následné vyťažovanie:
(možné využitie pri aktívnom srfl)
Pr.:mám tri rovnocenné karty-hlavná a dve záložné.Chcem dosiahnuť to,aby ecm dotazy šli vždy len na jednu z nich(hlavná) a ak táto prestane dekódovať,ecm dotazy idú súčasne na hlavnú a len na jednu zo záložných čítačiek,až do nabehnutia hlavnej.Časť tejto funkcie veľmi dobre spĺňa nastavenie oscamu pre tri karty s použitím parametra fallback:oscam.server
[reader]
label = hlavna
group = 1
[reader]
label = zalozna1
fallback = 1
group = 1
[reader]
label = zalozna2
fallback = 1
group = 1
-ak bude dekódovať(found) hlavná,ecm dotazy pôjdu len na túto kartu.
-ak nebude dekódovať(not found) hlavná,ecm dotazy pôjdu na všetky karty.
Dosiahnúť stav,aby ecm dotazy boli smerované vždy len na jednu zo záložných čítačiek,sa dá viacerými spôsobmi.Napr. ich vypínaním/zapínaním,no túto alternatívu by som nateraz zavrhol.
Ďalší možný spôsob je založený na viacnásobnom pripojení klientov(v rôznych group) a ich následným pripájaním/odpájaním.
Ďalej sa ale budem zaoberať spôsobom,ktorým je manipulácia s parametrom(napr. group,caid...),čím sa dá čítačka defacto znefunkčniť.
V prvom rade je potrebné zadefinovať stav karty.Zjednodušene povedané či je found,alebo not found(ak by sme chceli ísť do hľbky,museli by sme si niečo povedať o SW1/SW2).Tento stav sledujeme len u hlavnej karty a podľa neho budeme nastavovať fallback karty.
Spôsobov,ako to celé spraviť,je hafo.Napr.:
#!/bin/bash
echo "default"
wget -O /dev/null "http://localhost:8080/readerconfig.html?label=zalozna2&group=2&action=Save" &
wget -O /dev/null "http://localhost:8080/readerconfig.html?label=zalozna1&group=1&action=Save" &
while true;
do
> oscam.log
echo "kontrola not found hlavna"
while true;
do
x=` grep "found" oscam.log | grep "by zalozna1" -c `
#alebo by sa muselo ist hlbšie do logov a hľadať "not found"(teda to,čo tento stav charakterizuje) pre hlavnu
if [ "$x" -ge "1" ]; then
echo "karta_blok...pracuje zalozna1"
sleep 30
echo "povolujem zaloznu2,zakazujem zaloznu1"
wget -O /dev/null "http://localhost:8080/readerconfig.html?label=zalozna2&group=1&action=Save" &
sleep 5
wget -O /dev/null "http://localhost:8080/readerconfig.html?label=zalozna1&group=2&action=Save" &
break
else
echo "opakujem"
sleep 2
fi
done
> oscam.log
echo "kontrola found hlavna"
while true;
do
x=` grep ": found" oscam.log | grep "by hlavna" -c `
if [ "$x" -ge "1" ]; then
echo "karta_ok....zalozne prepinam do default"
echo "povolujem zaloznu1,zakazujem zaloznu2"
wget -O /dev/null "http://localhost:8080/readerconfig.html?label=zalozna2&group=2&action=Save" &
wget -O /dev/null "http://localhost:8080/readerconfig.html?label=zalozna1&group=1&action=Save" &
break
else
echo "opakujem"
sleep 2
fi
done
done
exit 0
_____________________________
Logovaniu som sa dlho vyhýbal ako čert krížu.Mám "biedny" loger-klasický rs232 phoenix,prerobený na loger,o ktorého možnostiach som dosť pochyboval.Ale dá sa.
Vo windowsoch je hafo všelijakých port_monitoroch,port_scanoch a port_snifroch,niektoré free,niektoré buy.No najlepšie na tom sú špecializované programi,presne určené na tento účel.Napr.blekitny(program staršieho dáta,ktorý už asi na nete nenájdete) vie logovať celkom slušne.Ak ale chcete ísť rovno na vec,tak si stiahnite Last Drakkar.
Poďme ale k linuxom.Ako inak,aj táto problematika si v linuxe vyžaduje "maturitu".Aspom na štvorku.Ja som sa (cez strace,slsnif,screen,interceptty,minicom...) dopracoval k zvláštne pomenovanej aplikácií jpnevulator.
Pravdupovediac pri písaní týchto riadkov sa pohybujem na tenkom ľade(nie sú mi zrejmé isté záležitosti),takže v ďalšom len popíšem funkčnú konfiguráciu a nejaké výsledky.
Logerom je teda phoenix rs232,pričom na kartu sú vyvedené len piny I/O a GND.
Systém ubuntu 10.04.
Nastavenie sérioveho portu robíme napr. cez stty :
~$ stty -F /dev/ttyS0 baud_rate
~$ jpnevulator -t /dev/ttyS0 -r
~$ stty -F /dev/ttyS0 9600
~$ jpnevulator -t /dev/ttyS0 -r
00 00 00 3B 9F 11 40 60 49 52 44 45 54 4F 20 41
43 53 20 56 36 2E 30 D2 42 00 00 01 42 1D 90 19
D2 FE 00 00 19 FE 01 02 00 00 21 00 00 10 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 0D 90
00 D2 40 00 00 11 40 03 0B 16 01 1D 00 00 00 01
00 01 00 00 00 00 00 0E 90 09 D2 FE 00 00 09 FE
01 02 00 00 20 00 00 00 1C 90 00 D2 3C 00 00 01
3C 22 90 15 D2 FE 00 00 15 FE 01 02 00 00 1E 00
00 0C 60 01 00 00 00 01 00 00 00 00 00 00 4E 90
00 D2 3E 00 00 01 3E 23 90 0B D2 FE 00 00 0B FE
01 02 00 00 1F 00 00 02 01 8D AD 90 00 D2 00 00
00 01 00 3C 90 1D D2 FE 00 00 1D FE 01 02 00 00
00 00 00 14 34 32 38 38 39 36 37 36 37 33 4F 43
53 20 20 20 20 20 20 20 5B 90 00 D2 02 00 00 01
02 3D 90 19 D2 FE 00 00 19 FE 01 02 00 00 01 00
00 10 FF FF FF 00 00 00 00 00 00 00 04 00 51 5A
6C 13 A2 90 00 D2 04 00 00 01 04 3E 90 19 D2 FE
00 00 19 FE 01 02 00 00 02 00 00 10 00 06 00 06
23 06 24 06 25 06 26 00 00 43 5A 45 70 90 00 D2
10 00 00 01 10 34 90 49 D2 FE 00 00 49 FE 01 02
ICE karta sa správa takmer navlas rovnako-napokon sú to takmer totožné karty.S pozostatkov crw jej ostalo to,že komunikácia v niektorých CAM_och(čítačkach) sa po ATR prepína na br19200.
Teda CAM TechniCrypt Irdeto CI+_karta ICE skylink :
~$ stty -F /dev/ttyS0 9600
~$ jpnevulator -t /dev/ttyS0 -r
00 48 18 80 00 00 E0 00 46 F8 2F 00 FD 00 00 3B
78 12 00 00 54 C4 03 00 8F F1 90 00 FF 10 12 FD
FF 10 12 FD 5E 41 8C F1 FB 9A FF DE 10 E7 3F 41
04 10 41 46 18 5D 26 F0 16 41 8C F4 F3 B2 FF D6
10 EB 3F 61 04 10 41 06 10 41 04 10 41 04 10 41
04 99 E0 16 41 2C FC 30 6D 3C 10 C1 06 18 41 04
50 FF B2 FF D6 10 C3 3F 61 04 18 41 B4 12 FF D6
41 14 F3 F0 F2 FF D6 10 EF 3F 61 04 13 41 46 18
41 04 10 41 04 70 49 FC D6 83 18 FB F8 32 FF D6
10 E3 3F 61 04 1B 41 04 71 61 FC 16 41 8C F0 F3
F2 FF D6 10 CF 3F 61 04 10 41 54 FA 55 AD FB 55
BD BC 61 0C 18 51 DD 12 FF 16 41 8C F8 FB B2 FF
D6 10 EB 3F 61 04 18 41 7E F7 20 02 10 41 94 F0
C9 2E 1A E0 56 41 8C F9 FF B2 FF D6 10 EB 1F 61
~$ stty -F /dev/ttyS0 19200
~$ jpnevulator -t /dev/ttyS0 -r
00 00 9E F8 80 78 86 80 00 00 60 E6 60 F8 1E 00
0F 00 E0 FE E0 06 00 98 00 FE 1E 60 F8 18 80 E6
FE 1E 60 F8 18 80 E6 D0 06 00 00 01 06 3D 90 0D
D0 FE 00 00 0D FE 01 00 00 00 03 00 00 04 60 01
00 5C 04 90 00 D2 42 00 00 01 42 1D 90 19 D2 FE
00 00 19 FE 01 02 00 00 21 00 00 10 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 0D 90 00 D2
40 00 00 11 40 03 0B 16 01 1D 00 00 00 01 00 01
00 00 00 00 00 0E 90 09 D2 FE 00 00 09 FE 01 02
00 00 20 00 00 00 1C 90 00 D2 3C 00 00 01 3C 22
90 15 D2 FE 00 00 15 FE 01 02 00 00 1E 00 00 0C
60 01 00 00 00 00 00 00 00 00 00 00 4F 90 00 D2
3E 00 00 01 3E 23 90 0B D2 FE 00 00 0B FE 01 02
00 00 1F 00 00 02 01 8D AD 90 00 D2 00 00 00 01
00 3C 90 1D D2 FE 00 00 1D FE 01 02 00 00 00 00
00 14 34 32 35 37 31 32 34 35 33 30 4F 43 53 20
20 20 20 20 20 20 52 90 00 D2 02 00 00 01 02 3D
Napr. takto je log lepšie čitateľný :
~$ jpnevulator -t /dev/ttyS0 -r -i 64 | sed 's/D1 .. 00/\n&/g;s/D5 .. 80/\n&/g'
90 19
D1 FE 00 00 19 FE 01 01 00 00 3F 00 00 10 06 01 12 29 BA 2F A6 33 B9 1E EC E8 3E 9F 4C 66 04 90 00
D1 00 00 00 3E 00 02 04 14 00 00 37 3A CC 14 BB 5B A2 1B 1D 00 39 D9 9C 77 20 B3 4A 27
8C 91 0B BA D8 00 F1 91 12 B8 D6 4E 94 DA 8B 9E 28 B4 E7 8F 07 2A 8D E6 3E 88 0C 89 6B D6 3E AC 67 4A 8D 1F 10 FF F7 90 19
D1 FE 00 00 19 FE 01 01 7C 00 3F 00 00 10 E6 8F 9F 09 B5 5D FD E6 40
2C 99 9E 7C 1C F7 8E 12 90 00
D1 00 00 00 27 00 98 00 00 00 00 20 BB D6 07 BA 61 4A FD 4C 3A 3D BE 78 C2 1B 04 99 43 07 DF 9B C1 E3 A6 D7 C4 7E 3F BE 67 79 18 E9 E9 90 19
D1 FE 00 00 19 FE 01
01 00 00 3F 00 00 10 3F 1C B7 05 49 67 85 E4 13 4D 5D 0B B8 EB 8D 00 18 90 00
D1 00 00 00 27 00 98 00 00 00 00 20 8C 7D B4 3B A0 0B 19 3E 51 76 C7 6B F4 E1 20 43 60 B3 44 D1 C3 B2 86 6D F6 87
7F BE F1 DB 3B 3E ED 90 19
D1 FE 00 00 19 FE 01 01 00 00 3F 00 00 10 0D 0C 16 45 63 EA 79 DA 3A D5 97 2F 9E F7 67 BA 8B 90 00
D1 00 00 00 24 00 98 00 00 00 00 1D A7 7F BE 37 BC AF D2 F3 CB 0A
AA 1D 9E 1A EB 9F B3 3F E2 6E 6A 21 C5 76 17 1F 40 F7 31 0A 90 19
D1 FE 00 00 19 FE 01 01 00 00 3F 00 00 10 07 D0 33 17 01 E5 27 6A B6 7D 6E D7 A6 49 A2 B0 C5 90 00
D1 00 00 00 27 00 98 00 00
00 00 20 6E FD 90 9D B1 AA 9D 4B 0A 78 C7 E9 F6 5A 55 C3 41 24 48 87 FD 94 1E 66 94 D0 BA 66 26 28 E0 85 DC 90 19
D1 FE 00 00 19 FE 01 01 00 00 3F 00 00 10 76 21 1F 4E 00 9F 95 7A 71 B1 1D BC
43 79 98 B1 14 90 00
D1 00 00 00 3E 00 02 04 14 00 00 37 CD 66 7E 1F AB DE 52 BF FF FC E5 E1 5B CD 56 81 7C 9F 92 9C 9A 3E B2 5B A4 72 4F D6 04 D1 0E BF FB 80 E0 C9 71 F7 CA 51 AC 5F 28 6A 24
96 13 1D 8E 94 D5 9F 89 63 E3 A3 90 19
D1 FE 00 00 19 FE 01 01 7C 00 3F 00 00 10 E2 99 8E 12 C7 9B 83 D3 BD 46 D4 77 86 AF 1D 3E D5 90 00
D1 00 00 00 27 00 98 00 00 00 00 20 0D 6A 38 A2 5D 57
19 12 5B 83 54 49 FA 87 B6 26 E6 B5 D1 8C 74 4F 37 4B 0F E0 4E 29 21 C4 43 FE EC 90 19
D1 FE 00 00 19 FE 01 01 00 00 3F 00 00 10 A1 FA AD 12 F5 03 10 6A 7C A9 7A 2A 69 F5 9C 6B 96 90 00 D1 00
00 00 24 00 98 00 00 00 00 1D CD 79 A5 F7 D5 8F F9 83 6B 6C B5 5D 26 F8 EE EF 54 11 5B D5 00 FB 75 D4 83 E8 25 7E B8 76 90 19
D1 FE 00 00 19 FE 01 01 00 00 3F 00 00 10 BC C9 CD 98 B4 34 25 D6
9B 29 3B 8A D2 1D C5 8B C1 90 00
D5 00 80 02 50 00 00 00 80 06 01 49 16 19 F8 02 EB 9F C8 77 93 F1 4F 00 CC 31 4B 35 49 BF 5E 37 50 AF B5 C4 E6 66 53 43 6C 80 52 46 2E EA 7E 8C 64 9F 0D 31 32
A6 BA BF D1 20 3E 26 25 C3 60 64 EA E4 A6 E8 FC 24 22 32 B3 BA 88 6F E9 A8 74 93 CF FE 9A F1 2E 0E 90 41
D5 FE 80 02 41 FE 01 05 9D 00 38 01 02 38 07 2C 7E D1 3E B7 D8 A7 0D F9 A1 BC 47 2D D9
72 A5 6C 20 B8 4E ED F8 57 77 9E 60 52 E9 E7 B0 DB FF A7 70 FB 3F D3 91 A4 36 02 06 54 3B F0 34 D3 41 D3 55 F8 63 6A B2 13 CB 90 00
D5 00 80 02 50 00 00 00 80 06 01 49 0B 79 B7 65 93 7E D8 11
C9 10 1C 5D 2A BE E7 96 59 80 6B 72 28 99 40 31 C8 DE B7 8A AE D2 7B 02 6A C6 16 95 77 CA DA 2F C4 FC B7 97 41 7E D9 76 3C CE 37 8A D9 2F 25 7A 05 5B 71 8F 7B E2 C5 07 7D 38 AE B7 31 CB 73 F9
65 54 90 41
D5 FE 80 02 41 FE 01 05 9D 00 38 00 02 38 D1 8A 85 65 BC E9 1C 0F A7 E0 34 D8 E0 D8 D6 FF FF 5A 6F 1C 04 CE 6B D1 F5 F5 66 73 EC C5 53 D0 ED D6 70 B5 BD 1D C0 04 67 4A 27 BD B5 92
B4 86 DE 4A F8 0A 4A 8E 97 D8 2F 90 00
D5 00 80 02 50 00 00 00 80 06 01 49 2B B4 EB 89 3E F3 41 07 C9 7F 9A 8F D1 B1 1B 63 E3 F8 AD 3C 31 89 8D B5 D9 E2 1D 78 32 F6 A6 87 E6 21 C5 E5 B5 AE DA
F5 6B E8 60 D3 80 87 21 CF 29 51 FC 2B 1E 1E F6 C1 A5 E8 63 2F 17 CD C4 18 AF 0A E9 3B 1F B5 D9 DF 5D 57 90 41
D5 FE 80 02 41 FE 01 05 9D 00 38 00 02 38 C1 95 5C 18 82 83 BC C1 56 E4 21 E9 B9
81 97 E5 4F 51 5E D0 6D 9F B6 1B 4F 37 7B D5 11 6A 28 00 BE F8 4D 44 D3 F8 1C 52 DE 94 2A 77 22 51 63 D7 42 55 F9 8E 9D DF 06 41 2D 90 00
D1 00 00 00 27 00 98 00 00 00 00 20 4C DF C0 20 78 B5D
Pr. : odpoveď na totožné ecm(0624) M7 a noM7 karty.
oscam_ICE_force_irdeto :
13:37:24 8EF3448 r phoenix [irdeto] write to cardreader
13:37:24 8EF3448 D5 00 00 02 50 00 00 80 06 01 49 92 2D E9 91 CE
13:37:24 8EF3448 E6 87 66 6F 3B BB F6 7C 93 18 8A 58 DE 70 6B 2F
13:37:24 8EF3448 B8 15 08 13 A9 C9 20 DA 7C B3 BD 67 FC DE 44 26
13:37:24 8EF3448 48 71 D2 34 87 6F 38 96 5B 63 2D 36 BA 6D 4A E0
13:37:24 8EF3448 24 48 32 16 2A C2 9E 11 2E 69 2D 65 D8 6A A1 42
13:37:24 8EF3448 64 12 F7 89 A7
13:37:24 8EF3448 r phoenix [irdeto] Answer from cardreader:
13:37:24 8EF3448 90 1F
13:37:24 8EF3448 r phoenix [irdeto] write to cardreader
13:37:24 8EF3448 D5 FE 00 00 1F
13:37:24 8EF3448 r phoenix [irdeto] Answer from cardreader:
13:37:24 8EF3448 01 05 9D 00 38 00 02 16 FF FF 00 12 FF FF B7 15
13:37:24 8EF3448 C8 39 7E 21 22 98 81 E8 9F 4C 9B B0 3B 4E CA 90
13:37:24 8EF3448 00
13:37:24 8EF3448 r phoenix [irdeto] cardreader_do_ecm: after csystem.do_ecm rc=1
13:37:24 8EF3448 r phoenix [irdeto] cardreader_do_ecm: ret rc=1
13:37:24 8EF3448 r phoenix [irdeto] cardreader_process_ecm: cardreader_do_ecm returned rc=1 (ERROR=0)
13:37:24 8EF3448 r phoenix [irdeto] ecm hash: 94CB264786550E73209E3982AE357527 real time: 186 ms
13:37:24 B7600ED0 c acamd (0624&/0000/13F1/55:A4C792FDACB5B91AAFA64BA00B8251DE): found (192 ms) by phoenix
CAM TechniCrypt Irdeto CI+_karta irdeto M7 :
D5 00 80 02 50 00 00 00 80 06 01 49 92 2D E9 91
CE E6 87 66 6F 3B BB F6 7C 93 18 8A 58 DE 70 6B
2F B8 15 08 13 A9 C9 20 DA 7C B3 BD 67 FC DE 44
26 48 71 D2 34 87 6F 38 96 5B 63 2D 36 BA 6D 4A
E0 24 48 32 16 2A C2 9E 11 2E 69 2D 65 D8 6A A1
42 64 12 F7 89 27
90 41
D5 FE 80 02 41 FE 01 05 9D 00 38 00 02 38 B1 87
2F 93 5D A5 0A 5D AD 81 8E A8 5F EA 92 82 61 05
56 08 FC C8 B7 3E 89 40 8D 66 FA D3 54 DD 5E 90
52 EF DB B2 DD 42 64 EC E3 51 D9 1D 61 11 77 75
34 46 AB 26 00 0B D6 90 00
Pozn. :
ak chceme snifovať používaný(otvorený) serial port(napr. oscam<->phoenix),tak v linuxe(vo windows napr. "serial port monitor") fakt neviem.
Iba takto som sa dostal k nejakému výsledku :
~$ strace -fttx -eread -p pid
[pid 10765] 12:29:28.532143 read(7, "\xd5\x00\x00\x02\x50", 5) = 5
[pid 10765] 12:29:28.532618 read(7, "\x00", 1) = 1
[pid 10765] 12:29:28.539525 read(7, "\x00\x00\x80\x06\x01\x49\x83\x2e", 80) = 8
[pid 10765] 12:29:28.542951 read(7, "\x4b\x82\x6a\x1c\xd7\x75\xa5", 72) = 7
[pid 10765] 12:29:28.551804 read(7, "\x2a\xea\x55\xa5\x94\xde\x8d\x75", 65) = 8
[pid 10765] 12:29:28.555176 read(7, "\xf2\xba\x51\x82\x94\x31\xce\x49", 57) = 8
[pid 10765] 12:29:28.559010 read(7, "\xd8\x0d\xbb\x79\x2a\x6f\x88\x68", 49) = 8
[pid 10765] 12:29:28.563037 read(7, "\x02\xed\x98\xe8\xb3\x5e\x64\xc1", 41) = 8
[pid 10765] 12:29:28.572013 read(7, "\x3e\x39\x66\xa9\x61\xa6\xac\xcb", 33) = 8
[pid 10765] 12:29:28.572325 read(7, "\x66\x28\x15\x32\x96\xe8\x1f\x4e", 25) = 8
[pid 10765] 12:29:28.579088 read(7, "\xf7\x20\x8f\xfd\xbe\xa6\xb7\x2f", 17) = 8
[pid 10765] 12:29:28.582995 read(7, "\x51\x62\x9a\xfa\xf3\x22\xb3\x95", 9) = 8
[pid 10765] 12:29:28.587862 read(7, "\\", 1) = 1
[pid 10765] 12:29:28.603162 read(7, "\x90", 1) = 1
[pid 10765] 12:29:28.603446 read(7, "\x1f", 1) = 1
[pid 10765] 12:29:28.612242 read(7, "\xd5\xfe\x00\x00\x1f", 5) = 5
[pid 10765] 12:29:28.613861 read(7, "\xfe", 1) = 1
[pid 10765] 12:29:28.614081 read(7, "\x01\x05", 31) = 2
[pid 10765] 12:29:28.619114 read(7, "\x9d\x00\x38\x00\x02\x16\xff\xff", 29) = 8
[pid 10765] 12:29:28.623114 read(7, "\x00\x12\xff\xff\x33\x47\x94\x6c", 21) = 8
[pid 10765] 12:29:28.627064 read(7, "\x4f\xe7\x4c\xfc\xf2\xdd\xdb\x73", 13) = 8
[pid 10765] 12:29:28.635005 read(7, "\xf8\x49\x25\x61\x7e", 5) = 5
[pid 10765] 12:29:28.635270 read(7, "\x90", 1) = 1
[pid 10765] 12:29:28.635557 read(7, "\x00", 1) = 1
Process 10765 detached
[pid 10735] 12:29:28.638766 --- SIGRT_30 (Real-time signal 28) @ 0 (0) ---
~$ fuser /dev/ttyS0
_____________________________