I have decided to set my sights on the OSCP Certification and, after reading multiple reviews I've decided to take Abraham's advice to heart and sharpen my axe.

I have experience with Shell scripting, PHP and Perl, but no experience with Python or x86 Assembly which I've read are both useful items to brush up on.

I've started to work on Grey Hat Python and realized that this is focused on the now depreciated Python 2 as opposed to the new standard of Python 3. I've had read the same is true for Violent Python. Needless to say I would rather not waste time learning a language that will not serve me well in the field and I'd like to focus on what's practical.

While Grey Hat Python was written in 2009 (before Python 2 was officially depreciated from what I gather), Violent Python is from 2012 and still uses 2. It seems counter productive to me to focus efforts on a legacy language, however I have not found any resources directed at penetration testing in Python 3.

My question is should I focus on Python 2 or is there a viable reason / resources for me to focus on 3? I have read that the external library support for 3 is limited and porting from 2 to 3 can be an onerous task.

2 Answers 2


Python 2 is by no means "legacy software". Both version of Python are still being continually developed by its community.

As you may see, Python 2 and Python 3 have recently been updated, with Python 2 being the latest release (December 2014).

By my experience, you should keep at Python 2, as there are LOTS of modules that were developed to Python 2 and their authors have dropped maintenance, so there won't be a Python 3 version.


Well, if you're looking to sharpen your axe, why give it a time limit? If you work with 3, then your skills will be useful for longer. There are major changes, true, but if need be you can write for backwards compatibility.

Don't be afraid to go off book. Cook up some violent Python 3!

Not the answer you're looking for? Browse other questions tagged .