Advertisement
Guest User

Untitled

a guest
Nov 23rd, 2014
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.10 KB | None | 0 0
  1. import sys
  2. import socket
  3. import select
  4. from Crypto.PublicKey import RSA
  5. from Crypto.Cipher import PKCS1_OAEP
  6. from base64 import b64decode
  7.  
  8. def encrypt_RSA(key, message):
  9.     rsakey = RSA.importKey(key)
  10.     rsakey = PKCS1_OAEP.new(rsakey)
  11.     encrypted = rsakey.encrypt(message)
  12.     return encrypted.encode('base64')
  13.  
  14. with open('key_public.pem', 'r') as f:
  15.     chiave=f.read()
  16.     f.close()
  17.  
  18. def decrypt_RSA(key, package):  
  19.     rsakey = RSA.importKey(key)
  20.     rsakey = PKCS1_OAEP.new(rsakey)
  21.     decrypted = rsakey.decrypt(b64decode(package))
  22.     return decrypted
  23.  
  24. with open('key_private.pem', 'r') as f:
  25.     chiave2=f.read()
  26.     f.close()
  27.  
  28. def chat_client():
  29.  
  30.     host = raw_input("Inserisci l'ip o l'hostname del server\n")
  31.     port = input("Inserisci la porta su cui comunicare\n")  
  32.     nick=raw_input("Inserisci il tuo nickname\n")
  33.     nick=nick + ": "
  34.     s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  35.     s.settimeout(2)
  36.      
  37.     # connect to remote host
  38.     try :
  39.         s.connect((host, port))
  40.     except :
  41.         print 'Connessione non riuscita'
  42.         sys.exit()
  43.      
  44.     print 'Connessione avvenuta con successo, adesso puoi iniziare a messaggiare'
  45.     while 1:
  46.         socket_list = [sys.stdin, s]
  47.          
  48.         # Get the list sockets which are readable
  49.         read_sockets, write_sockets, error_sockets = select.select(socket_list , [], [])
  50.  
  51.         for sock in read_sockets:            
  52.             if sock == s:
  53.                 # incoming message from remote server, s
  54.                 data = sock.recv(4096)
  55.                 if not data :
  56.                     print '\nDisconnesso dal server'
  57.                     sys.exit()
  58.                 else :
  59.                     #print data
  60.                     b=decrypt_RSA(chiave2, data)
  61.                     sys.stdout.write(b)            
  62.             else :
  63.                 # user entered a message
  64.                 msg = sys.stdin.readline()
  65.                 msg = nick + msg
  66.                 a=encrypt_RSA(chiave, msg)
  67.                 s.send(a)
  68. if __name__ == "__main__":
  69.  
  70.     sys.exit(chat_client())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement