第一关
密文
这是给出的密文
begin 777 portal.bin
M(R!796QC;VUE#0H-"B,C($ME>0T*#0I24T$@4'5B;&EC($ME>3H@*$XL(#7!T960@=VET:"!T:&4@*BI24T$@4'5B;&EC($ME
M>2HJ+@T*#0I@8&`-"D-/3D-!5"A$14-265!4*#$Y-S,W,BDN=&]3=')I;F>= 1
b = (b*b) % m
return result
def primeTest(n):
q = n - 1
k = 0
while q % 2 == 0:
k += 1;
q /= 2
a = random.randint(2, n-2);
if fastExpMod(a, q, n) == 1:
return "inconclusive"
for j in range(0, k):
if fastExpMod(a, (2**j)*q, n) == n - 1:
return "inconclusive"
return "composite"
def findPrime(halfkeyLength):
while True:
n = random.randint(0, 1=//80*Y./YOI$*@LU"J-Z@UFUWL/%]Q!_EKD0\[2%L*[SR45;._(;/'.L+0%WL5XR$WL,4GXQ9G(:[@&;1Y'0Z"0*P940A,:9
M$W&7+NJ+YL#DXZ9WD,MN=IKT1-(7(,%
MN[*!#TA?04GTUO7L#1+!+=,0``")$
>@7M0Y!TN``&[`Y`$``##!+%.L<1G^P(`````!%E:
`
end
分析
同样解密,发现是个二进制文件,发现文件头是个fd377a58
,然后我们用python的magic模块来分析下文件是什么类型的。
import magic
#读入
data=open(bin_file).read()
#获取类型
magic.from_buffer(data)
#lzma
返回的是lzma
,我们直接用7Z解压,发现一个文本文件。
79955ff7576a0f5a167b3ccb506bed3a d46b6f8c1ea3b812c2bba0edc0e63c85 | Roman Hitman
================================================================
H4sIAAAAAAACA1WPT0+DQBDF7/spRgTttbRsZRPZ1d1Fwg0OBYKEhWqMlwZBqjaF
z+7Win8ylzeT95u8F8Otj4UkjIrCcxCKYzCmA0KqAMvFYFMRYA6SwTVZ4RykvvmU
3GEu9GZTB7DWoXQJvdqi6gRJTKULPVkwai+XBKjvLTDforqAeTsObWMlnS1x0XPm
7XEYMO4k0a6fgcBU6N/g2GGUFj3jni2T6HDouiiH6N0c758eSxWlOXzxAwt+TF3n
edr0z5bOdSv4YITChYkMA3ac+TfPKDuJ71xABGTZlKuuFIxq87CBF1XqUapMs0wj
l5iTVQhtc2a1b80Rmrqs9+scmsGcvZ4nhkp/dfVH18c0n2XEkwVzAQAA
那,很明显下面的又是一个base64加密,我们解密
import base64
str='H4sIAAAAAAACA1WPT0+DQBDF7/spRgTttbRsZRPZ1d1Fwg0OBYKEhWqMlwZBqjaF\
z+7Win8ylzeT95u8F8Otj4UkjIrCcxCKYzCmA0KqAMvFYFMRYA6SwTVZ4RykvvmU\
3GEu9GZTB7DWoXQJvdqi6gRJTKULPVkwai+XBKjvLTDforqAeTsObWMlnS1x0XPm\
7XEYMO4k0a6fgcBU6N/g2GGUFj3jni2T6HDouiiH6N0c758eSxWlOXzxAwt+TF3n\
edr0z5bOdSv4YITChYkMA3ac+TfPKDuJ71xABGTZlKuuFIxq87CBF1XqUapMs0wj\
l5iTVQhtc2a1b80Rmrqs9+scmsGcvZ4nhkp/dfVH18c0n2XEkwVzAQAA'
base64.b64decode(str)
打开发现还是个二进制文件。。。。我去!!!
重复以上步骤,返回的是zip
,我们继续用7z解压,发现终于有点正常了,但是好像还是乱码!
没关系我们继续解密
def caesar_decode(data, num=47):
res = ''
for x in data:
if x in (' ', '\n'):
tmp = x
elif 32 <= (ord(x) + num) <= 126:
tmp = chr(ord(x) + num)
else:
tmp = chr(ord(x) - num)
res += tmp
return res
明文
## Questions
1. The answer to life, the universe, and everything? Google 之
2. The tenth Fibonacci number? Google 之
3. `CONCAT(Date.FromKeyword("GFW sensive day").Format("MMDD", "ISO-8601"), Date.Now.Format("DDmm", , "ISO-8601"))`
# Join US
QQ Group:
* Group number is **CONCAT(D321 O1454 B10101110)**
* Verify CAPTCHA is `CONCAT('K', ANSWER(Q1), ANSWER(Q2), ANSWER(Q3))`
算群号
十进制的321,八进制的1454,二进制的10101110进行组合得到结果:321812174
算答案
第一个谷歌一下是42
第二个谷歌一下或者
def fib(n):
if n == 0:
return 0
if n <= 2:
return 1
return fib(n - 1) + fib(n - 2)
是55
第三个GFW sensive day是1989年6月4日,然后今天的日期拼接天
和分
。
得到答案K42550604xxxx
结语
历经千辛万苦,终于算完了。进群之后发现剩女总是有原因的,跋扈刁蛮,还要照片啥的,于是就退了。
哎,我本以为能碰见知己来着。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。