Показать сообщение отдельно

  #3  
Старый 22.02.2006, 13:39
novichok
Banned
Регистрация: 03.12.2005
Сообщений: 449
Провел на форуме:
547725

Репутация: 302
По умолчанию

Шаг 3. IMSI или Ваш персональный логин в сеть.

IMSI (International Mobile Subscriber Identity) - это глобально уникальный идентификатор абонента. Формируется из 3 частей: код страны + код сети оператора GSM + внутрисетевой код абонента. Сопоставляется в биллинговой и коммуникационной системе оператора с выделенным абоненту телефонным номером, собственно поэтому IMSI и выполняет роль логина в сеть ;-).

Формат IMSI, который используется оператором, отличается от хранимого на SIM-карте. Допустим, к примеру, что оператор видит IMSI как - 123456789012345 (15 цифр). Тогда на карточку нужно заносить IMSI в виде - 08 19 32 54 76 98 10 32 54. Правило преобразования следующее:



к IMSI а-ля оператор приписываем 809 слева, в результате чего получаем - 809123456789012345 (18 цифр);
считаем, что полученное на предыдущем этапе число в BCD формате (т.е. каждые две цифры представляют один байт). Переставляем старший и младший ниблы каждого байта местами. В результате должны получить что-то подобное этому - 081932547698103254. Первый байт отражает количество значащих байт (исключая байт длины - себя), необходимых для IMSI.

Длина IMSI не может превышать 8 байт. Но иногда иператоры могут использовать укороченную нотацию, когда IMSI меньше 15 цифр. В таком случае, необходимо IMSI от оператора дополнить справа шестнадцатеричными F до длины в 15 цифр и подвергнуть описанному выше преобразованию. Естественно, не забудте скорректировать первый байт, там уже не будет 8, а цифра поменьше.

Запишем наш IMSI.

Перейдем в директорию GSM -

Cla Ins P1 P2 P3/Lc Le Data In
A0
A4
00
00
02

7F 20





Должны получить ответ вида 9F XX, где XX - длина доступных данных для команды Get Response.

Мы в директории GSM. Выбираем файл IMSI -

Cla Ins P1 P2 P3/Lc Le Data In
A0
A4
00
00
02

6F 07





Снова получаем 9F XX.

Выполняем запись содержимого файла IMSI -

Cla Ins P1 P2 P3/Lc Le Data In
A0
D6
00
00
09

80 91 23 45 67 89 01 23 45





Должны получить 90 00. IMSI записан.

Шаг 4. Ki - пароль доступа к сети.

KI (Mobile Subscriber Identification Key) - идентификационный ключ абонента. Используется для аутентификации абонента в сети оператора GSM.

Формат Ki, используемый оператором, представляет шестнадцатеричное число, длиной 16 байт, например: 12 34 56 78 90 AB CD EF 12 34 56 78 90 AB CD EF. Файл на карточке, содержащий Ki, имеет следующий формат -

00 LL 00 Ki ....... Ki ZZ YY 00

Byte Parameter/Description Mandatory-Optional Length
1
RFU - зарезервировано

1

2
LL - длина Ki (HEX)

1

3
RFU - зарезервировано

1

4 - 19
значение Ki (HEX)

16

20
Предустановленное к-во попыток ввода

1

21
Оставшееся к-во попыток ввода

1

22
RFU - зарезервировано

1





Длина Ki может быть ментше 16 байт. В таком случае используется выравнивание влево, а неиспользуемые байты заполняются значениями FF.

После преобразования к необходимому виду, получаем -

00 10 00 12 34 56 78 90 AB CD EF 12 34 56 78 90 AB CD EF 08 08 00

Это значение и будем заносить на карточку.

Мы все еще в директории GSM. Поэтому сразу выбираем нужный файл -

Cla Ins P1 P2 P3/Lc Le Data In
A0
A4
00
00
02

00 01





Отет вида 9F XX нас как всегда устраивает.

Обновляем содержимое -

Cla Ins P1 P2 P3/Lc Le Data In
A0
В6
00
00
22

00 10 00 12 34 56 78 90 AB CD EF 12 34 56 78 90 AB CD EF 08 08 00





И как всегда должны получить ответ карты - 90 00.

Шаг 5. Инициализируем необходимые файлы поддиректории GSM.

Файл Language Preference содержит коды одного или более языков в порядке предпочтения. Формат файла очень простой - каждый байт обозначает один из языков. Для простоты будем работать только с английским языком.

Выбираем нужный файл -

Cla Ins P1 P2 P3/Lc Le Data In
A0
A4
00
00
02

6F 05





Отет вида 9F XX нас как всегда устраивает.

Обновляем содержимое (только первый байт) -

Cla Ins P1 P2 P3/Lc Le Data In
A0
В6
00
00
01

01





И как всегда должны получить ответ карты - 90 00.

Файл Ciphering key Kc содержит сессионный ключ. Формат - первые 8 байт есть, собственно, сам ключ. Последний, девятый байт, обозначает порядковый номер ключа, причем старшие 5 бит этого байта всегда должны быть выставлены в 0. Последний байт имеет специальное значение - 07 (в двоичном представлении - 00000111), что указывает на отсутствие ключа (ключ будет сгенерирован самой картой в процессе работы).

Выбираем нужный файл -

Cla Ins P1 P2 P3/Lc Le Data In
A0
A4
00
00
02

6F 20





Отет должен быть 9F XX.

Обновляем содержимое -

Cla Ins P1 P2 P3/Lc Le Data In
A0
В6
00
00
09

FF FF FF FF FF FF FF FF 07





И как всегда должны получить ответ карты - 90 00.

Обратите внимание! В качестве значения ключа переданы байты FF. Это не есть тот ключ, который будет использоваться. Значения FF всегда используются в качестве заполнителя непроинициализированных полей файлов на смарт-карте, если дополнительно ничего не оговорено. О том, что ключа еще нет, также говорит и последний байт - 07.

Файл HPLMN search period - содержит итнервал времени между поисками HPLMN (изучайте матчасть, если интересно ;-) ). Формат файла - 1 байт, кодирующий время как (16Y+Z)n минут. Причем Y - старший, а Z - младший ниблы байта. Значение 00 - поиск не осуществляется.

Выбираем нужный файл -

Cla Ins P1 P2 P3/Lc Le Data In
A0
A4
00
00
02

6F 31





Отет должен быть 9F XX.

Обновляем содержимое -

Cla Ins P1 P2 P3/Lc Le Data In
A0
В6
00
00
01

04





И как всегда должны получить ответ карты - 90 00.

Файл Administrative data. Не вдаваясь в подробности обновим содержимое файла -

Cla Ins P1 P2 P3/Lc Le Data In
A0
A4
00
00
02

6F AD






Отет должен быть 9F XX.

Обновляем содержимое -

Cla Ins P1 P2 P3/Lc Le Data In
A0
В6
00
00
03

00 FF FF


И как всегда должны получить ответ карты - 90 00.