Written by: Ciuffy
You should never run programs that you don’t know how they work, especially in the hacking field, because you don’t know the consequences of a failed attack or of a successful but noisy one.
I wanted to apologize for any grammar error you might encounter, please let me know if you find any, I’m not mother tongue.
Interesting, So Programming Knowledge Is Important…
Yes! And, because I like lists, let me recap some of the most valuable reasons why programming is that important:
-First thing first, technology and Information Technology is considered the future, so programming (IMHO) is the key to understand the future by taking notions from the past (story of IT is fascinating too, I’m always amazed).
-Speaking about hacking without programming knowledge, it’s like building a house with only half of the ground floor. You can build one or two floors, then it will fall poorly, leaving you with rocks only. Being blind on this topic can cause you serious problems with law if something goes wrong, but more importantly you actually don’t know what you are doing.
-Sure you encounter errors sometimes, right? A better understanding of how computers work can give you the skill to solve problems without the constant help of someone else, not only in the IT field, but also in the pure logic one, as training your brain in always positive. And trust me, programming is the way to go.
-Using someone else’s tool is, quoting Cracker Hacker, “no fun”. This is actually true, what kind of satisfaction would you feel id you hacked something without even knowing how it happened? With programming knowledge you might be able to not only understand someone else’s code, but also program tools yourself, and once you understand the basic logic it’s not that hard.
-The vantages are infinite after all, just think about smartphone apps (iOS apps are written in C-objective btw), web applications, java running almost everywhere…
So Yeah, Where Do I Start From?
As long as we talk about following lessons, the only problem is that “so yeah” (but I think that readers don’t have this kind of behavior really), but learning programming is a need first of all. You write a program when another one misses a feature you need, or if there’s actually no tool that does what you want.
And the sad thing is that there’s no cookbook for it, no step by step how to solve errors. Sure problem solving is a natural skill (you’ll need it so much), but it’s directly generated by the will of doing what you are doing.
So, in case you didn’t understand it, last warning: this is in fact a long process and it is required. No cool tricks to show to friends allowed (newbies, don’t worry, just trying to scare unwilling people).
Formal Recomposition, May I Know Where to Start From?
But keep in mind that I’m not a teacher neither I’m trying to be one.
School, courses or self-teaching doesn’t matter: find you own way, I’m just posting some start points suggested by me and other Null byte users. I’m personally studying it as with the self-teaching way, but if you are able to frequent a stable course, I recommend you to do it (waiting for experts thoughts…).
Understanding the basics of programming doesn’t take too long if you have an advanced knowledge about computers. The hard part is the experience building, and the time spent really depends on each person.
I wrote this article as an inspiration, because I want it to be a general topic about programming and ways to approach this world, as recently there has been a lot of confusion about explaining this to newbies, so if you have any correction or new resource you’d like to add, please participate and write it in the comments.I think that we should build a public of people where the most have this kind of knowledge, but there’s absolutely nothing to say about what Null Byte taught until now. I also take the occasion to thank this amazing community which is doing a very great job, especially in pointing newbies in the right direction, so thank you, everyday user of Null Byte.
I’m going to divide the resources in sections, for a better reading and documenting. future updates will be made for references posted in the comments that might deserve to be added.
–Introduction to computer science and programming @ MitOpenCourseware (also linked on the main page): As the Video Lectures list shows, this is a very general though specialized introduction to computer science hosted by Mit. In my opinion this is very reliable and should out stand in this list. I’m quoting the description: “This subject is aimed at students with little or no programming experience. It aims to provide students with an understanding of the role computation can play in solving problems. It also aims to help students, regardless of their major, to feel justifiably confident of their ability to write small programs that allow them to accomplish useful goals. The class will use the Python™ programming language.” This course, as said, aims to provide students also with problem solving, which is one of the points I highlighted in the introduction. The programming language used is Python, one of the most common when talking about hacking.
–Choosing a programing language @ MSDN: In case you don’t know MSDN (Microsoft Developer Network), you’ll learn to rely on it while studying programming languages. This is a very interesting, though a bit outdated in terms of time and not contents, writing about choosing the programming language that fits to you. Although as a developer you should be able to work with multiple languages, it points you in the right direction, and also helps you to better understand low and high level programming, the differences and the features they offer.
–Introduction to programming in C, Podcast: Introduction to C and programming concepts and syntax.
–Learn C @ Learn-C.org: The C programming language is a basic knowledge that IMO everyone should have. My studies started with C, and C is still widely used today. Also deserving to be mentioned the languages C++ and C objective, which are currently used for many applications, e.g. iDevices applications are written in C objective.
–Code Academy: As initially suggested by CyberHitchHiker, this “Academy” is a very interesting and reliable resource to learn major web development and scripting languages like HTML, CSS, JS, Ruby and Python.
Post learning and hacking references
As suggested by ghost_, a useful way to get into the topic of hacking is frequenting “information security news sites, as it’s always good to stay in the know”.
–CSO Online: suggested by ghost_, this is a valuable reference for news about information security aimed to every security enthusiast.
–Infosec Institute: A huge documentation about hacking is hosted here, I recommend you to visit Infosec Institute.
–Null Byte: You can’t skip this one. This is the best community I’ve ever found about hacking, so go check every Linux Basics how-to (you should also have Bash knowledge), read this introduction to hacking and tools and you can start hacking like a pro (a thank to OTW for the time spent on these awesome posts)!
Warning: I only checked the validity of every reference I posted, not followed the actual courses, so if you notice something strange is going on with any reference, I’ll provide to remove them asap. If this post is somehow considered spam, please provide to remove it as soon as possible.
And the list goes on and on.
And I repeat it: I just wanted to start a constructive topic about programming to point newbies in the right direction and to teach myself new things, so that everyone can learn from this.
Because of this post being extremely subjective, please correct any error you find in the comments and I’ll provide to edit, as I want it to be as clear as possible.
Thank you for reading.