这题师兄师姐给足提示了。。
2.然后题目名字提示了这是埃特巴什码。当时真的觉得很离谱。。
浅浅了解一下这个码8
埃特巴什码(Atbash Cipher)是一个系统:最后一个字母代表第一个字母,倒数第二个字母代表第二个字母。
在罗马字母表中,它是这样出现的:
常文:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
密文:Z Y X W V U T S R Q P O N M L K J I H G F E D C B A
1.下载附件
2.看着有点像凯撒,发现是变异凯撒
凯撒密码是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。
恺撒密码的替换方法是通过排列明文和密文字母表,密文字母表示通过将明文字母表向左或向右移动一个固定数目的位置。例如,当偏移量是左移3的时候(解密时的密钥就是3),这时可以使用rot3来表示:
明文字母表:ABCDEFGHIJKLMNOPQRSTUVWXYZ ;
密文字母表:DEFGHIJKLMNOPQRSTUVWXYZABC。
凯撒密码的偏移量为N,就是用rotN来表示。rot是rotate的简写。
研究一下题目8
chgat;cWnSJZ@Q\\7K)Ig
c到f :3
h到l :4
g到l :5(这里题目有问题)
a到g :6
发现就是偏移量在增加
a='chgat;cWnSJZ@Q\\7K)Ig'
q=3
for i in a:
print(chr(ord(i)+q),end='')
q=q+1
1.下载附件之后发现文件被加密需要一个工具爆破rar解压密码:Hashcat
使用方法参考宇宙最强开源破解密码利器:Hashcat 第一篇 - 知乎
hashcat - advanced password recovery
在使用Hashcat进行密码破解的时候需要辅助工具来获取加密文件的Hash,此处选用John the Ripper(点我下载)来获取加密文件的Hash
john也是通过命令行来运行,还需要配置一下环境变量:将john的run目录添加到PATH当中:
把easyrsa.rar放到run目录下在run目录打开cmd命令行运行john:
rar2john.exe easyrsa.rar
输出了rar的哈希值
在Hashcat的主目录打开cmd运行命令:
hashcat.exe -m 13000 -a 3 $rar5$16$3e01eda6ad903866f3e9af32ea371a40$15$4a3904084188c75380e4861930426283$8$6aedbe0f372f9a99 ?d?d?d?d -o out.txt
-m 13000
:指定哈希算法类型为RAR5,对应于编号为13000的哈希模式。-a 3
:指定采用基于规则的攻击模式,即尝试使用规则破解密码。$rar5$16$3e01eda6ad903866f3e9af32ea371a40$15$4a3904084188c75380e4861930426283$8$6aedbe0f372f9a99
:RAR5文件的加密密码的哈希值。?d?d?d?d
:密码中的四个数字位置将被穷举攻击尝试替换成所有的可能性(0-9)。-o out.txt
:将成功破解的密码输出到名为"out.txt"的文本文件中。 BOb给Alice传输了一段数据,通过监听你得到了n=16254707021883930518807493412586769230167 c=15308821457767509487737881728693150346158 e=65537,你可以得到密文吗?
注:此题正解为flag{xxxxxxxxxxx},xxxxxxxxx即为你获取到的数据
使用yafu对n进行分解 yafu安装及使用 - 简书
yafu-x64.exe
factor(16254707021883930518807493412586769230167)
脚本
import gmpy2
p = 134783462951870118163
q = 120598674836603140909
e = 65537
c = 15308821457767509487737881728693150346158
n = p * q
phi = (p - 1) * (q - 1)
d = gmpy2.invert(e, phi)
m = pow(c, d, n)
print(m)
p
和 q
是两个大质数,用于生成 RSA 的公钥和私钥。e
是公钥中的指数。c
是密文,即需要解密的加密后的消息。n
是 RSA 中的模数,即 p
与 q
的乘积。phi
是欧拉函数的值,即 (p - 1) * (q - 1)
。d
是私钥,通过使用 gmpy2 库中的 invert
函数计算得到。最后,使用 pow
函数将密文 c
使用私钥 d
和模数 n
进行解密操作,结果存储在变量 m
中,并打印输出。
flag{2496048176378538008}