Моя работа связана с телефонией. Однажды на известной торговой площадке я наткнулся на объявление о продаже бесплатно! телефонного аппарата Cisco SPA504g (на самом деле — aka Linksys/Sipura). Цена была обусловлена одной «досадной» мелочью — аппарат был «запаролен» оператором, который предоставляет услуги телефонии, отдавались они на запчасти. Аппаратов было много, прямо несколько десятков, для обучения даже такие бы пригодились. Поскольку таких аппаратов мне встречалось не мало, опыт сброса/разблокировки и даже «раскирпичивания» был, я с радостью согласился. Даже, на худой конец, на запчасти. Бородач, который выкатил тележку с горой аппаратов, без сожаления отдал её со словами типа «не охота паять». Но я то считал себя спецом, да и почти не расслышал его! Что с этого вышло — ниже.

Cisco SPA504G
Cisco SPA504G
Linksys SPA942
Linksys SPA942

Аппарат, как уже отмечалось, имеет корни от Linksys (весьма важное замечание, о котором не все догадываются), которые ранее были вообще Sipura. На заре своего погружения в VOIP я их даже путал. Не правда ли, весьма похожи? Однако аппараты не содержат ни одной общей детали, даже кнопки, даже трубки, ну разве что кабель от неё до самого аппарата.

Сами по себе аппараты слывут ��адежными, как автомат Калашникова, но сложными в настройке с кучей непонятных параметров. Документация по ним не слишком‑то глубока. А для сервисных центров в открытом доступе так вообще отсутствует. У Linksys‑ов неоднократно сталкивался с неработающими кнопками (аппараты все же древние, сейчас выкидывают по дешевке на торговых площадках в основном что‑то годов 2008-2012). С обратной стороны кнопок стирается токопроводящее графитовое напыление. Лучшее что можно — заменять их (резиновые кнопки), хоть на что‑то похожее.

Cisco SPA504G несколько поновее, встречаются в основном моложе 2012 годов (о них гласит характерная наклейка на задней крышке аппарата). И почему‑то очень часто встречались аппараты с лейблом на задней крышке: желтый полумесяц и синий мячик.

Agência Nacional de Telecomunicações
Agência Nacional de Telecomunicações

Родственные модели с разными буквами на конце — SPA501, SPA502, SPA512, SPA303 (без POE!!), SPA508, SPA509, SPA514, и даже весьма похожие на них SPA525 (хотя честно говоря прошивка на них несколько отличается). А SPA303 — так вообще выглядит копией SPA942, ну разве что с тремя кнопками.

Первым делом включаем аппарат, подаем ему 5В (желательно не менее 2А блок питания) в разъем на задней панели, либо Ethernet c POE в сетевую розетку SW. Телефон задумчиво молчит несколько секунд (без паники! он тестируется), потом светит диодами на прозрачных клавишах — зеленым на «громкая связь», «гарнитура» и красным на «микрофон». Потом загораются четыре оранжевых диода линий с подсветкой экрана, потом четыре диода гаснут, потом уже загораются все светодиоды (в том числе красный сверху над экраном). Потом должна вылезать заставка CISCO (ну или то, на что эту заставку поменяли при конфигурировании). В моем случае вылез гордый логотип оператора. Назовем его (не для рекламы)…. пусть «СОТЫ». Потом телефон начинает искать локальную сеть, и если кабель не вставлен в SW, зажигает красный светодиод на кнопке «микрофон» (как ни странно) — и высвечивает Initializing Network. Если в настройках стоял режим DHCP, то даже подсунув ему Ethernet, он будет инициализировать сеть. Только получив IP адрес (или восстановив его из backup) телефон наконец‑таки загрузится — сверху черная полоса и экран. В моем случае там высвечивалась заставка оператора, и практически ни одной программной клавиши в нижнем ряду.

Нажимаем кнопку с загнутым конвертиком (вторая сверху) и выбираем FactoryReset.
Телефон просит пароль. Понятное дело. Не отчаиваемся. Выбираем SetPassword, устанавливаем свой пароль для пользователя. Сохраняем, перезагружаемся. Вообще одна из отрицательных черт этого класса аппаратов — медлительность на фоне современных. Перезагрузка составляет порядка 50 секунд. Потом заходим в меню Network — там он даст установить свои параметры сети, маску, шлюз и VLAN (при работе с компьютером Windows не нужно, ну то есть ��тключено). Только устанавливать надо в неочевидные поля — они внизу меню типа Non‑DHCP IP address и подобные Non‑DHCP…

Подключаем компьютер, присваиваем ему адрес рядом с телефоном, открываем браузер и вбиваем IP телефона. Внимание! Аппарат не поддерживает https, и поэтому ручками в адресной строке правим на http. Открывается его web‑интерфейс. Весьма не богатый (пока). Для полного доступа ко всем настройкам надо выбрать в такой последовательности — Admin Login, потом advanced. Однако уже на этапе Admin Login всплывает окно авторизации. Логин admin, а пароль можно пытаться подобрать.

Я пробывал даже с ИИ написать скрипт для брут‑форса, однако это мало того, что небыстро, а еще и через несколько частых запросов телефон перестает на некоторое время отзываться, и дело вообще становиться невыносимо долгим.

Web-интерфейс аппарата
Web-интерфейс аппарата

Не отчаиваясь (да ты не бойся, я тыщу раз так делал!), подключаем WireShark и смотрим, куда этот телефон пытается отправлять запросы на провижинг.

Например так:

Чаще всего это происходит (по умолчанию) по протоколу TFTP, ну иногда по HTTP или FTP.

В примере выше бедолага пытается запросить у сервера 192.168.1.1 файлы конфигурации для своего mac-адреса SEP00E0A66641F9.cnf.xml, либо обобщенный для модели XMLDefault504G.cnf.xml, или на худой конец обобщенный XMLDefault.cnf.xml
По этой теме (как составлять файл провижинга) есть множество статей, в том числе на Хабре.

Минимальное его содержимое -

<?xml version="1.0" encoding="ISO-8859-1"?>
<flat-profile>
    <Admin_Passwd ua="na"></Admin_Passwd>
</flat-profile>

Выше указан параметр – пустой пароль администратора. Поднимаем TFTP сервер, типа tftp32 под Windows, ну или под Linux – мне нравится tftp-hpa.
В обычном случае работает обновление конфигурации даже по запросу из браузера

http://<Phone_IP_Address>/admin/resync?tftp://<Server_IP_Address>/<имя конфигурационного файла>

Но тут стоит пароль администратора.

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

Но статья не была бы такой длинной, если бы новая гора аппаратов вообще никак не провижинилась. Никуда. Только на сайт к провайдеру за регистрацией и ничего более.

Что ж, пробуем другие методы, в том числе социальной инженерии.

Подключение КГБ-ЦРУ, терморектальных криптоанализаторов, ремонтных мастерских и даже ранее официальных академии/курсов Cisco ни к чему не привели. Ремонтники либо откровенно разводили, либо пытались уговорить на замену платы. Академия же ответила осторожно – мол можно попробовать сбросить комбинацией клавиш при включении. Еще раз обращаю внимание, что аппараты Cisco серии SPA это совсем не Cisco, разве что сами телефонные трубки их роднят например с CP-7942G. И комбинации типа решетка, зажатая при включении, а затем 123456789*0# ну совсем не подходящие.

Из истории в веб-интерфейсе и в меню можно было посмотреть куда они звонили, ну и кто им звонил. Куча звонков на иностранные номера, на 8-800.. (обращаю внимание, именно так! И ни как иначе, номера +7-800…не имеют смысла, поскольку за входящий из-за границы вызов на бесплатный в РФ номер невозможно взимать плату на плече ДО границы). И из снифера можно увидеть с какими логинами на какой сервер они регистрировались.
Попробовал обратится к оператору…Тут можно написать целую сагу о техподдержке, но ограничусь малым. Обращался на горячую линию для корпоративных клиентов. Сейчас естественно, на номере поддержки сначала включаются роботы, речевые. Которые сходу требуют номер договора для корпоративного клиента. Однако добившись общения (стучался по всем линиям – в чате, на почту, по телефону) с человеком, разница не существенная. Я даже ездил в офис корпоративных клиентов. Для формирования обращения (даже не от клиента) им нужен номер договора! (пусть старого). Их практически запрограммировали, если не зазомбировали на этот критерий. Полмесяца общения привели к тому, что меня-таки услышали почти из верхов компании. Призывы о гуманитарной помощи, объяснения о том, что компания-держатель аппаратов покинула РФ, их mac-адреса, учетные записи для регистрации, история звонков с тех самых аппаратов, обернулись ответом:

«Уважаемый………, обговорив Ваш запрос с вышестоящим руководством, была создана заявка № ХХХХХХХХ, а также уведомила ответственных по части Корпоративная благотворительность.»

Неделя тишины… и ответ (надо честно сказать, что не отписка), в духе что это было очень, очень давно (как потом по истории звонков поглубже капнув, высмотрел год так 2015-2016), что все, кто мог быть причастными, скорее всего уволились.

Что ж, мы не привыкли отступать. Вспомнились обрывки статей о том, что у аппаратов есть что-то типа jtag или tty. Да…похоже бородач чего-то знал, что я не знал.

Разобрать аппарат собственно подтолкнула статья. Хотя она и о шлюзе, но делать-то больше было нечего.

Как выяснилось позднее, обрывки материалов про SPA504G тоже есть по этой теме в сети. Но скорее это мольбы о помощи в перепрошивке/раскирпичивании аппаратов на форумах, причем без ответов. Хотя выложенные там логи тоже интересны.

Откручиваем шесть винтов под torx th10 на задней панели.
Непосредственно основу телефона составляют три микросхемы.

Микросхемы телефонного аппарата Cisco SPA504G (502G)
Микросхемы телефонного аппарата Cisco SPA504G (502G)

Большая квадратная – центральный процессор. Оперативная память – на фото под ним, поменьше и с ногами вдоль длинной стороны Winbond, и самая интересующая в данный момент – флеш-память на 64МБ  MX29LV640ETTI-70G с ногами вдоль коротких торцов. Встречается еще на Али.

Еще в телефоне применен дисплей 128х64 с подсветкой, но он относится к исчезающим видам динозавров в Интернете, и при выходе из строя (а бывало) сейчас уже легче купить донора.

Нам понадобится USB адаптер, брал самый дешевый на торговой площадке.

USB-TTL преобразователь
USB-TTL преобразователь

На ноутбуке хотя и есть железный Com, но на нем рабочие напряжения существенно выше, нежели для TTL логики.

Я приведу пример на Win7 ноутбуке с Putty, но можно (и у меня получалось) и на других системах, в том числе Linux. Настраиваем COM порт. Вставляем USB преобразователь в порт и ставим драйвер. Для Linux он как правило не нужен – такую древность, как адаптер виртуального порта, ядро поддерживает очень давно.

Потом на примере ОС Windows проверить, какой номер порта появился после подключения USB-TTY (виртуальный com-порт).

Правой клавишей Компьютер-Управление, и далее найти com-порт в диспетчере. В моем случае это 24.

Затем запускаем Putty, выбрать

Connection-Serial

COM24 - Скорость 9600 8-1-None-None

Выбрать Session Serial - Serial line - COM24, Speed - 9600
Чтобы сто раз потом не выбирать можно сохранить сессию, назвав её каким-нибудь удобным именем, а потом сразу выбирать из списка.

Перед тем, как припаивать, можно замкнуть передачу и прием (3 и 6 контакты обычной витой пары на преобразователе типа Cisco: зеленый и бело-зеленый). Нажимаем буквы в консоли – и в ней побегут эти же буквы. Если не бегут буквы – проблема! Смотреть внимательнее драйвер, номер и скорости порта, правильно ли нашли прием/передачу и запуск программы - произведен ли он от имени админа.

Вот так припаиваем:

Сверху вниз

GND

Пусто

Rx phone

Tx phone

Припаиваемся: передача нашего TTY кабеля на приём телефона и наоборот.

Кстати на фото желтый элемент похожий на конденсатор – самовосстанавливающийся предохранитель. Но горит по питанию если память не изменяет как правило не он, а элемент выше, это скорее варистор.

Подаем питание на телефон (5V 5,5x2,5 мм или POE в порт SW). Некоторые по подобию разъема подают питание любым блоком 5,5x2,5мм либо 9В либо 12В и получают сгоревший аппарат.
После включения питания в консоли побегут буковки, нажать ESC

Basic POST completed...     Success.
Last reset cause: Software reset (memory controller also reset)

PSPBoot1.4 rev: 1.4.0.6
(c) Copyright 2002-2008 Texas Instruments, Inc. All Rights Reserved.

Press ESC for monitor... 1  
(psbl) 

пригласительная строка станет (psbl). В это время дисплей телефона пустой, на нем горят только красный и два зеленых светодиода.

Можно посмотреть доступные команды командой

help

если дали неправильную команду, можно стереть символы Shift+Backspace, но бывает что ошиблись, и нужно отключать питание телефона.

Справка в режиме минимальной загрузки
Справка в режиме минимальной загрузки

Пример команды для просмотра флеш-памяти

fa

Покажет из каких разделов состоит флешка.

PSBL – загрузчик

ENV – хранит переменные для загрузчика

RECOVERY – раздел с образом восстановления прошивки

KOS – заводские постоянные, в том числе MAC, серийный номер, версия аппаратного обеспечения, сертификат безопасности пользователя

FFS – развернутая из образа файловая система

(psbl) fa 
Current Flash Allocation:

section :   PSBL, base : 0xb0000000, size :     122176 bytes
section :    ENV, base : 0xb0020000, size :      65536 bytes
section : RECOVERY, base : 0xb0030000, size :     131072 bytes
section :    KOS, base : 0xb0050000, size :    1048576 bytes
section :    FFS, base : 0xb0360080, size :    4789616 bytes

unallocated Space Start: 0xb0150000
unallocated Space End  : 0xb0800000
(psbl) ls 
FlashDiskDump for /
     drwxrwxrwx 0:0 a:  0 i:0 Jul 27, 1999  2:17:40am       2 bin
     drwxrwxrwx 0:0 a:  0 i:0 Jul 27, 1999  2:17:40am       2 etc
     drwxrwxrwx 0:0 a:  0 i:0 Jul 27, 1999  2:17:40am       2 ttys
      rwxrwxrwx 0:0 a: -1 i:1 Jan  1, 1970 12:00:00am 1473768 kosmos_ipp.st.gz
      rwxrwxrwx 0:0 a: -1 i:1 Jan  1, 1970 12:00:00am  969342 sipapp.o.z
      rwxrwxrwx 0:0 a: -1 i:1 Jan  1, 1970 12:00:00am  718468 spcpapp.o.z
      rwxrwxrwx 0:0 a: -1 i:1 Jan  1, 1970 12:00:00am    6629 update
      rwxrwxrwx 0:0 a: -1 i:2 Jan  1, 1970 12:00:00am    1248 ca_crt.der
      rwxrwxrwx 0:0 a: -1 i:2 Jan  1, 1970 12:00:00am   12994 ca_crt.pem
      rwxrwxrwx 0:0 a: -1 i:2 Jan  1, 1970 12:00:00am  425079 constdat.gz
      rwxrwxrwx 0:0 a: -1 i:2 Jan  1, 1970 12:00:00am    8000 Double-Low-Twelve-Times.raw
      rwxrwxrwx 0:0 a: -1 i:2 Jan  1, 1970 12:00:00am    8880 Eleven-Regular-Sharp-Very-Loud-Factory-Floor.raw
      rwxrwxrwx 0:0 a: -1 i:2 Jan  1, 1970 12:00:00am   15520 Musical-Four-Reverb.raw
      rwxrwxrwx 0:0 a: -1 i:2 Jan  1, 1970 12:00:00am   90776 nmm.conf
      rwxrwxrwx 0:0 a: -1 i:2 Jan  1, 1970 12:00:00am  529377 pt1.ld
      rwxrwxrwx 0:0 a: -1 i:2 Jan  1, 1970 12:00:00am    7200 Pulse1.raw
      rwxrwxrwx 0:0 a: -1 i:2 Jan  1, 1970 12:00:00am    4000 Ring7.raw
      rwxrwxrwx 0:0 a: -1 i:2 Jan  1, 1970 12:00:00am  349184 spa500ds_image.dat
      rwxrwxrwx 0:0 a: -1 i:2 Jan  1, 1970 12:00:00am    3668 spa500ds_iso8859all10mono.dat
      rwxrwxrwx 0:0 a: -1 i:2 Jan  1, 1970 12:00:00am    3668 spa500ds_iso8859all12bmono.dat
      rwxrwxrwx 0:0 a: -1 i:2 Jan  1, 1970 12:00:00am    1241 spa_crt.der
      rwxrwxrwx 0:0 a: -1 i:2 Jan  1, 1970 12:00:00am     608 spa_key.der
      rwxrwxrwx 0:0 a: -1 i:2 Jan  1, 1970 12:00:00am    8160 Ten-Medium-Warble.raw

Можно посмотреть файловую систему на FFS разделе как показано выше - команда
ls

Собственно список переменных (некоторые я уже самостоятельно добавил)

(psbl) printenv 
BUILD_OPS    	0x977
MODETTY0     	9600,n,8,1,hw
PATH         	/bin:/ttyS
CPUFREQ      	162500000
MIPSFREQ     	87500000
SYSFREQ      	87500000
PROMPT       	(psbl)
bootloaderVersion	1.4.0.6
HWA_0        	580A2087BC96
SUBNET_MASK  	255.255.0.0
IPA          	192.168.1.2
IPA_SVR      	192.168.1.1
SerialNumber 	CCQ18270C1S
HWRevision   	1.0.4
HWRevison    	1.0.4
IPA_GATEWAY  	192.168.1.1
HOSTNAME     	TNETV1050SDB

Можно самому с помощью команды setenv задать параметры

HWA_0  - mac-адрес

SUBNET_MASK           маска подсети

IPA             свой адрес

IPA_SVR              адрес сервера tftp

IPA_GATEWAY   адрес шлюза по умолчанию

Прошить аппарат из этого режима можно командой

(psbl) upgrade

Usage: upgrade [-i server_address] firmware_file

 

Прошивку можно взять на сайте Cisco. Но форум для нас пару лет как заблокирован, пользуйтесь обходными путями. Если прошивка была старше 7-5-2, то сначала надо шиться на 7-5-2b, затем на более свежие, хоть на 7-6-2g.

Но даже прошившись, вы не скинете конфигурацию.....

Для начала я отформатировал раздел FFS.

Тут все легко
fmt

И побежало форматирование, где-то одну минуту. Раздел FFS заполнится единичками.
Потом можно дать команду reboot или дернуть питание.

Телефон вывалится во второй режим - SOS Recovery Mode, который отобразится на экране.

Он чуть-чуть пошире, нежели (psbl), но из него  тоже можно прошиться. Внимательно смотрите на логи – если телефон в StaticIP, то он покажет свой адрес, маску, и путь к серверу и файлу, из которого он хочет прошиться. Или придется подкидывать DHCP.

Тут я не рассматриваю утилиту восстановления, например spa5x5-7-4-4-recovery.exe или подобные. Хотя именно эта для SPA525, однако она (если я не путаю и помнится верно) помогала и для SPA303. При старте будет выбор – прошивать или восстанавливать прошивку? Выбираем восстановление. Вместо серийника можно написать кучу FFFF, телефон прошьется, и после перезагрузки восстановится.

Из этого же файла (или подобных exe) можно выдернуть и саму прошивку – распаковываем архиватором 7z, внутри самый большой файл 112. Вытаскиваем из архива и переименовываем.

Попробовал следующую команду

fmtkosmos

После нажимаем ENTER

ждем 10-15 секунд, когда снова появится пригласительная строка, перезагружаем по питанию или командой reboot.

Телефон раза два перезагрузится, и скинет конфигурацию в дефолт.
На дисплее появится CISCO и ожидание настройки сети. Если сеть подключена и выдан DHCP – то отобразиться меню на дисплее.

Вскоре выяснился побочный эффект, не сразу запримеченный на волне радости – все аппараты сбросили серийный номер (да и не жалко), а вот mac-адрес стал у всех одинаковый. Раздел KOS сейчас содержит единички. Причем в режиме (psbl) это один mac-адрес, такой же во втором режиме (SOS RecoveryMode) и другой адрес в полностью загруженном аппарате.

Кроме того я в ходе экспериментов также удалял и раздел Recovery, в результате аппарат работал, его можно было прошить и восстановить раздел.

Таким образом аппараты сброшены в настройки «по умолчанию», пароли администратора тоже сброшены. Для установки в одном сегменте локальной сети такие аппараты не подходят теперь, но в разные сети с маршрутизацией или в разные vlan-ы вполне. Откуда он берет настройки адреса mac так осталось и непонятным. Скорее всего из прошивки. Тут есть материал про прошивку аппарата, как из модулей склеить файл и много интересного

Буду рад подсказкам, как можно вернуть аппаратам разные mac.

Комментарии (2)


  1. sekuzmin
    07.11.2025 12:59

    Во-первых аплодисменты за настойчивость и смелость, после таких экспериментов устройство обычно превращается в кирпич. За что уважение инженерам, которые находят место для two stage bootloader и recovery.

    Буду рад подсказкам, как можно вернуть аппаратам разные mac.

    Если проскроллить текст выше, написано, что

    Можно самому с помощью команды setenv задать параметры

    HWA_0  - mac-адрес

    В прошивке есть упоминания нескольких MAC: HWA_0, HWA_1 и HWA_SWITCH


    1. dimone73 Автор
      07.11.2025 12:59

      Эти параметры работают только в режиме (psbl) и то, не все