欧姆龙FinsTCP与FinsUDP协议解析 —— 利用Wireshark对报文逐字节进行解析详细解析附含报文模拟器等
前言 – Fins欧姆龙这个协议网上极少有相关的模拟器、Tcp的这一块倒是有但是Udp的基本都是不可用
1、 Fins协议结构也很简单 协议分为两种 一种tcp一种udp
2、 Tcp比Udp的报文会多一层tcp的head头部
3、 Udp回应报文在Wireshark中是解析不到(因为他按照UDP的格式去解那指定是解不到)
好长时间没有更新过博客了、也比较懒= = 。
一、Read(TCP)
发包

那么这个就很轻易的看出来这是个tcp的
Magic byte[0]-[3] 46 49 4e 53 ASCII码:FINS
Length byte[4]-[7] 00 00 00 1a 从command之后的数据长度
Command byte[8]-[11] 00 00 00 02 命令 就是发送帧
Eroor code byte[12]-[15] 00 00 00 00 没用,接收结束后不需要检测错误
走完这一层接下来就是fins header这一层
ICF byte[0] 80 请求位 看下面的这张图

RSV byte[1] 00预留 这些位被系统使用。不在响应中访问它们 默认为00即可
GCT byte[2] 07此值供系统使用
DNA byte[3] 00 目的网络地址
DNA1 byte[4] 00 目的节点的地址
DA2 byte[5] 00目标单位地址
SNA byte[6] 00源网络地址
SA1 byte[7] fb源节点的地址
SA2 byte[8] 00源单位地址
SID byte[9] 31服务ID 用于标识生成传输的进程
Command Code byte[10][11] 01 01 核心部位 这个就是功能码了
接下来就是data这一部分 这一部分通常携带的就是数据
Memory Area code byte[0] b3 磁盘号
Beginning address byte[1][2]00 62 读取的起始位置
Beginning address bits byte[3] 00 固定为00
Number of items byte[4][5] 00 01读取的数量
发包看完了接下来看回包

也很为简单、要读取数据那么肯定要回复读取的内容
而且可以对照一下发包、基本上是一直的无非是data部分不太一样那我们直接说data部分吧

Response code byte[0][1] 00 00 这个就是Fins协议的返回码、不论其他包如何变化data部分的第一条一定是这个
Response data byte[2][3]00 00 这个就是读取到的数据、但是我这个是没有数据所以是00 00
Fins协议有很多功能、比如说 I/O区读写、参数区读写、程序区读写、但是他们的报文的格式都一样(除了功能码不一样)所以我就不过多介绍截几张图就好了
二、读取控制器状态
发包

这个就是为读取控制器的状态 那么他就只发送了请求并没有携带任何的数据 所以没有data部分
回包

前面的就不用看了 直接看data部分就可以了
那么跟我说的是一样、他的返回码是在data部分的第一条。
剩下的就是返回一些系统的状态了
三、读周期时间
发包

回包

这种协议的结构很清晰、变化的地方也只有data部分 很容易理解
四、看一下fins的连接吧
发包

46 49 4e 53 是Fins的ASCII码
00 00 00 0c 则为至此往后的长度
00 00 00 00 则为命令 为客户端连接服务端
00 00 00 00 没啥用
00 00 00 00 客户端的节点地址
回包

清晰无比 Server node address 就是服务端的节点地址 其他都是与发包一致
五、写文件
发包

之前的图就不截了 跟read都是一样的
Disk no byte[0][1] e0 01 磁盘号
Parameter code byte[2][3] 参数的代码
Filename byte[4][15] 文件名
File position byte[16][19] 00 00 00 00 文件的位置
Data length byte[20][21] 80 bb file data的长度
File data byte[22]到尾 为要写的数据
回包

只回复了错误码、00 00 代表的就是无错误
其他的的功能与我介绍的也都差不多一致、看懂了read和write其他的也都可以看懂,那么接下来就再说一下udp的
六、Read(UDP)
发包

可以看到跟tcp的是完全一样 但是只是少了个tcp的head头部
那么可以对照tcp的去看udp的协议
回包
因为Wireshark没有解析到所以也没有什么价值就不贴出来了。
但是根据他回应的报文与TCP的回应报文相比较是为一致。
....
忒懒不写了
没有排版
这只是我个人的理解、当然也借鉴了网上的一些文章。如有出处望请见谅。
欧姆龙FinsTCP与FinsUDP协议解析 —— 利用Wireshark对报文逐字节进行解析详细解析附含报文模拟器等的更多相关文章
- 西门子S7comm协议解析 —— 利用Wireshark对报文逐字节进行解析详细解析S7comm所含功能码以及UserData功能
又一次成为懒蛋了,标题就这么改了改又是一篇新文章. 网上也有很多S7comm协议的解析,但还是如同我上一篇一样我只是做报文的解析对于S7comm的原理并进行阐述. 有些地方有错误的地方尽请大家指出,共 ...
- ModbusTCP协议解析 —— 利用Wireshark对报文逐字节进行解析详细解析Modbus所含功能码
现在网上有很多类似的文章.其实这一篇也借鉴了很多其他博主的文章. 写这篇文章的重点是在于解析功能和报文.对Modbus这个协议并不会做很多介绍. 好了,我们开始吧. 常用的功能码其实也没多少.我也就按 ...
- DNP3协议解析 —— 利用Wireshark对报文逐字节进行解析详细解析Modbus所含功能码
现在网上有很多类似的文章.其实这一篇也借鉴了很多其他博主的文章. 写这篇文章的重点是在于解析功能和报文.对Dnp3这个协议并不会做很多介绍. 那我们就开始吧 上图则为dnp3协议整体的报文模型(点击红 ...
- 哈工大 计算机网络 实验四 利用 Wireshark 进行协议分析
计算机网络实验代码与文件可见github:计算机网络实验整理 实验名称 利用 Wireshark 进行协议分析 实验目的: 本次实验的主要目的. 熟悉并掌握Wireshark的基本操作,了解网络协议实 ...
- TCP\IP协议实践:wireshark抓包分析之链路层与网络层
目录 TCP\IP协议实践:wireshark抓包分析之链路层与网络层 从ping开始 链路层之以太网封装 ip首部 开启ping程序,开始抓包 由一个ping的结果引出来的两个协议ARP ICMP ...
- 利用Wireshark抓取并分析OpenFlow协议报文
OpenFlow 交换机与控制器交互步骤 1. 利用Mininet仿真平台构建如下图所示的网络拓扑,配置主机h1和h2的IP地址(h1:10.0.0.1,h2:10.0.0.2),测试两台主机之间的网 ...
- php伪协议,利用文件包含漏洞
php支持多种封装协议,这些协议常被CTF出题中与文件包含漏洞结合,这里做个小总结.实验用的是DVWA平台,low级别,phpstudy中的设置为5.4.45版本, 设置allow_url_fopen ...
- 利用wireshark抓取远程linux上的数据包
原文发表在我的博客主页,转载请注明出处. 前言 因为出差,前后准备总结了一周多,所以博客有所搁置.出差真是累人的活计,不过确实可以学习到很多东西,跟着老板学习做人,学习交流的技巧.入正题~ wires ...
- 如何利用wireshark对TCP消息进行分析
原文:https://www.cnblogs.com/studyofadeerlet/p/7485298.html 如何利用wireshark对TCP消息进行分析 (1) 几个概念介绍 1 seq ...
随机推荐
- QML-密码管理器
Intro 年初刚学Qml时写的密码管理器.用到Socket通信.AES加密等.UI采用Material Design,并实现了Android App的一些常见基本功能,如下拉刷新.弹出提示.再按一次 ...
- 【高并发】又一个朋友面试栽在了Thread类的stop()方法和interrupt()方法上!
写在前面 新一轮的面试已经过去,可能是疫情的原因吧,很多童鞋纷纷留言说今年的面试题难度又提高了,尤其是对并发编程的知识.我细想了下,也许有那么点疫情的原因吧,但无论面试的套路怎么变,只要掌握了核心知识 ...
- Git 提交项目命令
git add . //添加⽂件到待提交区 git commit -m "注释" //创建⼀个提交 git push origin //将修改内容提交
- windows服务程序的编写
服务编写https://blog.csdn.net/lanuage/article/details/77937407 #include <windows.h> #include <s ...
- WSFC与DFS
WSFC里面的文件服务器群集,文件始终是一份,数据始终存放在群集磁盘中,通过群集来维持文件服务器这项服务始终持续可用,在2012之前同一时间WSFC只能有一台节点对外提供文件服务,2012开始群集引入 ...
- laravel 5.5 ajax返回错误信息
前段ajax发送请求 $('#reg_reg').click(function () { var formData = new FormData($( "#reg_form" )[ ...
- 自定义Bootstrap样式弹出框
最近做的一些功能需要用到Bootstrap,然而原来的系统并没有引入Bootstrap,为了新写的控件能够应用于老的页面,又不需要在老的页面上引入全套的Bootstrap文件决定写一个模仿Bootst ...
- linux下编译boost的多线程程序
linux下面用boost库进行多线程编程,一开始总是编译不成功,花了好多的时间. 下面是一段小示例代码: //start from the very beginning,and to create ...
- 威联通(NAS)应用篇:自建OwnCloud网盘(百度网盘,拜拜~~~)
基础环境: 威联通一台 已安装好 ContainerStation 公网 IP(非必须) 自有公网域名 下载镜像文件 提醒:建议先把威联通的自带镜像源改为国内的阿里云镜像源,教程:https://ww ...
- 吃零食 csust oj 贪心
吃零食 桌上有n袋零食,不同的零食会有不同的美味程度wi和腐坏程度di,每种零食在一单位时间内美味程度都会下降di,但是不会降到0以下. qwb每一单位时间可以吃掉一袋零食.现在qwb想要在吃完所有零 ...