All Tutorials


  • Getting Started in Reverse Engineering Part 1

    Cracking Passwords: Reverse Engineering Basics


    Learn the fundamentals of reverse engineering by using command line tools to solve beginner crackmes on a Linux VM. Without even opening Ida or Ghidra, you will learn how to crack the secret passwords of these sample programs.
  • Getting Started in Reverse Engineering Part 2

    More Reverse Engineering Basics


    A continuation of getting started with reverse engineering using command line tools. This is part two of the tutorial and continues our study of reverse engineering x86-64 programs written in C, C++ and/or Intel Assembly.
  • How to Install Quake to run Natively on a 64bit MacOS

    Play Quake 1 Natively on 64-bit MacOS


    Older 32-bit games have been difficult to get running on modern MacOS computers ever since Apple dropped support for 32-bit applications in 2018. In this tutorial, we build Quake from source using a high performance Vulkan port. This allows users running 64-bit MacOS to play the 1996 classic natively.
  • Play Quake on a Retro Handheld Against a PC Player

    PC vs Retro Handheld


    Learn how to play multiplayer Quake 1 on an Anbernic RG353PS/P/M against someone playing on a PC or other device. Set up crossplay between players running the game on vastly different hardware using your local network.
  • Capturing 4-Way Handshakes with a Python Script

    No Wireshark, hcxdumptool, or airodump-ng needed


    There are a number of powerful packet capture and analysis tools available these days, but not many people take the time to learn how they work and would be helpless without them. Start with this bare bones example code to learn how it's done.
  • Building Homebrew For Nintendo Consoles on MacOS

    Build Homebrew for Nintendo Consoles: MacOS


    Learn how to set up a homebrew development environment to start building games and applications for modern and retro Nintendo consoles. Then test your build on an emulator. This tutorial is specifically for developers running MacOS.
  • Building Homebrew For Nintendo Consoles on Linux

    Build Homebrew for Nintendo Consoles: Linux


    Learn how to set up a homebrew development environment to start building games and applications for modern and retro Nintendo consoles. Then test your build on an emulator. This tutorial is specifically for developers running Linux.
  • Building Homebrew For Nintendo Consoles on Windows

    Build Homebrew for Nintendo Consoles: Windows


    Learn how to set up a homebrew development environment to start building games and applications for modern and retro Nintendo consoles. Then test your build on an emulator. This tutorial is specifically for developers running Windows.
  • Use Python to Crack WPA/WPA2 with 4-Way Handshakes

    Build your own cracking tools


    Most beginners rely on cracking software they don't understand to crack passwords from handshakes and call it a day. This short python script can't match the speed of hashcat, but it helps to have a simple and digestable code example to learn the basic principles yourself.
  • Communicating between two ESP8266's via UART

    UART Communication Between two ESP8266's


    Learn about sending messages between two ESP8266's with wired UART communication. This allows for non-WiFi based communication between ESP8266s and can provide the basis for interactions between ESP8266's and devices that do not have wireless communication capabilities.
  • Sharing Files Between a Linux VM and MacOS Host

    Easily Move Files Between VM and Host


    If you do any reverse engineering, use a Linux VM for hacking projects, or just develop software for multiple platforms, there's a good chance you use virtual machines on a regular basis. Learn how to easily move files from VM to Host and vice-versa in VirtualBox.
  • Learn x86-64 Assembly for MacOS: Hello World

    'Hello World' in x86-64 Assembly for MacOS


    Learn how to write x86-64 assembly for Intel-based Mac's. Most tutorials of this kind are for Linux-based operating systems. While very similar, there are small differences when targeting MacOS. Not for M1/M2 and ARM versions of MacOS.
  • Protecting Against DOM-Based XSS Attacks

    Learn How Client-side XSS Attacks Work


    Learn how hackers launch DOM-Based XSS (Cross-Site Scripting) attacks on web applications by using querystring params to inject malicious javascript into an unsuspecting user's browser — All with links to legitimate and trusted websites.
  • Build Your Own PMKID Capture Tool with Python

    It takes far less code than you think


    If you want to be able to find exploits on your own, you should know how to write the code to implement them and not always rely on complex software you don't understand. Start with this bare bones example to capture a PMKID from a WiFi router.
  • Python WPA/WPA2 WiFi Password Cracking with PMKID

    You don't always need hashcat or aircrack-ng


    Hashcat and aircrack-ng are powerful tools that you should learn. But someone had to build these tools in the first place to make cracking possible. Learn the basic principles of cracking encrypted keys with this simple example code that extracts passwords from PMKID's.
  • Linux-based Retro Handhelds can Hack WiFi Networks

    Use an RG353 as a Penetration Testing Tool


    Retro gaming handhelds aren't just great for emulation and ports, they often run our friend Linux under the hood. In fact, on some of them you can use their built in WiFi module to capture packets and ultimately hack networks without any extra equipment.
  • Building Your First Homebrew Game: Pong for the GBA

    The game that started it all. Program pong in C


    The Nintendo Game Boy Advance is still the best console to use for getting into homebrew game development or console programing for the first time. Learn how to build games with a pong-clone on one of the greatest handhelds ever made.

Reminder: Only ever hack things you own and/or have legal permission to hack.