To set up the virtual environment, source it, install the requirements, and run the application, follow these steps:
-
Navigate to the project directory:
cd ./src
-
Create a virtual environment:
python3 -m venv venv
-
Activate the virtual environment:
- On Linux/macOS:
source venv/bin/activate
- On Windows:
.\venv\Scripts\activate
- On Linux/macOS:
-
Navigate to the
src
directory:cd src
-
Install the required packages:
pip install -r requirements.txt
- Run the application:
python verify.py
-
docs: Contains writeup information.
design_choice.html
: Document detailing design choices.ServerArchitecture.png
: Image depicting server architecture.verify_checksums.html
: Document explaining checksum verification.verify_digital_signature.html
: Document explaining digital signature verification.writeup.html
: General writeup.
-
src: Contains the solution files.
asn1_class_models/
: Directory containing ASN.1 class models.challenge_packet.py
: Script for handling challenge packets.checksum_handler.py
: Script for checksum handling.checksum_tracker.py
: Script for tracking checksums.clear_data_files.sh
: Script for clearing data files.crypto_operations.py
: Script for cryptographic operations.file_data_checksums.py
: Script for file data checksums.generic_error.py
: Script for handling generic errors.packet_error.py
: Script for handling packet errors.packet_parser.py
: Script for parsing packets.requirements.txt
: List of required Python packages.server.py
: Script for server operations.verify.py
: Main script for verification.cat.jpg
,key.bin
,payload_dump.bin
: Supporting files for the solution.
-
Writeup.html: The table of contents for the
docs
directory.
- Ensure the virtual environment is activated whenever running scripts or installing packages.
- Refer to the
Table_of_contents.html
file in the root directory for a comprehensive overview of the documentation.
line 379 in server.py is supposed to enable the multi processing to satisfy the asynchronous needs of client connection. Unfortunately I have an issue where the logs aren't being logged. Ideally if this bug was worked out then all aspects of the design should've been met
line 382 is what I used for local development to make it easier to debug and test. This works and gives the expected results. Unfortunately this is also synchronous and not multi process.