![Page 1: Hacking Like It's 2013 · 2013-06-12 · Hacking Like It's 1999 Scripts written in different languages - Low Code Reuse Change of Logic causes Tool rewrite - Low Code Reuse Tools](https://reader034.vdocuments.site/reader034/viewer/2022050410/5f87565c4320103eb6310786/html5/thumbnails/1.jpg)
Hacking Like It's 2013(with Pythonect & Hackersh)
Itzik Kotler
![Page 2: Hacking Like It's 2013 · 2013-06-12 · Hacking Like It's 1999 Scripts written in different languages - Low Code Reuse Change of Logic causes Tool rewrite - Low Code Reuse Tools](https://reader034.vdocuments.site/reader034/viewer/2022050410/5f87565c4320103eb6310786/html5/thumbnails/2.jpg)
Hacking Like It's 1999
● Scripts written in different languages - Low Code Reuse● Change of Logic causes Tool rewrite - Low Code Reuse● Tools produces different outputs - Agnostic Tools● Tools takes different parameters and formats - Agnostic Tools● Multi-threading is a Tool feature - Scaleability Issues● And etc.
![Page 3: Hacking Like It's 2013 · 2013-06-12 · Hacking Like It's 1999 Scripts written in different languages - Low Code Reuse Change of Logic causes Tool rewrite - Low Code Reuse Tools](https://reader034.vdocuments.site/reader034/viewer/2022050410/5f87565c4320103eb6310786/html5/thumbnails/3.jpg)
Hacking Like It's 1999 - Summary
● Problems:– Agnostic Tools– Scalability– Code Reuse
![Page 4: Hacking Like It's 2013 · 2013-06-12 · Hacking Like It's 1999 Scripts written in different languages - Low Code Reuse Change of Logic causes Tool rewrite - Low Code Reuse Tools](https://reader034.vdocuments.site/reader034/viewer/2022050410/5f87565c4320103eb6310786/html5/thumbnails/4.jpg)
Requirements for Hacking Like It's 2013● Synergy Between Tools
– Tool can “import“ another tool output/results– Tool arguments/parameters are Standardized
● Maximize Code Reuse– Special cases do not require re-writing of the Tool– Code can be used multiple times in multiple ways
● Scalability (regardless of the Tool used)– Multi-threading– Multi-processing
![Page 5: Hacking Like It's 2013 · 2013-06-12 · Hacking Like It's 1999 Scripts written in different languages - Low Code Reuse Change of Logic causes Tool rewrite - Low Code Reuse Tools](https://reader034.vdocuments.site/reader034/viewer/2022050410/5f87565c4320103eb6310786/html5/thumbnails/5.jpg)
Pythonect + Hackersh = Hacking Like It's 2013
Python
Metadata
Python
3rd Party Security Tools
Dataflow Programming
![Page 6: Hacking Like It's 2013 · 2013-06-12 · Hacking Like It's 1999 Scripts written in different languages - Low Code Reuse Change of Logic causes Tool rewrite - Low Code Reuse Tools](https://reader034.vdocuments.site/reader034/viewer/2022050410/5f87565c4320103eb6310786/html5/thumbnails/6.jpg)
Pythonect● Pythonect is a portmanteau of the words Python and Connect● New, experimental, general-purpose dataflow programming language
based on Python● Current “stable“ version (True to May 19 2013): 0.5.0● Made available under 'Modified BSD License'● Influenced by: Unix Shell Scripting, Python, Perl● Cross-platform (should run on any Python supported platform)● Website: http://www.pythonect.org/
![Page 7: Hacking Like It's 2013 · 2013-06-12 · Hacking Like It's 1999 Scripts written in different languages - Low Code Reuse Change of Logic causes Tool rewrite - Low Code Reuse Tools](https://reader034.vdocuments.site/reader034/viewer/2022050410/5f87565c4320103eb6310786/html5/thumbnails/7.jpg)
Installing and Using The Pythonect Interpreter
● Install directly from PyPI using easy_install or pip:– easy_install Pythonect
OR– pip install Pythonect
● Clone the git repository:– git clone git://github.com/ikotler/pythonect.git– cd pythonect– python setup.py install
![Page 8: Hacking Like It's 2013 · 2013-06-12 · Hacking Like It's 1999 Scripts written in different languages - Low Code Reuse Change of Logic causes Tool rewrite - Low Code Reuse Tools](https://reader034.vdocuments.site/reader034/viewer/2022050410/5f87565c4320103eb6310786/html5/thumbnails/8.jpg)
Dataflow Programming
Programming paradigm that treats data as something originatingfrom a source, flows through a number of components and arrives at a final destination - most suitable when developing applications that
are themselves focused on the "flow" of data.
![Page 9: Hacking Like It's 2013 · 2013-06-12 · Hacking Like It's 1999 Scripts written in different languages - Low Code Reuse Change of Logic causes Tool rewrite - Low Code Reuse Tools](https://reader034.vdocuments.site/reader034/viewer/2022050410/5f87565c4320103eb6310786/html5/thumbnails/9.jpg)
Dataflow Example
A video signal processor which may start with video input, modifies it through a number of processing components (i.e. video filters),
and finally outputs it to a video display.
LocalFile
Reader
ScreenOutputDisplay
VideoB&W
FrameProcressor
![Page 10: Hacking Like It's 2013 · 2013-06-12 · Hacking Like It's 1999 Scripts written in different languages - Low Code Reuse Change of Logic causes Tool rewrite - Low Code Reuse Tools](https://reader034.vdocuments.site/reader034/viewer/2022050410/5f87565c4320103eb6310786/html5/thumbnails/10.jpg)
Dataflow Example
Want to change a feed from a local file to a remote file on a website?
No problem!
URLDownloader
ScreenOutputDisplay
VideoB&W
FrameProcressor
![Page 11: Hacking Like It's 2013 · 2013-06-12 · Hacking Like It's 1999 Scripts written in different languages - Low Code Reuse Change of Logic causes Tool rewrite - Low Code Reuse Tools](https://reader034.vdocuments.site/reader034/viewer/2022050410/5f87565c4320103eb6310786/html5/thumbnails/11.jpg)
Dataflow Example
Want to write the Video B&W Frame Processor output to both a screen and a local file?
No problem!
URLDownloader
LocalFile
WriterVideoB&W
FrameProcressor Screen
OutputDisplay
![Page 12: Hacking Like It's 2013 · 2013-06-12 · Hacking Like It's 1999 Scripts written in different languages - Low Code Reuse Change of Logic causes Tool rewrite - Low Code Reuse Tools](https://reader034.vdocuments.site/reader034/viewer/2022050410/5f87565c4320103eb6310786/html5/thumbnails/12.jpg)
Dataflow Programming Advantages
● Concurrency and parallelism are natural● Data flow networks are natural for representing process● Data flow programs are more extensible than traditional
programs
![Page 13: Hacking Like It's 2013 · 2013-06-12 · Hacking Like It's 1999 Scripts written in different languages - Low Code Reuse Change of Logic causes Tool rewrite - Low Code Reuse Tools](https://reader034.vdocuments.site/reader034/viewer/2022050410/5f87565c4320103eb6310786/html5/thumbnails/13.jpg)
Dataflow Programming Disadvantages
● The mindset of data flow programming is unfamiliar to most programmers
● The intervention of the run-time system can be expensive
![Page 14: Hacking Like It's 2013 · 2013-06-12 · Hacking Like It's 1999 Scripts written in different languages - Low Code Reuse Change of Logic causes Tool rewrite - Low Code Reuse Tools](https://reader034.vdocuments.site/reader034/viewer/2022050410/5f87565c4320103eb6310786/html5/thumbnails/14.jpg)
Dataflow Programming Languages
● Spreadsheets are essentially dataflow (e.g. Excel)● VHDL, Verilog and other hardware description languages are
essentially dataflow● XProc● Max/Msp● Etc.
![Page 15: Hacking Like It's 2013 · 2013-06-12 · Hacking Like It's 1999 Scripts written in different languages - Low Code Reuse Change of Logic causes Tool rewrite - Low Code Reuse Tools](https://reader034.vdocuments.site/reader034/viewer/2022050410/5f87565c4320103eb6310786/html5/thumbnails/15.jpg)
<Pythonect Examples>
![Page 16: Hacking Like It's 2013 · 2013-06-12 · Hacking Like It's 1999 Scripts written in different languages - Low Code Reuse Change of Logic causes Tool rewrite - Low Code Reuse Tools](https://reader034.vdocuments.site/reader034/viewer/2022050410/5f87565c4320103eb6310786/html5/thumbnails/16.jpg)
'Hello, world' -> print
String Function
![Page 17: Hacking Like It's 2013 · 2013-06-12 · Hacking Like It's 1999 Scripts written in different languages - Low Code Reuse Change of Logic causes Tool rewrite - Low Code Reuse Tools](https://reader034.vdocuments.site/reader034/viewer/2022050410/5f87565c4320103eb6310786/html5/thumbnails/17.jpg)
What do we have here?
● -> is a Pythonect Control Operator, it means async forward.● There's also | (i.e. Pipe) which means sync forward.● 'Hello, world' is a literal string● print is a function
![Page 18: Hacking Like It's 2013 · 2013-06-12 · Hacking Like It's 1999 Scripts written in different languages - Low Code Reuse Change of Logic causes Tool rewrite - Low Code Reuse Tools](https://reader034.vdocuments.site/reader034/viewer/2022050410/5f87565c4320103eb6310786/html5/thumbnails/18.jpg)
"Hello, world" -> [print, print]
String
Function
Function
![Page 19: Hacking Like It's 2013 · 2013-06-12 · Hacking Like It's 1999 Scripts written in different languages - Low Code Reuse Change of Logic causes Tool rewrite - Low Code Reuse Tools](https://reader034.vdocuments.site/reader034/viewer/2022050410/5f87565c4320103eb6310786/html5/thumbnails/19.jpg)
["Hello, world", "Hello, world"] -> print
Function
String
String
![Page 20: Hacking Like It's 2013 · 2013-06-12 · Hacking Like It's 1999 Scripts written in different languages - Low Code Reuse Change of Logic causes Tool rewrite - Low Code Reuse Tools](https://reader034.vdocuments.site/reader034/viewer/2022050410/5f87565c4320103eb6310786/html5/thumbnails/20.jpg)
Basic Pythonect Syntax Summary
● -> is async forward.● | (i.e. Pipe) is sync forward.● _ (i.e. Underscore) is current value in flow
![Page 21: Hacking Like It's 2013 · 2013-06-12 · Hacking Like It's 1999 Scripts written in different languages - Low Code Reuse Change of Logic causes Tool rewrite - Low Code Reuse Tools](https://reader034.vdocuments.site/reader034/viewer/2022050410/5f87565c4320103eb6310786/html5/thumbnails/21.jpg)
<Pythonect Security Scripts/Examples>
![Page 22: Hacking Like It's 2013 · 2013-06-12 · Hacking Like It's 1999 Scripts written in different languages - Low Code Reuse Change of Logic causes Tool rewrite - Low Code Reuse Tools](https://reader034.vdocuments.site/reader034/viewer/2022050410/5f87565c4320103eb6310786/html5/thumbnails/22.jpg)
raw_input() -> _.encode('rot13') -> print
Function Function
ROT13 Encrypt & Decrypt
Function
![Page 23: Hacking Like It's 2013 · 2013-06-12 · Hacking Like It's 1999 Scripts written in different languages - Low Code Reuse Change of Logic causes Tool rewrite - Low Code Reuse Tools](https://reader034.vdocuments.site/reader034/viewer/2022050410/5f87565c4320103eb6310786/html5/thumbnails/23.jpg)
'ftp.gnu.org' \ -> ftplib.FTP \ -> _.login() \ -> print("Allow anonymous")
String Class
Check if FTP Server Supports Anonymous Login
Function Function
![Page 24: Hacking Like It's 2013 · 2013-06-12 · Hacking Like It's 1999 Scripts written in different languages - Low Code Reuse Change of Logic causes Tool rewrite - Low Code Reuse Tools](https://reader034.vdocuments.site/reader034/viewer/2022050410/5f87565c4320103eb6310786/html5/thumbnails/24.jpg)
['%s', '%n', 'A', 'a', '0', '!', '$', '%', '*', '+', ',', '-', '.', '/', ':'] \ | [_ * n for n in [256, 512, 1024, 2048, 4096]] \ | os.system('/bin/ping ' + _)
Array Nested Loop
Command line Fuzzer
Function
![Page 25: Hacking Like It's 2013 · 2013-06-12 · Hacking Like It's 1999 Scripts written in different languages - Low Code Reuse Change of Logic causes Tool rewrite - Low Code Reuse Tools](https://reader034.vdocuments.site/reader034/viewer/2022050410/5f87565c4320103eb6310786/html5/thumbnails/25.jpg)
References / More Examples● My Blog
– Scraping LinkedIn Public Profiles for Fun and Profit– Fuzzing Like A Boss with Pythonect– Automated Static Malware Analysis with Pythonect
● LightBulbOne (Blog)– Fuzzy iOS Messages!
![Page 26: Hacking Like It's 2013 · 2013-06-12 · Hacking Like It's 1999 Scripts written in different languages - Low Code Reuse Change of Logic causes Tool rewrite - Low Code Reuse Tools](https://reader034.vdocuments.site/reader034/viewer/2022050410/5f87565c4320103eb6310786/html5/thumbnails/26.jpg)
-> Moving on! ->
Hackersh
![Page 27: Hacking Like It's 2013 · 2013-06-12 · Hacking Like It's 1999 Scripts written in different languages - Low Code Reuse Change of Logic causes Tool rewrite - Low Code Reuse Tools](https://reader034.vdocuments.site/reader034/viewer/2022050410/5f87565c4320103eb6310786/html5/thumbnails/27.jpg)
Hackersh
● Hackersh is a portmanteau of the words Hacker and Shell● Shell (command interpreter) written with Pythonect-like syntax,
built-in security commands, and out of the box wrappers for various security tools
● Current “stable“ version (True to May 19 2013): 0.2.0● Made available under GNU General Public License v2 or later● Influenced by: Unix Shell Scripting and Pythonect● Cross-platform (should run on any Python supported platform)● Website: http://www.hackersh.org
![Page 28: Hacking Like It's 2013 · 2013-06-12 · Hacking Like It's 1999 Scripts written in different languages - Low Code Reuse Change of Logic causes Tool rewrite - Low Code Reuse Tools](https://reader034.vdocuments.site/reader034/viewer/2022050410/5f87565c4320103eb6310786/html5/thumbnails/28.jpg)
A few words on the Development
● Written purely in Python (2.7)● Hosted on GitHub
![Page 29: Hacking Like It's 2013 · 2013-06-12 · Hacking Like It's 1999 Scripts written in different languages - Low Code Reuse Change of Logic causes Tool rewrite - Low Code Reuse Tools](https://reader034.vdocuments.site/reader034/viewer/2022050410/5f87565c4320103eb6310786/html5/thumbnails/29.jpg)
Motivation
● Taking over the world● Automating security tasks and reusing code as much as
possible
![Page 30: Hacking Like It's 2013 · 2013-06-12 · Hacking Like It's 1999 Scripts written in different languages - Low Code Reuse Change of Logic causes Tool rewrite - Low Code Reuse Tools](https://reader034.vdocuments.site/reader034/viewer/2022050410/5f87565c4320103eb6310786/html5/thumbnails/30.jpg)
Installing and Using The Hackersh
● Install directly from PyPI using easy_install or pip:– easy_install Hackersh
OR– pip install Hackersh
● Clone the git repository:– git clone git://github.com/ikotler/hackersh.git– cd hackersh– python setup.py install
![Page 31: Hacking Like It's 2013 · 2013-06-12 · Hacking Like It's 1999 Scripts written in different languages - Low Code Reuse Change of Logic causes Tool rewrite - Low Code Reuse Tools](https://reader034.vdocuments.site/reader034/viewer/2022050410/5f87565c4320103eb6310786/html5/thumbnails/31.jpg)
Implementation● Component-based software engineering
– External Components:● Nmap● W3af● Dnsdict6● Etc.
– Internal Components:● URL (i.e. Convert String to URL)● IPv4_Address (i.e. Convert String to IPv4 Adress)● IPv6_Address (i.e. Convert String to IPv6 Adress)● Etc.
![Page 32: Hacking Like It's 2013 · 2013-06-12 · Hacking Like It's 1999 Scripts written in different languages - Low Code Reuse Change of Logic causes Tool rewrite - Low Code Reuse Tools](https://reader034.vdocuments.site/reader034/viewer/2022050410/5f87565c4320103eb6310786/html5/thumbnails/32.jpg)
Component as Application● Components accepts command line args:
– "localhost" -> hostname -> nmap("-P0")● They also accept internal flags options as:
– "localhost" -> hostname -> nmap("-P0", debug=True)
![Page 33: Hacking Like It's 2013 · 2013-06-12 · Hacking Like It's 1999 Scripts written in different languages - Low Code Reuse Change of Logic causes Tool rewrite - Low Code Reuse Tools](https://reader034.vdocuments.site/reader034/viewer/2022050410/5f87565c4320103eb6310786/html5/thumbnails/33.jpg)
Input/Output: Context● Every Hackersh component (except the Hackersh Root
Component) is standardized to accept and return the same data structure – Context.
● Context is a dict (i.e. associative array) that can be piped through different components
![Page 34: Hacking Like It's 2013 · 2013-06-12 · Hacking Like It's 1999 Scripts written in different languages - Low Code Reuse Change of Logic causes Tool rewrite - Low Code Reuse Tools](https://reader034.vdocuments.site/reader034/viewer/2022050410/5f87565c4320103eb6310786/html5/thumbnails/34.jpg)
Same Context, Different Flow● "http://localhost" -> url -> nmap -> ping
– Port scan a URL, if *ANY* port is open, ping the URL● "http://localhost" -> url -> ping -> nmap
– Ping the URL, if pingable, scan for *ANY* open ports
![Page 35: Hacking Like It's 2013 · 2013-06-12 · Hacking Like It's 1999 Scripts written in different languages - Low Code Reuse Change of Logic causes Tool rewrite - Low Code Reuse Tools](https://reader034.vdocuments.site/reader034/viewer/2022050410/5f87565c4320103eb6310786/html5/thumbnails/35.jpg)
Ask The Context● Context stores both Data and Metadata● The Metadata aspect enables potential AI applications to fine-
tune their service selection strategy based on service-specific characteristics
![Page 36: Hacking Like It's 2013 · 2013-06-12 · Hacking Like It's 1999 Scripts written in different languages - Low Code Reuse Change of Logic causes Tool rewrite - Low Code Reuse Tools](https://reader034.vdocuments.site/reader034/viewer/2022050410/5f87565c4320103eb6310786/html5/thumbnails/36.jpg)
"http://localhost" \ -> url \ -> nmap \ -> [_['PORT'] == '8080' and _['SERVICE'] == 'HTTP'] \ -> w3af \ -> print
Conditional Flow
![Page 37: Hacking Like It's 2013 · 2013-06-12 · Hacking Like It's 1999 Scripts written in different languages - Low Code Reuse Change of Logic causes Tool rewrite - Low Code Reuse Tools](https://reader034.vdocuments.site/reader034/viewer/2022050410/5f87565c4320103eb6310786/html5/thumbnails/37.jpg)
Hackersh High-level Diagram
Literal(e.g. String)
RootComponent(e.g. URL)
Context Component ...
![Page 38: Hacking Like It's 2013 · 2013-06-12 · Hacking Like It's 1999 Scripts written in different languages - Low Code Reuse Change of Logic causes Tool rewrite - Low Code Reuse Tools](https://reader034.vdocuments.site/reader034/viewer/2022050410/5f87565c4320103eb6310786/html5/thumbnails/38.jpg)
<Hackersh Web App Pentest Script Step-by-Step>
![Page 39: Hacking Like It's 2013 · 2013-06-12 · Hacking Like It's 1999 Scripts written in different languages - Low Code Reuse Change of Logic causes Tool rewrite - Low Code Reuse Tools](https://reader034.vdocuments.site/reader034/viewer/2022050410/5f87565c4320103eb6310786/html5/thumbnails/39.jpg)
"hackersh.org" -> domain -> dnsdict(“-4“)
Target Built-inComponent
Step #1: Information Gathering / Network Analysis / DNS
ExternalComponent
![Page 40: Hacking Like It's 2013 · 2013-06-12 · Hacking Like It's 1999 Scripts written in different languages - Low Code Reuse Change of Logic causes Tool rewrite - Low Code Reuse Tools](https://reader034.vdocuments.site/reader034/viewer/2022050410/5f87565c4320103eb6310786/html5/thumbnails/40.jpg)
"hackersh.org" \ -> domain \ -> dnsdict(“-4“) \ -> nmap
Target Built-inComponent
Step #2: Information Gathering / Network Analysis / Service Fingerprinting
ExternalComponent
ExternalComponent
![Page 41: Hacking Like It's 2013 · 2013-06-12 · Hacking Like It's 1999 Scripts written in different languages - Low Code Reuse Change of Logic causes Tool rewrite - Low Code Reuse Tools](https://reader034.vdocuments.site/reader034/viewer/2022050410/5f87565c4320103eb6310786/html5/thumbnails/41.jpg)
"hackersh.org" \ -> domain \ -> dnsdict(“-4“) \ -> nmap \ -> nikto
Target Built-inComponent
Step #3: Vuln. Assessment / Web App Assessment / Web Vuln. Scanner
ExternalComponent
ExternalComponent
ExternalComponent
![Page 42: Hacking Like It's 2013 · 2013-06-12 · Hacking Like It's 1999 Scripts written in different languages - Low Code Reuse Change of Logic causes Tool rewrite - Low Code Reuse Tools](https://reader034.vdocuments.site/reader034/viewer/2022050410/5f87565c4320103eb6310786/html5/thumbnails/42.jpg)
"hackersh.org" \ -> domain \ -> dnsdict(“-4“) \ -> nmap \ -> nikto \ -> w3af
Target Built-inComponent
Step #4: Vuln. Assessment / Web App Assessment / Web Vuln. Scanner # 2
ExternalComponent
![Page 43: Hacking Like It's 2013 · 2013-06-12 · Hacking Like It's 1999 Scripts written in different languages - Low Code Reuse Change of Logic causes Tool rewrite - Low Code Reuse Tools](https://reader034.vdocuments.site/reader034/viewer/2022050410/5f87565c4320103eb6310786/html5/thumbnails/43.jpg)
"hackersh.org" \ -> domain \ -> dnsdict(“-4“) \ -> nmap \ -> nikto \ -> w3af \ -> print
Target Built-inComponent
Step #5: Reporting
ExternalComponent
![Page 44: Hacking Like It's 2013 · 2013-06-12 · Hacking Like It's 1999 Scripts written in different languages - Low Code Reuse Change of Logic causes Tool rewrite - Low Code Reuse Tools](https://reader034.vdocuments.site/reader034/viewer/2022050410/5f87565c4320103eb6310786/html5/thumbnails/44.jpg)
Fork
![Page 45: Hacking Like It's 2013 · 2013-06-12 · Hacking Like It's 1999 Scripts written in different languages - Low Code Reuse Change of Logic causes Tool rewrite - Low Code Reuse Tools](https://reader034.vdocuments.site/reader034/viewer/2022050410/5f87565c4320103eb6310786/html5/thumbnails/45.jpg)
"ikotler.org" \ -> hostname \ -> [nslookup, pass] -> ...
Target Built-inComponent
Target as Hostname + Target as IP
Targetas Hostname ...
Targetas IPv4 Addr. ...
![Page 46: Hacking Like It's 2013 · 2013-06-12 · Hacking Like It's 1999 Scripts written in different languages - Low Code Reuse Change of Logic causes Tool rewrite - Low Code Reuse Tools](https://reader034.vdocuments.site/reader034/viewer/2022050410/5f87565c4320103eb6310786/html5/thumbnails/46.jpg)
Hackersh Roadmap● Unit Tests● Documention● More Tools
– Metasploit– OpenVAS– TheHarvester– Hydra– …
● Builtin Commands● <YOUR IDEA HERE>
![Page 47: Hacking Like It's 2013 · 2013-06-12 · Hacking Like It's 1999 Scripts written in different languages - Low Code Reuse Change of Logic causes Tool rewrite - Low Code Reuse Tools](https://reader034.vdocuments.site/reader034/viewer/2022050410/5f87565c4320103eb6310786/html5/thumbnails/47.jpg)
Questions?
![Page 48: Hacking Like It's 2013 · 2013-06-12 · Hacking Like It's 1999 Scripts written in different languages - Low Code Reuse Change of Logic causes Tool rewrite - Low Code Reuse Tools](https://reader034.vdocuments.site/reader034/viewer/2022050410/5f87565c4320103eb6310786/html5/thumbnails/48.jpg)
Thank you!
My Twitter: @itzikkotlerMy Email: [email protected]
My Website: http://www.ikotler.org
Pythonect Website: http://www.pythonect.orgHackersh Website: http://www.hackersh.org
Feel free to contact me if you have any questions!