Reference no: EM133083222
Programming and Algorithms - Brute-Forcing a Password
Learning Outcome 1: Understand basic theoretical aspects that apply to programming
Learning Outcome 2: Design simple software to meet given specifications
Task: Tasks are to be undertaken in the Python programming language. You will be expected to include comments in your code to explain the behaviour of your code and provide a justification of your algorithm selection. You are also strongly advised to test your code for compilation on a system other than your own, prior to submission. Non-compiling code will not pass, see the marking rubric for further information.
You will create GitHub private repository to store your source-code and manage version control of your work. Evidence of version control must be included in your regular commits to the repository over the period between the hand out date and due date. Your eventual submission via TurnItIn will link to that repository which must include all of your source-code.
The purpose of this assignment is to create an application whereby a user can insert a MD5 hash via the command-line or a file and brute-force it to decrypt the password. The assignment has been split into a collection of mini-tasks to help you build up the overall application. A CSV file will be provided for this task with a MD5 hash to brute-force, along with the password in plain-text for debugging.
The password hash used to check your code will consist of numbers, letters and special characters that are typically found on a UK-layout keyboard. The password will also be no more than five characters long. You do not need to use a salt when encrypting the guessed password.
Assignment Tasks
To successfully complete this assignment you are required to complete the following tasks. Each task has a weight that is attributed towards a portion of the overall grade.
Task 1: User Input
For this task you are required to accept a user input and store it appropriately to be used in the decryption function. It will be expected that the user can insert either a single hash, or multiple hashes via the command line.
Task 2: File Input
For this task you will be asked to read a supplied CSV file that will consist of MD5 hashes. The file may consist of a single hash, or multiple hashes, and it will be expected that these are stored appropriately.
Task 3: Brute Forcing the Hash
For this task, you are expected to take the collection of hashes (either user-inserted, or from a file) and decrypt them.
Each step in the decryption method should be shown in the command line, with the final output of the proposed password and the total amount of time taken for the decryption process.
It will be expected to see that students' have used multiple commits with descriptive messages for each commit. It will also be expected to see that you have made comments in your code to explain the methodology of the function.
Attachment:- Programming and algorithm.rar