本文主要是介绍【Python】使用python解析someip报文,以someip格式打印报文,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 1.安装scapy库
- 2.解析someip格式报文
- 3.示例
1.安装scapy库
使用 pip
安装 scapy
第三方库,打开 cmd
,输入以下命令:
pip install scapy
出现如图所示,表示安装成功:
2.解析someip格式报文
要解析someip
格式报文,需要导入someip
模块:
from scapy.contrib.automotive.someip import *
# 导入someip模块
from scapy.contrib.automotive.someip import * # 普通格式的someip报文
data = 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"someipData = SOMEIP(_pkt=data) # 解析普通格式报文为someip格式
someipData.show() # 打印someip格式的报文
打印的someip格式报文如下:
3.示例
以下通过udp
收发someip
报文,示例如下:
1.新建文件udp_server.py
,用于模拟server
端
from scapy.contrib.automotive.someip import *
import socketudpServer = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 创建socket对象,走udp通道
host = socket.gethostname() # 获取本地主机名
port = 1000
serverAddr = (host, port)
udpServer.bind(serverAddr) # 绑定服务端地址clientData, clientAddr = udpServer.recvfrom(1024) # 接收来自客户端的数据
print(clientData) # 打印普通格式报文
someipData = SOMEIP(_pkt=clientData)
someipData.show() # 打印someip格式报文
udpServer.sendto(clientData, clientAddr) # 发送数据给客户端
udpServer.close()
2.新建文件udp_client.py
,用于模拟client
端
import socketudpClient = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 创建socket对象,走udp通道
host = socket.gethostname() # 获取本地主机名
port = 1000
serverAddr = (host, port)# someip报文
data = 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"udpClient.sendto(data, serverAddr) # 发送报文给服务端
udpClient.close()
3.打开两个cmd
窗口,一个为server
端窗口,另一个为client
端窗口
运行顺序,先启动server,后启动client:
- server端窗口,先执行命令
python udp_server.py
- client端窗口,后执行命令
python udp_client.py
运行结果如下:
server端窗口:
client端窗口:
这篇关于【Python】使用python解析someip报文,以someip格式打印报文的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!