Как работает R-Sim?

При включении радио модем телефона проверяет заблокирован ли телефон, считывая IMSI номер из SIM-карты. IMSI номер выглядит как XXX-XX-ХХХХХХХХХХ, где первое число — мобильный код страны (напр. Украина — 255, Российская Федерация — 250, США — 310), второе — код оператора (напр., МТС Украина — 01), остальное — ваш уникальный номер. IMSI в целом уникален глобально для всех сетей GSM. По нему вас «узнают», когда вы входите в роуминг. Его также передает в эфир телефон при прохождении процедуры регистрации в сети. Клонирование IMSI запрещено законом.

Первые Turbo SIM работали таким образом, что при первой попытке считывания IMSI (для проверки на блокировку) они посылали в ответ импульс тока и модем пропускал этот шаг (удивительно, да?), переходя к второй процедуре считывания IMSI, но уже для регистрации в сети, и тогда уже ему давали правильный IMSI. Но Apple закрыла «дыру», существенно усложнив механизм проверки IMSI.

Тем не менее, есть одно особенность протокола GSM — в целях безопасности(!) и избегания передачи ключа IMSI в эфир, абонент может пройти регистрацию в сети с помощью TMSI ключа. В идеале, чтоб его получить, нужно всё таки хотя бы раз «засветить» IMSI, но тогда телефон «засечёт» чужую СИМку и не пропустит её. Но тут на помощь пришла ещё одна особенность протокола GSM. В не таком уж далёком прошлом (1992-1995 гг.) , когда шла разработка самого протокола, использование услуги мобильной связи было роскошью, поэтому создатели решили добавить возможность совершать звонки на «льготных» условиях хотя бы на экстренные номера. Причём «льготными» они должны были быть настолько, что для их набора не нужна даже СИМ-карта. Таким номером был выбран 112 — номер экстренной службы в Европе, т.к. GSM был разработан именно в Европе (точнее в Франции). Но как же совершить звонок без IMSI, т.е. без СИМки? И тут решили, что при таком вызове абоненту нужно выдать TMSITMSI имеет пару особенностей: 1) он перезаписывается и хранится на СИМ-карте; 2) он привязан к IMEI телефона и может потом быть использован даже при повторной регистрации в сети (если строк действия не истёк).

Так как же всё таки работает «гевей»? При старте модема СИМ-карта говорит модему, что её нужно показать абоненту меню. Это часть протокола и телефон обязан поддерживать этот функционал. В этот момент мы видим меню приветствия с кнопками Accept и Cancel (они стандартны для всех СИМ-меню в iPhone). Мы нажали Accept. Модем начинает процедуру регистрации. Идёт запрос в СИМке типа «Дай IMSI?» — в ответ тестовый IMSI в виде 001-01-ХХХХХХХХХХ. Модем думает, что ему вставили тестовую СИМ-карту. В это время мы видим появится одно деление уровня сигнала. Это значить, что модем смирился с тем, что нормальный IMSI ему не дадут и он просто «подзавис» (вообще-то не совсем «подзавис», но мы припустим). Мы набираем 112. Несмотря ни на что, модем должен набрать этот номер и установить соединение. При наборе проходит временная регистрация и нам выдают TMSI. Поскольку СИМ-карта находится в состоянии «вставлена», то модем делает попытку записать полученный TMSI в специальный регистр СИМ-модуля. Gevey вступает в перехват и пишет его себе. Также он переводит состояние СИМ-модуля в «Зарегистрирован с помощью TMSI «. Теперь мы включаем/выключаем Airplane Mode. При этом радиомодуль телефона отключается полностью, а при включении он снова начинает процедуру регистрации. При этом происходит следующее: сначала телефон пробует считать IMSI, но «гевей» в этот момент отключает СИМ-модуль полностью (мы видим No SIM inserted или что-то типа того), далее мне процедура до конца не ясна, но похоже далее телефон пробует считать TMSI и «гевей» со спокойной душой ему его отдает. Далее телефон успешно проходит регистрацию, точнее её возобновление и нам становятся доступными все сервисы.