Advertisement
Guest User

Untitled

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