文章目录
1.安装scapy库
使用 pip
安装 scapy
第三方库,打开 cmd
,输入以下命令:
cmd
pip install scapy
出现如图所示,表示安装成功:
2.示例
要解析someip
格式报文,需要导入someip
模块:
python
from scapy.contrib.automotive.someip import *
python
# 导入someip模块
from scapy.contrib.automotive.someip import *
# someip报文
message = b"\x07\xff\x80\x01\x00\x00\x00S\x00\x00\x00\x06\x01\x01\x02\x00\x0c\xf1\xdds\x84\x00\x00\x00>[\x19\xa2\xd1aV\xce'\xc1)\xa9x02Eg\x00\x00\x00D"
rev_sip = SOMEIP(_pkt=message) # 解析someip报文
rev_sip.show() # 以someip格式,打印报文
打印的someip格式报文如下:
配合UDP
收发报文如下:
python
from scapy.all import *
from scapy.contrib.automotive.someip import * # load_contrib('automotive.someip')
import socket
import time
# 创建UDP套接字
udpsock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
# 绑定本地信息
local_addr = ("192.168.1.100", 10000)
remote_addr = ('192.168.1.101', 10001)
udpsock.bind(local_addr)
data = udpsock.recvfrom(1024) # 接收数据
if len(data) > 0:
print(data) # 打印普通格式报文
rev_sip = SOMEIP(_pkt=data[0])
rev_sip.show() # 打印someip格式报文
udpsock.sendto(data[0],remote_addr) # 发送数据
# 关闭套接字
udpsock.close()