我初看python的scapy软件包,并想测试我的第一个小脚本。为了测试下面的代码,我给自己发送了一封包含此字符串“ 10000000000000”的电子邮件。我的期望是,在最低限度的示例以下(我的网卡处于监视模式,执行方式为su)将专门为该电子邮件提供命令行输出,但没有。我确信这是我对网络流量和TCP的误解造成的-有人可以澄清吗?
我设置的虚拟环境是Python 3.6.8
(我已经测试过,通常可以使用带注释的行来嗅探网络流量,只有当我尝试通过正则表达式过滤其内容时,结果才不会达到我的预期。)
import optparse
import scapy.all as sca
import re
from scapy import packet
from scapy.layers.dns import DNS
from scapy.layers.dot11 import Dot11Beacon, Dot11ProbeReq
from scapy.layers.inet import TCP
class SniffDataTraffic:
@staticmethod
def find_expr(pack: packet) -> str:
regex_dict = {'foo': r"1[0-9]{13}",'bar': r"2[1-5]{14}"}
raw_pack = pack.sprintf('%Raw.load%')
found = {iter: re.findall(regex_dict[iter], raw_pack) for iter in regex_dict.keys()}
for name, value in found.items():
if value:
return "[+] found {}: {}".format(name, value[0])
def main():
try:
print("[*] Starting sniffer")
#sca.sniff(iface="xxxxxmon", prn=lambda x: x.summary(), store=False)
sca.sniff(prn=SniffDataTraffic.find_expr, filter='tcp', iface="xxxxxmon", store=False)
except KeyboardInterrupt:
exit(0)
if __name__ == '__main__':
main()