环境准备
源码下载链接
https://github.com/mz-automation/libiec61850
我的运行环境是ubuntu虚拟机。
首先进入文件夹根目录进行编译
make clean
make
server代码的编译和运行
进入examples/serve_example_simpler的目录下编译
直接执行会发现报错,异常退出。
经过分析源码,增加打印,发现错误原因是权限不足,绑定端口失败。
于是换用root权限执行程序,发现程序正常运行。
为方便调试,可以将调试相关打印的宏打开
为了方便快速编译,在路径下简单写了脚本
#!/bin/sh
cd ../..
make clean
make
cd examples/server_example_simple/
make clean
make
重新编译运行后效果如下
client代码的编译和运行
跟server几乎相同的方式,也要用root权限运行。
抓包分析
抓包我用的是tshark工具。在ubuntu可直接通过命令下载安装。
sudo apt-get install wireshark
sudo apt-get install tshark
之后增加MMS相关协议,方法是
cd .config/wireshark/profiles/
mkdir tshark-mms/
cd tshark-mms/
touch pres_contex
之后再创建的文件中写入
"3","1.0.9506.2.3"
即可。如图
之后进行抓包。我用的命令是
sudo tshark -C tshark-mms -i lo -w test.pcap
由于不带参数执行client的程序并没有做多余的操作,所以MMS相关的报文很少。
可以通过加其他参数运行得到其他报文,例如参数读取等。
后续有空的话会进行报文的详细分析。