|
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.
|