#!/usr/bin/env python

from Crypto.PublicKey import RSA

alice_n = long("D5B770AB6D7117B317F6AE1EDF1D27DFFE58A6E6E7DA9C4BAC92AD6A33975086E55052B3C87C177B76777FA888B901B357A03262B66A9BA146F494FEEBF2A51EEA8B81D5FF4D02ABD419E6A7E1B4428831BAFF9A89F3F134A4859AE00404CF037E05090E27F394B879C98B39799062734A8CED73B97C9E3E51072693AF095B0D4E573615C6C448D638FF6617454BEBE8AA6AA8F61E971110A1CEA38BF515B6BE98FC1A046E028D976AA105359B758AA26DD0BA65126FDF452EB1CAE2A3BD3C795BEAA432DC8AA569C9FB8047E5AE3F856C3F3F5A8A4FA5B9C610DEE35039D295FE4FEB8145EF482069BE501F8578F1829A5E7616E2CF98CAB25433189B3457D9", 16)
alice_e = long("10001", 16)

alicePubKey = RSA.construct((alice_n, alice_e, ))

alice_leak_priv = """-----BEGIN RSA PRIVATE KEY-----
MIIEpgIBAAKCAQEA1bdwq21xF7MX9q4e3x0n3/5Ypubn2pxLrJKtajOXUIblUFKz
yHwXe3Z3f6iIuQGzV6AyYrZqm6FG9JT+6/KlHuqLgdX/TQKr1Bnmp+G0Qogxuv+a
ifPxNKSFmuAEBM8DfgUJDifzlLh5yYs5eZBic0qM7XO5fJ4+UQcmk68JWw1OVzYV
xsRI1jj/ZhdFS+voqmqo9h6XERChzqOL9RW2vpj8GgRuAo2XaqEFNZt1iqJt0Lpl
Em/fRS6xyuKjvTx5W+qkMtyKpWnJ+4BH5a4/hWw/P1qKT6W5xhDe41A50pX+T+uB
Re9IIGm+UB+FePGCml52FuLPmMqyVDMYmzRX2QIDAQABAoIBAQCLah8VtU8RJsN7
KBr7cQmSFVm/huG4ujyjVwvJO955qYXt4AVnw4uN/rn1jPujtHhJsTctLdJds9eV
tZyWTrNod5iKGg9xLUzqD/tniNUOkcnfMt6dH4U50hlV7sywVlrw2lgN5AICAlVw
JGJZ6tZOX1OPku5tXM1KDmAb9xMjUVmPSyVEKb/JgMY8JC8OlxlA4HDKsHUzMd34
AUmB3HZ7hrCMp4UyadV7tJesvNnT2epm0wGbj0+cG6vPrcFXGTRR5NnTT+TASSwQ
sye/McA+ZisqoEWBj2zNVkkeSBPVo6v2g97b75CVAuJnVpBQnlKzM4O4KgK4aNjR
KiBjuLwBAoGBAOWCdZ9eiX9KkzD47UVG0vmR05BR4Md7KhtaEXSTSO8iGzWkN+kX
jUymYBz6OMdmOL5HTJnGf0zIQQnZd9VeUdTZLyNElfC9qv+ZfcqjeipWDk7usgM2
OQtnypChLR5hUV/6n7BKp5nkCooIbPJ5V5mekrandTpcx6WEhitKcFmzAoGBAO5i
VBNw9D+oYweL87SaI20JTHOXx2RzLO/6Ict7oedGqfdl8TPmgQLgjXAUjlRdlojT
aJHqf0KD81trg/9lRcio57JqMZIkyaOFdqd+/CJPVBvnM1pxD0cbMLXMw8PjI6ab
hlK1D9hdNqID6EbiMjm9rMKfcRAL2MqMNXHU1KpDAoGBAOI1DV2AviCaDi1Mi/+l
6LdWxaEPMm8qs7u1sFKoAFDB2vOp4fl53yjXKxAkh+XwmKjieVtvS3UQQxpEH1pL
1nflgBJQvUBEkM/QJy2cpwInQ38EwKttvBfDuuGGGoRBAwWIbfBCBKMnIkQePdNX
ScH9izlAH8jgPV6kGeF9QvMFAoGBANSC4+DQ+W0md+Hqab+/CYXSnE0QKbjq1Ey6
+BWmiZbb7/mU74oNG0WtWWlpadjb9a7UiIxMOFbbur7tAidT6PoRWTw8XyShlwAn
ord/BNaxUZHucmFWGQCSxMHNYVfnzYhhbUWeFBoWPvX/9bn7PDstVC3MZcagSQuI
IrzvtwZxAoGBAI+yx8FrmuZJdBnqBVNSkacHvqGZp31toElSGkw7e/b1j9vFyAP0
j5nFpvv7qxjygGxhB0i/nsoN9lkVP35+IlKGYlfrNVEWc3ORFqALf/60H1o93z4i
p2dOGLBXYm1vGJCjkZBtLgfyTwUogEObYnhk/FBCxHRfxuZhu3xKLNcR
-----END RSA PRIVATE KEY-----"""

alicePrivKey = RSA.importKey(alice_leak_priv)
plaintext = "Super Secret Message"

ciphertext = alicePubKey.encrypt(plaintext, None)[0]
decrypted_plaintext = alicePrivKey.decrypt(ciphertext)

assert(plaintext == decrypted_plaintext)

print "[+]Ciphertext: [%s]" % (ciphertext.encode('hex'))
print "[+]Plaintext: [%s]" % (decrypted_plaintext)