lolamontes69

SimpleSSLChat

Nov 24th, 2013
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.28 KB | None | 0 0
  1. """######################################
  2.   # A simple socket to socket SSL chat.#
  3.   ######################################
  4.  
  5. The certificates are created beforehand by the serverside and cert.pem
  6. is given to the client.
  7. (Send it in an email so the NSA can get a copy too :D)
  8. To create certificate and key in bash:
  9.     openssl req -new -x509 -days 365 -nodes -out cert.pem -keyout key.pem
  10.  
  11. Now all I need is somebody intelligent to converse with ;)
  12.                               --lolamontes69
  13. """
  14.  
  15. from socket import *
  16. import ssl, pprint
  17.  
  18. def server_side():
  19.     ipaddy = str(raw_input('Enter IP Address\n >'))
  20.     portno = int(raw_input('Enter Port Number\n >'))
  21.     bindsocket = socket(AF_INET,SOCK_STREAM)
  22.     bindsocket.bind((ipaddy, portno))
  23.     bindsocket.listen(5)
  24.     newsocket, fromaddr = bindsocket.accept()
  25.     connstream = ssl.wrap_socket(newsocket,server_side=True,certfile="cert.pem",keyfile="key.pem")
  26.     while True:
  27.         data = connstream.read()
  28.         print fromaddr,":",data
  29.         resp1 = str(raw_input('Reply\n >'))
  30.         if resp1=="": resp1="received and understood"
  31.         connstream.write(resp1)
  32.         if resp1[:3]=='bye': break
  33.     connstream.shutdown(SHUT_RDWR)
  34.     connstream.close()
  35.     del connstream
  36.     print "Socket closed and deleted."
  37.  
  38. ###############################################################################
  39.  
  40. from socket import *
  41. import ssl, pprint
  42.  
  43. def client_side():
  44.     ipaddy = str(raw_input('Enter IP Address\n >'))
  45.     portno = int(raw_input('Enter Port Number\n >'))
  46.     s = socket(AF_INET, SOCK_STREAM)
  47.     ssl_sock = ssl.wrap_socket(s,ca_certs="cert.pem",cert_reqs=ssl.CERT_REQUIRED)
  48.     ssl_sock.connect((ipaddy, portno))
  49.     fromaddr = repr(ssl_sock.getpeername())
  50.     print fromaddr
  51.     print ssl_sock.cipher()
  52.     print pprint.pformat(ssl_sock.getpeercert())
  53.     while True:
  54.         msg1 = str(raw_input('Enter message to send\n >'))
  55.         if msg1=="": msg1="received and understood"
  56.         ssl_sock.write(msg1)
  57.         data = ssl_sock.read()
  58.         print fromaddr,':',data
  59.         if msg1[:3]=="bye" or data[:3]=="bye": break
  60.     ssl_sock.close()
  61.     del ssl_sock
  62.     print "Socket closed and deleted."
  63.  
  64. ###############################################################################
Advertisement
Add Comment
Please, Sign In to add comment