工控CTF_MMS
工控CTF_MMS
参考文章
https://blog.csdn.net/song123sh/article/details/127358610
概况
MMS工控协议是基于MMS和TCP等的基础上,开发的一套移动消息交互解决方案
基本信息:
- initiate(可以理解为握手)
initiate-RequestPDU
initiate-ResponsePDU
- confirmed(可以理解为交互,即传数据)
confirmed-RequestPDU
confirmed-ResponsePDU
通常情况为
1轮initiate:即发送1个initiate-RequestPDU,接收1个initiate-ResponsePDU
n轮confirmed:直到会话主动关闭或被动断开即confirmed-RequestPDU和confirmed-ResponsePDU交替发送和接收
工控消息分类
在MMS工控协议中,对工控消息进行分类,引入了confirmedService和unconfirmedService两种消息服务类型
confirmedService:确认型消息服务。这类消息会在接收方产生确认信息,发送回发送方。
它包含以下3种消息类型:
Acknowledgement:消息确认。发送方发送一条消息后,接收方返回的确认信息。它确认接收方已经正确接收该消息。
DeliveryReport:投递报告。当接收方用户 확定已阅读某条消息时,可以选择返回一条投递报告给发送方。它报告消息的阅读状态。
ReadReplyReport:阅读回复报告。接收方在阅读完一条消息的全部内容后,可以选择返回一条阅读回复报告,表明消息的阅读进度。
所以,confirmedService类型的消息都会在接收方产生某种形式的确认响应,并发送回发送方。这可以让发送方确定重要消息的接收、阅读等状态,实现可靠的消息交互。
常见的confirmedService有
对象操作
getNameList (1)
read (4)
write (5)
getVariableAccessAttributes (6)
getNamedVariableListAttributes (12)
文件操作
fileOpen (72)
fileRead (73)
fileClose (74)
fileDirectory (77)
在wireshark显示为 confirmedServiceRequest
与 confirmedServiceResponse
unconfirmedService表示非确认类型消息服务。这类消息在接收方不产生任何确认信息返回给发送方。
它包含以下2种消息类型:
- SIMPLE:简单消息。用于发送一般性消息,没有要求返回确认信息。
- ENHANCED:增强消息。支持发送富文本、图片、视频等多媒体消息,也没有要求返回确认信息。
所以,unconfirmedService类型的消息发送后,发送方无法确定其接收状态和阅读状态。这类消息主要用于发送一般性信息,没有严格要求可靠送达
实例
HNGK-MMS
经过“握手”、“分手”后开始传输数据
具体分析一条MMS
MMS
confirmed-RequestPDU
invokeID: 1
confirmedServiceRequest: read (4)
read
variableAccessSpecificatn: listOfVariable (0)
listOfVariable: 1 item
listOfVariable item
variableSpecification: name (0)
name: domain-specific (1)
domain-specific
domainId: IEDRelay1
itemId: LLN0$DC$Diag$dU
消息类型:Confirmed-RequestPDU。这是一条确认消息,属于confirmedService消息类型。
invokeID:1。该消息的唯一标识,用于匹配确认响应。
服务类型:read (4)。这是一条读变量值的请求消息。
变量访问规格:listOfVariable (0)。消息请求读取的变量采用listOfVariable类型的变量访问规格。
变量数量:1 item。消息请求读取的变量有1个。
变量规格:name (0)。该变量使用name类型的变量规格进行表示。
域ID:
IEDRelay1
。该变量对应的域ID为IEDRelay1
,表示它属于IEDRelay1这个设备或系统。8.项ID:
LLN0$DC$Diag$dU
。该变量的项ID为LLN0$DC$Diag$dU
,表示其全路径名称。
多查看几条,发现confirmedService的值均为4,这时就要用筛选语句了
(mms) && (mms.confirmedServiceRequest != 4)
无数据,说明信息藏在数据流里
那就对domainID和itemID进行筛选
(mms) && (mms.domainId != "IEDRelay1")
无数据,说明domainID都是一样的值
itemID不同,但开头都是LLN0
(mms) && (mms.domainId == "IEDRelay1") && !(mms.itemId contains "LLN0")
将结果拼接处理得到flag
工控CTF_MMS的更多相关文章
- Wireshark工控协议
Wireshark是一个强大开源流量与协议分析工具,除了传统网络协议解码外,还支持众多主流和标准工控协议的分析与解码. 序号 协议类型 源码下载 简介 1 Siemens S7 https://git ...
- 【转】工控老鬼】西门子S7200入门&精通【1】S7200硬件大全
转载地址:http://blog.sina.com.cn/s/blog_669692a601016i5f.html 工控老鬼提醒以下的信息和资料可能不全或者不准确,如有疑问可以查阅西门子中国网 ...
- 基于HTML5的Web SCADA工控移动应用
在电力.油田燃气.供水管网等工业自动化领域Web SCADA的概念已经提出了多年,早先年的Web SCADA前端技术大部分还是基于Flex.Silverlight甚至Applet这样的重客户端方案,在 ...
- 基于HT for Web的Web SCADA工控移动应用
在电力.油田燃气.供水管网等工业自动化领域Web SCADA的概念已经提出了多年,早先年的Web SCADA前端技术大部分还是基于Flex.Silverlight甚至Applet这样的重客户端方案,在 ...
- 开源纯C#工控网关+组态软件
一. 前言 在园子潜水也七八年了.说来惭愧,这么多年虽然一直自称.NET铁杆粉丝,然仅限于回几个不痛不痒的贴,既没有发布过代码,也没有写过文章. 看着.NET和C#在国外风生水起,国内却日趋没落, ...
- 开源纯C#工控网关+组态软件(七)数据采集与归档
一. 引子 在当前自动化.信息化.智能化的时代背景下,数据的作用日渐凸显.而工业发展到如今,科技含量和自动化水平均显著提高,但对数据的采集.利用才开始起步. 对工业企业而言,数据采集日益受到重视, ...
- 开源纯C#工控网关+组态软件(八)表达式编译器
一. 引子 监控画面的主要功能之一就是跟踪下位机变量变化,并将这些变化展现为动画.大部分时候,界面上一个图元组件的某个状态,与单一变量Tag绑定,比如电机的运行态,绑定一个MotorRunning ...
- Web SCADA 电力接线图工控组态编辑器
前言 SVG并非仅仅是一种图像格式, 由于它是一种基于XML的语言,也就意味着它继承了XML的跨平台性和可扩展性,从而在图形可重用性上迈出了一大步.如SVG可以内嵌于其他的XML文档中,而SVG文档中 ...
- 电力 Web SCADA 工控组态编辑器
前言 SVG 并非仅仅是一种图像格式, 由于它是一种基于 XML 的语言,也就意味着它继承了 XML 的跨平台性和可扩展性,从而在图形可重用性上迈出了一大步.如 SVG 可以内嵌于其他的 XML 文档 ...
- 开源纯C#工控网关+组态软件(十)移植到.NET Core
一. 引子 写这个开源系列已经十来篇了.自从十年前注册博客园以来,关注了张善友.老赵.xiaotie.深蓝色右手等一众大牛,也围观了逗比的吉日嘎啦.精密顽石等形形色色的园友.然而整整十年一篇文章都 ...
随机推荐
- linux文本三剑客之grep及正则表达式详解
linux文本三剑客之grep及正则表达式详解 目录 linux文本三剑客之grep及正则表达式详解 1. grep命令详解 2. 正则表达式 2.1 基本正则表达式 2.2 扩展正则表达式 1. g ...
- 瑞亚时间管理大师,基于 .NET 6 和 Angular 构建的在线任务管理协作平台
瑞亚时间管理大师 瑞亚时间管理大师, 是一个在线的任务管理.项目管理. 团队协作平台.瑞亚 拥有现代化的页面风格,高效.简便,同时适合个人和团队使用. 瑞亚对个人免费,提供了无限制的任务,列表,和空间 ...
- 企业微信群机器人发送消息(三)java端如何控制
1.先在群里添加机器人,然后获取机器人的webhook地址: 假设webhook是:https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=693a9 ...
- Android开发环境配置 JDK及SDK
已经搭建过无数次开发环境,今天把搭建环境记录下,下次不用去搜索别人博客,有些博客都是复制粘贴,有些关键信息都缺失了. 1.首先第一步:下载JDK,配置JDK环境变量.JDK可以在Oracle官网下载, ...
- C语言:算法题判断是否有效字符({[]})---括号
给定一个只包括 '(',')','{','}','[',']'的字符串 s ,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合. ...
- kubernetes 之二进制方式部署
我的资料链接:https://pan.baidu.com/s/18g0sar1N-FMhzY-FCMqOog 两种集群架构图 多master需要在集群上面加个lb,所有的node都需要连接lb,lb帮 ...
- C# WPF 坦克大战
wpf写的.主要是Canvas做画布 和类似的Rectangle的自定义类 采用了画面帧的思想,子弹 坦克移动 效果 都是 在主界面用一个定时器 循环,每秒60帧,这样做的好处,对比我之前做的炸弹人游 ...
- 【U8】bom全阶 点击展开按钮,无法获得叶子子阶
经查看 是因为 子件的失效日期与生效日期是相同一天,延后子件的失效日期就可以在点击展开按钮后,看到子阶bom了.
- 浏览器打开JupyterLab后所有快捷键与窗口按键均失效怎么办?
本文介绍JupyterLab中菜单栏按钮无法点击.快捷键无法执行问题的解决办法. 近期打开JupyterLab后,发现其中菜单栏按钮无法点击,快捷键也均无法执行.如图,红框内的按钮点击均无任何 ...
- 安装centos7模板机[正常版]
1. 安装centos 7模板机 准备好centos7的镜像 下载地址:http://mirrors.aliyun.com/centos/7/isos/x86_64/ 安装centos 自定义硬件: ...