Python Scapy http嗅探器澄清

时间:2017-07-17 17:02:54

标签: python http scapy sniffing sniffer

我试图了解如何在python scapy中制作一个http嗅探器 这是我正在努力理解的代码

#!/usr/bin/python
from scapy.all import *

def http_header(packet):
        http_packet=str(packet)
        if http_packet.find('GET'):
                return GET_print(packet)

def GET_print(packet1):
    ret = "***************************************GET PACKET****************************************************\n"
    ret += "\n".join(packet1.sprintf("{Raw:%Raw.load%}\n").split(r"\r\n"))
    ret += "*****************************************************************************************************\n"
    return ret

sniff(iface='eth0', prn=http_header, filter="tcp port 80")

但是我无法理解GET_print函数到底做了什么我知道join()split(r"\r\n")应该以简单的方式做什么,但我不知道sprintf("{Raw:%Raw.load%}\n")在这做什么以及何时做来把它绑在一起我不明白

我只想简单澄清一下"\n".join(packet1.sprintf("{Raw:%Raw.load%}\n").split(r"\r\n"))行必须做什么

注意以下是我获取此代码的地方:HTTP GET packet sniffer in Scapy

1 个答案:

答案 0 :(得分:0)

sprintf只是Scapy数据包上可用的有用方法,它允许您以指定的格式构造字符串,并使用所需数据包中的数据填充它。有关说明,请参阅here%Raw.load%指定您希望数据包中的原始有效负载 - 这将对应于HTTP请求字符串(“GET / HTTP / 1.1 ....”)。