Sunday, 6 December 2015

The final project

Finally made it... the project for this semester is finished.
It's quite impressive to make something out of nothing and even more impressive when it actually works and it's been great to help create an application that could actually be useful at some point in my life. I must say at this point, the group project included 4 other people and I and I was not responsible for too much of the coding, more project management!

Well, when I say useful... it's useful for talking to classmates in lectures when you've got nothing else to do. The project is basically an IRC chat server that works over the internet. Starting it is really simple. Just run a script that will always give you the most up to date version!

As soon as you've run this script... you're ready to log in. Of course the project being on a private repository, you must be added to a list of contributors first!

Once the program is downloaded you can log in and chat! We can see the server side on the right hand side of the screen has accepted the connection. In this instance, the server is running on the local host. We can also see we have a new connection from a client

Basic outlines of the project:

  • Works using the TCP protocol across any network (you can run it locally) or run it through the internet, which it does by default
  • Included user authentication so that users individually log in and do not connect until they have logged in
  • All messages are encrypted  and the initial connection is encrypted with a public key, until a key exchange has taken place
  • Also supports a file transfer system over SFTP (using a module called paramiko in python which controls the SSH traffic) allowing you to upload and download
  • The normal chat system uses the socket module in python and each client has their own socket on the server... each socket in a list also a generated key for encrypted message exchange
  • Runs on all linux systems! 
  • Very lightweight client and server

Possible improvements for the project:

  • Generating a new public/private key pair on a regular basis and send the keys to the clinents
  • Using compression for the file transfer to speed up uploads and downloads from the server
  • Attempt (again) at making a GUI using Tkinter included in python. My first attempt was successful on windows, just not on anything else! 
  • Have user-specific directories on the server for file transfer, meaning a user could have a public and private area for storing files. Could be done by CHMOD.
  • Impoving general security and making it less vulnerable to basic attacks, like DDoS

Things that personally went well:

  • I enjoyed the project management and deadlines were met on a regular basis, which helped to not cause issues later on
  • I was able to get involved in more than one aspect of the project, despite being project manager
  • THE SERVER AND CLIENT actually work! 
  • High level of understanding for how the code works
  • AES key was a good way of making sure that the messages were encrypted

No comments:

Post a Comment