Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python3
- from binascii import hexlify
- from binascii import unhexlify
- import socket
- # from curve25519 import Private, Public
- import nacl.secret
- import hmac
- import hashlib
- SERVER = ('mitm.ctfcompetition.com', 1337)
- p = (2 ** 255) - 19
- def ReadLine(reader):
- data = b''
- while not data.endswith(b'\n'):
- cur = reader.recv(1)
- data += cur
- if cur == b'':
- return data
- return data[:-1]
- def WriteLine(writer, msg):
- writer.send(msg + b'\n')
- def ReadBin(reader):
- return unhexlify(ReadLine(reader))
- def WriteBin(writer, data):
- WriteLine(writer, hexlify(data))
- my_key = (p-1).to_bytes(255, 'little').rstrip(b'\x00')
- ss = socket.socket()
- cs = socket.socket()
- ss.connect(SERVER)
- cs.connect(SERVER)
- WriteLine(ss, b's')
- WriteLine(cs, b'c')
- server_public_key = ReadBin(ss)
- server_nonce = ReadBin(ss)
- client_public_key = ReadBin(cs)
- client_nonce = ReadBin(cs)
- print(my_key)
- print(server_public_key, server_nonce)
- print(client_public_key, client_nonce)
- WriteBin(ss, my_key)
- WriteBin(ss, client_nonce)
- WriteBin(cs, my_key)
- WriteBin(cs, server_nonce)
- server_proof = ReadBin(ss)
- client_proof = ReadBin(cs)
- print(server_proof)
- print(client_proof)
- WriteBin(cs, server_proof)
- WriteBin(ss, client_proof)
- auth_data = ReadBin(ss)
- print(auth_data)
- WriteBin(cs, auth_data)
- print(ReadLine(cs))
- mySecretBox = nacl.secret.SecretBox(my_key)
- print(mySecretBox.decrypt(auth_data))
- ss.close()
- cs.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement