app.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import socket
  2. import base64
  3. import threading
  4. from Crypto.Cipher import AES
  5. flag = 'HM{3cb_0r4cl3}'
  6. key = '12345678abcdefgh'
  7. BIND_IP = '192.168.0.12'
  8. BIND_PORT = 8000
  9. def pad(raw):
  10. if (len(raw) % 16 == 0):
  11. return raw
  12. padding_required = 16 - (len(raw) % 16)
  13. padChar = b'\x00'
  14. data = raw.encode('ascii') + padding_required * padChar
  15. return data
  16. def handle_client(client_socket):
  17. client_socket.send(bytes('I will send you AES(<input>+flag):\n'.encode('ascii')))
  18. request = client_socket.recv(1024)
  19. string = request.decode('ascii').rstrip()
  20. cipher = AES.AESCipher(key, AES.MODE_ECB)
  21. ciphertext = base64.b64encode(cipher.encrypt(pad(string+flag)))
  22. client_socket.send(ciphertext)
  23. client_socket.close()
  24. def tcp_server():
  25. server = socket.socket( socket.AF_INET, socket.SOCK_STREAM)
  26. server.bind(( BIND_IP, BIND_PORT))
  27. server.listen(5)
  28. print("[*] Listening on %s:%d" % (BIND_IP, BIND_PORT))
  29. while 1:
  30. client, addr = server.accept()
  31. print("[*] Accepted connection from: %s:%d" %(addr[0], addr[1]))
  32. client_handler = threading.Thread(target=handle_client, args=(client,))
  33. client_handler.start()
  34. if __name__ == '__main__':
  35. tcp_server()