参加个CTF比赛,发现自己零代码量,什么东西都没有准备,被吊打当然正常,基本的工具常用的代码可以自己提前写好的呀
常用的代码有:
gcd:求两个数的最大公约数
egcd:求满足ax+by=1,当gcd(a,b)=1时,满足式子的x和y
hextoflag:很多题目都是给的字母的ord值:两位两位表示一个字母,转化成chr字符就是flag的
b64:base64解密
b32:base32解密
qp:quickpow,快速幂运算
modinv:求cd=1(mod m),在已知c,m,且gcd(c,m)=1的时候,求得c的逆元d
get_phi_n:求n的欧拉函数(这个是做RSA题专用的分解n,因为n是两个大素数相乘)
attacksamen:RSA公模攻击
原理:
http://www.math1as.com/index.php/archives/360/?utm_source=tuicool&utm_medium=referral
http://bobao.360.cn/learning/detail/3058.html
modequation:求ax=b(mod c)的x,一次同余方程,有解的条件是,b % gcd(a,c)=0
代码如下:
#!/usr/bin/env python
# coding=utf-8
from pwn import *
from gmpy2 import iroot
import hashlib
import base64
import sys
from Crypto.Util.number import bytes_to_long, long_to_bytes
import gmpy2
sys.setrecursionlimit(10000000)
def hextonumber(x):
#1234567890abcdef
#1234567890ABCDEF
if x>='0' and x<='9':
return int(x)
elif x>='A' and x<='F':
return ord(x)-55
else:
return ord(x)-87
def hextoflag(s):
#word='666c61677b7769656e65725f61747461636b5f61747461636b5f796f757d'
#flag{wiener_attack_attack_you}
flag = ''
i = 0
while (i