If you’re starting out in cybersecurity, probably the first thing you notice is the wide range of areas of specialization that are open to you as a cyber professional. In this article, I want to cover a very important technical area of cybersecurity that is often overlooked, which is computer programming, or coding.
I know that programming is one of those subjects that tends to make complete beginners (myself included) panic, but with patience and dedication, a good understanding of any one of these five programming languages will give you a marketable edge when you’re applying for a cybersecurity position.
Why Learning Programming is Important for Cybersecurity
While it would be impossible for any one person to fill all the roles that make an effective cyber team, it is important for all professionals to have a general knowledge of computer technology. This general knowledge is invaluable in understanding the threats you may come into contact with during your career.
Cyber attacks are not limited to any one type and range from social engineering attacks to SQL injections. As a cyber professional it is important for you to recognize both the causes and symptoms of whatever threat you face. Consequently, while employers may not require that you know how to code, having coding knowledge can really give you an advantage on the job. Coding knowledge can give you the insight you need to recognize what a piece of software is doing, and even if it’s malicious code or not. This is why so many cybersecurity educational programs recognize the necessity of programming and introduce their students to at least an introductory course.
A highly marketable career field in and of itself, programming has the added bonus of rounding out a basic understanding of how computer programs function. For a cybersecurity professional, understanding a programming language can be an invaluable resource in recognizing vulnerabilities in a particular application and how an attacker could exploit those vulnerabilities.
What You Need to Know About Programming Languages
Programming languages are usually divided into two groups: high-level and low-level. While high-level programming languages are generally considered easier to learn, low-level languages provide the groundwork for operating systems and other important computer functions. For example, C is the coding language behind the Windows operating system. The language you choose to learn really depends on what you intend to achieve. Below are my top five programming languages for cybersecurity professionals:
Cyber Programming Language #1 – C
C is one of the most versatile programming languages, which can provide some low-level functionality to users. “Low-level” functionality just means that a programmer can operate at the bit-level, interact with a computer’s memory and CPU registers directly, and perform other hardware-specific tasks that high-level languages don’t directly interact with (whether C is really considered a high-level or low-level language is contextual, as C has a lot of flexibility and it depends on the situation you’re using it for.) Regardless, C gives programmers an extraordinary amount of power over a computer’s functions, and an understanding of C necessarily implies a better understanding of just how all the pieces in a computer work together.
The C Programming Language in Cybersecurity
From a cybersecurity perspective, an attacker who is proficient in C could manipulate all kinds of vulnerabilities in a computer’s system – which makes it equally important for cyber professionals to be able to identify these weaknesses themselves and know how to counter them. And since C is the basis for so many operating systems, there are a substantial amount of attacks that are going after targets that are written in C.
Here’s an example of programming syntax in C. If you choose to study any programming language, “Hello world!” is the introductory command that we all learn to love.
Cyber Programming Language #2 – C++
First developed in 1985 and closely resembling C in syntax, C++ is considered a general-purpose programming language. While C is a lower level language, C++ is extremely useful in developing powerful applications like video games, designing gaming engines, and programming CPU-specific functions. If you’re interested in game design you may notice that popular game companies like Bethesda and Rockstar frequently require that their programmers be proficient in C++ and/or C#.
The C++ Programming Language in Cybersecurity
For cybersecurity professionals, according to the National Initiative for Cybersecurity Careers and Studies, “C++ is a powerful programming language which gives intimate access to a machine’s inner workings.” Since “these features can be manipulated to exploit a program as a security flaw,” proficiency in C++ makes you as a cyber professional better equipped to recognize and fix these kinds of application-level vulnerabilities.
But be warned. Just because C++ is a more modern language doesn’t mean it’s easier to learn than C. In fact, the two languages are so closely related that they are both infamously difficult for beginners. Cryptography, error handling, and other security features are all available in C++, but this valuable language requires dedication and hard work to master. Here’s an example of some code in C++.
std::cout <<“Hello, world!\n”;
Cyber Programming Language #3 – Python
While Python is general-purpose like C++, it has the added benefit of also being high-level. High-level means more user-friendly, replacing cryptic terms with keywords that frankly make more sense to human minds.
Python, developed in 1991, is technically speaking a scripting language instead of a programming language (a programming language uses a compiler that translates an entire program directly into machine code, a scripting language uses an interpreter to translate one line at a time). The difference between scripting and programming languages is subtle enough to not really matter in our discussion here, but you will certainly hear the term scripting in your cybersecurity study and careers.
Python is used to develop applications, both web-based and software-based, and while it is not as useful as C in accessing low-level computer functions, it nonetheless is increasingly in-demand for web applications, GUIs, network programming, and other important tech features.
The Python Programming Language in Cybersecurity
Python has the added bonus of being “one of the most sought-after programming languages for cybersecurity,” and the NICCS recognizes Python as useful “in a variety of information security areas.” Python provides users with libraries full of ready-made functions that make creating applications much easier than starting from scratch. With Python, you as a cybersecurity professional can develop your own analysis tools and hacking scripts, and design secure programs. See our article dedicated to Python in Cybersecurity here.
Python does not require users to learn how a computer functions at the lowest level, but its versatility as a language is undeniable. Here’s our old example of “Hello world!” using Python. Look at the examples for C and C++. See the difference?
Cyber Programming Language #5 – Assembly
No, this isn’t a joke. Assembly language (or assembler language) is the lowest low-level programming language out there that a human can recognize and work with. It is, essentially, the closest language to actual machine code without strictly using the binary 0s and 1s, and that makes it pretty amazing.
Assembly has the downside of being device-specific, so depending on the architecture you are using the specifics of the language are liable to change – but if you know assembly, you have a solid, inside-out understanding of your computer.
Assembly lets you interact with specific memory locations and computer registers, and gives you an insane amount of control over your hardware. Add to that the fact that assembly just looks insane. Here is our example of “Hello world!” in NASM (Netwide Assembler) language, where you have to specify the address for your output and the exact number of bytes that you want reserved for the program. NASM is used in Linux-based systems – again, the exact type of assembly that you will use depends on your own system.
_start: mov rax, 1
mov rdi, 1
mov rsi, message
mov rdx, 13
mov rax, 60
xor rdi, rdi
message: db “Hello world!”, 10
Assembly Language in Cybersecurity
The advantages of knowing how to code in assembly are obvious for cybersecurity professionals. Just imagine how bad it would be if an attacker had this level of understanding and was able to manipulate your system on the byte level. Assembly is probably the most terrifying of all the computer languages, but if you put in the time to master it, you will have a great in-depth understanding of the machine you are defending.
Where Should You Start?
While the choice ultimately lies with you, my personal recommendation for most beginners of coding is to start with Python. When I started studying cybersecurity, I had pretty much no background at all in computers. I tried learning several languages, but all of them were extremely difficult for me until I started Python.
Python is a simple, powerful language that has a more intuitive syntax than the other languages. With Python as a starting point, the idiosyncrasies of the other languages will begin to make more sense.
Also, according to Indeed.com, the current average Python developer salary is $118,253. That’s not bad.