ben basitleştirilmiş bir örnekle sorunumu göstermek çalışacağım birden konuları kullanırken paketleri dinleyen başarısız olur.Scapy
from scapy.all import *
m_iface = "wlan0"
m_dst = "192.168.0.1"
def print_summary(pkt):
print pkt.summary()
def plain_sniff():
sniff(iface = m_iface, count = 10, filter = "icmp and src {0}".format(m_dst), prn = print_summary)
Bu algılayıcı gayet güzel çalışıyor ve ben çıktı alın::
ardından çok basit (tek dişli) paket dinleyicisi (ICMP) 'dir
WARNING: No route found for IPv6 destination :: (no default route?)
Ether/IP/ICMP 192.168.0.1 > 192.168.0.9 echo-reply 0/Raw
Ether/IP/ICMP 192.168.0.1 > 192.168.0.9 echo-reply 0/Raw
Ether/IP/ICMP 192.168.0.1 > 192.168.0.9 echo-reply 0/Raw
...
Sonra, ben ayrı oluşturmak paket koklamak için iş parçacığı ve algılanan paketler arasında algılayıcı iş parçacığı ve ana iş parçacığı arasında iletişim kurmak için bir Kuyruk kullanın:
Bu algılayıcı da gayet iyi çalışıyor ve yukarıdaki gibi aynı çıktıyı olsun. Sonra
def threaded_sniff_with_send():
q = Queue()
sniffer = Thread(target = threaded_sniff_target, args = (q,))
sniffer.daemon = True
sniffer.start()
while (not m_finished):
send(IP(dst = m_dst)/ICMP()) # Here
try:
pkt = q.get(timeout = 1)
print_summary(pkt)
except Empty:
pass
ben tuhaf çıkış aşağıdaki (filtre görünmüyor olsun: aşağıdaki gibi paket sıradan okur arasındaki o send()
işlevini kullanır, böylece Ancak, ne zaman ana konuyu birazcık değiştirmek iş):
WARNING: No route found for IPv6 destination :: (no default route?)
Sent 1 packets.
Ether/ARP who has 192.168.0.1 says 192.168.0.9
Sent 1 packets.
Ether/ARP is at a0:21:b7:1a:7a:db says 192.168.0.1
Sent 1 packets.
Ether/IP/ICMP 192.168.0.9 > 192.168.0.1 echo-request 0
Sent 1 packets.
Ether/IP/ICMP 192.168.0.1 > 192.168.0.9 echo-reply 0
...
üç koklayıcıları için komut dosyası here indirilebilir.
Benim şu anki sistem yapılandırması aşağıdaki gibidir:
Python: 2.7.3
Scapy: 2.2.0
OS: Fedora 18
İlginçtir, her üç koklayıcıların benim eski bilgisayarda iyi çalışır:
Python: 2.6.4
Scapy: 2.0.0.10 (beta)
OS: Fedora 13
Öncelikle ben Scapy/Python versiyonları olabileceğini düşündüm . Ama aynı sürümleri yeni bilgisayarıma yüklediğimde bile, davranış devam ediyordu.
Bu SO için uygun bir soru (Scapy bir hata raporu olabilir?) Ise tamamen emin değilim. Lütfen bana bu durumda özür dilerim.
Bilinen bir hataya benziyor: http://trac.secdev.org/scapy/ticket/747 –
@ChathurangaChandrasekara: Karşılaştığım konu çok iş parçacığı ile ilgilidir. Kod, iş parçacığı olmadan gayet iyi çalışıyor. Bu @AsiriRathnayake –
ağ arabirim o arayüzüne bağlanma edebilecek tek kaynak "Premiscious modunda" ve biter gerçeği ile ilgili bir şey var olmaz? Değilse, sıra yerine python 'threading' kütüphanesini kullanmayı denediniz mi? Kuyruk sisteminin nasıl çalıştığından tam olarak emin değilim, ama 'diş çekme' ile en azından ne yaptığınızı daha fazla kontrol edersiniz ve biraz daha etrafta gezinebilirsiniz. – Torxed