2011-03-25 9 views
5

Python'da, kaynak IP adresi ve erişilen tam URL'yi ayıklayan canlı bir veri dinleyicisinin nasıl yazılacağını bilen var mı? Ben urlsnarf verileri çekmeye baktım ancak IPv6 desteklenmiyor (ve bağlantılar IPv6 ana bilgisayarlarına olacak).URL Python'da Sniffing

Tcpdump'tan veri alıp GET/POST için açgözlülük yapabilmem için bana yalnızca web sunucusundaki yolu bırakacak ve ilişkili FQDN'yi elde edemedim. Maalesef SQUID w/IPv6 TPROXY kullanımı ortamın yapılandırması nedeniyle bir seçenek değildir.

Libpcap için Python bağlamaları ile bunun nasıl yapılacağı hakkında bir fikri olan var mı? Sizin yardımınıza çok takdir ediyorum :)

Teşekkür :) Maalesef

+2

Scapy'nin bazı IPv6 bağlamaları bulunmalıdır. IPv6 engelini geçtikten sonra, yalnızca http başlıklarının ayrıştırılması sorunu olmalıdır. Hepsi uygulama katmanında, yani IPv6 gönderilmekte olan verileri etkilememelidir. – krs1

+0

http://stackoverflow.com/questions/462439/packet-sniffing-in-python-windows muhtemelen ilgili. –

cevap

2

, IPv6 ile kendi TCP yeniden montaj yapıyor sıkışmış. İyi haber, yalnızca (genellikle) bir veya iki paket halinde olması gereken URL verisiyle ilgilisiniz.

Bunu yapmak için pylibpcap kullanarak kurtulmayı kesebilmelisiniz. Sadece TCP trafiğine baktığınızdan emin olmak için pcap nesnesinde setfilter kullanmak isteyeceksiniz. PCap döngüsünde ilerlerken, yüke bazı HTTP normal ifadeleri uygulayacaksınız. HTTP trafiğine benzeyen bir şey varsa devam edin ve URL verisine ulaşmak için başlığı ayrıştırmaya çalışın. İnşallah, paketin sonundan önce satır sonu olan tam URL alırsınız. Değilse, hafif bir TCP yeniden birleştirme yapmak zorunda kalacaksınız.

Oh, ve IPv6 ana bilgisayar hakkında bilgi yazdırmak için socket.inet_ntop ve socket.getaddrinfo kullanmak isteyeceksiniz.