Fetching...

-

Just a minute...

关键词:随机数素数生成,新年祝福小程序。

脚本创作

这是我在大年三十写的一个程序,当时我正准备去伯克利交流,但由于疫情的缘故,出国变数增大,所以我就打算通过随机数“未卜先知”。以下就是我的脚本:

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#-*- coding:utf-8 -*-
from Cryptodome.Util.number import *

def 成功抵达伯克利():
p = getPrime(512)
q = getPrime(512)
if(p // q < 100000):
return 1
else:
return 0

def 感染新冠肺炎():
p = getPrime(512)
q = getPrime(512)
if(p // q > 100000):
return 1
else:
return 0

def 课程顺利完结():
p = getPrime(512)
q = getPrime(512)
if(p//q < 2):
return 1
else:
return 0

def 选择不去伯克利():
if(感染新冠肺炎()==0):
print("身体健康")
print("万事如意")

def 选择去伯克利():
if(成功抵达伯克利()):
print("学业有成")
if(感染新冠肺炎()==0):
print("身体健康")
if(课程顺利完结()):
print("万事如意")
def 今年我还能去伯克利吗():
p = getPrime(512)
q = getPrime(512)
if(p//q > 2):
选择不去伯克利()
else:
选择去伯克利()


if __name__ == "__main__":
今年我还能去伯克利吗()

运行这个程序,按理说我们通过分支,最终将只有一定的概率能把“身体健康,万事如意,学业有成”三个词都输出,但是实际上的运行结果肯定是这样:

img

大家知道我耍了什么小把戏吗?那就是getPrime函数!

getPrime函数的特性

getPrime函数根据用户输入的需求生成相应位数的随机素数。需要注意的是,这个随机数是有范围的,那就是它的最高位肯定是1。那么如果我们采用的是getPrime(10)的话,得到的数就应该在29~210-1左右。

那么脚本用了什么小伎俩?

在脚本中,我的getPrime函数都是512位的,所以p,q都在25112512之间。那么p//q就在(0.52)之间所以p//q>=2或者p//q<=0.5是不可能成立的。因此相关的分支为无效分支。代码最终只会执行今年我还能去伯克利吗-> 选择去伯克利->成功抵达伯克利->(not)感染新冠肺炎->课程顺利完结的路径,最终的输出就是:身体健康,万事如意,学业有成。


说个题外话,伯克利最终还是没有成行,疫情让我难得的出国游学的机会泡汤了,不过寒假我会再争取一次的。

Related post
Comment
Share
  • ACTF2020密码学部分writeup

    编写的项目文件请参考项目链接。同时欢迎大家访问ACTF2020的所有赛题。喜欢的话请多多资瓷一下,给我们实验室的项目加个Star或者Fork,谢谢。 为了保护服务器的同时不给选手带来更多困难,密码学部分的交互题开了pow算力检测,我也...

    ACTF2020密码学部分writeup
  • 通过python脚本自动插入汇编反调试代码

    研究背景在之前OLLVM项目的研究过程中,我们发现反调试技术对反混淆脚本有一定的干扰作用,如果可以在OLLVM的中间代码中自动化插入反调试代码,那么就可以给OLLVM的代码混淆增加一层保障。 方案分析探讨多种方案以后,我认为最适合在汇...

    通过python脚本自动插入汇编反调试代码
  • 基于门限方案的条形码保密及容错技术

    关键词:门限方案,条形码保密,条形码容错,条形码认证与防伪造。 经历过初期两个小项目的探索,我们项目团队积累了一定的项目研究经验,在老师和16级学长的帮助下,我们把研究方向转到了门限方案的实际应用上。结合市面上用9张合并的条形码提高条...

    基于门限方案的条形码保密及容错技术
  • 基于CRT的物流信息安全处理方案

    关键词:中国剩余定理,密钥分发技术,隐私保护。 引言在2018年11月份的时候,段老师在密码学课上讲到了密钥分发协议,我当时就觉得这个协议很有意思也很有应用前景。后来老师还很主动地分享了一下它的idea,其中一部分就是有关物流单上的信...

    基于CRT的物流信息安全处理方案
  • 基于CRT的新型群文件共享系统

    关键词:隐私保护,权限管理,身份认证,中国剩余定理,密钥分发,密钥更新。 这个项目的是在2019年寒假期间进行的,4月份在中南大学信息安全作品赛答辩,但是由于功能只实现了主体部分,加之我在台上比较胆怯紧张,所以只获得团队三等奖,但是当...

    基于CRT的新型群文件共享系统
  • 安卓反混淆软件探索-deobf

    关键词:代码混淆,代码反混淆及其原理,代码反混淆软件测试与性能对比。 前言我们的大创项目其实是分两方面进行的,一方面,我们从代码混淆的角度比较各种软件对安卓程序的加固能力;另一方面,我们着重针对OLLVM进行反混淆测试。OLLVM集成...

    安卓反混淆软件探索-deobf
  • 记一次安卓代码加固软件的测试过程

    关键词:代码加固,软件测试,原理分析,过程分析。 在大创项目的实践中,我们对市面上的一些安卓代码加固软件进行了采集,经过搜集,发现了几类代码加固方法并分组进行研究。我发现很多代码加固软件都是对java字节码进行混淆与加固,另外一些则选...

    记一次安卓代码加固软件的测试过程
  • 对OLLVM代码加固技术的改进

    1.反静态调试反静态调试可以通过花指令,代码加密,代码加壳等方式实现。 请看图1所示的一段反调试代码: ​ 图1 花指...

    对OLLVM代码加固技术的改进
  • OLLVM代码加固机制分析

    我们通过自己编写测试代码,再用OLLVM的不同指令进行加固,并逆向查看加固效果,加深对代码加固机理的了解。OLLVM目前提供的功能包括控制流平坦化(fla指令),指令替代(sub指令),代码虚拟化(bcf指令)以及虚假控制流(obf指...

    OLLVM代码加固机制分析
  • 对音频缓存加密的探讨

    关键词:缓存解密,批量自动执行脚本,版权保护相关建议。 前段时间,某音乐被爆其缓存文件只使用了简单的异或加密,且容易得到加密密钥为0xa3。原文链接点击这里。以下是我的延伸探讨。 1.对音频缓存的批量解密攻击抱着好奇的心理,我把手机...

    对音频缓存加密的探讨
Please check the parameter of comment in config.yml of hexo-theme-Annie!