silentsignal / DirBustErl

DirBuster successor in Erlang
MIT License
37 stars 13 forks source link

DirBustErl

This project aims to become a successor of DirBuster, which is slow, requires Java, lacks active development, and is generally PITA. Erlang was chosen as a platform to provide high-performance I/O, robustness, concurrency and transparent distribution over multiple nodes.

License

Dependencies

Building

$ make

Running unit tests

$ make test

Web interface

$ ./start.sh
...
=PROGRESS REPORT==== 13-Nov-2014::14:08:27 ===
     application: dirbusterl
      started_at: nonode@nohost

The web interface is available at http://localhost:8000/ by default, you can change that by setting the WEBMACHINE_PORT environment variable.

Screenshot of the web interface

Erlang interface

There are currently two entry points:

dirbusterl:bust(URL, UserConfig)
dirbusterl:bust_async(Id, URL, UserConfig)

While bust is synchronous and blocks execution until finished, bust_async returns immediately and the Id parameter can be used to check progress. Such value can be generated using dirbusterl_storage:generate_bust_id/0 but any unique binary value will do. Findings can be queried by calling dirbusterl_storage:get_findings/1 with the Id as the sole parameter. The structure of the return value is the same as with the dirbusterl:bust/2 function.

Configuration parameters

Input file formats

URLs and words read from files are parsed according to the following rules.

Example run

Note: if the web interface works for you, you don't need this anymore.

For those poor Erlang-unaware souls

$ erl -pa ebin -pa deps/ibrowse/ebin/ -s ibrowse
1> mnesia:create_schema([node()]).
2> mnesia:start().
3> dirbusterl_storage:init_schema().
4> dirbusterl_requests:start_link().
5> dirbusterl:bust("http://www.example.com", [{wordlist,"wordlist.txt"},{postfix,[".html"]},parse_body]).

TODO