Данная статья расскажет о том, как получить дамп сетевого трафика, то есть сделать перехват и прослушивание разговора Asterisk, если использовался кодек g722 или g729. Например, для анализа наличия сетевых проблем на канале передачи данных.
1. Перехват tcpdump
Для начала записываем дамп сетевого трафика. Допустим между двуми IP телефонами:
[root@localhost ~]# tcpdump host 192.168.192.41 or host 192.168.192.51 -s 1500 -w /tmp/g722.pcap
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 1500 bytes
Делаем вызов и дожидаемся его завершения. Жмем Ctrl+C:
1245 packets captured
1245 packets received by filter
запись завершена.
2. Открытие в Wireshark и выгрузка голосовых RTP потоков
Копируем файл /tmp/g722.pcap на наш ПК с помощью какой-либо утилиты (WinSCP или др.)
Открывает дамп через File -> Open или по двойному клику.
Переходим в анализ телефонного трафика: Telephony -> VoIP calls и видим такую картинку:
Если поставим галочки около слова «From» и нажмем «Воспроизвести», то сразу услышим разговор. Если же попробуем аналогичные действия с другим телефоном, то увидим примерно такую шкалу голосового трафика:
Wireshark не распознает g722 «из коробки».
Чтобы прослушать данные разговор нам необходимо выгрузить RTP потоки.
Переходим Telephony -> RTP -> Show all streams
Видим потоки RTP g722. Выделяем оба потока и жмем Analyze
Далее жмем Save payload… и сохраняем отдельно входящий и исходящий потоки. В два разных файла: g722_1.g722 (forward) и g722_2.g722 (reversed)
3. Конвертация в WAV и прослушивание
Итак, у нас есть разговор в формате g722, однако, далеко не все плееры и программы конвертации умеют с ним работать. Для этого можно найти конвертер или специальный редактор. Даже в Audacity нужно прикручивать дополнительно. Если под рукой ничего нет, то можно воспользоваться Астериск.
Закидываем полученные файлы назад на сервер с Астериск в папку /tmp/.
Примечание: расширение файла имеет значение. Оно говорит какой декодер использовать.
Заходим в консоль Астериска и выполняем команды для каждого файла:
localhost*CLI> file convert /tmp/g722_1.g722 /tmp/g722_1.wav
Converted /tmp/g722_1.g722 to /tmp/g722_1.wav in 4ms
localhost*CLI> file convert /tmp/g722_2.g722 /tmp/g722_2.wav
Converted /tmp/g722_2.g722 to /tmp/g722_2.wav in 4ms
Получаем 2 файла в wav, которые с легкостью можно уже открыть в Audacity и прослушать:
Работа с кодеком g729 абсолютна аналогична работе с g722. Только сохраняем потоки с расширением g729.