无法嗅探 Ethernet-type 0x0102 自定义数据包
Can't sniff Ethernet-type 0x0102 custom packet
第一个问题是 Scapy 无法嗅探 Ether-type 0x0102 上的自定义数据包。
calc.py↓
from scapy.all import *
class calc(Packet):
name = 'calc'
fields_desc = [ BitEnumField('op',0,8,{1:'ADD',2:'SUM',3:'MUL'}),
BitField('num1',0,32),
BitField('num2',0,32)
]
发送_calc.py ↓
from scapy.all import *
from calc import *
p = Ether(type=0x0102)/IP(dst='192.168.1.0')/ICMP()/calc(op=1,num1=2,num2=3)
sendp(p)
嗅_calc.py ↓
from scapy.all import *
from calc import *
sniff(filter='ether proto 0x0102 and host 192.168.1.0',prn=lambda x:x.show())
第二个问题是 Scapy 在 Ether-type 设置为 0x800 时可以嗅探,但不能在 0x0102 上工作。
此外,结果将自定义 calc() header 转换为 Raw。下面的结果是在 Ether-type 0x0800.
上嗅探得到的
....
###[ ICMP ]###
type = echo-request
code = 0
chksum = 0xf1ff
id = 0x0
seq = 0x0
###[ Raw ]###
load = '\x01\x00\x00\x00\x02\x00\x00\x00\x03'
我应该采取什么步骤才能自动解析收到的 Calc 数据包并在 Ether-type 0x0102 上运行?谢谢
以太网中的该字段 header 仅在值为 >= 0x0600
时用作 EtherType 字段。如果该字段的值 <= 0x5DC
,则该字段被解释为有效负载长度字段。
您的值 0x0102
将用作有效负载长度字段,而不是 EtherType。您需要选择合适的 EtherType 值。 IANA 维护 IEEE 802 Numbers page that has the registered EtherType values, and the IEEE maintains a page 的 all 分配的 EtherType。
如果您想进行实验,您需要使用为此分配的 EtherType:
88b5
IEEE Std 802 - Local
Experimental Ethertype 1. This Ethertype value is available for public
use for prototype and vendor-specific protocol development, as
defined in Amendment 802a to IEEE Std 802.
-或-
88b6
IEEE Std 802 - Local Experimental Ethertype 2. This Ethertype value
is available for public use and for prototype and vendor-specific
protocol development, as defined in Amendment 802a to IEEE Std 802.
第一个问题是 Scapy 无法嗅探 Ether-type 0x0102 上的自定义数据包。
calc.py↓
from scapy.all import *
class calc(Packet):
name = 'calc'
fields_desc = [ BitEnumField('op',0,8,{1:'ADD',2:'SUM',3:'MUL'}),
BitField('num1',0,32),
BitField('num2',0,32)
]
发送_calc.py ↓
from scapy.all import *
from calc import *
p = Ether(type=0x0102)/IP(dst='192.168.1.0')/ICMP()/calc(op=1,num1=2,num2=3)
sendp(p)
嗅_calc.py ↓
from scapy.all import *
from calc import *
sniff(filter='ether proto 0x0102 and host 192.168.1.0',prn=lambda x:x.show())
第二个问题是 Scapy 在 Ether-type 设置为 0x800 时可以嗅探,但不能在 0x0102 上工作。
此外,结果将自定义 calc() header 转换为 Raw。下面的结果是在 Ether-type 0x0800.
上嗅探得到的....
###[ ICMP ]###
type = echo-request
code = 0
chksum = 0xf1ff
id = 0x0
seq = 0x0
###[ Raw ]###
load = '\x01\x00\x00\x00\x02\x00\x00\x00\x03'
我应该采取什么步骤才能自动解析收到的 Calc 数据包并在 Ether-type 0x0102 上运行?谢谢
以太网中的该字段 header 仅在值为 >= 0x0600
时用作 EtherType 字段。如果该字段的值 <= 0x5DC
,则该字段被解释为有效负载长度字段。
您的值 0x0102
将用作有效负载长度字段,而不是 EtherType。您需要选择合适的 EtherType 值。 IANA 维护 IEEE 802 Numbers page that has the registered EtherType values, and the IEEE maintains a page 的 all 分配的 EtherType。
如果您想进行实验,您需要使用为此分配的 EtherType:
88b5
IEEE Std 802 - Local Experimental Ethertype 1. This Ethertype value is available for public use for prototype and vendor-specific protocol development, as defined in Amendment 802a to IEEE Std 802.
-或-
88b6
IEEE Std 802 - Local Experimental Ethertype 2. This Ethertype value is available for public use and for prototype and vendor-specific protocol development, as defined in Amendment 802a to IEEE Std 802.