欧姆龙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 ...
随机推荐
- 浅析 JS 中的作用域链
作用域链的形成 在 JS 中每个函数都有自己的执行环境,而每个执行环境都有一个与之对应的变量对象.例如: var a = 2 function fn () { var a = 1 console.lo ...
- LightOJ 1287 Where to Run(期望)
题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1287 题意:给定一个n个点的无向图(0到n-1),你开始在0.你开始遍历这个图 ...
- OpenCV的安装和使用
@ windows系统 (环境:VS2013) 下载安装opencv.exe: VS2013下“项目”->“属性页”->“配置属性”-> “VC++目录”: 包含目录 - ..\op ...
- HDU - 1253 胜利大逃亡 (搜索)
Ignatius被魔王抓走了,有一天魔王出差去了,这可是Ignatius逃亡的好机会. 魔王住在一个城堡里,城堡是一个A*B*C的立方体,可以被表示成A个B*C的矩阵,刚开始Ignatius被关在(0 ...
- uniapp中引入less文件
uniapp入门遇到的问题记录 在uniapp中从外部import less文件的话,首先需要在 工具>插件安装 中安装支持less语法的插件,然后在.vue文件中引入 @import url ...
- weak_ptr
#include <iostream> #include <memory> using namespace std; int main(int argc, char **arg ...
- C. Okabe and Boxes 思维 模拟 or 线段树
C. Okabe and Boxes 这个题目是一个有点思维的模拟,当时没有想到, 思维就是这个栈的排序这里,因为每次直接排序肯定会t的,所以不可以这么写,那怎么表示排序呢? 就是直接把栈清空,如果栈 ...
- 补一下昨天的博客 J - Sabotage 网络流
题目链接:https://vjudge.net/contest/299467#problem/J 这个题目是一个裸的最小割问题,就不多赘述了. #include <cstdio> #inc ...
- CSS的基础使用
一,css是什么? CSS全称为“层叠样式表” ,与HTML相辅相成,实现网页的排版布局与样式美化 二,CSS使用方式 1.行内样式/内联样式(单一页面中使用) 借助于style标签属性,为当前的标签 ...
- HC32F003C4PA GPIO Output
1.打开启动文件,找到并跳转至SystemInit函数 void SystemInit(void) { stc_clk_systickcfg_t stcCfg; // TODO load trim f ...