Skip to content

A secure Python client communicates with an ESP32 server via serial connection. Utilising HMAC-SHA256, AES-256, and RSA-2048, it ensures encrypted, authenticated, and time-sensitive IoT transactions. Features Tkinter GUI, LED control, and session management for enhanced security.

License

Notifications You must be signed in to change notification settings

The-R4V3N/DataIntegrity-Security_Project

Repository files navigation

Hey 👋, I'm The-R4V3N

Connect with me

github dev.to linkedin facebook

Welcome! Glad to see you here

DataIntegrity-Security_Project

Examination Project of my Education as Advanced Software Developer Embedded Systems

License and Tools used

License: GPL v2 Visual Studio Code C++ Python Client GUI made with Tkinter ESP32

Table of Contents

Media

  • Project Overview

Project Overview

  • System Architecture UML Diagram

System Achitecture

  • Sequence Security Diagram

Sequence Security Diagram

  • Sequence Diagram

Sequence Diagram

Features

  • This project showcast a secure communication between a client and a server. The client is a desktop application written in Python 3.10.12 and the server is a ESP32 microcontroller written in C++.

  • The communication is secured using the following protocols:

    • HMAC-SHA256
    • AES-256
    • RSA-2048
  • The client can send requests to the server and the server will respond to the client's requests.

  • The Following requests are implemented:

    • Core Temperature reading
    • LED control
  • The server can handle only one client session at a time.

  • Sessions will expire after 1 minute of inactivity.

Prerequisites

  • Python 3 with the following librarys: Tkinter, pyserial, python-mbedtls
  • PlatformIO (for building and uploading firmware to the ESP32)
  • ESP32 Used in this Project is a Olimax ESP32 Development Board

Building

  • Build the Server: Execute platformio run in the server directory to compile the project.

Execute

-Using Makefile: This project has a Makefile that can be used to build and run the project. To build and run the server execute make server in the root of the project. To run the client execute make client in the root of the project. Additionally, you can run make clean to remove all compiled files and cache files. You also have the option to use make .PHONY to run all the above commands in sequence. Starting with the server, then the client.

-Run the Server: Execute platformio run --target upload to upload the compiled code to the Olimax ESP32-EVB board.

-Run the Client: Execute python3 -m client.src.client in the root directory of the project to start the client application.

Desktop Client and Server

  • The Desktop Client is a Python application with a basic GUI made with Tkinter.
  • The servier is a ESP32 microcontroller that communicates with the client over serial communication.

Dependencies

  • PlatformIO: An ecosystem for IoT development.
  • C++ Standard Libraries: For core functionalities.
  • ESP32-EVB Board Support: Specific libraries and drivers for the Olimax ESP32-EVB board.
  • Python 3.10.12: The core programming language used.
  • Tkinter: A Python library for creating the graphical user interface.
  • Pyserial: Essential for handling serial communication.
  • python-mbedtls: Provides security features like encryption.

License

Additional Information

  • Detailed Documentation: Find comprehensive documentation for each module in the Respective README file folder.
  • Client README: Client README
  • Server README: Server README

The-R4V3N More about me can be found on my Website

About

A secure Python client communicates with an ESP32 server via serial connection. Utilising HMAC-SHA256, AES-256, and RSA-2048, it ensures encrypted, authenticated, and time-sensitive IoT transactions. Features Tkinter GUI, LED control, and session management for enhanced security.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published