# Crypto
## Rivest Shamir Adleman```These 3 guys encrypted my flag, but they didn't tell me how to decrypt it.
File: enc.txt```
`enc.txt` content:```n = 408579146706567976063586763758203051093687666875502812646277701560732347095463873824829467529879836457478436098685606552992513164224712398195503564207485938278827523972139196070431397049700119503436522251010430918143933255323117421712000644324381094600257291929523792609421325002527067471808992410166917641057703562860663026873111322556414272297111644069436801401012920448661637616392792337964865050210799542881102709109912849797010633838067759525247734892916438373776477679080154595973530904808231e = 65537c = 226582271940094442087193050781730854272200420106419489092394544365159707306164351084355362938310978502945875712496307487367548451311593283589317511213656234433015906518135430048027246548193062845961541375898496150123721180020417232872212026782286711541777491477220762823620612241593367070405349675337889270277102235298455763273194540359004938828819546420083966793260159983751717798236019327334525608143172073795095665271013295322241504491351162010517033995871502259721412160906176911277416194406909```
With http://www.factordb.com we can see the factors p and q of N:```p = 15485863q = 26384008867091745294633354547835212741691416673097444594871961708606898246191631284922865941012124184327243247514562575750057530808887589809848089461174100421708982184082294675500577336225957797988818721372546749131380876566137607036301473435764031659085276159909447255824316991731559776281695919056426990285120277950325598700770588152330565774546219611360167747900967511378709576366056727866239359744484343099322440674434020874200594041033926202578941508969596229398159965581521326643115137```
``` python$ python2>>> p = 15485863>>> q = 26384008867091745294633354547835212741691416673097444594871961708606898246191631284922865941012124184327243247514562575750057530808887589809848089461174100421708982184082294675500577336225957797988818721372546749131380876566137607036301473435764031659085276159909447255824316991731559776281695919056426990285120277950325598700770588152330565774546219611360167747900967511378709576366056727866239359744484343099322440674434020874200594041033926202578941508969596229398159965581521326643115137>>> N = p * q>>> e = 65537>>> phi = (q - 1) * (p - 1)>>> from Crypto.Util.number import inverse>>> d = inverse(e, phi)>>> cipher = 226582271940094442087193050781730854272200420106419489092394544365159707306164351084355362938310978502945875712496307487367548451311593283589317511213656234433015906518135430048027246548193062845961541375898496150123721180020417232872212026782286711541777491477220762823620612241593367070405349675337889270277102235298455763273194540359004938828819546420083966793260159983751717798236019327334525608143172073795095665271013295322241504491351162010517033995871502259721412160906176911277416194406909>>> plaintext = pow(cipher, d, N)>>> print plaintext49459207073075609387052389022856465595244842985649235071628181272612221410724680024945533>>> print hex(plaintext)[2:-1].decode('hex')csictf{sh0uld'v3_t4k3n_b1gg3r_pr1m3s}```
The flag is: `csictf{sh0uld'v3_t4k3n_b1gg3r_pr1m3s}`
## little RSA```The flag.zip contains the flag I am looking for but it is password protected.The password is the encrypted message which has to be correctly decrypted so I can useit to open the zip file.I tried using RSA but the zip doesn't open by it. Can you help me get the flag please?
Files: a.txt flag.zip```
`a.txt` content:```c=32949n=64741e=42667```
We will crack the rsa cipher:``` python$ python2>>> p = 101>>> q = 641>>> N = p * q>>> e = 42667>>> phi = (q - 1) * (p - 1)>>> from Crypto.Util.number import inverse>>> d = inverse(e, phi)>>> cipher = 32949>>> plaintext = pow(cipher, d, N)>>> print plaintext18429```
We extract the encrypted file `flag.txt` from the archive `flag.zip` with the password `18429` and we get the flag
The flag is: `csictf{gr34t_m1nds_th1nk_4l1ke}`
## Quick Math```Ben has encrypted a message with the same value of 'e' for 3 public moduli and got the cipher texts.n1 = 86812553978993 n2 = 81744303091421 n3 = 83695120256591c1 = 8875674977048 c2 = 70744354709710 c3 = 29146719498409Find the original message. (Wrap it with csictf{})```
I was inspired by the explanation https://www.johndcook.com/blog/2019/03/06/rsa-exponent-3/
``` python$ python2>>> N = [86812553978993, 81744303091421, 83695120256591]>>> c = [8875674977048, 70744354709710, 29146719498409]>>> from sympy.ntheory.modular import crt>>> x = crt(N, c)[0]>>> print x319222184729548122617007524482681344```
Thanks to https://www.calculator.net/root-calculator.html, we get the cube root of `319222184729548122617007524482681344`: it's `683435743464`
And `683435743464` is `h45t4d` in hexadecimal
The flag is: `csictf{h45t4d}`