🦀 100 Days of Rust 🦀


Who am I?

KrowZ, Pentester and OSINT/GEOINT enthousiast, I decided to leave my job in 2021 to become self-employed.
I also want to develop my Youtube and Twitch channel to share all kinds of cybersecurity content with community.

I'm a native french speaker so most of videos and livestreams will be in french.
Do not hesitate to contact me on Twitter or join my Discord server.

You can also take a look at my website (especially the blog section): Synoslabs

Why this 100 Days Of Rust?

I wanted to help people get into programming/infosec. If this challenge can motivate even one person, then it's a success.
Thanks to this website, you will be able to follow my journey, day by day.

The goal of this challenge is to learn Rust within a specific amount of time (100 days).

At the end, I want to be comfortable with the language and have done at least one big project (likely a Command and Control client/server with multiple functionalities).

How does it work?

At the top of this page you can find the progress bar and 3 Jokers Joker.
As you might have guessed, a joker allows you to "skip" a day if you're lacking motivation or just if you're not available at that time.

You can access the list of my daily activities during these 100 days by clicking on the "Journey" tab.
A green button means the daily activity was done and we can click on it to get more information and details.
A red button is a failed day. We should avoid this as much as possible to reach 100 days of Rust.
A button covered with the joker face Joker is a day for which we spent one of our 3 jokers.

The "Roadmap" is a list of concepts related to Rust that I want to learn to become confident with the language. It will be updated as I progress during this challenge.

Finally, the "Resources" tab contains a list of resources used all along this journey.

What about you?

Have you ever wanted to learn a new language (Rust in that case) but never found the motivation to start?

That's the moment!
Follow me during this challenge and let's do it together :)
No matter your objectives, we can all find motivation within ourselves.

Tips for this challenge

In case you want to go along with me during this challenge, here are some tips to make it more pleasant.

Consistency is key when trying to approach a new concept. That is, it doesn't matter if you work on this challenge 7hours+ a day or 15 minutes.

This challenge is not about to feel guilty because you've only worked on your project 20 minutes but motivating you to take action and start what you've always wanted to do.

That's why we have 3 jokers Joker in total. To keep a margin and not to fail that easily

License

There's no license for this project as I'm not the inventor of the concept. Feel free to reuse this website as a template for you own goals!
For your information, this website is fully static and does not perform any kind of backend operation. All the code is accessible through this source code.
You can also find it on my Github.


🧱 Rust Language Fundamentals

  • Rust philosophy and paradigm
  • Environment setup
  • Understanding Rust compilation
  • Primitive types (i32, u64, bool, etc.)
  • Ownership
  • Borrowing (immutable and mutable references)
  • Lifetimes (reference lifetimes)
  • Structs, Enums
  • Pattern matching (match, if let, etc.)
  • Module system (mod, use)
  • Functions and expressions
  • Option and Result for error handling

🔧 Intermediate Rust & Best Practices

  • Error propagation with ?
  • Generics and Traits (impl<T>, trait)
  • Trait Objects (dyn)
  • Closures & Iterators (map, filter, etc.)
  • Collections: Vec, HashMap, HashSet
  • Basic concurrency: std::thread, Arc, Mutex, mpsc
  • Crypto crate
  • Database crate
  • Socket crate

🛠 System Programming & Unsafe Rust

  • Understand unsafe blocks
  • Use raw pointers (*const, *mut)
  • Handle MaybeUninit, mem::transmute
  • C interoperability: extern "C", bindgen
  • Use Linux syscalls with nix, libc
  • Interact with Windows API: winapi, windows
  • Use inline assembly: asm! (nightly)
  • Debugging (rust-gdb)

🧠 Offensive Sec

  • Understand process hollowing
  • Implement reflective DLL loading
  • Use CreateRemoteThread, WriteProcessMemory
  • Hooking with Detour, LD_PRELOAD
  • Implement encryption (XOR, AES)
  • Persistence techniques (registry, systemd)
  • Obfuscation & anti-debugging techniques
  • Fuzzing

🔍 Auditing, Vulnerabilities & Fuzzing

  • Understand undefined behavior (unsafe, unwrap)
  • Identify risky patterns (panic, out-of-bounds indexing...)
  • Common Rust vulnerabilities (logic bugs, DoS, etc.)
  • Analyze safe/unsafe boundaries

🕖 Long-Term Mastery & Expertise

📚 Platforms:

  • Exercism (Rust track)
  • Rustlings
  • LeetCode (in Rust)
  • Advent of Code

📖 Reading:

  • Read The Rust Book (official)
  • Read Rust by Example
  • Read The Rustonomicon
  • Read Programming Rust

🧑‍💻 Contributing:

  • Contribute to a Rust open source project
  • Read other developers' Rust code
  • Practice code reviews
  • Follow Rust language RFCs

Resources