Невозможно декодировать пакеты COAP в WireShark после успешного дешифрования DTLS
Я пытаюсь отладить проблему с протоколом LWM2M. Мне нужно знать, какие сообщения передаются между сервером COAP и клиентом COAP. Поскольку трафик шифруется с использованием DTLS, мне нужно предоставить общий ключ в wirehark, чтобы увидеть полезную нагрузку. Wireshark успешно расшифровывает полезные данные, но я не могу видеть сообщения протокола COAP. Я вижу только необработанные данные («Данные приложения»):
Но когда я пытаюсь обнюхать незашифрованный трафик COAP на фиктивной установке, я мог правильно видеть сообщения COAP:
Как я могу просмотреть трафик протокола COAP с помощью WireShark, когда он зашифрован?
1 ответ
Проблема в том, что вы используете нестандартный номер порта для COAPS вместо зарегистрированного IANA порта 5684, а диссектор Wireshark COAP <tcode id="370731"></tcode> функция регистрируется в диссекторе DTLS только с этим фиксированным, не настраиваемым портом ( <tcode id="370732"></tcode>). Есть несколько возможных способов исправить это и / или обойти это.
Если возможно, измените свое приложение на использование стандартного порта 5684.
Измените диссектор Wireshark COAP, чтобы он также регистрировался в диссекторе DTLS с желаемым портом, или, что еще лучше, чтобы позволить настраивать порт, возможно, даже с предпочтением диапазона портов, чтобы разрешить регистрацию нескольких портов. Вы можете обратиться к Руководству разработчика Wireshark для получения информации о компиляции и разработке для Wireshark на вашей конкретной платформе.
Отправьте сообщение об ошибке Wireshark с запросом на усовершенствование анализатора COAP, чтобы можно было настраивать зарегистрированный DTLS порт. Опять же, предпочтение диапазона, вероятно, было бы даже лучше, так как это позволило бы зарегистрировать более одного порта.
Предполагая, что первый вариант невозможен, а другие варианты потребуют больше времени и не решат непосредственную проблему разделения полезной нагрузки как COAP для вашего существующего файла захвата, вы можете использовать такую программу, как TraceWrangler (или другие подобные редакторы файлов захвата и / или инструменты анонимайзера ), чтобы переписать значение порта UDP с 57845 на 5684 для всех пакетов. Это должно позволить передать полезную нагрузку диссектору COAP без каких-либо других изменений. Если вы все же используете TraceWrangler , основные шаги будут следующими:
- Добавить файлы: выберите свой файл, т. Е.
file.pcapng
. - Название задачи: анонимизировать файлы.
- Полезная нагрузка: снимите флажок «Удалить все неизвестные слои ...», так как вы хотите сохранить все.
- PCAPng: Action = Passthrough, так как здесь нет необходимости заменять исходные комментарии.
- Уровень 4, UDP: Действие = Заменить. Выберите «Заменить порты UDP списком» , затем нажмите « Добавить» . Введите 57845 для оригинала номера порта и 5684 для замены номера порта, а затем нажмите кнопку Добавить .
- Выберите ОК .
- Выберите Выполнить .
- Когда в статусе указано «Задача завершена» , вы сможете открыть вновь созданный файл перехвата пакетов с именем
file_anon.pcapng
, в Wireshark и Wireshark теперь должны распознавать полезную нагрузку как COAP.
- Добавить файлы: выберите свой файл, т. Е.
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я сам не тестировал это, но он должен работать.