【Python】使用python解析someip报文,以someip格式打印报文

2023-10-11 18:59

本文主要是介绍【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格式打印报文的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/190155

相关文章

Spring LDAP目录服务的使用示例

《SpringLDAP目录服务的使用示例》本文主要介绍了SpringLDAP目录服务的使用示例... 目录引言一、Spring LDAP基础二、LdapTemplate详解三、LDAP对象映射四、基本LDAP操作4.1 查询操作4.2 添加操作4.3 修改操作4.4 删除操作五、认证与授权六、高级特性与最佳

Qt spdlog日志模块的使用详解

《Qtspdlog日志模块的使用详解》在Qt应用程序开发中,良好的日志系统至关重要,本文将介绍如何使用spdlog1.5.0创建满足以下要求的日志系统,感兴趣的朋友一起看看吧... 目录版本摘要例子logmanager.cpp文件main.cpp文件版本spdlog版本:1.5.0采用1.5.0版本主要

Java中使用Hutool进行AES加密解密的方法举例

《Java中使用Hutool进行AES加密解密的方法举例》AES是一种对称加密,所谓对称加密就是加密与解密使用的秘钥是一个,下面:本文主要介绍Java中使用Hutool进行AES加密解密的相关资料... 目录前言一、Hutool简介与引入1.1 Hutool简介1.2 引入Hutool二、AES加密解密基础

MySQL中FIND_IN_SET函数与INSTR函数用法解析

《MySQL中FIND_IN_SET函数与INSTR函数用法解析》:本文主要介绍MySQL中FIND_IN_SET函数与INSTR函数用法解析,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一... 目录一、功能定义与语法1、FIND_IN_SET函数2、INSTR函数二、本质区别对比三、实际场景案例分

Python 迭代器和生成器概念及场景分析

《Python迭代器和生成器概念及场景分析》yield是Python中实现惰性计算和协程的核心工具,结合send()、throw()、close()等方法,能够构建高效、灵活的数据流和控制流模型,这... 目录迭代器的介绍自定义迭代器省略的迭代器生产器的介绍yield的普通用法yield的高级用法yidle

使用Python将JSON,XML和YAML数据写入Excel文件

《使用Python将JSON,XML和YAML数据写入Excel文件》JSON、XML和YAML作为主流结构化数据格式,因其层次化表达能力和跨平台兼容性,已成为系统间数据交换的通用载体,本文将介绍如何... 目录如何使用python写入数据到Excel工作表用Python导入jsON数据到Excel工作表用

鸿蒙中@State的原理使用详解(HarmonyOS 5)

《鸿蒙中@State的原理使用详解(HarmonyOS5)》@State是HarmonyOSArkTS框架中用于管理组件状态的核心装饰器,其核心作用是实现数据驱动UI的响应式编程模式,本文给大家介绍... 目录一、@State在鸿蒙中是做什么的?二、@Spythontate的基本原理1. 依赖关系的收集2.

Python基础语法中defaultdict的使用小结

《Python基础语法中defaultdict的使用小结》Python的defaultdict是collections模块中提供的一种特殊的字典类型,它与普通的字典(dict)有着相似的功能,本文主要... 目录示例1示例2python的defaultdict是collections模块中提供的一种特殊的字

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

基于Python实现高效PPT转图片工具

《基于Python实现高效PPT转图片工具》在日常工作中,PPT是我们常用的演示工具,但有时候我们需要将PPT的内容提取为图片格式以便于展示或保存,所以本文将用Python实现PPT转PNG工具,希望... 目录1. 概述2. 功能使用2.1 安装依赖2.2 使用步骤2.3 代码实现2.4 GUI界面3.效