Tools to solve CTF crypto challenge.
In this project, I integrate some source code made by myself and collected from other great write-ups, blogs, and projects, also reimplementing to keep the project structure neat.
I always use those methods to solve crypto problem and put new attack or method after the CTF, hoping this project will bring help for other CTF players.
It’s still incomplete for now. Pull requests are always welcome.
cytro.RSA
Here provides some factorize formula to factor large RSA modulus and some common RSA attacks.
RSAKey((n, e, d))
- Same as Crypto.PublicKey.RSA
added some lazy functions. d
is optional, determine is pubkey or privkey
encrypt(m)
- return the encryption of messagedecrypt(c)
- return the decryption of cipherload_pem(pem)
- Read Key by Stringload_file(key.pem)
- Read Key by file pathcal_private(e, p, q)
- return the decrypt exponentsolve_crt(remainders, modules)
- solve Chinese Remainder Theoreme
factordb(n)
- API for getting well-known prime in FactorDBgcd_multiple_keys(keys)
- GCD for Multiple keysfactordb(n)
- Check the prime is factorize in FactorDB or notfermat_factorization(n)
- Fermat Factorizationwiener(n, e)
- Wiener Attackboneh_durfee(n, e)
- Boneh Durfee Attackwilliams_pp1(n)
- Williams p+1 Attackpollard_rho(n)
- Pollards-Rhopollard_pm1(n)
- Pollards P-1 (Go through every primes)pollard_brute(n)
- Pollards P-1 (Go through every integer)n/2
bits of the private keyDecoding despite invalid Public Exponent
hastad_broadcast(c, N)
- Hastad’s Broadcast Attackcommon_modular(set1, set2)
- Common Modulus, Common public Exponent [set:(N, e, c
)]franklin_reiter(n, e, c1, c2, r, a=1)
- Franklin Reiter Related Message Attack :coppersmith
- Coppersmith Attackcoppersmith_shortpad
- Coppersmith Shortpad Attackpartial_m()
- Known Partial bits of m
, recover.partial_p()
- Known Partial bits of p
, recover.partial_d()
- Known Partial bits of d
, recover.recover_key()
- Known Partial bits of d
, recover.bleichenbacher_06
- Attack on (e=3
) python-rsa signature.noveltyprimes(n)
smallq(n)
smallfraction(n)
mersenne_primes(n)
cytro.DSA
cytro.CBC