IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Scyther工具库安装使用教程详细(spdl形式化语言)Ubuntu -> 正文阅读

[系统运维]Scyther工具库安装使用教程详细(spdl形式化语言)Ubuntu

0. 源代码地址

代码的GitHub链接
https://github.com/cascremers/scyther

这个项目的README.md里有部分安装教程,还有一个Scyther的安装使用文档链接,但是这里有一个坑点,这两个安装说明之间存在冲突。

Scyther安装使用文档链接
https://people.cispa.io/cas.cremers/scyther/

原页面都是英文,截图的时候我用了页面翻译,所以有的地方不是特别准确
在这里插入图片描述在这里插入图片描述
问题就出在Python版本上,做为两个方法都折腾过的人,表示Python3真的不行。

1. 环境安装

我的环境使用的是Ubuntu16,使用的是安装使用文档中的安装方式,但是并不能像安装文档说的,一条指令结束就可以运行,还需要再装一些别的插件。

sudo apt-get install graphviz python-wxgtk3.0

在这里插入图片描述

2. 代码下载解压

代码下载这个版本的,注意这个版本和GitHub上下载的版本略有差异
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述在这里插入图片描述
两个版本一个是Python3,一个是Python2,而Ubuntu自带的Python版本是2.7(顺便说一句,centos7的自带版本也是2.7)
在这里插入图片描述

解压(别在下载路径里直接解压了,给它挪个地方)

tar zxvf scyther-linux-v1.1.3.tgz

在这里插入图片描述
在这里插入图片描述

如果按照安装教程,这个时候就可以运行了,尝试运行一下会出现如下报错
在这里插入图片描述
仔细看这里的报错都指向wx,这是Python的一个库,也就是需求里的wxPython库,这个需要单独安装。
在这里插入图片描述

打开页面里的那个链接
https://www.wxpython.org/pages/downloads/
在这里插入图片描述
执行安装指令

pip install -U \
    -f https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-16.04 \
    wxPython

出现报错pip未安装,我是找了一个比较新的虚拟机从新截图记录安装步骤的,所以很多东西都没有。
在这里插入图片描述

3. pip安装

首先尝试按照提示安装

sudo apt install python-pip

在这里插入图片描述

然后再重复安装wxPython,下着下着就会超时中止,并提示pip版本低。
在这里插入图片描述在这里插入图片描述

按照它的提示来

sudo pip install --upgrade pip

在这里插入图片描述

会出现新的错误
在这里插入图片描述
没关系还有救

wget https://bootstrap.pypa.io/pip/2.7/get-pip.py

在这里插入图片描述

如果因为网络问题这次下载提前中断,记得去本地把下载失败的文件删除,不然就会像这样,它并不覆盖原路径,而是在后边加一个.1,再正常执行指令的时候就会报错。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

sudo python get-pip.py

在这里插入图片描述
这时候查看pip的版本会发现直接查不到了,明明前面已经显示successfully的,因为系统是从默认路径找的,但是pip现在不在默认路径下。

which pip
type pip
hash -r
pip --version

在这里插入图片描述
然后再执行wxPython的安装指令,它又报错了……
在这里插入图片描述在这里插入图片描述
可以看到是gtk找不到了,安装gtk

4. gtk安装

sudo apt-get install libgtk2.0-dev
sudo apt-get install libgtk-3-dev

在这里插入图片描述在这里插入图片描述

5. wxPython安装

现在终于可以安装wxPython了。

pip install -U \
    -f https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-16.04 \
    wxPython

在这里插入图片描述在这里插入图片描述
到这里wxPython安装好了,但是如果现在试图运行会发现又出现了报错
在这里插入图片描述
仔细看提示,还是出在wx的使用上。
在wxpython4中,SplashScreen小部件不再位于wx.SplashScreen中。它在wx.adv.SplashScreen

6. 修改代码

在scyther-gui.py的140行加上

from wx import adv

把141行的wx改为adv

修改前:
在这里插入图片描述
修改后:
在这里插入图片描述

7. 运行

./scyther-gui.py

在这里插入图片描述
就会出来这个欢迎界面
在这里插入图片描述
关掉后是使用界面——的半成品
在这里插入图片描述
在这里插入图片描述
和官方文档中的图片一比就知道,它少了一行菜单栏,没有这行菜单栏图形界面实际上是完全无法使用的,因为运行就是要点菜单栏的“Verify”。
在这里插入图片描述
我之前试图克服这个问题,然后勉强测出来还是wx的问题,可能还是因为版本更新,有的函数不兼容了。由于毕竟使用的时候还是通过命令行执行,而且我的Python学的就跟压根不会一样,我选择及时放弃。

8. 命令行执行

Scyther的使用方法,和spdl的语言规范官方文档里有,我自己也上传了一份,省的以后再去找了
Scyther使用文档
https://download.csdn.net/download/mandiheyanyu/85660198
在Scyther路径下有个scyther-linux

调出帮助文档

./scyther-linux --help

在这里插入图片描述

Usage:
  scyther [switches] [FILE]

Switches:
  -d, --dot-output          show patterns in dot format
  -x, --xml-output          show patterns in XML format
  --filter=<protocol>[,<label>] check only certain claims
  -a, --auto-claims         ignore any existing claims and automatically generate claims
Switches that affect the state space:
  -r, --max-runs=<int>      maximum number of runs in patterns [5]
      --unbounded           Do not bound the number of runs in patterns
  -A, --all-attacks         generate all attacks within the state space instead of just one
Misc. switches:
      --license             show license
  -h, --help                show short help
      --long-help           show long help
  -o, --output=<FILE>       output file [stdout]
      --append-output=<FILE> append output file [stdout]
  FILE                      input file ('-' for stdin)

There are two environment variables that influence the behaviour of the Scyther command-line tool.
  SCYTHERFLAGS    Put any default command-line options here, syntax as on the command line.
  SCYTHERDIR      Colon-separated path of directories to search for input files if a file
                  is not found in the current directory. Note: use '$HOME' instead of '~'.

代码就有个ns3.spdl,可以拿来测试。

./Scyther/scyther-linux --dot-output --output=ns3-attacks.dot ns3.spdl

在这里插入图片描述
会产生这么一个新文件。
在这里插入图片描述
渲染输出文件。

dot -Tpdf -O ns3-attacks.dot

有几个Fail就会生成几个pdf。
在这里插入图片描述
随便打开一个看看,大约是这个样子的。
在这里插入图片描述
一些高级参数请比照scyther-linux --help出来的那个帮助文档,我就不写了。


相关链接

Scyther形式化验证工具简单教程
https://blog.csdn.net/qq_42450533/article/details/117512538

Scyther tool 入门
https://www.cnblogs.com/xinxianquan/p/11398445.html

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-06-20 23:09:26  更:2022-06-20 23:09:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 0:44:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码