我使用了scapy模块的sniff函数。我的filter和prn函数运行良好。但是现在,我想提取TCP数据包的Raw并使用十六进制或二进制格式处理它。这是documentationscapy中的数据包类。我该怎么做?我试过printpacket[Raw]但它似乎被转换为ASCII或类似的东西。我想将其保存为十六进制或二进制。 最佳答案 您可以使用scapy.compat.raw获取数据包的原始字节1:fromscapy.allimportrawraw(packet)前者是跨版本兼容的,但如果你保证运行Python3并且不需要支持Py
我正在使用scapy和python来嗅探实时流量。capture=sniff(iface="",filter="tcp")但这会嗅探每个数据包并将其添加到列表capture中,稍后可以处理。我想处理一个数据包并在它被嗅探后立即显示数据包的几个字段。即在嗅探数据包时,它会触发一个函数,我可以在其中分析该数据包。这将持续几个数据包。我已经准备好与捕获的数据包列表一起使用的功能。但我无法将它用于每个实时数据包。如何实现?是否可以使用scapy或者我是否需要安装任何其他包? 最佳答案 嗅探函数的参数应该像下面的代码:fromscapy.al
使用python数据包解析/嗅探工具Scapy,我想从原始字节串创建一个数据包。虽然我的具体用例的细节更为现实,但以下示例说明了我的问题和我目前的尝试:#Getanexamplepacket(wewon'treallyhaveanofflinefileinproduction.)pkt=sniff(offline="./example_packets/example_packets2.pcap")#Convertittorawbytes--oddly__str__doesthis.raw_packet=str(pkt)#Current,broken,attempttoconstruct
有没有人在PlanetLab节点(运行Fedora12)上成功使用过Scapy?我知道saferawsocketrestrictions,但似乎我可以通过设置conf.L3socket=L3RawSocket通过Scapy发送数据包。至于数据包的接收,我无法让Scapy工作,所以我只使用tcpdump。TCP和ICMP似乎有效:ICMP回显请求得到回显回复具有低TTL的ICMP回显请求得到超时消息返回TCPSYN数据包返回一个TCPRST数据包低TTL的TCP数据包得到超时消息返回UDP不会:发往关闭端口的UDP数据包触发ICMP端口不可达消息,但此消息不会返回到我的条子。转储只看到U
DNS分为查询请求和查询响应,请求和响应的报文结构基本相同。DNS报文格式如图所示。 上图中显示了DNS的报文格式。其中,事务ID、标志、问题计数、回答资源记录数、权威名称服务器计数、附加资源记录数这6个字段是DNS的报文首部,共12个字节。整个DNS格式主要分为3部分内容,即基础结构部分、问题部分、资源记录部分。下面将详细地介绍每部分的内容及含义。基础结构部分DNS报文的基础结构部分指的是报文首部,如图所示。 该部分中每个字段含义如下。事务ID:DNS报文的ID标识。对于请求报文和其对应的应答报文,该字段的值是相同的。通过它可以区分DNS应答报文是对哪个请求进行响应的。标志:DNS
看来sniff函数的filter没有正常工作我正在使用以下过滤器执行嗅探a=sniff(count=1,filter="tcpandhost192.168.10.55andport14010")但有时sniff会捕获这样的UDP数据包:>>>a=sniff(count=1,filter="tcpandhost192.168.10.55andport14010")>>>a有时sniff捕获带有错误端口的TCP数据包:>>>a=sniff(count=1,filter="tcpandhost192.168.10.55andport14010")>>>a>>>a[0]>>>有时sniff会捕
看来sniff函数的filter没有正常工作我正在使用以下过滤器执行嗅探a=sniff(count=1,filter="tcpandhost192.168.10.55andport14010")但有时sniff会捕获这样的UDP数据包:>>>a=sniff(count=1,filter="tcpandhost192.168.10.55andport14010")>>>a有时sniff捕获带有错误端口的TCP数据包:>>>a=sniff(count=1,filter="tcpandhost192.168.10.55andport14010")>>>a>>>a[0]>>>有时sniff会捕
为了了解TCP的工作原理,我尝试伪造自己的TCPSYN/SYN-ACK/ACK(基于教程:http://www.thice.nl/creating-ack-get-packets-with-scapy/)。问题在于,每当我的计算机从服务器接收到SYN-ACK时,它都会生成一个RST数据包来停止连接过程。我在OSXLion和Ubuntu10.10MaverickMeerkat上进行了尝试,都重置了连接。我发现了这个:http://lkml.indiana.edu/hypermail/linux/net/0404.2/0021.html,不知道是不是这个原因。谁能告诉我可能是什么原因?以及
为了了解TCP的工作原理,我尝试伪造自己的TCPSYN/SYN-ACK/ACK(基于教程:http://www.thice.nl/creating-ack-get-packets-with-scapy/)。问题在于,每当我的计算机从服务器接收到SYN-ACK时,它都会生成一个RST数据包来停止连接过程。我在OSXLion和Ubuntu10.10MaverickMeerkat上进行了尝试,都重置了连接。我发现了这个:http://lkml.indiana.edu/hypermail/linux/net/0404.2/0021.html,不知道是不是这个原因。谁能告诉我可能是什么原因?以及
我是一个普通的程序员,刚接触网络编程。为了提高我对网络的总体理解,我尝试从数据包级别执行几个基本的HTTP操作。我的问题是:如何使用SCAPY之类的库在数据包级别构建HTTPGET请求和相关项目?我意识到这听起来可能很奇怪,但我似乎找不到任何详细信息,而且我自己对PAROS和Ethereal的尝试......不太令人满意。感谢您提供的任何帮助!特里米尔特 最佳答案 如果您想进行完整的三次握手,则必须手动进行。从你的SYN包开始:>>>syn=IP(dst='www.google.com')/TCP(dport=80,flags='S