Five Programming Languages for Hackers
While it is always useful to know as many programming languages as possible, understanding the strengths and uses of each language is just as important. There are typically five main languages that are most helpful for hackers to know.
C and C++ are probably the most powerful low level languages at the disposal of programers today. C and C++ give the user access to low level resources such as ram and system processes. This positions hackers in an advantageous position in cases where such resources are not adequately protected by the program the hacker(s) are trying to compromise.
Note that these languages are not typically used by script kiddies. These languages can take years to master and are often found on job applications for computer scientists and computer engineers. C and C++ coupled with languages like assembly, which we will discuss in another article, give hackers immense insight on the operations of programs and their memory management.
Some of the later attacks we will simulate which will require some C/C++ coding include the library highjacking attack. Libraries, sometimes called external code libraries, are bits of local code that can be unique to a machine or environment or be the same across multiple platforms, which are available to programs running in that environment. This is done to limit the size of programs and make them easier to distribute. This attack compromises a vulnerability found in programs that use locally available libraries.
C and C++ will be incredibly helpful in building out our capabilities and knowledge about lower level operations in operating systems.
Python, a general purpose language released in 1991, is a fairly young language believe it or not. It has taken off and become a choice language for prototyping, testing and other often automated tasks because of its incredible power and ease of use. Python however, is not low level and unable to operate with the detail and exposure to hardware that the C and C++ languages can.
Python is also fairly readable. This means that it is not too dificult to read the program and get a sense for what it is trying to do and many of the operations and functions in the language are English words like “for” or “not” etc…
One of biggest benefits of python is its massive community. This means that it is easy to find help online and find niche projects which use python in new ways and on new platforms. This makes strange projects or requests much more attainable. This makes hacking or modding games on platforms which use python, such as Raspberry Pi, much easier.
We will use python for many of our projects and scripting needs.
To get started with python, check out our other blog; Let’s Code with Python!
Java is another general purpose language that is most popular due to its use in the Android operating system. It is interesting because it is specifically designed to have as few implementation dependencies as it can possible have. This is important for Java, and as it turns out, Android, because the fewer dependencies a language has, the more robust and lightweight it can be. Even more importantly, this means that once a developer has written the code, or app, it can theoretically run anywhere that supports Java.
Java is important for hackers to learn because it is so widely used. A variety of industry sources estimate that over 95% of enterprise desktops run Java and of all computers, including personal machines, in the U.S. 88% run Java.
These statistics are already pretty convincing. More interesting, however, is that there are over 8.5 million Java developers worldwide and that Java is both the top choice for developers and the top platform for development. This is likely assisted by the fact that so much of the worlds mobile devices run Android or some skinned (visually modified) version of the operating system, over 3 billion as a matter of fact. A fact of which Oracle will remind you every single time you update Java on your machine.
So, it does seem to be very helpful to learn Java. The good news is that it reads similarly to C and C++ and is not too complicated to dive into. You can download Android studio and start writing apps fairly quickly, but that is for another day and another article.
Lisp is on this list for a few reasons. First, most of you reading this probably have not heard of Lisp or even knew of its existence. This is most probably due to the fact that Lisp has a steep learning cure. Like, REALLY STEEP. Many programmers who take up Lisp end up pulling out copious amounts of beard and head hair. Even fewer programmers truly master Lisp.
However, like many things that are difficult, Lisp is incredibly powerful. For the sake of the length of this article, we will save our deeper discussion of Lisp for another day.
The bottom line is that Lisp, though powerful, often beaten out by python which is much easier to teach or learn. Few schools, teach Lisp and of those that do, even fewer teach a high level Lisp coding course.
Challenges is what we at OSS like and as such, Lisp should be welcomed with open arms as it can be a great next programing language to learn for young hackers and aspiring computer science (CS) majors, assuming of course, that you already have a few other languages under you belt. We suggest you start with our top three in this article.
In this list, Perl is mostly an ‘honorable mention’ than anything else. Perl is a high-level, interpreted, dynamic language. It is used in legacy web systems, data minding, statistics and statistical analysis of data that is mined, UNIX system administrations, security (such as prototyping and/or automating fixes), and network prototyping or simulations.
Okay, so why is this language here? Well, as we will see demonstrated time and time again, is that cyber security is not just something that effects new systems but old systems as well. In fact, the number of old systems or aging infrastructure only increases with time. Consider that as companies grow and expand their digital and physical system footprints, the more expensive upgrades become. These types of decisions make it hard for companies to make updates that could cost them millions if they do not see an immediate benefit to their bottom line.
As such, these legacy systems remain in operation for new computer scientist to stumble across and learn in the hopes of maintaining the systems and their job security.
So, what was once dubbed the ‘Swiss army knife of the internet,’ lost out to its rival python. We will dedicate articles to each of these languages and talk in greater detail about their uses, history, strengths, weaknesses, and even how to set up environments for them.
Looking back at the list, the top languages, C/C++, Python, and Java are the best way to start learning and preparing for your hacking careers.
Do you agree with this list? Are there other languages you feel should have been in the top five? Do you have other Comments? Questions? Concerns?
Leave us a comment below!