密码刷题记录(3)

1.easyrsa8

题目

去网站上解析以下公钥SSL在线工具-公钥解析 (hiencode.com)

 得到了e和n

再利用 factordb.com分解n,得到p和q

 脚本如下

import gmpy2
from Crypto.Cipher import PKCS1_OAEP
#PKCS1 OAEP 是一种基于 RSA 和 OAEP 填充的非对称密码
from Crypto.PublicKey import RSA
 
e = 65537
n = 10306247299477991196335954707897189353577589618180446614762218980226685668311143526740800444344046158260556585833057716406703213966249956775927205061731821632025483608182881492214855240841820024816859031176291364212054293818204399157346955465232586109199762630150640804366966946066155685218609638749171632685073
p = 106249972159566919549855203174197828387397831115262336234662051342543151219702510584956705611794290291345944183845955839244363030579896461607496959399297130227066841321473005074379950936513608503266587950271044991876848389878395867601515004796212227929894460104645781488319246866661398816686697306692491058609
q = n//p
 
phi_n = (p-1)*(q-1)
d = int(gmpy2.invert(e,phi_n))
 
rsakey = RSA.importKey(open(r'C:\Users\esnh\Downloads\easyrsa8\public.key', 'r').read())
privatekey = RSA.construct((n,e,d,p,q))#这行代码使用RSA的构造函数RSA.construct()创建私钥对象。构造函数的参数是一个元组,包含了RSA算法所需的参数:模数n、公钥指数e、私钥参数d、大素数p和q。
rsa = PKCS1_OAEP.new(privatekey)#使用私钥对象privatekey创建PKCS1_OAEP对象rsa
m = rsa.decrypt(open(r'C:\Users\esnh\Downloads\easyrsa8\flag.enc', 'rb').read())#使用PKCS1_OAEP对象rsa的decrypt()函数对密文文件进行解密操作
print(m)

得到flag

2.crypto4

题目:p=447685307 q=2037 e=17,提交flag{d}即可

考察的是求私钥d

import gmpy2
p=447685307
q=2037
e=17
phi_n=(p-1)*(q-1)
print("d:",gmpy2.invert(e,phi_n))

 d: 53616899001

3.crypto5

题目:p=447685307 q=2037 e=17 c=704796792,提交flag{m}

求明文m

import gmpy2
p=447685307
q=2037
e=17
c=704796792
n=p*q
phi_n=(p-1)*(q-1)
d=gmpy2.invert(e,phi_n)
print("m:",pow(c,d,n))

m: 904332399012

4.crypto6

题目:密文为U2FsdGVkX19mGsGlfI3nciNVpWZZRqZO2PYjJ1ZQuRqoiknyHSWeQv8ol0uRZP94MqeD2xz+

密钥为 加密方式 名称,区分大小写

以U2FsdGVkX1为开头,应该是Rabbit加密,密钥为Rabbit

Rabbit加密-Rabbit解密-在线Rabbit加密解密工具

5.crypto7 

Ook!!!Brainfuck/Ook! Obfuscation/Encoding [splitbrain.org]

 6.crypyo8

题目:

由题可知,这是BrainFuck,只有以下8种符号

Brainfuck/OoK加密解密 - Bugku CTF

 

 7.crypto9

之后补充!!!!

8.crypto10

题目:

=E7=94=A8=E4=BD=A0=E9=82=A3=E7=81=AB=E7=83=AD=E7=9A=84=E5=98=B4=E5=94=87=E8=AE=A9=E6=88=91=E5=9C=A8=E5=8D=88=E5=A4=9C=E9=87=8C=E6=97=A0=E5=B0=BD=E7=9A=84=E9=94=80=E9=AD=82

quoted-printable编码,用一个“=”后跟随两个十六进制的数字来表示一个非ASCII字符

 Quoted-Printable编码解码在线转换工具-ME2在线工具

9. crypto11

题目:

a8db1d82db78ed452ba0882fb9554fc

32为hash值,猜测MD5,CMD5在线解密

Cmd5 - MD5 Online ,MD5 Decryption, MD5 Hash Decoder

10.crypto0

题目:

gmbh{ifmmp_dug}

凯撒密码,偏移量是25,

 11.ctypto12

题目:

uozt{Zgyzhv_xlwv_uiln_xguhsld},不用看了,没提示

根据flag格式,u对应f,o对应l,z对应a,t对应g

埃特巴什码:最后一个字母代表第一个字母,倒数第二个字母代表第二个字母。

明文:ABCDEFGHIJKLMNOPQRSTUVWXYZ

密文:ZYXWVUTSRQPONMLKJIHGFEDCBA

直接提交不正确,A改为a

flag{atbase_code_from_ctfshow}

12.crypto13

多重base编码

import base64
filename = r"C:\Users\esnh\Downloads\base家族\base.txt"
with open(filename) as f:
    s = f.read()
while True:
    try:
        s = base64.b16decode(s)
        continue
    except:
        pass
    try:
        s = base64.b32decode(s)
        continue
    except:
        pass
    try:
        s = base64.b64decode(s)
        continue
    except:
        pass
    break
print(s)
b'flag{b4Se_Fami1y_Is_FUn}'

  • 16
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值