Исходящий UDP сниффер в питоне? - PullRequest
2 голосов
/ 12 июня 2010

Я хочу выяснить, вызывает ли мой компьютер какой-либо UDP-поток , исходящий из моей сети. Так что это моя основная проблема, а далее - просто попытка не-сетевого человека выдвинуть гипотезу решения с использованием python. Я экстраполирую из рецепта 13.1 («Передача сообщений с помощью дейтаграмм сокетов») из поваренной книги python (также здесь ).

Возможно ли / разумно / не безумно попытаться как-то написать исходящий UDP-прокси на python, чтобы исходящие пакеты могли быть зарегистрированы до отправки на их веселом пути? Если так, как бы это было? Основываясь на моих быстрых исследованиях, возможно, я мог бы запустить процесс сервера, прослушивающий подозрительные порты UDP, и регистрировать все, что отправлено, а затем переслать его, например:

import socket
s =socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind(("", MYPORT))
while True:
    packet = dict(zip('data', 'addr'), s.recvfrom(1,024))
    log.info("Recieved {data} from {addr}.".format(**packet))

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

1 Ответ

5 голосов
/ 12 июня 2010

Может быть проще просто установить Wireshark , вместо того, чтобы самому кататься в Python.

...