Как ввести определенные пользователем значения, такие как IP-адрес или счетчик для захвата пакетов с использованием Python - PullRequest
0 голосов
/ 08 мая 2019

Я пытаюсь построить графический интерфейс с использованием python для сбора пакетов udp.

Мне удалось собрать пакеты с машины, на которой я работаю.

Теперь, когда я строю графический интерфейсдля этого, как я могу дать пользовательские входные данные для выбора количества пакетов, IP-адреса источника и назначения для сбора пакетов с помощью команды sniff?

Или есть другой способ, кроме sniff?

Мне удалось создать графический интерфейс для предоставления пользовательских входов, но я не смог отфильтровать их в команде сниффа.

Я использовал следующий код и смог получить пакеты udp.

def pkt_callback(pkt):
    self.S = pkt.summary()
    logger.info("Information of collected packets: %s",self.S)

    self.P = sniff(count = 10, filter="udp", prn=pkt_callback )
    logger.info("Collected packets are: %s",self.P)

Ожидаемый результат: отображение n количества пакетов, собранных с исходного IP-адреса X и IP-адреса назначения Y
, где n: количество, предоставленное пользователем
X: IP-адрес источника
Y: IP-адрес назначения

Actual Result: Отображение числа C пакетов с машины, на которой я кодирую.

Количество C указано в команде сниффа.

1 Ответ

0 голосов
/ 08 мая 2019

Вам просто нужно расширить свой фильтр, чтобы справиться с этим. Посмотрите на формат BPF: http://biot.com/capstats/bpf.html

Например:

>>> sniff(count=10, filter="dst host 192.168.0.1 or src host 192.168.0.12 and udp")

Или, в более общем смысле:

>>> src = "192.168.0.12"
>>> dst = "192.168.0.1"
>>> c = 10
>>> sniff(count=c, filter="dst host %s and src host %s and udp" % (dst, src))
...