Главная  Телефон gsm 

[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [ 32 ] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72]

280 N=ASC(MID$(C$.K, 1)) *

290 GOSUB 370

300 D$=HEX$(M)+" ••

310 IF LEN(D$)<3 THEN D$="0"+D$

320 PRINT D$;

330 NEXT К

340 IF L0C{1)<>0 THEN C$-INPUT$(L0C(1), #1) :GOTO 270 350 PRINT 360 RETURN

370 M=255 -

380 IF N>127 THEN N=N-128:M=M-1

390 IF N>63 THEN N=N-64:M=M-2

400 IF N>31 THEN N=N-32:M=M-4

410 IF N>15 THEN N=N-16:M=M-8

420 IF N>7 THEN N=N-8:M=M-16

430 IF N>3 THEN N=N-4: M=M-32

440 IF N>1 THEN N=N-2:M=M-64

450 IF N>0 THEN M=M-128

460 RETURN

470 REM (c)1997. 1999 Patrick GUEULLE

10 REM----DIRISO. BAS----

20 KEY OFF:CLS

30 PRINTДиaлoг с картами no прямому соглашению ISO" 40 PRINT:PRINT

50 OPEN C0M1:9600.e.8.2" AS #1

60 PRINT"BcTaBMTb карту и ввести команду ISO"

70 PRINT-ESCAPE для выхода": PRINT

80 GOSUB 110

90 PRINT ft1,M$. .NL>JNPUT$(LEN(M$).#1) 100 GOTO 80

110 M$=-

120 A$=INKEY$:IF A$<>"" THEN 150 130 IF L0C(1)>0 THEN GOSUB 210 140 GOTO 120

150 IF A$=CHR$(27) THEN END 160 PRINT A$;

170 B$=INKEY$;IF B$="" THEN 170 180 PRINT B$+" "; 190 M$=CHR$(VAL("&H"+A$+B$)) 200 RETURN 210 T$=TIME$ 220 IF T$=TIME$ THEN 220 230 IF L0C(1)=0 THEN RETURN




240 C$=INPUT$(L0C(1).ft1): PRINT : PRINT " * 250 FOR К=1 TO LEN(C$)

260 D$-HEX$(ASC(MID$(C$. К. 1 )))+•• ••• , . •

270 IF LEN(D$)<3 THEN D$="0"+D$ - .

280 PRINT D$; 290 NEXT К

300 IF LOC(1)<>0 THEN C$=INPUT$(L0C(1).#1):G0T0 250 .

310 PRINT . .• . , ,

320 RETURN • . " . * . . ;. -i i. ...

330 REM (c)1997. 1999 Patrick GUEULLE . ......

Программа INVISO.EXE позволяет проводить любые манипуляции с картами, работающими по обратному соглашению (ответ на сброс начинается с байта 3Fh). Для карт, работающих по прямому соглашению (ответ на сброс начинается с байта 3Bh), используется программа DIRISO.EXE.

Как только карта вставлена в устройство для считывания (по приглашению, поступившему от программы), она непроизвольно выдает группу байтов - ответ на сброс, или ATR (Answer То Reset). Этот ответ появляется на экране, и часто он оканчивается на 90 00 (но это не обязательно). • , • ->••.. . »

Затем карта ждет команд, которые необходимо ввести с клавиатуры. Все ответы карты будут постепенно отображаться на экране в окружении звездочек (во избежание путаницы с тем, что набиралось на клавиатуре).

Любая команда протокола Т = О состоит из заглавного блока (заголовка) из пяти байт, за которым следует блок данных. Все выражается в шестнадцатеричном формате. Пять байт заголовка соответственно именуются СЕД INS, PI, Р2 и LEN и представляют собой следующее:

• CLA - «класс» карты, например, BCh для банковской карты или карты VITALE, и ДОП для SIM-карты; • •

• INS - операционный код команды, которую должна выполнить карта. Для SIM-карт эти коды ужр были рассмотрены в главе 3 (см. раздел «SIM-карта»);

• Р1 и Р2 уточняют, что должна делать карта, или по умолчанию остаются в виде 00 00;

• LEN указывает длину блока данных, посылаемых карте или ожида- - емыхотнее. " • . .

. В случае «входящей» команды байты данных отправляются после кода LEN, но только после того, как карта ответила байтом процедуры (часто это бывает просто повторением операционного кода команды).



В слздае «выходящей» команды блок данных посылается картой по получении байта LEN и передачи байта процедуры. Практически во всех слздаях карта завершает выполнение команды отправкой двух байт отчета (SW1 и SW2). Если все прошло удачно, то отчет будет послан в виде 90 00.

Таким образом, с SIM-картой можно сделать многое. Но следует иметь в виду, что некоторые некорректные манипуляции могут надолго или окончательно заблокировать карту или даже повредить ее физически.

Стандарт GSM 11.11 содержит детальное описание файлов и команд, позволяющих проводить операции считывания и записи. Этот вопрос будет рассмотрен в следующей главе.

Прежде всего необходимо ввести (или просто нейтрализовать раз и навсегда) конфиденциальный код, защищающий доступ к карте (тот, который обычно набирается во время каждого включения телефона).

Предположим, что кодом является 1234 (в новой карте 0000). Переведем код ASCII в шестнадцатеричный формат и дополним его до восьми цифр, набрав FFh. Ползим:

31 32 33 34 FF FF FF FF ,

Чтобы представить код карте (после ползения ее ответа на сброс), набираем:

АО 20JlQm I

Как только карта ответит 20 (байт процедуры), введем: 31 32 33 34 FF FF FF FF

Если код верный, то в ответ карта отправит 90 00. Если код уже был дезактивирован и карте больше не нужен - 98 08.

Чтобы дезактивировать этот код, только создающий неудобства для проводимых экспериментов, можно набрать следующее:

АО 26 00 01 08

Затем, после ползения байта 26, введите: 31 32 33 34 FF FF FF FF

Код всегда можно снова активировать, если набрать: АО 28 00 01 08

А затем, после получения байта 28, опять ввести: 31 32 33 34 FF FF FF FF



[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [ 32 ] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72]

0.0024