parent
0fb19056a2
commit
9f45313c93
@ -0,0 +1,42 @@
|
|||||||
|
from twisted.internet import reactor, protocol
|
||||||
|
from Crypto.Cipher import AES
|
||||||
|
|
||||||
|
PORT = 8005
|
||||||
|
KEY = "@Ecb_aTTack>esew"
|
||||||
|
SECRET = "flag{ese@qq!hooray}"
|
||||||
|
def encrypt_block(key, plaintext):
|
||||||
|
encobj = AES.new(key, AES.MODE_ECB)
|
||||||
|
return encobj.encrypt(plaintext).encode('hex')
|
||||||
|
def encrypt(key, ptxt):
|
||||||
|
if (len(ptxt) % 16 != 0):
|
||||||
|
ptxt = ptxt + "*" * (16 - (len(ptxt) % 16))
|
||||||
|
return encrypt_block(key, ptxt)
|
||||||
|
class Server(protocol.Protocol):
|
||||||
|
|
||||||
|
def connectionMade(self):
|
||||||
|
msg = '''
|
||||||
|
Welcome to the AES_ECB Cryptography System
|
||||||
|
To encrypt, enter "encrypt [plaintext]". Ex, encrypt 123
|
||||||
|
1. cliphertext = plaintext + SECRET
|
||||||
|
2. this padding is *
|
||||||
|
\r\n>'''
|
||||||
|
self.transport.write(msg)
|
||||||
|
|
||||||
|
def dataReceived(self, data):
|
||||||
|
try:
|
||||||
|
data = data.strip().split(" ")
|
||||||
|
print (data)
|
||||||
|
if data[0] == "encrypt":
|
||||||
|
response = encrypt(KEY,data[1] + SECRET)
|
||||||
|
else:
|
||||||
|
raise
|
||||||
|
self.transport.write(">" + response + "\r\n>")
|
||||||
|
except:
|
||||||
|
self.transport.write(">Something is wrong here\r\n>")
|
||||||
|
def main():
|
||||||
|
factory = protocol.ServerFactory()
|
||||||
|
factory.protocol = Server
|
||||||
|
reactor.listenTCP(PORT, factory)
|
||||||
|
reactor.run()
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
Loading…
Reference in new issue