Как запустить сотовую сеть стандарта AMPS при помощи SDR

Приветствую всех!
Многие из нас всё ещё помнят такой стандарт связи как AMPS. В лучшие времена он, как и другой аналоговый стандарт NMT-450, был достаточно популярен на просторах России. И, возможно, у кого-то из нас даже был такой телефон.

elog1ekxklq2cbxb4njqumsahgk.jpeg

Хотя сети общего пользования прекратили работу уже давным-давно, при помощи некоторого оборудования и софта всё ещё возможно дать старым телефонам возможность вновь зазвонить.
Итак, в сегодняшней статье разберёмся, как запустить сотовую сеть стандарта AMPS. Узнаем, с какими сложностями придётся столкнуться и как заставить всё это работать. Традиционно будет много интересного.

Суть такова


Как и многих других любителей старой электроники, древние телефоны не обошли меня стороной. Хотя основным моим увлечением по этой части остаётся компьютерное железо, да и из мобильных устройств мне больше нравятся КПК, смартфоны и коммуникаторы (без привязки к стандарту связи и оператору), такие древние трубки у меня всё же имелись. И, разумеется, мне всегда хотелось их запустить. И вот, спустя столько лет, мне наконец-то удалось приобрести полноценный SDR, так что теперь у меня есть возможность увидеть всё это в работе. А раз так — самое время поведать об этом миру.

Немного истории


Сети стандарта AMPS принадлежали к первому поколению мобильных сетей. Появившись в начале восьмидесятых, они достаточно быстро получили распространение в Америке (где вообще стали первыми сотовыми сетями), а позже и в других странах мира. Немало легендарных устройств работали в этом стандарте, например, первый коммерчески доступный мобильный телефон Motorola DynaTAC или один из первых смартфонов IBM Simon. И даже первый звонок по сотовому телефону был совершён именно в сети этого стандарта.

В России эти сети появились в 1994 году и были развёрнуты компанией «Вымпелком» (он же «Билайн»). Как удалось найти, в них использовалось оборудование Ericsson, телефоны предлагались преимущественно этой же фирмы.

К концу нулевых годов AMPS стал сдавать позиции и был вытеснен более совершенными GSM и D-AMPS (впрочем, имеющего мало общего с «оригинальным» AMPS). Последние сети этого стандарта были отключены в 2008–2010 годах.

Как работает AMPS


И перед началом экспериментов разберёмся, как же были устроены данные сети.
По принципу работы AMPS очень близка к своему предшественнику IMTS (Improved Mobile Telephone Service). Это типичная аналоговая сотовая сеть с частотным разделением каналов. Всего их 416 — 395 голосовых и и 21 управляющий. Каналы эти назначались автоматически, в зависимости от занятости и уровня сигнала.

В отличие от регионов NMT, тут используются так называемые System ID, кодирующие сети операторов. Сети делятся на два типа — System A (нечётный ID) и System B (чётный ID), для каждой из них выделены свои каналы.

Что нужно для запуска


Итак, определимся с оборудованием. Для создания нашей сети нам понадобится примерно следующее:

  1. Компьютер с ОС Linux. Машина должна быть достаточно мощной, Raspberry Pi не подойдёт. Также обязателен хотя бы один свободный порт USB 3.0. Использовать ВМ я настоятельно не рекомендую, чуть позже я покажу, почему.
  2. Полнодуплексный SDR, совместимый с GNU Radio. В качестве него подойдут, например, LimeSDR, USRP или BladeRF.
  3. Антенны, рассчитанные на частоту в районе восьмисот мегагерц или антенная нагрузка (что ещё более предпочтительно)
  4. Собственно, сам телефон. Как нетрудно догадаться, аппарат должен включаться и пытаться ловить сеть. Антенна также должна быть на месте.


Вся сложность заключается именно во втором пункте. Дело в том, что полнодуплексный SDR на момент написания поста стоит весьма недёшево ввиду наличия в его составе «жирной» ПЛИС и трансивера.

Обзор оборудования


Ну что же, самое время взглянуть на железо.

ru7dcde9e1zu5ipytpvgabkea3c.jpeg

Это самый важный из всех компонентов — USRP B200-mini, он же full-duplex SDR. Железка по-настоящему крутая, для экспериментов с сотовыми сетями она просто идеальна. Единственное — цена такой штуки весьма впечатляет.

t69wznjllc2oj5gxcglq34jsysi.jpeg

Теперь очередь телефонов.
Это Ericsson R300LX. У него интересная судьба: в своё время, когда отключали аналоговые сотовые сети, эти телефоны продавали очень дёшево, и я купил его всего за десять рублей в привокзальной палатке. В годы начальной школы он был моей любимой игрушкой. Аккумулятор был потёкший, и я его сразу выкинул, так что запускать аппарат будем от ЛБП. Благо ещё в те далёкие годы я припаял два проводка. Позже я раздобыл ещё один такой телефон, его и буду использовать в рамках данного поста.

apoi9rei3esqobts8n_tkjcvnyq.jpeg

А это Ericsson T60D. Аппарат куда более поздний, нежели предыдущий. У него также была версия T60C стандарта CDMA.

evkzvry_sbg2b-krvlmsrxfu1_w.jpeg

Аккумулятор у него тоже дохлый, но подключается он через разъём, а не подпружиненные контакты, так что я просто откусил вздувшуюся банку и припаял взамен другую батарею (она от отслужившего своё аккумулятора Lego NXT. Постоянно использовать её, конечно, не выйдет, но для тестов сгодится).

_xl63dtcc1ukiutnqc-lix3gw_c.jpeg

Самая интересная, на мой взгляд, особенность этого телефона — ЭЛИ-подсветка. Если его разобрать, на плате можно увидеть характерную плёночку, светящуюся при подаче на неё переменного напряжения высокой частоты. Аналогичная технология использовалась в телефоне Motorola RARZ V3.

szacudhwphgtfalg-sylgesqes4.jpeg

Ericsson LX588. Увы, у обоих аппаратов сломаны и утеряны антенны, так что в данных экспериментах они участвовать не будут, хоть они и включаются и пытаются работать.

gndp-qovgfy1qspaz4_piyvqj7k.jpeg

Nokia 8260. Это самый поздний аналоговый аппарат, что у меня есть, если бы не отсутствие слота под SIM, его было бы сложно отличить от обычной GSM-трубки.

xtdq9sf3bqonltlhdc4zbtqcsyo.jpeg

Среди прочих аппаратов есть и те, которые заслуживают более подробного описания. Вот, к примеру, Motorola MicroTAC, как по мне, один из самых крутых аппаратов того времени в плане дизайна (наряду со StarTAC от той же Motorola). Их было выпущено много модификаций, в мои руки попала MicroTAC Ultra Lite.

63mksaejc1hhcnuihpvnbnqxju4.jpeg

Обратная сторона. Под батареей находится краткая инструкция со списком основных действий.
Что примечательно, средний контакт аккумулятора хоть и есть, но не задействован. Он используется не для контроля состояния аккумулятора, а для активации режима Test mode.

al9nqidiu4sv-wizboflatfpg7a.jpeg

Никелевый аккумулятор, разумеется, давно сдохший. Без этой штуки телефон теряет весь свой шарм, перестаёт приятно оттягивать руку и, если бы не светодиодный дисплей, он бы напоминал типичный древний аппарат от Ericsson.

9iluij1uabovgyhvk0zz4c5acg8.jpeg

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

knn9ljvr0lanqtmoozbu_49oxtg.jpeg

А вот так на ней лежит аппарат.

5cw-6k-4zpysj4osujcwihhlfbu.jpeg

Внутренности. В некоторых моделях стоял ещё и микроконтроллер PIC, но у меня его нет.

on8mgstmq1lx3bul1jxr5t_swpo.jpeg

Девайс в работе. Даже по нынешним меркам светодиодные матричные индикаторы очень классно смотрятся и навевают мысли о старых авиаприборах.

cx9lfi13kxwq3-mrpxlnwgd3lcu.jpeg

Ещё одной интересной особенностью является наличие у него зарезервированных функций меню.

pxopenpqqsb2o_jmm6hxlcgapvu.jpeg

fuq8ie8vyu6nopzduuuxq5h5hka.jpeg

А вот и легендарный StarTAC. Вообще, я не очень люблю раскладушки, но этот девайс (наряду с КПК Sony) мне безумно нравится.

5exol9dqzmxo0mpxrfn75cnboea.jpeg

Он же в сложенном виде. Увы, аккумулятор от него давно утрачен. Кстати, это единственная известная мне раскладушка, где батарея установлена в верхней части.

Ставим софт


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

Вообще, кое-что про работу с софтом, что мы будем сейчас использовать, я уже рассказывал в посте про NMT-450, так что настоятельно рекомендую вначале прочитать его. Хотя стандарты и оборудование сильно отличаются, по части софта многие аспекты полностью идентичны.
Как и в случае с NMT, я буду использовать Osmocom Analog. В отличие от другой реализации AMPS для GNU Radio, gr-amps, этот софт намного более прост в установке и запуске.
Итак, для начала необходимо установить ПО для управления SDR (UHD или LimeSuite). Выбор его зависит от вашей железки, так что подробно описывать это не вижу смысла.

Далее нужно установить библиотеку SoapySDR:

sudo apt install libsoapysdr-dev
sudo apt install soapysdr-tools


Это официальный вариант от разработчиков Osmocom Analog. Я встречал информацию, что нужно использовать только конкретную версию библиотеки, иначе будут проблемы с запуском, но на момент написания статьи, похоже, это было исправлено, так как у меня всё запустилось нормально.

Если же у вас нет желания разбираться с библиотеками и прочими зависимостями, то я рекомендую запускать всё на Dragon OS. Это известный в узких кругах дистрибутив Lubuntu, этакий идеологический аналог Kali Linux, только если последний ориентирован на хакеров, Dragon OS предназначена для работы с SDR и радио. Там уже установлены все необходимые программы, так что проблем у вас быть точно не должно. На всякий случай я оставлю ссылку на ту версию, что я использовал, в конце статьи. Точно также я выложу уже скомпилированный софт, который будет достаточно только установить и запустить.

Теперь необходимо собрать Osmocom Analog. Делается это очень просто:

git clone git://git.osmocom.org/osmocom-analog
cd osmocom-analog
autoreconf -if
./configure
make clean
make 
sudo make install


После сборки у вас должна будет появиться папка osmocom-analog, где в папках в разделе src будут лежать нужные нам программы для запуска сетей. Вообще, этот софт можно использовать и с аналоговым трансивером (по сути всё абсолютно аналогично тому, что я описывал в посте про NMT), но найти SDR оказалось проще, чем приёмопередатчик на такие частоты.

Кстати, существует ещё и вот такой проект. Как по мне, это одна из самых крутых реализаций такой сети, а подробное описание собранного девайса потянет на отдельную статью. Но об этом всём как-нибудь в другой раз. Кстати, именно автор данного девайса сильно помог проекту Osmocom-Analog в реализации сети AMPS.

Запускаем сеть


Ну что же, пробуем? Втыкаем SDR в компьютер, включаем наш телефон.

zxedpda7tcch9jmiek_scrloo1e.jpeg

Запускаем наш софт:

amps --sdr-uhd -k 334 -k 320 --samplerate 512000

svroy5a6qz05rjtqiuad2pimhne.jpeg

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

Остаётся только положить телефон рядом с антеннами и ждать чуда.

akii22aoaj6mlfq6xh5aktpar44.jpeg

rnwz0rhgpqffvjb82hpdc8eh6li.jpeg

И, если всё было сделано правильно, телефон поймает сеть и скажет, что мы в роуминге (так как код оператора отличается от того, что прошит в него).

lujzolalvhv2qxvp47ezst_aza4.jpeg

При этом в окне посыпятся логи. Здесь же можно увидеть номер — в моём случае это 3512761234., Присвоенный номер наводит на мысли о наследии старых сотовых операторов — когда-то давно мобильные номера выдавались просто с кодом города, а не оператора (что, кстати, отражено в моём нике: 351 — код города Челябинска).

Всё, можно пробовать звонить.

Итак, оно не работает


lfgdc9pirchkiklemd0psvbswq8.jpeg

Если телефон сразу нашёл сеть и подключился к ней — поздравляю. Всё успешно запущено, теперь можно пробовать звонить.

Но, как оказалось, всё не так просто, как может показаться.

fkvcl7a5ghd98erwhf46swpzsfk.png

Если сеть не запускается, следует попробовать поменять samplerate на более большой. Завышать его, правда, тоже не стоит, так как ресурсов это будет тратить больше, а особого результата не будет. Значение это должно быть таким, чтобы обеспечить работу всех созданных каналов.

d_hqkf_vatvzvy9nzqztxlzg65s.png

Если же появляются строки вроде «SDR underrun», скорее всего, не хватает пропускной способности порта. Причин для этого много, либо SDR воткнут в «медленный» USB 2.0 вместо USB 3.0, либо компьютер слишком слаб, чтобы держать столько каналов. К слову говоря, это одна из причин, почему не стоит запускать софт на виртуальной машине. У меня нет отдельного мощного ПК с линуксом на борту, но было достаточно записать Dragon OS на флешку и загрузиться с неё, чтобы сообщения об ошибках пропали.

icegmefzoobatbncq9kpmxmdcwa.jpeg

zg_sbliudwow2lwng93rhn3cirg.jpeg

Запустив сеть, надо включить телефон и ждать, пока он не увидит сеть. Процесс этот не слишком быстрый, использовавшийся как основной для экспериментов Ericsson T60D перед нахождением сигнала тупил где-то минут десять. Если всё равно не находит — пробуем выбрать сеть вручную.

_r8jneg-ju129e1c68qaovkigrc.jpeg

На том же телефоне обнаружился досадный косяк в виде какого-то пароля, не дававшего позвонить. Проблему я решил просто — набрал на нём 112. Поскольку сети общего пользования давным-давно отключены, можно не опасаться ложных вызовов. Ну, а телефон же, в свою очередь, не запретит позвонить по этому номеру даже при наличии блокировки.

k_9d9vppjobvyxi7vgiezjru1b0.jpeg

Также причина отсутствия сети может крыться в антеннах. В своих опытах я использовал таковые из комплекта от другого SDR, HackRF (эти же антенны я пробовал подключать к рациям в опытах с NMT). Попытки использовать антенны от рации или от другого телефона не увенчались успехом, трубки либо в упор не видели сеть, либо ловили, но звонок не шёл. Кстати, упомянутый Ericsson T60D в этом плане показал себя лучше всех, что даже было для меня удивительным, так как больше всего надежд возлагалось на R300LX.

Звоним


Итак, набираем на клавиатуре телефона какой-то номер и жмякаем вызов. Если аппарат ещё не потерял сеть, то из динамика послышится характерное шипение, а затем и гудок.При этом в окне консоли посыпятся логи. Через пару секунд компьютер возьмёт трубку и из телефона начнёт играть музыка, а затем приятный женский голос скажет «Ваш звонок очень важен для нас. Пожалуйста, оставайтесь на линии.».

Чтобы получить возможность принимать звонки, необходимо использовать звуковую карту, аналогично тому, как это было показано в статье про NMT.

Для звонка на телефон необходимо узнать его номер. Увидеть его можно в логах регистрации или при звонке. Далее необходимо набрать его (если с этого телефона уже осуществлялся звонок, то номер будет вписан автоматически) и жмякнуть на клавиатуре «d».

Про каналы и Test mode


Для правильной работы сети важно выбрать правильные номера каналов. Если они совпадают с теми, что записаны в телефон, то находить сеть он будет практически моментально (MicroTAC, на котором удалось зайти в сервисное меню, делал это за несколько секунд), иначе же ему придётся сканировать весь эфир, что занимает достаточно длительное время.

У меня есть телефон Motorola MicroTAC, на котором ставить данные опыты проще простого. Не нужно кодов, секретных комбинаций кнопочек, каких-то внешних причиндалов, подключаемых к аппарату. Достаточно только соединить средний контакт аккумуляторного разъёма с землёй. Если батарея вашего телефона перепакована, то достаточно всунуть в отверстие комочек фольги (средний контакт батареи через диод соединён с минусом), если же телефон питается от ЛБП, то нужно подкинуть земляной провод к этому контакту. Далее необходимо включить телефон, и он перейдёт в тестовый режим, после этого соединение можно размыкать. Вообще, для опытов с AMPS советую разжиться телефоном именно такой модели (StarTAC, MicroTAC, TeleTAC), ввиду огромного числа функций, могущих помочь при наладке сети.

qmbbtjippajrog0dvzfghi9jxma.jpeg

9exywu_z2xuauzgwh-h0mom_vgg.jpeg

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

Повторяем описанные ранее действия, и вот результат.

fha551nsiecb_33s6a1smeymx54.jpeg

Разумеется, помимо просмотра и настройки каналов в данном режиме можно делать много интересного. Есть такой текстовик как Motorola Bible. Тогдашние гуру фрикинга сотовых телефонов скажут, что всё написанное там — полная чушь. Не буду ручаться за это, но кое-что интересное оттуда таки можно почерпнуть. А именно — номера команд и способы входа в Test mode для целого модельного ряда аналоговых телефонов Motorola. В частности, в этом режиме можно осуществлять настройку передатчика, просмотр серийного номера (ESN), программирование кода абонента (NAM) и многое другое. Описание приведено для двухстрочных моделей, но на моём многие команды тоже завелись.

StarTAC


nhiie_qabzz9dvn_go3smvpox7e.jpeg

Ну, где МicroTAC, там и StarTAC.

9cous5nrxzblpibymq-kjakqczm.jpeg

rif-wc0tbv9wjzmvzvfmi-ef5_u.jpeg

Подаём питание, и девайс оживает.

madopvksnvo_p1zggpzkrlevjxa.jpeg

Теперь надо зайти в Test Mode. На просторах валяется сервис-мануал для StarTAC более старой версии, с сегментным экраном, он-то нам и поможет. Включаем телефон и набираем FCN-00**83786633-STO. Это сочетание цифр, к слову, при наборе на клавиатуре телефона как раз и значит «TESTMODE». Остаётся только запустить сеть с этими каналами, и можно звонить.

srrkuixnzqllfah8dptds8quvt8.jpeg

Как и на прошлом аппарате, в этом режиме можно менять и NAM.

Многосистемные телефоны


Помимо AMPS на этих же частотах работал другой древний стандарт — CDMA-800. Поэтому многие CDMA-трубки умеют работать и в аналоговых сетях.

fnmy-xggtcysireqx9uxgfvjy6s.jpeg

Вот, например, Motorola Talkabout.

-bfl9rfmmtlot5yghpnzoz5ksc8.jpeg

С обратной стороны его очень легко принять за трубку радиотелефона — он работает от трёх никелевых аккумуляторов типоразмера 5/4 AAA. В моём экземпляре они вставлены чисто для фото — на деле они давно сдохли.

qha10avcgcu-anufedcro5gooba.jpeg

Выдержка из его инструкции, где упоминается работа в аналоговых сетях.

74sxi-fosmdjz2kztdllucjpx_k.jpeg

Ещё мне довелось потыкать вот такой аппарат. Пожалуй, из всех телефонов, что показаны тут, это самый крутой. Это Qualcomm GSP-1600, спутниковый телефон системы Globalstar, который может работать сразу в трёх сетях — Globalstar, AMPS и CDMA-800.

adwe0i1zekusgw9dbkqohpbf95c.jpeg

owz-k4jr2xnocxfw7ilcbaeo2em.jpeg

mklkyeqwvwcfw-ilr8ewbfs89f8.jpeg

Складная антенна делает его ещё более суровым. Раскладывается она так специально, чтобы при разговоре смотреть ровно в небо.

dc63fimr2t4tvljg52agtedq7jm.png

Интересен он не только поддерживаемыми стандартами связи, но и внутренностями: работает девайс на процессоре Intel i386EX. Того самого, который ставили в провайдерские модемы, ПЛК, промышленные ПК (те самые платы на PC/104), терминалы, телефонные станции и тому подобные крутые железки. А 386SX, встраиваемой системой на базе которого является EX, повсеместно встречался и в персональных компьютерах.

Вот видео EEVBlog про этот агрегат. Именно из него я позаимствовал тот кадр с EXом.

Немного про безопасность


Как и в случае с NMT, сам стандарт был чисто аналоговый, со всеми присущими ему уязвимостями. Любой желающий при наличии у него приёмника, способного «брать» частоты в районе 850 МГц, мог спокойно на них настроиться и слушать частотные каналы. Некоторые телефоны «из коробки» поддерживали данную возможность. Можно было зайти в сервисный режим, настроиться на желаемый канал и включить приёмник. Вот, к примеру, описание такой функции в Test Mode на трубках Motorola (из всё той же Motorola Bible):

07#  RX Audio Off (Mute Receiver Audio)

08#  RX Audio On (Unmute Receiver Audio) 

	    NOTE:  It seems Motorola finally discovered that people were using 
		   this command to eaves-drop on cellular converstions.  On MOST
		   of the newer phones (95xx and up), this command when used 
		   with 11xxxx# will only work with the following channels:

		   11xxxx#     Tower Freq.  Mobile Freq. Channel
		   
		     #300      Tx  879.00   Rx  834.00    0300  
		     #333      Tx  879.99   Rx  834.99    0333  
		     #385      Tx  881.55   Rx  836.55    0385 
		     #799      Tx  893.97   Rx  848.97    0799  
		     #991      Tx  869.04   Rx  824.04    0800


Можно видеть, что в некоторых прошивках эту возможность прикрыли, но оставались просторы для модернизации или использования более старого девайса. Только представьте: телефон с уже встроенной функцией прослушки. Мечта любого хакера!

Как и с другими подобными системами, проблемой было и клонирование трубок. Для авторизации в сети телефон посылал пару ESN+NAM (серийный номер и специальный код, заполняемый оператором). Поскольку эти коды передавались в открытом виде, их вполне можно было перехватить. После этого пойманные данные декодировались и заливались в модифицированную трубу. В своё время операторы потеряли на этом немало средств. Даже существовали байки про телефоны с модифицированной прошивкой, которые умели автоматически подхватывать пары из эфира, а затем сохранять их в память и использовать в дальнейшем.

В DAMPS (и в совсем поздних телефонах AMPS) же используется совершенно иной метод — AKEY. Суть его в том, что БС посылает телефону случайное число, а тот возвращает его хэш, полученный с использованием ESN, уникального ключа шифрования и ещё ряда параметров. По своему принципу эта система очень похожа на ту, что используется в сетях GSM.

Вот как-то так


В отличие от NMT-450, запуск сети этого стандарта требует немалой подготовки. Да и доступно это всё далеко не каждому ввиду дороговизны всего используемого железа.
Тем не менее, было крайне интересно попробовать запустить такую сеть и увидеть в работе телефоны, которые, как я думал ещё лет десять назад, не зазвонят уже никогда.
Такие дела.

Ссылки


Возможно, захочется почитать и это:
b5pjofdoxth14ro-rjsrn7sbmiy.png

© Habrahabr.ru