Как я могу остановить снифф (count = 0) в питоне - PullRequest
0 голосов
/ 25 марта 2019

Прежде всего, извинения за мой плохой английский. Я собираю пакеты среди искрового кластера. Когда задание запускается, оно запускает программу python на ведомых устройствах, которая использует sniff(count=0) для получения пакетов, а затем использует функцию wrpcap("/home/demo.pcap",dpkt), чтобы обернуть их в файл pcap для дальнейшего использования. Но в этом случае анализатор будет работать бесконечно , Я не знаю, как заставить его остановиться и перейти к следующей строке.

Мой план состоял в том, чтобы использовать python dpkt_writer.py 0 & для запуска в фоновом режиме, а затем сделать что-нибудь, чтобы остановить его и получить demo.pcap. Но сначала, когда счет равен 0, sniff(count=0) не остановится, если вы не используете CTRL+C вручную, и я не знаю, как это сделать, когда он запускается сзади. Все, что я могу сделать, это переписать программу, чтобы обернуть pcap каждые 20 пакетов ,, но я запутаюсь из-за количества файлов.

# original
import sys
import os
from scapy.sendrecv import sniff
from scapy.utils import wrpcap


cs = int(sys.argv[1])
dpkt = sniff(count = cs)
wrpcap("/home/demo.pcap", dpkt)
# modified
import sys
import os
from scapy.sendrecv import sniff
from scapy.utils import wrpcap

i=1
while(True):
    print("starting "+bytes(i))
    dpkt = sniff(count = 10)
    print("ending "+bytes(i))
    wrpcap("/home/demo"+bytes(i)+".pcap",dpkt)
    i=i+1

Как мне это сделать?

...