一个有意思的解密

第一关

密文

这是给出的密文

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

结语

历经千辛万苦,终于算完了。进群之后发现剩女总是有原因的,跋扈刁蛮,还要照片啥的,于是就退了。
哎,我本以为能碰见知己来着。

阅读 5.6k

推荐阅读

nothing.I am simple

9 人关注
18 篇文章
专栏主页