我试图了解如何在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
答案 0 :(得分:0)
sprintf
只是Scapy数据包上可用的有用方法,它允许您以指定的格式构造字符串,并使用所需数据包中的数据填充它。有关说明,请参阅here。 %Raw.load%
指定您希望数据包中的原始有效负载 - 这将对应于HTTP请求字符串(“GET / HTTP / 1.1 ....”)。