Разбираю, как в домашних условиях поднять мини-аналоговую телефонную сеть, эмулировать поведение старых АТС, поиграться с тоновой сигнализацией и понять, как вообще работал классический фрикинг на уровне электрических сигналов. Много схем, железа, немного боли, эксперименты с 2600 Гц и лабораторные атаки в полностью изолированной среде.

Зачем вообще поднимать аналоговую телефонию в 2026 году
Я давно хотел понять одну вещь: как реально работали старые телефонные уязвимости, о которых все слышали, но мало кто воспроизводил. Мы читаем про 2600 Гц, про blue box, про in-band сигнализацию — но что это значит на уровне проводов, напряжений и тонов?
Если честно, сначала это было просто любопытство. Потом стало инженерным челленджем. А потом я понял, что это отличная лаборатория для изучения архитектурных ошибок прошлого.
Вся идея фрикинга строилась на том, что управляющие сигналы передавались в том же канале, что и голос. Представьте себе систему, где команда на маршрутизацию звонка летит тем же аудиосигналом, что и разговор абонентов. Звучит странно? А ведь это работало десятилетиями.
Мне захотелось собрать полностью автономный стенд:
две аналоговые трубки
мини-АТС
возможность генерировать произвольные тоны
логирование сигнализации
и главное — изоляция от реальной сети
Ни в коем случае нельзя подключать такие эксперименты к живой линии оператора. Это не шутки. Всё должно быть полностью локальным.
И вот тут начинается самое интересное — оказывается, собрать такую сеть дома реально.
Архитектура стенда: железо, напряжения и немного магии
Базовая схема у меня получилась такой:
сервер с Linux
плата с FXS и FXO портами
Asterisk
две старые аналоговые трубки
аудиоинтерфейс для инжекции сигналов
FXS — это порт, который подаёт питание и эмулирует АТС. FXO — это порт, который ведёт себя как телефонный аппарат.
Напряжение в покое на линии — около 48 В постоянки. При снятии трубки ток увеличивается, станция это фиксирует и понимает, что линия занята. Звонок — это уже переменка около 70–90 В, 20–25 Гц. Первый раз, когда я это увидел на осциллографе, стало немного не по себе.
Внутри всё оказалось довольно изящно. Линия — это по сути токовая петля. Состояние определяется током, а не просто наличием сигнала.
Я использовал Digium-совместимую PCIe плату. Но можно и USB-FXS адаптеры. Главное — чтобы они поддерживались DAHDI.
После установки драйверов конфигурация DAHDI выглядела так:
# /etc/dahdi/system.conf fxsks=1 fxsks=2 loadzone=us defaultzone=us
И соответствующий блок в Asterisk:
; /etc/asterisk/chan_dahdi.conf [channels] language=ru context=internal signalling=fxs_ks channel => 1 channel => 2
Дальше — стандартный dialplan, но с одной поправкой: мне нужно было иметь возможность перехватывать аудиопоток и анализировать его на уровне частот.
И вот тут я понял, что без генерации и анализа тонов всё это будет просто музейным экспонатом.
Генерация 2600 Гц и эксперименты с сигнализацией
Исторически 2600 Гц использовался как сигнал освобождения транка в некоторых аналоговых сетях. Если его подать в нужный момент, линия переходила в состояние, когда можно было передавать управляющие команды.
В лаборатории я решил воспроизвести это поведение.
Вот простой генератор тона на Python:
# language: Python import numpy as np import sounddevice as sd fs = 44100 duration = 5 frequency = 2600 t = np.linspace(0, duration, int(fs * duration), False) tone = 0.5 * np.sin(2 * np.pi * frequency * t) sd.play(tone, fs) sd.wait()
Я подключил аудиовыход к FXO через согласующий трансформатор. Без трансформатора лезть туда не советую — можно сжечь порт.
Когда тон подавался в определённой фазе соединения, Asterisk фиксировал изменение состояния канала. Конечно, современная цифровая логика не ведётся на такие трюки, но если в конфигурации вручную включить имитацию старого поведения, можно увидеть, как система реагирует.
А вы когда-нибудь слышали чистый 2600 Гц через старую трубку? Это довольно неприятный звук, кстати.
Лабораторный анализ сигналов: спектр, шум и паразитные эффекты
Один из самых интересных моментов — это анализ сигнала не на слух, а математически.
Я написал небольшой спектральный анализатор:
# language: Python import numpy as np import matplotlib.pyplot as plt from scipy.fft import fft fs = 44100 samples = np.fromfile("capture.raw", dtype=np.int16) yf = fft(samples) xf = np.linspace(0, fs/2, len(yf)//2) plt.plot(xf, np.abs(yf[:len(yf)//2])) plt.title("Spectrum") plt.xlabel("Frequency (Hz)") plt.ylabel("Amplitude") plt.show()
Когда я начал смотреть реальные записи с линии, выяснилось интересное: идеального сигнала нет. Есть шум, гармоники, искажения. Старые сети были далеко не стерильными.
Это важно. Потому что фрикинг работал не в вакууме, а в реальных условиях с наводками, перекрёстными помехами и деградацией оборудования.
Ещё один сюрприз — дрейф частоты. Если генератор нестабилен, сигнал может уйти на десятки герц. Для некоторых схем это критично.
И вот тут начинаешь понимать, насколько тонко всё было настроено.
Эмуляция старой логики маршрутизации
Чтобы приблизиться к историческому поведению, я написал собственный модуль обработки тонов, который реагировал на последовательности частот.
Небольшой фрагмент на C, который анализирует поток аудиосэмплов:
// language: C #include <math.h> #define TARGET_FREQ 2600.0 #define SAMPLE_RATE 8000 int detect_2600(short *buffer, int len) { double real = 0.0, imag = 0.0; for (int i = 0; i < len; i++) { double angle = 2.0 * M_PI * TARGET_FREQ * i / SAMPLE_RATE; real += buffer[i] * cos(angle); imag -= buffer[i] * sin(angle); } double magnitude = sqrt(real*real + imag*imag); return magnitude > 1000000; }
Да, это грубая реализация по мотивам Goertzel, но для лаборатории хватает.
Когда модуль фиксировал устойчивое присутствие частоты, он переводил линию в альтернативное состояние маршрутизации.
Это не повторяет старые АТС на 100%, но даёт понимание принципа: управляющий сигнал интерпретируется как команда.
И тут начинаешь задаваться вопросом: сколько современных систем повторяют ту же ошибку — смешивая управляющий и пользовательский трафик?
Что в итоге даёт такой стенд
Во-первых, понимание физического уровня. Мы часто работаем на уровне API и протоколов, забывая, что всё начинается с электричества.
Во-вторых, уважение к эволюции безопасности. SS7, SIP, SIGTRAN — все они появились не просто так.
В-третьих, это просто очень крутой способ провести выходные.
Сидишь ночью, перед тобой осциллограф, старая трубка щёлкает импульсным набором, сервер жужжит, а ты ловишь гармоники 2600 Гц и думаешь — вот так и рождалась ранняя телеком-безопасность.
Если вам интересно ковыряться в железе, анализировать сигналы и понимать архитектурные ошибки прошлого — попробуйте собрать такой стенд. Это не про взлом, это про исследование.
И честно — после этого начинаешь совсем иначе смотреть на современные системы связи.
Комментарии (10)

KbRadar
26.02.2026 05:08Опыт прикольный, но крайне трудно будет смоделировать те недокументированные особенности что использовались для прикладного фрика, особенно на территории бСССР.

aol985
26.02.2026 05:08хороший способ провести выходные, да. но откуда же возьмутся кишочки старых телефонных сетей со своей логикой обработки в изолированной лабораторной среде? а если их нет -- нафига это все? )

ivanstor
26.02.2026 05:08Вы несколько раз написали про "архитектурные ошибки прошлого". Какие-такие ошибки? конкретно разберите, это было бы интересно. На забывая про реальные возможности инженеров прошлого. Например отсутствие электроники, в современном понимании. Не говоря о микропроцессорах.

hard2018
26.02.2026 05:08Попытки выйти за рамки компьютерной техники здесь часто выглядят смешно. Это порок поколения, которое многое видит впервые. Ну или совсем отсталой публики. Описание современной техники сложно раскритиковать лишь потому, что для старшего поколения, которое ещё работало с аналоговым оборудованием, это незнакомо.
Да и компьютерная техника - в нулевых она началась только для местной аудтории, и это только на территории бСССР, мир её знает с 70х-60х. Не нужно учить мир. Хотите рассмешить мир - научите его. Упрекнув мир в том, что чего то не было.

sim2q
26.02.2026 05:08И тут начинаешь задаваться вопросом: сколько современных систем повторяют ту же ошибку — смешивая управляющий и пользовательский трафик?
Разве что АОН..., да и то он всё равно задействовал 4-проводную схему.

checkpoint
26.02.2026 05:08Следующим шагом автор вспомнит про R1,5 и R2 сигнализацию. Только вот Астериск вряд ли поможет с этим.
andquad
душевно. спасибо.
Shephard
если честно, после слов "аналоговая АТС" я ожидал декадно-шаговую со всеми её механическими алгоритмами. А когда увидел первое упоминание Астериска, то уже и читать дальше продолжил по диагонали. Увы, описывается работа не совсем аналоговой АТС.
Но все равно интересно.