CPNtools协议建模安全分析(一)
本文根据最近整理的CPNtools论文和CPNtools官网上的说明,以及参照了乌克兰敖德萨 ---国家电信研究院运输和通信部关于 电信系统协议仿真关于CPNtools的学生讲义。基于此和和自己的理解整理的关于CPNtools在协议建模状态空间分析以及其他的一些特征。具体的介绍基于对CPNtools的工具的实际操作来说明。
因为CPNtools是丹麦奥尔胡斯大学(Aarhus University)大学团队开发的软件,所以在该学院的 Department of Computer Science 部门有很多相关使用该软件做的工作。 学院官网地址:https://cs.au.dk/ 可以在搜索栏中检索相关的CPNtools资料
因为考虑了一下写的内容可能比较多,所以大体上分成几个章节来写。如果后续写的太多,我会在每个博客做超链接到其他博客页面。(这项工作我会分成大概一周时间完成)
因为CPNtools官网上的介绍没有针对如何建模协议来讲,而且手册部分也很简单对做协议分析内有什么大的帮助。所以综合了很多材料,对CPNtool如何来建模协议模型想具体的写点东西。算是对自己论文的一个辅助材料,凡做事必须讲究认真。严谨的逻辑,不可捕风捉影,协议的形式化分析也必须是合乎规定,任何协议的形式化建模之前必须要根据协议组织的规范文档来做。
第一部分:界面的功能组件的介绍
1.1 CPNtools的安装
Windows安装:在官网上 http://cpntools.org/ 上下载界面下载 基于Windows版本的最近版本 ,下载之后安装即可
Linux 安装:Linux安装之后会出现调用公用库的 libxml2.so.2 报错的问题,提示报错信息:: libxml2.so.2 cannot open shared object file: No such file or directory 解决问题的方法:使用 find 命令查询是否存在该库, 如果存在是否是对应软件版本和系统版本的不匹配问题, 如果没有下载安装即可, 如果有但是关联存在问题,使用 ln -sf 命令 对库文件的地址执行关联。 具体的执行步骤见图

如果按照上面的操作还是提示不能读取文件,提示下面的信息:
./cpntools: error while loading shared libraries: libxml2.so.2: cannot open shared object file: No such file or directory
- 、首先打开/etc/ld.so.conf文件
- 、加入动态库文件所在的目录:执行vi /etc/ld.so.conf,在"include ld.so.conf.d/*.conf"下方增加"/usr/local/lib"。(具体的看自己的文件库位置)
- 、保存后,在命令行终端执行:/sbin/ldconfig -v;其作用是将文件/etc/ld.so.conf列出的路径下的库文件缓存到/etc/ld.so.cache以供使用,因此当安装完一些库文件,或者修改/etc/ld.so.conf增加了库的新搜索路径,需要运行一下ldconfig,使所有的库文件都被缓存到文件/etc/ld.so.cache中,如果没做,可能会找不到刚安装的库。 一般情况下可以解决共享库不能加载的问题,但是有时候用户还是提示不能加载库,这个时候应该考虑是否是用户自己添加的软件或者自己生成的 .so动态库没有执行权限。
安装完成之后操作的主界面如下。

1.1.1 我们先举一个简单的登录协议的模型
setp 1 首先创建两个库所,分别表示 Send 和 Reciver ,在创建一个变迁表示 网络 NET
接下来声明颜色集合变量的类型,建模的简单模型结构件下图:


step2 这里注意,颜色集绑定的数值标记定义好之后,在变迁NEt中会自动出现,变迁的绑定初始值,这个时候我们需要点击变迁的左下方的小三角,来选择需要绑定的初始值,也就是将变迁使能。变迁使能绑定初始值见下图,这里我么选择绑定(n=1,p="one")


step3 在弧上写上弧表达式, 我们定义了 var n=INT p=DATA , 所以从 SEND---->Reciver 弧的表达式为 (n,p), 这里 从变迁NET到 Reciver端我们 使用函数 来判断发送的数据。
step4 ,现在我们来模拟数据从Send 发送到Reciver端,条件不符合的时候输出 fail ,条件满足的时候输出 sucess



这里我们要注意的是几点容易出错的问题:
- 颜色集申明的时候 不能和 默认的(Standard declarations)中的申明重复
- 在标记颜色集的数值的时候,注意 1`(1,"shijian")++ 中的符号 ` 不是英文的分隔符 ’
- 变迁的初始值绑定是根据在于其输出的库所中的值决定的,但是需要自己手动来绑定
我本想这将主款工具界面操作部分汉化,但是官网上不发布 CPNtools的源代码版本,只支持对托管源代码的Subversion存储库开放。
1.1.2 tools BOX 的介绍
我从最常用的工具开始介绍:
Creat: 创建工具。 (功能介绍部分我全部放在图像上面,这样方便大家阅读。)
菱形表示创建一个变迁, 椭圆表示创建一个库所,单箭头表示创建弧

1.2 Petri网--CPNtools 层级网络介绍
CPNtools最近被Nokia 被用来模型驱动的新一代手机的开发, CPN建模工具提出了强大的Petri网建模工具,一个抽象对象可以使用层级网络建模分析,简单的()
第二部分: 原理的介绍
第三部分:简单协议的建模举例
第四部分:协议建模分析

第五部分:协议状态空间分析
第六部分:协议添加攻击模型的分析
第七部分:
参考文献:
[1] Simonsen K I F , Kristensen L M . Towards a CPN-based modelling approach for reconciling verification and implementation of protocol models.[C]// International Workshop on Model-based Methodologies for Pervasive & Embedded Software. Springer, Berlin, Heidelberg, 2012.
[2] Yiqin Lu, Fang Fang, Runqing Quan. A simulating model of NGN based on CPN tools[M]// Theoretical and Mathematical Foundations of Computer Science. 2011.
[3]D.A.Zaitsev, T.R.Shmeleva. Simulatiing of Telecommunication Systems with CPN Tools[M]// Affiliated on meeting of Communication Networks Department Transaction NO 4 of 10.11.2006.
[4] Wells L . Performance Analysis using CPN Tools[C]// Proceedings of the 1st International Conference on Performance Evaluation Methodolgies and Tools, VALUETOOLS 2006, Pisa, Italy, October 11-13, 2006. DBLP, 2006.
[5]Kent Inge Fagerland Simonsen, Lars M. Kristensen, Ekkart Kindler. Pragmatics Annotated Coloured Petri Nets for Protocol Software Generation and Verification[M]. Springer Berlin Heidelberg, 2016.
[6]Kent Inge.Code Generation from Pragmatics Annotated Coloured Petri Nets Simonsen.[M]//
[7]https://www.cpntools.org
[8]Ole Martin Dahl. Using Colored Petri NEts in Penetration Testing
CPNtools协议建模安全分析(一)的更多相关文章
- CPNtools 模拟工具适合分析什么样的协议
最近梳理和CPNtools和Scyther之间的性能和差别.方便后面整理使用 1.库所的托肯值是什么? 托肯值也叫作令牌, 即网络系统中的资源,托肯的数目值代表了网络赋予的资源大小.在一个活的网络系统 ...
- 【Wyn Enterprise BI知识库】 认识多维数据建模与分析 ZT
与业务系统类似,商业智能的基础是数据.但是,因为关注的重点不同,业务系统的数据使用方式和商业智能系统有较大差别.本文主要介绍的就是如何理解商业智能所需的多维数据模型和多维数据分析. 数据立方体 多维数 ...
- 网络协议图形化分析工具EtherApe
网络协议图形化分析工具EtherApe 在对网络数据分析的时候,渗透测试人员往往只关心数据流向以及协议类型,而不关心具体数据包的内容.因为这样可以快速找到网络的关键节点或者重要的协议类型. Kal ...
- 协议解析Bug分析
协议解析Bug分析 源自邮件协议RPC(远程过程调用)处理的Request请求数据包的bug. 一.Bug描写叙述 腾讯收购的Foxmailclient能够作为outlookclient ...
- http协议请求流程分析
http协议请求流程分析 用户输入URL(地址链接)(http://www.baidu.com:80/tools.html)客户端获取到端口及主机名后,客户端利用DNS解析域名,首先客户端的浏览器会先 ...
- Ripple 20:Treck TCP/IP协议漏洞技术分析
本文由“合天智汇”公众号首发,作者:b1ngo Ripple 20:Treck TCP/IP协议漏洞技术分析 Ripple20是一系列影响数亿台设备的0day(19个),是JSOF研究实验室在Trec ...
- 【动态系统的建模与分析】9_一阶系统的频率响应_低通滤波器_Matlab/Simulink分析
magnitude response:振幅响应 phase response:相位响应 传递函数G(S)为什么将S看成jw化成G(jw)通过[动态系统的建模与分析]8_频率响应_详细数学推导 G(jw ...
- 基于R的Bilibili视频数据建模及分析——预处理篇
基于R的Bilibili视频数据建模及分析--预处理篇 文章目录 基于R的Bilibili视频数据建模及分析--预处理篇 0.写在前面 1.项目介绍 1.1 项目背景 1.2 数据来源 1.3 数据集 ...
- 从AdventureWorks学习数据库建模——实体分析
最近打算写写数据库建模的文章,所以打算分析微软官方提供的SQL Server示例数据库AdventureWorks,看看这个数据库中有哪些值得学习的地方. 首先我们需要下载安装一个SQL Server ...
- 六:分布式事务一致性协议paxos的分析
最近研究paxos算法,看了许多相关的文章,概念还是很模糊,觉得还是没有掌握paxos算法的精髓,所以花了3天时间分析了libpaxos3的所有代码,此代码可以从https://bitbucket.o ...
随机推荐
- ABP Vnext 微服务 常见问题
1.token问题 原因:拿token和认证token的服务器不一致 2.minio访问报错 minio错误 S3 API Request made to Console port. S3 R 解决方 ...
- 开源项目03---YiShaAdmin
项目名称:YiShaAdmin 项目所用技术栈: web mvc bootstrap3 jquery aspnetcore等 项目简介: YiShaAdmin 基于.NET Core Web开发,借鉴 ...
- 声明式API和命令式API的区别
声明式API 声明式和命令式的对比 Kubernetes 声明式 API 的工作原理 参考 声明式API 声明式和命令式的对比 命令式 命令式有时也称为指令式,命令式的场景下,计算机只会机械的完成指定 ...
- C/C++ BeaEngine 反汇编引擎
反汇编引擎有很多,这个引擎没有Dll,是纯静态链接库,适合r3-r0环境,你可以将其编译为DLL文件,驱动强制注入到游戏进程中,让其快速反汇编,读取出反汇编代码并保存为txt文本,本地分析. 地址:h ...
- LyScript 实现Hook隐藏调试器
LyScript 插件集成的内置API函数可灵活的实现绕过各类反调试保护机制,前段时间发布的那一篇文章并没有详细讲解各类反调试机制的绕过措施,本次将补充这方面的知识点,运用LyScript实现绕过大多 ...
- 【译】命名变得简单:AI 支持的重命名建议
您是否曾经为命名一个变量.方法或类而挣扎过?找到表达性和简洁性之间的完美平衡了吗?您并不孤单.我们通过 GitHub Copilot Chat 扩展(需要订阅)在最新的 Visual Studio 预 ...
- django批量插入,遇到错误改为逐条插入
为了提升插入数据的效率,通常采用批量插入的方式,当一批数据中有错误数据时,该批次数据报错,都插入失败.如何跳过引起报错的数据,将其他正确的数据插入,实现方式如下代码. data_to_insert = ...
- Docker从认识到实践再到底层原理(二-2)|Namespace+cgroups
前言 那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助. 高质量博客汇总 然后就是博主最近最花时间的一 ...
- P7167 [eJOI2020 Day1] Fountain 题解
题目链接:Fountain 很不错的基础算法组合题:单调栈+倍增 首先考虑到一个事实,就是下面第一个比当前半径大的位置会成为移动的第一次落脚点,抽象下就是下面出现的第一次比自身大的半径,这个问题显然可 ...
- c语言实现内存池
概要 所谓内存池,顾名思义和线程池的设计原理是一样的,为了减少频繁申请释放内存而带来的资源消耗,减少释放内存后产生的内存碎片. 设计理念 为了方便管理内存池的设计通常是划分出一定数量的内存块,这些内存 ...