How To Learn Your First Programming Language, To Get Into Hacking
Have you been trying to pick up your first programming language but the magic seems to disappear after your first random number generator program? Don’t worry, Trust me you are not alone. Picking up your first language can seem challenging but with just a little bit of work, Focus and the right strategy you can pick it up.
A quick little something about me: I have been ‘coding’ since I was in middle school. Back then, I coded in C and the coding I did was making simple programs that asked you how many candies you consumed today and then printed “Perfect target for diabetes” that many times.
I was a cursed child now that I think of it.
It was only when I got into high school that I started focusing more on coding and my school helped a lot. I was being taught Python in my school. Lately I have been also trying to brush up my C, Which isn’t my strongest part as of now but I think from whatever I have learned and noticed, I have some great suggestions for beginners. There are some tips I will be giving off which you can apply with any language you want, to anyone who wishes to hear me out. This tutorial won’t focus hardcore on hacking itself, Because coding is coding. But I sure would be using some examples of how you can use your code in hacking.
Consider this article as a guide for noobs by a noob.
Now, The important part.
Choose A Language
Huh, Just one language Elliot? Doesn’t sound too hard. You know..I already know 5 other languages because I have written hello world programs in all of them. But for some reason I am not abl-
You won’t ever fully know languages like Python, With libraries so massive that it excites you. But you can learn enough to be comfortable enough to say that you are fluent in it. Fluency isn’t writing hello world programs. You will know when you are fluent enough in a language.
So pick a language. Whether it’s C, C++, Python, Java or Javascript. Hold it. Don’t move. No matter what. Now you will be working hard on mastering this very language. Keep in mind that every language has it’s advantages and disadvantages. Python has great libraries, You can do so many cool things. From automating your day to day fun activities to brilliant websites using Flask. But it is a higher level language and if you wanted to do more lower level things, You would need to pick up a lower level language like C, Which is an absolute favourite of malware devs. Automation in Python is very easy. While doing the same thing in C just looked like a pain in the ass when I first saw it lmao.
So now what?
How To Pick Things Up
Pick up tutorials, And watch them. Don’t get too possessive about a source. Many times one source is not able to properly teach us things. You have the whole internet to understand things, Why stick to a single website or a single tutorial channel?
I also recommend getting a hold to the syllabus structure of a school maybe? Point is bring some method to the madness. Just some structure to follow. Make sure to not go all chaotic. Take your time to understand things. But also don’t be afraid to maybe look into things you might not understand.
Be curious. Google is your fuck buddy. Try making your own things. Try making stupid shit you won’t ever use. Trust me, That’s how I started out. There is no need to be insecure. Be humble but be open about which level you are at and enjoy coding.
Here is how I recommend you do things:
Cover A Topic
Make sure to do the topics in chronology. Of course, A point will soon come when you won’t need to follow the structure and instead you will know what to teach yourself, But for the initial time, Follow the structure.
Use YouTube, SoloLearn, Medium, A book or documentation (Good Luck there lmao). Cover one topic. Or a couple, ONLY IF YOU ARE ABLE TO PROPERLY PRACTICE THEM. I won’t recommend covering too many topics in a day initially. Just cover enough so that you can make something small, useless but fun.
Here is a great under-appreciated YouTube Channel I like: Caleb Curry
He teaches things in depth, But I still recommend getting another more reliable structure as he spends a little too much time on things. But he is amazing though his series isn’t complete/ is private as of now.
I am not going to recommend resources here, But I think you will yourself find a plethora of resources. Instead, I will try to focus on the bigger picture.
After covering a topic,
Practice
Practice Practice Practice Practice Practice Practice Practice Practice Practice Practice Practice Practice Practice Practice Practice Practice Practice Practice
I can’t tell you how important this is. In the initial days after learning something, PLEASE try to write it again yourself 2–3 times. Trust me, This helps so much. I wish someone had told me this in my beginner days. This gives you grip. And you need grip on your concepts. You need to make good use of them. This is where patience comes in. See, When you will be coding those programs 2–3 times, I want you to let go of all tendencies, And peacefully focus on your keyboard and monitor.
When you will type them down 2–3 times, Many times things you didn’t understand will start to hit you. Not like in a drunk dad way but more like soft flirty way, So that you the joy of learning takes you to heaven. Okay wait, the joy of learning will hit you hard. I said that because idk I wanted to say drunk dad lmao once.
Also when you type them, You will realise that shit, You don’t understand how that one thing works or how that other thing works.
So you have practised the simple questions you were given a bit from your resources/That random indian guy who made a video on that topic but explained you better than your school teachers.
Now what?
Make useless things
I can’t stress this enough. MAKE USELESS THINGS. The joy of making it is so different. So what if your program is only a simple to do list which is impractical because of limitations put on you due to your current knowledge? Or if it is just a program that moves your mouse every couple minutes so that you don’t have to change the settings to let your monitor stay open for longer because you are lazy? No one cares. These are your projects, You have all the right in the world to make them. These useless things will take you places my friend. They will make you curious. You will understand how many brilliant things users from stackoverflow end up teaching you. Please don’t be afraid of using libraries. Trust me, Just make use of them. You don’t necessarily need to understand how they work, Learn to use them. This is just for Python of course. Also, Don’t start using the libraries on the first day of learning python. Please.
Please DON’T WATCH TUTORIALS WITHOUT A COMPUTER. There are things which only sync into a beginner’s thicc skull when they try writing it.
Be curious. Try to know everything.
But Elliot, I am having stupid questions I can’t figure out the answers to. What do I do? StackOverFlow is gr8 m8 (ignore the gr8 m8 that was for the joke)
And if you have more specific questions, I have an amazing discord server I go to when I feel the need to ask those stupid questions: https://discord.gg/X5QQrGB73v
It’s called Coding Support. No one asked me to promote the server, Neither do I have rank high enough to have an alter motive to promote it. It’s just a very nice non-toxic community that is always ready to help you out through your stupid questions.
Repeat
Repeat the process. Each time you will be better than you were last time you repeated the cycle. Consistency is key. Until you are trying to ask out a girl. Then you are a creep.
And sometimes, You will want to take a break. If you do, I recommend that you take it. And then come back when you feel like. Just make sure that the gap isn’t too much. For me, What kept me going was competition. If anyone was better than me at coding in my school one day, I made sure that I was twice as better as them the next day. Of course, Don’t be toxic. But positive competition where you are humble is appreciated.
Now the hacking part.
Let’s say you have spent enough time on learning to code. 5–6 months maybe and now you want to hack with it. Tell me Elliot how do I code out a program that can enable me to control my friend’s computer with me just knowing his IP address? Well, There is no secret. You will have to understand the specifics of how things work and what their constraints there are and how you can bypass them creatively. Also like, Please don’t do something illegal lmao.
Hacking is more of a mindset. The mindset to explore, break and tweak everything. Combine with curiousity and a lot of time, It can take you places.nAll security researchers are troublesome teenagers at heart. Who use their knowledge and curiosity to make the world more secure.
So back to programming. How do you hack after you know a programming language? CTFs are the best way for you practise and understand things. When I attempt a web hacking CTF, I usually use python. In Python I make use of the requests and threading library the most. Of course with time you will be able to pick them up. Here are some challenges that you can try to sharpen your web hacking skills:
CUPP: Teaches you how to brute force. I really recommend seeing how each request in being made and then trying to solve the CTF yourself.
404 Not Found: This one is way too hard for a beginner but I am still linking it because it uses some automation for which I had to write a custom script.
Password: It’s a fun CTF which you will easily solve if you code out a script for it ;)
The above CTFs are kind of hard for a beginner. If you are a beginner then CTFs at hacker101, The portswigger lab, CTFs at picoCTF are really nice for you to start with because there you understand how to first manually perform things first, when no automation is needed and they teach you the different kinds of vulnerabilities that might be present in websites.
If you’re looking into to get into Reverse Engineering, Try:
Crack Her: Requires you to use basics.
Please try to get an idea of how things work before trying to exploit them or you will fall flat on your face.
That was it for the article. I hope you got something out of it, And I got a chance to give back to this amazing community. All constructive criticisms are appreciated and my twitter DMs are open for any required help.
Some extra resources:
The last one in particular will give you some hardcore grasping of concepts.