Programming language for network security
I am working as a tester now. I am planning to move to the domain of security such as a CEH or CISSP. But many say that to be a great hacker you need to know at least one programming language well. I already know a bit of Java. But I just wanted to know which language is closer to network security and related domains. So what kind of language should I be learning so that it would be helpful for me to move to the domain of security?
There is no defined blueprint on what is the best language to learn. Therefor I would like to mention two good alternatives that I (and many otheres) think is a good languages to learn in computer security.
Explanation of Lua from wikipedia: Lua is a lightweight multi-paradigm programming language designed as a scripting language with "extensible semantics" as a primary goal.
The reason I mention LUA is a good language to learn is that it is the scripting engine for MANY popular security tools. This is a very good reason alone to learn this language. Some of the langauges include:
- NMAP (Network mapping tool)
- Snort (Open source IDS)
- Wireshark (Packet sniffing tool)
- Vim (Very popular unix text editor)
- Cisco ASA (firewall, IPS, VPN)
- Network services tools (Apache, lightHttpd, FreePop)
On a side note: Even Blizzard major hit World of Warcraft has support for LUA scripting inside the game :) To whomever that may be relevant to.
I am a bit biased on Python after I've started reading the book "Gray Hat Python: Python Programming for Hackers and Reverse Engineers". I agree with many of the points from this book why it is good to learn this langauge for a hacker (commonly known as security specialist :)).
Quoted from Amazon Python is good language to learn because:
it's easy to write quickly, and it has the low-level support and libraries that make hackers happy.
It is also very comfortable to be able to interact on the fly with the interpreter in your Python shell.
Edit: Graphical view of HackerNews polls on favorite/ disliked programming languages:
Edit 2: From Digininjas poll:
Language Number Percentage Python 245 81% Bash Scripting 241 79% Ruby 127 42% C 123 40% Windows Powershell 111 37% Batch Scripting 108 36% PHP 107 35% C++ 66 22% Java 65 21% Perl 57 19% Other 57 19% VB 29 10% C# 26 9% Lua 23 8%
I do believe a variation of Python ( stackless python ) powers the user interface of a game called `Eve Online`. They have also improved the interface a good deal, I just remember stackless python, from when I played.
I agree with python being a very easy language to pick up. I think he'll get the knowledge he needs from this language. Also I love the pols man :)) I'd upvote you twice just for that.