首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >如何使用KNX-Bus-Dump监听和分析KNX总线数据

如何使用KNX-Bus-Dump监听和分析KNX总线数据

作者头像
FB客服
发布2022-06-08 15:29:31
发布2022-06-08 15:29:31
1.5K0
举报
文章被收录于专栏:FreeBufFreeBuf

关于KNX-Bus-Dump

KNX是一种热门的自动化构建协议,专门用于将传感器、执行器和其他组件互联在一起。而KNX-Bus-Dump这是一款功能强大的KNX总线数据监听和分析工具,该工具使用了Calimero Java库来记录和监控所有通过KNX总线发送的数据。

KNX-Bus-Dump能够通过一个TPUART连接来访问KNX总线,不过也可以更改为使用其他的连接介质。数据将会转储至一个与Wireshark兼容的十六进制转储文件中。数据将带有时间戳,并以并以纳秒精度标准化为UTC时间,以执行数据分析并提供通信数据的时间线。生成的十六进制转储文件可以导入Wireshark,该文件可以配置为使用Wireshark的cEMI解析器解析KNX数据。

KNX-Bus-Dump可以用于KNX传感器、执行器和其他KNX设备的协议分析。除此之外,我们还可以利用该工具来对KNX设备进行安全分析。

Tcpdump和Wireshark不能用于转储通过KNX总线发送的数据,因为我们处理的是原生KNX数据,而非TCP/IP数据包。Tcpdump和Wireshark可以转储KNXnet/IP数据包,也就是TCP/IP数据包,而KNXnet/IP是通过TCP/IP网络向KNX总线发送命令和数据的协议。

工具要求

该工具需要使用到Calimero Java库,能够兼容树莓派3和4,而且还需要树莓派HAT用于TPUART连接。

工具下载

广大研究人员可以使用下列命令将该项目源码克隆至本地:

代码语言:javascript
复制
git clone https://github.com/ChrisM09/KNX-Bus-Dump.git

工具使用

创建十六进制转储

1、将“KNXBusDump.java”文件拷贝到Calimero项目中的“introduction

/src/main/java/ ”路径下。

2、在终端中切换到“introduction”目录中。

3、下列命令即可直接运行KNX-Bus-Dump:

代码语言:javascript
复制
./gradlew run -Pcalimero.serial.tpuart.maxInterByteDelay=60000 -DmainClass=KNXBusDump

4、现在,我们可以等待总线传输数据,转储的数据会存储在“KNXBusDump-Telegrams.txt”文件中。

5、使用Ctrl+C快捷键取消工具运行,然后将生成的文件导入至Wireshark进行后续分析即可。

分析十六进制转储

在Wireshark中,我们可以导入十六进制转储数据包,并制定一个解析器来分析数据包。

1、在Wireshark中,等待导入完成,然后点击“File -> Import From Hex Dump”:

2、为了正确解析数据并输出结果,我们需要提供一个正则表达式:

代码语言:javascript
复制
^\s*(?<time>\d{4}-\d\d\-\d\dT(\d\d\:){2}\d\d.(\d){6}[Z])\s(?<seqno>\d{6})\s+(?<data>[0-9a-fA-F]*)$

3、选择十六进制转储文件作为输入源。

4、在新的对话窗口中,切换到“Regular Expression”标签,将上述正则表达式复制进去。

5、确保数据编码采用的是“Plain hex 200*16”。

6、在“Timestatmp format”部分,我们需要指定工具的生成模式:

代码语言:javascript
复制
%Y-%m-%dT%H:%M:%S.%fZ

7、在“Encapsulation”部分,将“Encapsulation Type”修改为“Wireshark Upper PDU Export”。

8、现在我们就可以导入文件并进行数据包分析了:

工具输出样例

Wireshark时间戳:

对应的十六进制转储文件:

注意:途中高亮显示的时间为“NORMALIZED UTC TIME”,无论标记的是哪个时区,最终显示的都是UTC时间。

测试场景

项目地址

https://github.com/ChrisM09/KNX-Bus-Dump

参考资料

https://github.com/ChrisM09/KNX-Bus-Dump/blob/main/KNX-Raspberry-Pi-Hat-Usage/README.md

https://github.com/ChrisM09/KNX-Bus-Dump/blob/main/Raspberry-Pi-Calimero-Setup/README.md

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-05-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 关于KNX-Bus-Dump
  • 工具要求
  • 工具下载
  • 工具使用
    • 创建十六进制转储
    • 分析十六进制转储
  • 工具输出样例
  • 测试场景
  • 项目地址
  • 参考资料
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档