
roadmap for a self-taught hacker
Hacking is the art of using things in unintended ways. For example, if a software's trial is about to expire, you might be able to extend it by changing your computer's date to the previous week. That's hacking.
There's no 'one right way' to learn hacking because it is a very broad term. That's why the purpose of this guide is to provide a direction rather than a roadmap.
If there's something you think should be added/improved, please create an issue.
I believe it is important to know your roots so let's talk about them without overanalyzing the origin.
In the 1960s, telephone networks used a set of sounds to process phone calls. A group of people figured out how it all worked and managed to reproduce the 2600Hz frequency sounds being used by these networks. How did they do it? By blowing into a whistle that came free with cereal. This act was called phreaking and the people who did it were called phreaks.
Denny Teresi, one of the phreaks said in an interview:
"It wasn't just to rip off the telephone company, it was the technical challenge - if we will be able to do it."
They did it because it was a fascinating problem for them to solve and they wanted to see if they could solve it. This is exactly what hacking culture is, even today.
If you want to sell medicine, you will only need a place to store the medicine and hand over whatever a customer needs. On the other hand, if you want to create cures for diseases, you will need to know how the human body and everything works. Makes sense right? The same applies to hacking. If you want to get really good at hacking something and creating new techniques to do so, you must understand how it works.
If you have some information that you think might be helpful for other people, share it through social media, forums, or blogs. It will benefit you in many ways:
Be curious, experiment a lot, build cool shit, that's the entire point, that's how it all started. If you spend your life using techniques and tools developed by other people, what's the point of choosing a cool path like this?
The roadmap contains some good resources as well as some topics that you will need to google and read about yourself. This is not simply a 'step-by-step guide' or a collection of resources.
Read/watch stuff, note down the terms you don't understand, google them and learn about them from at least 3 different sources, again note down terms you don't understand and keep repeating the process. Why at least 3 sources? Because the information provided by 1 creator will be limited to what they know, getting it from 3 different creators will give you a better understanding of the subject from different perspectives.
I will reference this methodology as 'recursive learning' throughout the guide.
Hacking has many fields e.g. reverse engineering, web hacking, car hacking, etc. but some things are helpful irrespective of the field so let's talk about them first.
It will help you get a deeper understanding of the machine you will be using for hours every day as well as to gain a valuable perspective that I can't really explain in words.
Remember, you just need to know the basics because this knowledge will keep being developed if you are curious by asking questions like "What happens when you delete a file? If they stay on the device, how does space get freed? If they are really gone, how do recovery software recover them?"
Resources:
Understanding how the internet (and other networks) work, it's essential because networks are everywhere.
Topics to start recursive learning:
IP address, MAC address, port, client & server, dns, tcp, udp, proxy, tls/ssl, vpn
Resources:
You will spend a lot of time in the terminal whether it is running programs or accessing remote servers. You can use any operating system but I suggest Linux-based operating systems simply because you can modify everything about it which is the essence of hacking. Ubuntu is a great linux distribution for beginners.
To understand how a given software works (makes it easy to hack it) and to create your own software for hacking and other tasks.
There are a lot of programming languages but I will suggest you to start with Python because it's easy and can do almost everything from creating a face detector to a website.
I have written an article about how to get started, check it out.
There are some concepts that you will find in every other cyber security-related article and they come in handy in most fields.
Topics to start recursive learning:
phishing, ddos and dos attack, website crawling, encoding and encryption, password cracking, login bruteforcing, man in the middle attack