wireshark插件编写以太网DOIP

do
    --123用于过滤。DoIP protocol用于显示tree的协议名称
local wgm2 = Proto("654321","DoIPprotoco")  --定义协议名称

local NAME1  = "DoIP"

	fields_p_version     = ProtoField.uint8 (NAME1 .. ".pv", "protocol version", base.HEX,
							{	[0x00] = "reserved",
								[0x01] = "DoIP ISO/DIS 13400-2:2010",
								[0x02] = "DoIP ISO 13400-2:2012",
								[0x03] = "reserved",})
	fields_type   = ProtoField.uint16(NAME1 .. ".type", "type",base.HEX,
							{
								[0x0000] = "Generic Doip header negative acknowledge ",
								--server  type
								[0x0001] = "Doip Server Vehicle Identification request message",
								[0x0002] = "Doip Server Vehicle indentification request message with EID",
								[0x0003] = "Doip Server Vehicle indentification request message with VIN",
								[0x0005] = "激活请求",
								[0x0008] = "Doip Server Alive Check response",
								[0x4001] = "Doip Server Doip entify status request",
								[0x4003] = "Doip Server Diagnostic power mode information request",
								[0x8001] = "Diagnostic message",	
								--client type
								[0x0004] = "Vehicle announcement message/vehicle indentification requset",	
								[0x0006] = "激活应答",	
								[0x0007] = "Alive Check request",	
								[0x4002] = "DoIP Entity status response ",	
								[0x4004] = "Diagnostic power mode information response",	
								[0x8002] = "诊断信息积极响应",	
								[0x8003] = "诊断信息负响应",	
								})
	yuan_dizhi   = ProtoField.uint16(NAME1 .. ".type", "type",base.HEX,
							{
								[0x0e80] = "源地址tester ",
								--server  type
								[0x1111] = "源地址网关",
								[0x2222] = "源地址DOIP节点",
								})
								
	mubiao_dizhi   = ProtoField.uint16(NAME1 .. ".type", "type",base.HEX,
							{
								[0x088e] = "目标地址tester ",
								--server  type
								[0x1111] = "目标地址网关",
								[0x2222] = "目标地址doip节点",
								})
								
    wgm2.fields = {fields_p_version, fields_l_version,fields_type,fields_length,mubiao_dizhi,yuan_dizhi,}
 
	 ---获取端口号关键函数1
	tcp_dst_f = Field.new("tcp.dstport")

    function wgm2.dissector(TVB,pinfo,tree) 
    --TVB代表每一帧所有数据,pinfo代表一个log内所有帧,tree代表每一帧所有的>^折叠和展开箭头  。但是由于咱们绑定的是UDP和TCP以下,所以TVB指的是data部分
    --cols代表所有pinfo帧的某一帧,,其proctocol 指的是协议,它可以是length、或者source    
              local DoIP_type = TVB(2,2):uint()
				pinfo.cols.protocol=DoIP_type
				
				--if ( DoIP_type == 0x8003) then
				--pinfo.cols.protocol = "TTTTTTTT"
				--end 
	 		  if(DoIP_type == 0x0006) then
			  
			  pinfo.cols.protocol = "车辆回应的激活应答"
			  elseif (DoIP_type == 0x8003) then
			  pinfo.cols.protocol = "诊断信息负响应"
			  end

			  if((DoIP_type ~= 0x0006) and (DoIP_type ~=0x0005) and ( DoIP_type ~=0x8003)) then
		  
		       pinfo.cols.protocol = "DOIP"
			   
			  -- pinfo.cols.info = ""//  同样的用法
			  end
			  
	 
	  ---获取端口号关键函数2
         local huoquport = tcp_dst_f()
	 
	 ---对获取端口号做判断
		 if (tostring(huoquport) ==  "13400") then 
		  
				  if(DoIP_type == 0x0005) then
				  
				  pinfo.cols.protocol = "诊断仪发送激活请求"
				  
				  end
				  
		  

		  end
     
    subtree = tree:add(wgm2, 		TVB(0,3))  --添加解析子树
    subtree:add(fields_p_version, 	TVB(0,3))
  
    
    subtree:add(fields_type, 	TVB(2,3))   --增加在协议子树中加协议版本字段
    subtree:add(yuan_dizhi, 	TVB(9,2))   
    subtree:add(mubiao_dizhi, 	TVB(11,2))   




end






--- if (DoIP_type == 0x0004)then
--     pinfo.cols.protocol = "网关的UDP广播报文"
-- 
--- end





-- trivial postdissector example
-- declare some Fields to be read
--ip_src_f = Field.new("ip.src")
--ip_dst_f = Field.new("ip.dst")
--tcp_src_f = Field.new("tcp.srcport")
--tcp_dst_f = Field.new("tcp.dstport")


----udp_dst_f = Field.new("udp.dstport")














    local tcp_encap_table = DissectorTable.get("tcp.port")
    --因为我们的DT协议的接受端口肯定是50002,所以这里只需要添加到"udp.port"这个DissectorTable里,并且指定值为50002即可。
	
	 --udp_encap_table("udp.dstport")
     tcp_encap_table:add(13400, wgm2)
	

end
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: DOIP(Diagnostic Over Internet Protocol)是一种基于IP网络诊断协议,用于远程诊断和编程车辆电子控制单元(ECU)。Wireshark是一款常用的网络协议分析工具,可以捕获网络数据包并对其进行解析。 Wireshark插件可用于对DOIP通信进行分析和调试。通过安装DOIP插件,我们可以捕获和分析DOIP通信的数据包。该插件可以帮助我们理解DOIP协议的结构和通信过程,以便更好地进行网络故障诊断和调试。 使用Wireshark插件进行DOIP分析时,我们可以根据过滤条件仅捕获和显示与DOIP相关的数据包。该插件还可以对DOIP数据包进行解码,并以易于理解的形式展示DOIP协议的各个字段和值。通过分析DOIP通信的数据包,我们可以识别和排除潜在的通信问题,提高诊断效率。 除了数据包分析,Wireshark插件还可以显示DOIP通信的统计信息,如数据包数量、吞吐量和延迟时间等。这些统计数据可以帮助我们评估网络性能并优化通信流程。 总而言之,DOIP Wireshark插件是一款强大而实用的工具,可用于对DOIP通信进行详细分析和调试。通过使用该插件,我们能够更好地理解和排查DOIP通信问题,提高车辆电子系统的诊断和编程效率。 ### 回答2: DOIP Wireshark插件是一款用于分析和监视DOIP(Diagnostics over Internet Protocol)协议的网络数据包的工具。DOIP协议是一种能够通过以太网或IP网络进行诊断通信的协议,广泛应用于汽车行业的诊断设备和工具中。 DOIP Wireshark插件通过对网络数据包进行捕获和解码,能够帮助用户深入了解和分析DOIP通信过程中的各种协议、消息和参数。它可以帮助用户发现DOIP协议中可能存在的问题,如消息传输错误、延迟或丢包等,并提供相关的统计信息和详细的数据分析,方便用户进行故障诊断网络优化工作。 该插件提供了直观的用户界面和丰富的功能,使用户能够以可视化的方式查看DOIP消息的内容和结构,帮助用户更好地理解和分析网络数据包。通过过滤和搜索功能,用户可以针对性地查找和分析特定的DOIP消息或参数,提高了数据分析的效率。 此外,DOIP Wireshark插件还支持导出数据到其他文件格式,如CSV或XML,方便用户进行离线分析和存档。它还提供了对DOIP通信中常见的诊断服务和方法的支持,如UDS(Unified Diagnostic Services)和RP1210等,使用户能够更全面地分析和理解DOIP通信过程。 总的来说,DOIP Wireshark插件是一款强大的工具,可以帮助用户进行DOIP协议的网络数据包分析和故障排查,提高诊断设备和工具的性能和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

倚天仗剑走天涯WGM

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值