What is the Assembly Tutor Project?
The Assembly Tutor project is an open-source educational tool designed to guide you through assembly language programming in a hands-on way. The project offers a series of lessons that cover everything from basic concepts like binary math and registers to advanced topics such as anti-debugging techniques and Return-Oriented Programming (ROP) chains.
With this tutor, you can learn by doing — with clear explanations, code samples, and interactive exercises that solidify your understanding. The project is structured in a way that allows learners to progress through different levels, from beginner to advanced, while also gaining practical skills to use in real-world programming scenarios.
Key Features of Assembly Tutor
1. Structured Lessons
The project is divided into various topics and levels, ensuring that you learn at a pace that works for you. The lessons are categorized into the following groups:
-
Introductory Lessons: Learn the basics of assembly, from arithmetic operations to debugging your first programs.
-
Intermediate Lessons: Explore function calls, memory addressing, system calls, and control flow.
-
Advanced Lessons: Dive deep into advanced topics like anti-debugging techniques, ROP chains, and writing position-independent code.
-
Digital World Lessons: Understand networking protocols, file compression formats, malware signatures, and DNS queries.
-
Practice Problems: Apply your skills with problems focused on array indexing, system calls, shellcode analysis, and more.
2. Interactive Learning
Each lesson comes with exercises that help reinforce the concepts being taught. You'll be guided through writing and debugging real assembly programs, ensuring that the knowledge you gain is hands-on and practical.
3. Real-World Application
The project doesn’t just teach syntax; it shows you how assembly programming applies to real-world systems, such as working with memory, interacting with the operating system, and understanding how digital systems communicate.
4. Beginner-Friendly Approach
Even though assembly is a low-level language, the tutor starts with simple concepts and gradually increases the complexity, making it accessible for those who are new to the language. The lessons are designed to be understandable and provide plenty of opportunities to practice.
Getting Started with Assembly Tutor
Prerequisites
To use the Assembly Tutor project, you'll need the following:
-
Python 3.x: Python is used to run the tutor script and interact with the lessons.
-
NASM (Netwide Assembler): This tool is used to compile assembly code. It’s available via most package managers.
-
A Unix-like environment: The tutor is designed to work best in Linux or macOS environments. For Windows users, it’s recommended to use Windows Subsystem for Linux (WSL) for a smooth experience.
Running the Tutor
Once you’ve met the prerequisites, getting started with the tutor is simple. After downloading the project, run the following command to launch the tutor:
python launcher.py
This will prompt you to select a lesson and guide you through the interactive exercises, making it easy to learn at your own pace.
Contributing to the Assembly Tutor Project
The Assembly Tutor project is open-source, and contributions are encouraged! If you're passionate about assembly programming and want to help improve the tutor, you can fork the repository, make your changes, and submit a pull request. Contributions can include new lessons, bug fixes, or enhancements to existing content.
Why Learn Assembly Language?
While high-level languages like Python, JavaScript, and Java dominate modern software development, understanding assembly language can provide several benefits:
-
Deeper Understanding of Computers: Assembly language gives you insight into how the CPU, memory, and operating system interact. It helps you understand low-level operations that are abstracted away in higher-level languages.
-
Optimization: Sometimes, writing in assembly allows you to optimize critical code to make it run faster or more efficiently, especially for performance-critical applications.
-
Security: Knowledge of assembly is essential for areas like cybersecurity, reverse engineering, and exploit development. Understanding how programs interact with memory is key to both defending and attacking software systems.
License and Usage
The Assembly Tutor project is licensed under the MIT License, which allows you to freely use, modify, and distribute the code. To find more information about the licensing, refer to the LICENSE file in the project repository.
Conclusion
Whether you're just starting your journey into programming or you're looking to deepen your understanding of low-level systems, the Assembly Tutor project provides an engaging and hands-on way to learn assembly language. With structured lessons, interactive exercises, and real-world applications, you'll gain a solid foundation in assembly programming and improve your overall programming skills.
Check out the project on GitHub today and start learning assembly the right way!
Assembly Tutor
Welcome to Learn RSA Interactively, a beginner-friendly project designed to teach the foundations of RSA encryption and decryption through interactive Python lessons. Whether you're a student, developer, or cybersecurity enthusiast, this project will walk you through the core principles of RSA with real examples and step-by-step guidance.
By the end of this journey, you’ll not only understand how RSA works but also how to implement and even break it under certain conditions!
๐ง Why Learn RSA?
RSA is one of the most widely used public-key cryptosystems. It forms the backbone of digital security—from securing your emails to protecting online transactions. But understanding RSA can be daunting unless it's broken down into digestible, practical lessons.
That’s where this project comes in: interactive, modular, and fun!
๐ Project Structure
The project is organized into Python-based lessons, each tackling a unique concept in RSA. These lessons are launched via a central launcher script, making it easy to navigate.
๐ Directory Layout
RSA-Teaching-Project/
│
├── lessons/ # All RSA lessons
│ ├── lesson_1_intro_to_rsa.py
│ ├── lesson_2_key_generation.py
│ ├── lesson_3_encryption_decryption.py
│ ├── lesson_4_security_of_rsa.py
│ ├── lesson_5_hacking_rsa.py
│ ├── lesson_6_euler_totient.py
│ └── lesson_7_practical_rsa.py
│
├── tools/
│ └── rsa_tool.py # Additional tool for key management and encryption
│
├── launcher.py # Interactive menu for selecting lessons
└── README.md # Documentation and project overview
Features at a Glance
Here’s what you’ll explore:
-
๐ Introduction to RSA
Understand RSA’s origins and importance in cryptography. -
๐งฎ Key Generation
Learn how to generate public and private keys using prime numbers and modular math. -
๐ Encryption & Decryption
Discover how RSA encrypts and decrypts data with hands-on demonstrations. -
๐ก️ Security of RSA
Explore why RSA is secure and the mathematics that protects it. -
๐งจ Hacking RSA
Get a taste of how weak RSA implementations can be cracked. -
๐ Euler’s Totient Function
Master one of the core functions behind RSA key generation. -
๐ ️ Practical RSA System
Build a real working encryption/decryption system with your own keys.
๐ Getting Started
✅ Requirements
To run the RSA Teaching Project, make sure you have:
-
Python 3.x installed
- These Python libraries:
1. pycryptodome (for cryptographic operations)2. subprocess os(for script management)
Install dependencies with:
pip install pycryptodome
▶️ How to Run the Project
-
Clone the Repository
git clone https://github.com/nemocyberworld/learn-rsa-interactively.git cd rsa-teaching-project
-
Launch the Menu
python launcher.py
-
Choose a Lesson to Start Learning
You’ll see a menu like this:Learn RSA Interactively - Launcher -------------------------------- Select a lesson to run: 1. Introduction to RSA 2. Key Generation 3. Encryption and Decryption 4. Security of RSA 5. Hacking RSA 6. Euler's Totient Function 7. Practical RSA Implementation 0. Exit --------------------------------
๐ Lessons Overview
Each lesson is a self-contained Python script with color-coded output and guided commentary.
๐ฅ Lesson 1: Introduction to RSA
Get a high-level overview of RSA and why it's crucial in cybersecurity.
๐งช Lesson 2: Key Generation
Dive into how RSA keys are created using large prime numbers and modular arithmetic.
✉️ Lesson 3: Encryption and Decryption
Watch the math in action as you encrypt and decrypt sample messages.
๐ Lesson 4: Security of RSA
Understand why RSA is hard to break—hint: it’s all about factoring large numbers.
๐ Lesson 5: Hacking RSA
Learn about real-world vulnerabilities and how poorly configured RSA can be exploited.
๐ข Lesson 6: Euler’s Totient Function
Discover how ฯ(n) is used to compute the private key during key generation.
๐ Lesson 7: Practical RSA Implementation
Put everything together to create your own working RSA system.
๐ค Contributing
Want to make this project even better? Fork the repo, contribute lessons, fix bugs, or enhance features!
Pull requests are always welcome!
๐ License
This project is licensed under the MIT License.
See the LICENSE file for full details.
๐ Acknowledgments
-
RSA was developed by Ron Rivest, Adi Shamir, and Leonard Adleman in 1977.
-
This project uses the pycryptodome library for all cryptographic functionality.
๐ง Ready to learn RSA the fun and interactive way?
Clone the repo, launch the menu, and let’s encrypt!
Learn RSA Interactively
Mr Linux is a gamified, interactive Bash learning platform designed to make you love the terminal. Whether you're a beginner or a seasoned hacker, Mr Linux will sharpen your command-line skills through structured lessons, hands-on practice, and a challenging terminal-based game.
๐ง Built by Captain Nemo
๐ฌ nemo14398@gmail.com
๐️ Last Updated: 20-04-2025
๐ Website: nemocyberworld.github.io
๐งญ Project Structure
mr-linux/
├── main.sh # Entry point for the learning interface
├── config.sh # Global configuration
├── lessons/ # Structured topics and subtopics
│ ├── 01. Intro/
│ ├── 02. File & Directory Management/
│ ├── ...
│ └── 16. Gaming Time/ # Bash-based Mr Linux Game
└── README.md
๐ Features
-
๐งช 250+ interactive Bash lessons
-
๐ Categorized by real Linux topics
-
๐ฎ A gamified Linux challenge mode with 23 levels
-
๐ง Learn by doing: awk, sed, grep, permissions, networking, scripting, and more
-
✅ Tracks your learning and progress
-
๐ป Written 100% in Bash – no external dependencies
๐ Lesson Categories
# | Topic |
---|---|
01 | Intro to Linux & Shell |
02 | File & Directory Management |
03 | Searching & Filtering |
04 | Package Management (Debian & Arch) |
05 | Network Commands |
06 | Process Management |
07 | Disk Usage & Storage |
08 | Archiving & Compression |
09 | Task Management & Scheduling |
10 | Users, Groups, and Permissions |
11 | System Info & Hardware |
12 | System Cleanup & Monitoring |
13 | Cryptography & Hashing |
14 | Text Editors |
15 | Bash Scripting (20 detailed parts) |
16 | ๐ฎ Gaming Time (The Challenge Game) |
๐ฎ Mr Linux Game
Your skills will be tested in the “Gaming Time” section — a multi-level Bash-based challenge arena.
๐งฉ Features:
-
23 handcrafted challenges
-
Topics include permissions, searching, scripting, networking, logs, regex, and more
-
Progress saved to ~/.mr_linux_save
๐️ Example levels:
-
level3_grep_mastery.sh
-
level10_networking2_nc.sh
-
level22_fork_bomb.sh
-
level23_bash_gauntlet.sh
๐ ️ Getting Started
Clone the repository
git clone https://github.com/nemcyberworld/mr-linux.git
cd mr-linux
bash main.sh
Run individual lessons manually:
cd "lessons/02. File & Directory Management/ls"
bash lesson.sh
๐พ Save System
Your game progress is stored automatically in:
~/.mr_linux_save
Tracks:
-
Completed levels
-
Total points
To reset your progress, simply delete the file.
๐ฌ Contact
-
GitHub: @nemcyberworld
-
Email: nemo14398@gmail.com
๐ License
Licensed under the MIT License. Contributions welcome!
๐ Support Mr Linux
If you find Mr Linux useful or fun:
-
⭐ Star the repo
-
๐ด Fork and add your own lessons
-
๐ Report issues or suggest improvements
-
๐ฃ Share with fellow Linux learners
“The shell is my sword, and Bash is my spellbook.” — Captain Nemo ๐