You will design and implement a program in Python based on either one of the given scenarios or on an idea proposed by you and agreed with the lab tutor. If the latter is the case, the system you will produce would have to be of sufficient complexity.
This is a text based system program based on an idea of your choice and it should support the following:
Login system with safely stored password (e.g. using encryption, hashing algorithm...etc.)
The program must be based on client/server architecture: The server must allow at least one client to connect and exchange messages.
Password checking should be done on the server side.
To write some information in a file named [url removed, login to view] – it should also scan for the file. Once found, the program should display the location of the file.
In addition, you must implement one of the following scenarios (choose one):
Parallel conversations between different people on different clients.
DNS Server. This requires you to program and simulate a DNS server. The server must allow multiple clients to resolve domain names to their associated IP address. The server should cache the DNS to IP table locally. A protocol and messaging system would be required to deal with resolving addresses. The program should store addresses / IP address programmatically (either hard coded or loaded from a file into a data structure). You are required to research how DNS works (the original RFC can be found at: HYPERLINK "[url removed, login to view]" [url removed, login to view]).
A security scanner to identify the IP addresses, host names of machines and open ports within a segment of a LAN.
To read, write, and send simple email messages.
A program feature to count how many files are on a file system and display summary information regarding the total number of bytes used by all files and a breakdown of the number of bytes used by files with common file extensions (for example, .exe, .com, .dll, .txt, .docx or others of your own choice).
A feature of your own choice but this must be agreed with the lab tutor before starting. If you choose this option, your system must be non-trivial and offer sufficient complexity. You will need to describe what the proposed feature will accomplish and why it will be complex to do before approaching the lab tutor.