- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试为 IPv6 建立 TCP 握手。 SYN 数据包被发送。接口(interface)收到SYN/ACK。
我对收到的数据包进行了十六进制转储,还对 pkt.show() 进行了处理。我得到以下输出:
hexdump(pkt)
0000 00 30 48 FA 2C 4D 64 64 9B 75 60 01 81 00 00 01 .0H.,Mdd.u`.....
0010 81 00 00 01 88 64 11 00 00 01 00 42 00 57 60 00 .....d.....B.W`.
0020 00 00 00 18 06 40 20 11 00 01 00 00 00 00 00 00 .....@ .........
0030 00 00 00 00 00 01 20 11 00 01 00 00 00 00 00 00 ...... .........
0040 00 00 00 00 00 02 00 50 A1 F0 00 00 00 01 00 00 .......P........
0050 00 01 60 12 FF FE B5 CA 00 00 02 04 05 98 ..`...........
pkt.show()
###[ Ethernet ]###
dst = 00:30:48:fa:2c:4d
src = 64:64:9b:75:60:01
type = 0x8100
###[ 802.1Q ]###
prio = 0L
id = 0L
vlan = 1L
type = 0x8100
###[ 802.1Q ]###
prio = 0L
id = 0L
vlan = 1L
type = 0x8864
###[ PPP over Ethernet ]###
version = 1L
type = 1L
code = Session
sessionid = 0x1
len = 66
###[ PPP Link Layer ]###
proto = Internet Protocol version 6 [Hinden]
###[ Raw ]###
load = '`\x00\x00\x00\x00\x18\x06@ \x11\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01 \x11\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00P\xa1\xf0\x00\x00\x00\x01\x00\x00\x00\x01`\x12\xff\xfe\xb5\xca\x00\x00\x02\x04\x05\x98'
为什么 IPv6 数据包以原始数据包的形式出现?
最佳答案
这看起来像是 Scapy 中的错误,可能在 PPP 解析器中。接下来是一些诊断和解决方法。
我们可以通过以下方式重现您的错误:
import binascii
input=binascii.unhexlify("003048FA2C4D64649B756001810000018100000188641100000100420057600000000018064020110001000000000000000000000001201100010000000000000000000000020050A1F000000001000000016012FFFEB5CA000002040598")
from scapy.all import Ether
pkt1=Ether(input)
# Stops at "RAW" after PPP transport
pkt1.show()
如果我们进一步检查 Raw
层,它看起来就像一个真正的 IPv6 数据包。我们可以使用 scapy 来验证这一点:
import binascii
input=binascii.unhexlify("003048FA2C4D64649B756001810000018100000188641100000100420057600000000018064020110001000000000000000000000001201100010000000000000000000000020050A1F000000001000000016012FFFEB5CA000002040598")
from scapy.all import Ether, IPv6, Raw
pkt1=Ether(input)
# Check the rest of the parsing makes sense:
pkt2=IPv6(pkt1[Raw].load)
# Pkt2 is just the IPv6 bit now
pkt2.show()
最后我们可以得出它的逻辑结论并使用它来生成一个包含所有正确层的 Scapy 数据包:
import binascii
input=binascii.unhexlify("003048FA2C4D64649B756001810000018100000188641100000100420057600000000018064020110001000000000000000000000001201100010000000000000000000000020050A1F000000001000000016012FFFEB5CA000002040598")
from scapy.all import Ether, IPv6, Raw
pkt1=Ether(input)
pkt2=IPv6(pkt1[Raw].load)
del pkt1[Raw]
pkt1=(pkt1/pkt2)
pkt1.show()
这给了我们:
###[ Ethernet ]###
dst = 00:30:48:fa:2c:4d
src = 64:64:9b:75:60:01
type = n_802_1Q
###[ 802.1Q ]###
prio = 0L
id = 0L
vlan = 1L
type = n_802_1Q
###[ 802.1Q ]###
prio = 0L
id = 0L
vlan = 1L
type = PPP_SES
###[ PPP over Ethernet ]###
version = 1L
type = 1L
code = Session
sessionid = 0x1
len = 66
###[ PPP Link Layer ]###
proto = Internet Protocol version 6 [Hinden]
###[ IPv6 ]###
version = 6L
tc = 0L
fl = 0L
plen = 24
nh = TCP
hlim = 64
src = 2011:1::1
dst = 2011:1::2
###[ TCP ]###
sport = http
dport = 41456
seq = 1
ack = 1
dataofs = 6L
reserved = 0L
flags = SA
window = 65534
chksum = 0xb5ca
urgptr = 0
options = [('MSS', 1432)]
更好的解决方法是使用以下方法告诉 Scapy 层之间的关系:
import binascii
input=binascii.unhexlify("003048FA2C4D64649B756001810000018100000188641100000100420057600000000018064020110001000000000000000000000001201100010000000000000000000000020050A1F000000001000000016012FFFEB5CA000002040598")
from scapy.all import Ether, IPv6, PPP, bind_layers
bind_layers( PPP, IPv6, proto=0x0057)
# Now works correctly out the box
pkt1=Ether(input)
pkt1.show()
如果你想写一个合适的补丁,这个对 bind_layers 的调用应该在 scapy/layers/ppp.py 中。
关于ipv6 - 斯皮皮 : IPv6 Packet is receiving as Raw Packet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32913913/
Packet packet = new Packet(); while(packet != null ) { packet = jpcap.get
我有一个 python 脚本,它使用 dpkt 捕获以太网上的数据包,但我如何区分哪些数据包是 tcp,哪些是 udp。 最终,我希望获得在时间间隔内建立的每个 tcp 连接的数据包列表。 我的代码是
当我尝试将电缆与网络摄像头连接时,系统提示电缆无法连接到该端口。有人能帮我拿一下这个吗?
我正在尝试为 IPv6 建立 TCP 握手。 SYN 数据包被发送。接口(interface)收到SYN/ACK。 我对收到的数据包进行了十六进制转储,还对 pkt.show() 进行了处理。我得到以
我正在尝试使用套接字发送数据包,但出现错误。 invalid conversion from ‘omnetpp::cPacket*’ to ‘inet::Packet*’ [-fpermissive]
我在我的 Android 应用程序中使用 aSmack 与我的 XMPP 服务器通信,我打开了 Smack 的调试,这样我就可以看到所有 XML 的来来去去。我的问题是我正在使用 PacketList
自从升级到 Xcode 4.2 以来,我经常遇到错误,尝试调试应用程序失败,并显示消息“未知数据包回复:环境数据包“超时”。”重新启动设备并不能始终解决问题(尽管有时可以解决),重新启动 Xcode
我得到了一个派生自 sf::Packet 的类,它在其构造函数中传递了一个引用 iots 类型的 Integer。现在在构造函数中,我尝试将 Integer 添加到 sf::Packet 的数据中,如
我正在使用 Debian 操作系统。我正在编写网络仿真程序,我想获取所有数据包并停止 Debian从响应任何发送的数据包。 到目前为止,我已经打开了一个套接字,并且收到了所有数据包,但 Debian
对于一个应用程序,我需要能够创建一个多用户聊天室并加入其中。聊天服务器是一个 openfire 服务器。 我曾经有过: MultiUserChat chat = new MultiUserChat(c
我正在研究 中的核心音频转换服务 Learning Core Audio 我对他们 sample code 中的这个例子感到震惊: while(1) { // wrap the destina
我在my.cnf中添加了如下内容 [mysqld] max_allowed_packet=32M [mysql] max_allowed_packet=32M 而且我还在 JDBC 查询中添加了以下内
我需要测试 FTP 应用程序的数据包丢失情况。我用了Wireshark数据包嗅探器,我得到了 TCP 流。 如何使用 Wireshark 查找丢包情况? 最佳答案 数据包丢失和其他相关指标(例如误码率
每个人。这就是我们的门记录系统 Falco。当员工在读卡器上刷他/她的 ID 时,信号会传送到 Falco 服务器并将数据(卡 ID、时间)输入数据库。 Falco 的报告真的没有帮助,所以我们的人力
我正在研究 iSCSI 协议(protocol),现在我处于使用 Wireshark 捕获要查看的数据包的阶段,哪些数据包用于维护事件 session ,以及当我将文件复制到我的逻辑卷时,哪些数据包被
我无法理解网络上的任何人如何使用数据包嗅探器。 我对网络的工作原理知之甚少,但让我这样说吧:假设 postman 过来把包裹送到我家门口。为什么我可以翻遍他的所有其他包裹并环顾四周? postman
我已经看到(通过实际读取 tun 设备)Linux 上的 tun 驱动程序可以在一次读取中返回多个 IP 数据包。反之亦然 - 您可以在一次写入 tun 设备中写入多个 IP 数据包吗? 最佳答案 实
这个问题确实集中在我的问题上,与我在该主题上找到的任何其他问题无关。 PSA:当我说“数据包”时,我的意思是在单个 socket.recv(maxsize) 中接收到的完整字符串 我在 Java(我的
我想提高数据包传输性能。在此之前我使用原始套接字,现在我研究 packet_mmap。我有数据包(帧),我已经从另一台 PC 的内核模块中捕获了这些数据包(帧),并将其放入当前 PC,现在我想通过以下
我正在尝试使用带有一些标志的 tshark,并为每个过滤的跟踪获取时间戳。我正在使用它来过滤系统中的所有 DNS 查询。我无法获得时间戳以及过滤器工作。例如,如果我尝试类似 tshark -t ad
我是一名优秀的程序员,十分优秀!