abvg
19.03.2005, 13:07
Цель данного треда – перевести уровень обсуждения наших проблем, связанных с эксплуатацией SIM эмуляторов совместно с ME (Mobile Equipment) на более высокий уровень - технический.
Задача – помочь с выбором конкретной прошивки и с написанием последующих прошивок.
Я начну, а в зависимости от активности и интереса уважаемых коллег, пойдем дальше и глубже (или не пойдем).
На первом этапе анализировались широко известные прошивки:
TWINSIM, DejanGold, SIM_EMU_6.01, Kismi1, Kismi8.
Задачи: посмотреть, что и как сделано
a) Эмулируемые ATR (ничего интересного – одни исторические байты. Как видим, указание класса TA2 по питанию A,B,C,D – отсутствует. Только через STATUS!):
TWINSIM 3F 2F 00 80 69 AF 02 04 01 36 00 02 0A 0E 83 3E 9F 16
Dejan 3F 2F 00 80 69 AF 02 04 01 31 00 00 00 0E 83 3E 9F 16
SIM_EMU_6.01
Kismi1 3F 2F 00 80 69 AF 02 04 01 36 00 02 0A 0E 83 3E 9F 16
Kismi8 3F 2F 00 80 69 AF 02 04 01 31 00 00 00 0E 83 3E 9F 16
Здесь:
3F – Inverse convention
2F – TB1 only & 15 исторических байтов
00 – TB1 = VPP is not connected
Остальное – ерунда (главное применение – увековечить свой nick!)
б) Реальные ATR(кусочек для сравнения:
Gemplus GemXplore 3F 2F 00 80 59 AF 02 01 01 30 00 00 0A 0E 83 06 9F 12
e-plus (1800MHz) 3F 2F 00 80 69 AE 02 02 01 36 00 00 0A 0E 83 3E 9F 16
D2 CallYa (900MHz) 3F 2F 00 80 69 AF 02 04 01 36 00 02 0A 0E 83 3E 9F 16
GemXplore 98 V1 16K 3F 2F 00 80 69 AF 03 07 03 52 00 00 0A 0E 83 3E 9F 16
DebitelD2 (900MHz) 3F 2F 00 80 69 AF 03 07 03 52 00 0D 0A 0E 83 3E 9F 16
Virgin Mobile (Gemplus) 3F 2F 00 80 69 AF 03 07 03 5A 00 15 0A 0E 83 3E 9F 16
French GSM (900MHz) 3F 69 00 00 24 AF 01 70 01 01 FF 90 00
BEN (1800MHz) 3B 0A 20 62 0C 01 4F 53 45 99 14 AA
Sonera(from 1998) 3B 0F 80 6A 16 32 46 49 53 45 53 8C E0 FF 07 90 00
Etc...
в) Класс команд – A0! (Кстати, мало кто из эмуляторов его проверяет?!)
г) Эмулируемые команды:
A4 SELECT Twin Dejan 6.01 Kismi1 Kismi8
B0 READ BINARY Twin Dejan 6.01 Kismi1 Kismi8
B2 READ RECORD Twin Dejan 6.01 Kismi1 Kismi8
DC UPDATE RECORD Twin Dejan 6.01 Kismi1 Kismi8
C0 GET RESPONSE Twin Dejan 6.01 Kismi1 Kismi8
F2 STATUS Twin Dejan 6.01 Kismi1 Kismi8
D6 UPDATE BINARY Twin Dejan 6.01 Kismi1 Kismi8
88 RUN GSM ALGORITHM Twin Dejan 6.01 Kismi1 Kismi8
20 VERIFY CHV(PIN) Twin Dejan 6.01 Kismi1 Kismi8
24 CHANGE CHV(PIN) Twin 6.01 Kismi1 Kismi8
26 DISABLE CHV(PIN) Twin 6.01 Kismi1 Kismi8
28 ENABLE CHV(PIN) Twin 6.01 Kismi1 Kismi8
2C UNBLOCK CHV(PIN) Twin 6.01 Kismi1
04 INVALIDATE 6.01 Kismi1
10 TERMINAL PROFILE 6.01
12 FETCH 6.01
14 TERMINAL RESPONSE 6.01
32 INCREASE 6.01
44 REHABILITATE 6.01
A2 SEEK 6.01
C2 ENVELOPE 6.01
FA SLEEP Dejan 6.01 Kismi8
д) In addition the following codes are reserved:
- GSM operational phase: 16 18 1A 1C 1E
- Administrative management phase: 2A D0 D2 C4 C6 C8 CA B4 B6 B8 BA BC
е) НЕПРАВИЛЬНЫЕ (несуществующие) команды
AA ????????? Twin Kismi1
BB ????????? Twin Kismi1
FE ????????? Dejan Kismi8
ж) Дополнения до ПОЛНОГО списка команд (на всякий случай - для тех, кому интересно).
1) ANSI-41-based Security Commands
82 CONFIRM SSD Confirm_SSD (Shared Secret Data)
84 UPDATE SSD Update_SSD
86 AKEY-validation 51.011
88 RUN CAVE Internal_Authentificate
8A BASE STATION CHALENGE Ask_Random
8C CMEA_encrypt
8E GENERATE KEY/VPM
2) OTASP/OTAPA Commands
50 GENERATE PUBLIC KEY
52 KEY GENERATION REQUEST
54 CONFIGURATION REQUEST
56 DOWNLOAD REQUEST
CC COMMIT
CE VALIDATE
EA SSPR CONFIGURATION REQUEST
EC SSPR DOWNLOAD REQUEST
EE OTAPA REQUEST
3) ESN Management Command
DE STORE ESN_ME
з) Запрещенные команды во всех классах:
- 6Х;
- 9Х;
- нечетные.
Результаты.
При осуществлении операций в GSM сети крайне важен интерфейс GSM-ME в виде:
- пар GSM-команд и ответов;
- GSM процедур состоящих их одной или нескольких таких пар, выполняющих всю или некоторую часть прикладной задачи. (Важно – ME предполагает, что процедура НЕ прервется где-то внутри своего исполнения, вернее, что не существуют недокументированных прерываний.)
- GSM сессий.
Если посмотреть на сессии и процедуры для различных ME, то легко видеть, что используются ВСЕ команды – лишних НЕТ. Проектировщики ОС для МЕ используют ВСЁ пространство команд. Урезанные EMU сильно рискуют. И только дело случая...
Занятно, что в одной программе Kismi, в разных режимах РАЗНЫЕ подмножества команд(?!)
Что же касается P1, P2, Lc – полный бардак! НИКТО НИЧЕГО в эмуляторах не проверяет. Даже класса команд! Не факт, что все приложения ОС ME корректно работают.
Плохо написаны драйверы(только Dejan – молодец), отсутствует PTS, обработка ошибок приема/передачи. Как мелкий пример – в драйвере работы с DATA EEPROM в 6.01 при записи забыли про запрет прерываний. И т.п., и т.д....
Вот оно и глючит.
Какой эмулятор выбрать – решайте сами.
Задача – помочь с выбором конкретной прошивки и с написанием последующих прошивок.
Я начну, а в зависимости от активности и интереса уважаемых коллег, пойдем дальше и глубже (или не пойдем).
На первом этапе анализировались широко известные прошивки:
TWINSIM, DejanGold, SIM_EMU_6.01, Kismi1, Kismi8.
Задачи: посмотреть, что и как сделано
a) Эмулируемые ATR (ничего интересного – одни исторические байты. Как видим, указание класса TA2 по питанию A,B,C,D – отсутствует. Только через STATUS!):
TWINSIM 3F 2F 00 80 69 AF 02 04 01 36 00 02 0A 0E 83 3E 9F 16
Dejan 3F 2F 00 80 69 AF 02 04 01 31 00 00 00 0E 83 3E 9F 16
SIM_EMU_6.01
Kismi1 3F 2F 00 80 69 AF 02 04 01 36 00 02 0A 0E 83 3E 9F 16
Kismi8 3F 2F 00 80 69 AF 02 04 01 31 00 00 00 0E 83 3E 9F 16
Здесь:
3F – Inverse convention
2F – TB1 only & 15 исторических байтов
00 – TB1 = VPP is not connected
Остальное – ерунда (главное применение – увековечить свой nick!)
б) Реальные ATR(кусочек для сравнения:
Gemplus GemXplore 3F 2F 00 80 59 AF 02 01 01 30 00 00 0A 0E 83 06 9F 12
e-plus (1800MHz) 3F 2F 00 80 69 AE 02 02 01 36 00 00 0A 0E 83 3E 9F 16
D2 CallYa (900MHz) 3F 2F 00 80 69 AF 02 04 01 36 00 02 0A 0E 83 3E 9F 16
GemXplore 98 V1 16K 3F 2F 00 80 69 AF 03 07 03 52 00 00 0A 0E 83 3E 9F 16
DebitelD2 (900MHz) 3F 2F 00 80 69 AF 03 07 03 52 00 0D 0A 0E 83 3E 9F 16
Virgin Mobile (Gemplus) 3F 2F 00 80 69 AF 03 07 03 5A 00 15 0A 0E 83 3E 9F 16
French GSM (900MHz) 3F 69 00 00 24 AF 01 70 01 01 FF 90 00
BEN (1800MHz) 3B 0A 20 62 0C 01 4F 53 45 99 14 AA
Sonera(from 1998) 3B 0F 80 6A 16 32 46 49 53 45 53 8C E0 FF 07 90 00
Etc...
в) Класс команд – A0! (Кстати, мало кто из эмуляторов его проверяет?!)
г) Эмулируемые команды:
A4 SELECT Twin Dejan 6.01 Kismi1 Kismi8
B0 READ BINARY Twin Dejan 6.01 Kismi1 Kismi8
B2 READ RECORD Twin Dejan 6.01 Kismi1 Kismi8
DC UPDATE RECORD Twin Dejan 6.01 Kismi1 Kismi8
C0 GET RESPONSE Twin Dejan 6.01 Kismi1 Kismi8
F2 STATUS Twin Dejan 6.01 Kismi1 Kismi8
D6 UPDATE BINARY Twin Dejan 6.01 Kismi1 Kismi8
88 RUN GSM ALGORITHM Twin Dejan 6.01 Kismi1 Kismi8
20 VERIFY CHV(PIN) Twin Dejan 6.01 Kismi1 Kismi8
24 CHANGE CHV(PIN) Twin 6.01 Kismi1 Kismi8
26 DISABLE CHV(PIN) Twin 6.01 Kismi1 Kismi8
28 ENABLE CHV(PIN) Twin 6.01 Kismi1 Kismi8
2C UNBLOCK CHV(PIN) Twin 6.01 Kismi1
04 INVALIDATE 6.01 Kismi1
10 TERMINAL PROFILE 6.01
12 FETCH 6.01
14 TERMINAL RESPONSE 6.01
32 INCREASE 6.01
44 REHABILITATE 6.01
A2 SEEK 6.01
C2 ENVELOPE 6.01
FA SLEEP Dejan 6.01 Kismi8
д) In addition the following codes are reserved:
- GSM operational phase: 16 18 1A 1C 1E
- Administrative management phase: 2A D0 D2 C4 C6 C8 CA B4 B6 B8 BA BC
е) НЕПРАВИЛЬНЫЕ (несуществующие) команды
AA ????????? Twin Kismi1
BB ????????? Twin Kismi1
FE ????????? Dejan Kismi8
ж) Дополнения до ПОЛНОГО списка команд (на всякий случай - для тех, кому интересно).
1) ANSI-41-based Security Commands
82 CONFIRM SSD Confirm_SSD (Shared Secret Data)
84 UPDATE SSD Update_SSD
86 AKEY-validation 51.011
88 RUN CAVE Internal_Authentificate
8A BASE STATION CHALENGE Ask_Random
8C CMEA_encrypt
8E GENERATE KEY/VPM
2) OTASP/OTAPA Commands
50 GENERATE PUBLIC KEY
52 KEY GENERATION REQUEST
54 CONFIGURATION REQUEST
56 DOWNLOAD REQUEST
CC COMMIT
CE VALIDATE
EA SSPR CONFIGURATION REQUEST
EC SSPR DOWNLOAD REQUEST
EE OTAPA REQUEST
3) ESN Management Command
DE STORE ESN_ME
з) Запрещенные команды во всех классах:
- 6Х;
- 9Х;
- нечетные.
Результаты.
При осуществлении операций в GSM сети крайне важен интерфейс GSM-ME в виде:
- пар GSM-команд и ответов;
- GSM процедур состоящих их одной или нескольких таких пар, выполняющих всю или некоторую часть прикладной задачи. (Важно – ME предполагает, что процедура НЕ прервется где-то внутри своего исполнения, вернее, что не существуют недокументированных прерываний.)
- GSM сессий.
Если посмотреть на сессии и процедуры для различных ME, то легко видеть, что используются ВСЕ команды – лишних НЕТ. Проектировщики ОС для МЕ используют ВСЁ пространство команд. Урезанные EMU сильно рискуют. И только дело случая...
Занятно, что в одной программе Kismi, в разных режимах РАЗНЫЕ подмножества команд(?!)
Что же касается P1, P2, Lc – полный бардак! НИКТО НИЧЕГО в эмуляторах не проверяет. Даже класса команд! Не факт, что все приложения ОС ME корректно работают.
Плохо написаны драйверы(только Dejan – молодец), отсутствует PTS, обработка ошибок приема/передачи. Как мелкий пример – в драйвере работы с DATA EEPROM в 6.01 при записи забыли про запрет прерываний. И т.п., и т.д....
Вот оно и глючит.
Какой эмулятор выбрать – решайте сами.