Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>You probably want Ruby, because it's the native language for Metasploit, which is the de facto standard open source penetration testing framework. Ruby's going to give you:</p> <ul> <li><a href="http://www.metasploit.com/" rel="noreferrer">Metasploit's</a> framework, opcode and shellcode databases</li> <li>Metasploit's <a href="http://rubyforge.org/projects/ruby-lorcon/" rel="noreferrer">Ruby lorcon</a> bindings for raw 802.11 work.</li> <li>Metasploit's KARMA bindings for 802.11 clientside redirection.</li> <li><a href="http://curl.haxx.se/libcurl/ruby/" rel="noreferrer">Libcurl</a> and net/http for web tool writing.</li> <li><a href="http://rubyforge.org/projects/eventmachine" rel="noreferrer">EventMachine</a> for web proxy and fuzzing work (or RFuzz, which extends the well-known Mongrel webserver).</li> <li><a href="http://metasm.cr0.org/" rel="noreferrer">Metasm</a> for shellcode generation.</li> <li><a href="http://www.ragestorm.net/distorm/" rel="noreferrer">Distorm</a> for x86 disassembly.</li> <li><a href="http://blogfranz.blogspot.com/2008/01/bindata-for-ruby-fuzzers.html" rel="noreferrer">BinData</a> for binary file format fuzzing.</li> </ul> <p>Second place here goes to Python. There are more pentesting libraries available in Python than in Ruby (but not enough to offset Metasploit). Commercial tools tend to support Python as well --- if you're an Immunity CANVAS or CORE Impact customer, you want Python. Python gives you:</p> <ul> <li><a href="http://twistedmatrix.com/trac/" rel="noreferrer">Twisted</a> for network access.</li> <li><a href="http://www.openrce.org/downloads/details/208/PaiMei" rel="noreferrer">PaiMei</a> for program tracing and programmable debugging.</li> <li>CANVAS and Impact support.</li> <li><a href="http://www.matasano.com/log/695/windows-remote-memory-access-though-firewire/" rel="noreferrer">Dornseif's</a> firewire libraries for remote debugging.</li> <li><a href="http://pydbgeng.sourceforge.net/" rel="noreferrer">Ready integration with WinDbg</a> for remote Windows kernel debugging (there's still no good answer in Ruby for kernel debugging, which is why I still occasionally use Python). </li> <li><a href="http://peachfuzzer.com/" rel="noreferrer">Peach Fuzzer</a> and Sully for fuzzing.</li> <li>SpikeProxy for web penetration testing (also, <a href="http://www.owasp.org/index.php/Category:OWASP_Pantera_Web_Assessment_Studio_Project" rel="noreferrer">OWASP Pantera</a>).</li> </ul> <p>Unsurprisingly, a lot of web work uses Java tools. The de facto standard web pentest tool is Burp Suite, which is a Java swing app. Both Ruby and Python have Java variants you can use to get access to tools like that. Also, both Ruby and Python offer:</p> <ul> <li>Direct integration with libpcap for raw packet work.</li> <li>OpenSSL bindings for crypto.</li> <li>IDA Pro extensions.</li> <li>Mature (or at least reasonable) C foreign function interfaces for API access.</li> <li>WxWindows for UI work, and decent web stacks for web UIs.</li> </ul> <p>You're not going to go wrong with either language, though for mainstream pentest work, Metasploit probably edges out all the Python benefits, and at present, for x86 reversing work, Python's superior debugging interfaces edge out all the Ruby benefits.</p> <p>Also: it's 2008. They're not "scripting languages". They're programming languages. ;)</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload