Railfence、不僅僅是Morse、混合編碼、冪數加密、easy_RSA、Normal_RSA(新手詳細!!!)

2020-09-20 11:00:44

Railfence

在這裡插入圖片描述
線上W型柵欄解密

在這裡插入圖片描述

不僅僅是Morse

密碼機器網頁解碼
在這裡插入圖片描述

在這裡插入圖片描述
線上培根解密
在這裡插入圖片描述

混合編碼

線上base64解碼
在這裡插入圖片描述
Unicode解碼
在這裡插入圖片描述
再次base64
在這裡插入圖片描述
或者用站長之家base64直接轉2次
在這裡插入圖片描述
然後同上在按一次base64
我想找線上ASCII轉字元 但是隻能一個一個轉或者自己按照表格對 或者 跑指令碼
在這裡插入圖片描述

e='/119/101/108/99/111/109/101/116/111/97/116/116/97/99/107/97/110/100/100/101/102/101/110/99/101/119/111/114/108/100'
e=e.strip('/')
f=[]
f=e.split('/')
flag=''
for i in f:
    flag+=chr(int(i))
print('cyberpeace{'+flag+'}')

冪數加密

先把分隔用的0替換掉,可以手動解出對應得字母
在這裡插入圖片描述
雲影密碼
在這裡插入圖片描述

a='8842101220480224404014224202480122'
s=a.split('0')
flag=''
for i in range(len(s)):
    list=[]
    for j in s[i]:
        list.append(j)
    b=0
    for k in list:
        b+=int(k)
    flag+=chr(b+64)    #+64是大寫 +96是小寫 
print('cyberpeace{'+flag+'}')

easy_RSA

在這裡插入圖片描述
過程可瞭解這篇blog

import primefac
def modinv(a,n):
    return primefac.modinv(a,n) % n

p = 473398607161
q = 4511491
e = 17

d=modinv(e,(p-1)*(q-1))
print(d)


或者

import gmpy2

p = 473398607161
q = 4511491
e = 17

s = (p-1)*(q-1)
d = gmpy2.invert(e,s)
print('flag is :',d)

Normal_RSA

1、

線上分析PEM檔案
得到 n,e
在這裡插入圖片描述

2、

factor線上網站得到 p,q
在這裡插入圖片描述
或者開啟kali自帶的openssl 獲得 e 和 十六進位制的 n 再轉換成十進位制
在這裡插入圖片描述

在這裡插入圖片描述

已知p,q,n,e

p=275127860351348928173285174381581152299
q=319576316814478949870590164193048041239
n=87924348264132406875276140514499937145050893665602592992418171647042491658461
e = 65537

3、

開啟kali利用rsatool
1、 下載連結 解壓縮複製到kali桌面
2、裝pip

 wget https://bootstrap.pypa.io/get-pip.py
 sudo python get-pip.py

3、裝setuptools

sudo pip install setuptools

4、裝gmy

sudo apt-get install libgmp-dev

5、裝gmpy

pip install gmpy

6、裝pyasn1

pip install pyasn1 

7、cd進入rsatool-master目錄

 sudo python setup.py install

得到rsatool==1.0就可以了
在這裡插入圖片描述
輸入命令得到 private.pem

python rsatool.py -o private.pem -e 65537 -p 275127860351348928173285174381581152299 -q 319576316814478949870590164193048041239

在這裡插入圖片描述
請先把 flag.enc 放進rsatool資料夾裡 在此目錄下輸入

openssl rsautl -decrypt -in flag.enc -inkey private.pem

在這裡插入圖片描述
原理是用公鑰public.pem解出私鑰private.pem,再用私鑰解出flag

看了很久的wp,感覺對新手很不友好,要麼是python指令碼,但是一執行少了這模組 比如gmpy2 或者lib.RSAutils,或者模組好不容易都有了,結果其中某一行報錯?很迷惑,,,

膜拜下大佬 D001UM3 的部落格
直接秒啊~~~~~~ 感謝!!!
在這裡插入圖片描述
話說好像win裝gmpy2更方便…
附上連結
但是開啟了kali那還是直接再kali裝吧

1、安裝libnum
在這裡插入圖片描述

git clone https://github.com/hellman/libnum.git

cd libnum

python setup.py install

2、安裝gmpy2 參考部落格
在這裡插入圖片描述

sudo apt-get install libgmp-dev
sudo apt-get install libmpfr-dev
sudo apt-get install libmpc-dev
sudo pip install gmpy2    //或者pip3

3、題目給了一個公鑰檔案public.pem和密文flag.enc,直接用 --key 或 -k 指定公鑰,用 --decrypt 指定密文件案,如下

python solve.py  -k pubkey.pem --decrypt flag.enc

在這裡插入圖片描述