Myeeygo's blog Myeeygo's blog
首页
技术
关于
  • 分类
  • 标签
  • 归档

Myeeygo

个人技术博客
首页
技术
关于
  • 分类
  • 标签
  • 归档
  • GitHub高级搜索技巧
  • GithubPage配置
  • kali配置clash
  • Vmware移动kali文件后无法正常进入系统
  • 对git设置代理
  • AndroidStudio模拟器无法启动问题
  • win11更新23H2失败问题
  • win11固定应用到开始菜单
  • Excel相关问题
  • Virtualbox虚拟机扩容
  • Virtualbox虚拟机使用主机VPN
  • vscode选择虚拟环境python解释器
  • 云服务器进行rdp远程桌面连接
  • 同一局域网的服务器使用本地VPN代理
  • 将jar转换为dex
  • 导出AndroidStudio中的apk依赖jar包
  • 解决在conda中未使用对应python版本
  • 云服务器ssh连接排查记录
  • 使用qq联系openclaw掉线问题
  • python的subprocess命令运行问题
  • 本地电脑访问云服务器自建网站
  • 中文路径pip安装报错
  • ssh连接权限问题设置
  • git大文件上传问题
  • 博客网站云服务器配置流程
  • 远程云服务器使用本地代理
  • linux安装miniconda3
  • linux安装jdk并进行多版本管理
  • 工具CryptoLLM部署记录
  • 工具CCA-Droid部署记录
  • 工具cryptoeval使用记录
  • 工具cryptbara使用记录
  • 工具cryptoguard使用记录
  • 工具MASC使用记录
  • 工具cryscanner使用记录
    • 描述
      • 前言
    • 步骤
      • 部署
      • 文件log_scanner
      • 文件order
      • 运行
  • 从服务器下载文件
  • 解决gitbash对中文的支持问题
  • 创建tmux持久化对话
  • 工具crylogger部署记录
  • 工具cognicrypt_sast部署记录
  • 使用apkc简单构建apk
  • 使用docker的相关记录
  • 配置owasp_java_bench记录
  • cryptoapi-bench构建注意事项
  • 云服务器网站证书更新
  • 技术
myeeygo
2026-10-19
目录

工具cryscanner使用记录

# 描述

部署并使用工具cryscanner

# 前言

这个工具完成的不是很好,代码中有必须进行修改的地方,否则无法正常运行。此外,给的例子中,配置文件也需要修改,否则无法正常运行。

# 步骤

# 部署

1、克隆这个仓库

git clone https://github.com/amitsirius/cryscanner.git
1

2、修改其源代码

# 文件log_scanner
# log_scanner.py文件中

# 开头部分添加以下代码
import re

# def __parseObjects(self, obj):函数中
# 删掉以下两行
fname_t = Word(printables) + Suppress(Literal('('))
fname = fname_t.parseString(obj[0])[0]
# 修改为以下代码
        fname = None
        header = obj[0].strip()
        match = re.search(r'\bin\s+([A-Za-z_][A-Za-z0-9_]*)\s*\(', header)
        if match:
            fname = match.group(1)
        else:
            match = re.match(r'([A-Za-z_][A-Za-z0-9_]*)\s*\(', header)
            if match:
                fname = match.group(1)
        if fname is None:
            print(f"[ERROR]: unable to parse function header: {header}")
            return
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 文件order
# order.py文件中

# 删掉以下代码
from greenery.lego import parse
# 修改为下列代码
from greenery import parse

# 函数def __init__(self, fsm, states, finals)中
# 删掉以下代码
self.machine.add_transition(trigger=key2, source=str(key), dest=str(fsm.map[key][key2]))
self.gmachine.add_transition(trigger=key2, source=str(key), dest=str(fsm.map[key][key2]))
self.events.add(key2)
print(f"trigger={key2}, source={key}, dest={fsm.map[key][key2]}");
# 修改为以下代码
                trigger = str(key2)
                self.machine.add_transition(trigger=trigger, source=str(key), dest=str(fsm.map[key][key2]))
                self.gmachine.add_transition(trigger=trigger, source=str(key), dest=str(fsm.map[key][key2]))
                self.events.add(trigger)
                print(f"trigger={trigger}, source={key}, dest={fsm.map[key][key2]}");
                
# 函数def verify(self, LObj)中
# 修改以下代码
for k in self.FSM.events:
                if self.Objects[k].getfname() == o.getfname():
                    call_flow.append(k)
# 变成下面代码
for k in self.FSM.events:
                if k not in self.Objects:
                    continue
                if self.Objects[k].getfname() == o.getfname():
                    call_flow.append(k)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

3、修改各个子测试例子中的rules文件

OBJECTS
	a: EVP_CIPHER_CTX_new()
	b: EVP_CIPHER_CTX_free(c)
	…………
	l: des_ecb_cipher()

ORDER
	(ab)*
	(cd+ed*)*
	(km+nm*)*
	(fg+h)*

CONSTRAINTS
	x1: REPLAY(i:salt)
	x2: REPLAY(c:iv)
	…………
	x9: RAND(f:key)

FORBIDDEN
	h,l
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

需要注意的点,如果log解析成功,但是规则分析时出错。大概率是CONSTRAINTS 这个部分的内容写的不规范。一定是 x_{n}:开头的 ,有的会没有这个。

另外一个例子:

OBJECTS
	a: RSA_public_encrypt()
	b: RSA_private_decrypt()
	c: RSA_generate_key()
	d: RSA_generate_key_ex()

ORDER

CONSTRAINTS
	x1: EQ(b:padding == 4)
	x2: EQ(d:bits >= 1024)

FORBIDDEN
	a,b
1
2
3
4
5
6
7
8
9
10
11
12
13
14

3、创建conda虚拟环境

conda create -n cryscanner python=3.12.3 -y
# 如果环境中没有gdb,openssl 。也需要安装
conda install gdb openssl
1
2
3

4、安装依赖,以下内容写入一个require.txt文件中,pip install -r require.txt即可

greenery==4.2.2
mpmath==1.3.0
nistrng==1.2.3
numpy==2.5.0
pyparsing==3.3.2
scipy==1.18.0
six==1.17.0
sympy==1.14.0
transitions==0.9.3
1
2
3
4
5
6
7
8
9

# 运行

1、创建可运行例子

首先编译一个包含密码学调用的程序,以tests/aes_encryption/aes_example.c为例子

gcc -g -o aes_example aes_example.c -lcrypto
1

生成了 aes_example

2、执行gdb调试,生成log文件

接下来执行

 gdb -q aes_example testMessage 
 # 如果程序需要输入参数,可以使用以下命令
 gdb --args yourExeFile arg1Babala arg2
1
2
3

在gdb命令行中,依次输入

# gdb命令行中输入
source debug_lib.py 
simple_command
1
2
3

输出会被保存到 log.txt 中

如果想要直接一条命令执行,中间不输入其他命令,也可以执行下面的命令

gdb -q \
    -ex 'set debuginfod enabled on' \
    -ex 'set pagination off' \
    -ex 'source debug_lib.py' \
    -ex 'simple_command' \
    -ex 'quit' \
    --args ./aes_example testMess
1
2
3
4
5
6
7

3、解析log文件

接下来运行 main.py

python ../../main.py -r rules -l log.txt
1

会得到分析结果。

工具MASC使用记录
从服务器下载文件

← 工具MASC使用记录 从服务器下载文件→

最近更新
01
云服务器网站证书更新
10-19
02
linux安装miniconda3
10-19
03
工具CryptoLLM部署记录
10-19
更多文章>
Theme by Vdoing | Copyright © 2025-2026 Myeeygo | 鲁ICP备2026016472号-3 | 鲁公网安备37028202001294号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式