README.md in ronin-2.0.0.beta3 vs README.md in ronin-2.0.0.beta4
- old
+ new
@@ -148,9 +148,620 @@
```shell
$ ronin irb
```
+Generate a new Ruby script with [ronin-support] preloaded:
+
+```shell
+$ ronin new script foo.rb
+```
+
+Generate a new Ruby project with a `Gemfile`:
+
+```shell
+$ ronin new project foo
+```
+
+### Binary
+
+Hexdumps data in a variety of formats:
+
+```shell
+$ ronin hexdump /bin/ls
+```
+
+Un-hexdumps a hexdump file back into it's original raw binary data:
+
+```shell
+$ ronin unhexdump -o data.bin hexdump.txt
+```
+
+Print all printable strings from a file:
+
+```shell
+$ ronin strings /bin/ls
+```
+
+Print all alphabetic strings from a file:
+
+```shell
+$ ronin strings --alpha /bin/ls
+```
+
+Print all alpha-numeric strings from a file:
+
+```shell
+$ ronin strings --alpha-num /bin/ls
+```
+
+Print all numeric strings from a file:
+
+```shell
+$ ronin strings --numeric /bin/ls
+```
+
+Print all hexadecimal strings from a file:
+
+```shell
+$ ronin strings --hex /bin/ls
+```
+
+Enumerate through all of the Bit-flips of a domain name:
+
+```shell
+$ ronin bitflip microsoft --alpha-num --append .com
+licrosoft.com
+oicrosoft.com
+iicrosoft.com
+eicrosoft.com
+Microsoft.com
+mhcrosoft.com
+mkcrosoft.com
+mmcrosoft.com
+macrosoft.com
+mycrosoft.com
+...
+```
+
+### Encoding
+
+Base64 encode a string:
+
+```shell
+$ ronin encode --base64 --string "foo bar baz"
+Zm9vIGJhciBiYXo=
+```
+
+Zlib compresses, Base64 encodes, and then URI encode a string:
+
+```shell
+$ ronin encode --zlib --base64 --uri --string "foo bar"
+%65%4A%78%4C%79%38%39%58%53%45%6F%73%41%67%41%4B%63%41%4B%61%0A
+```
+
+Base64 decode a string:
+
+```shell
+$ ronin decode --base64 --string "Zm9vIGJhciBiYXo="
+foo bar baz
+```
+
+URI decode, Base64 decode, and then zlib inflates a string:
+
+```shell
+$ ronin decode --uri --base64 --zlib --string "%65%4A%78%4C%79%38%39%58%53%45%6F%73%41%67%41%4B%63%41%4B%61%0A"
+foo bar
+```
+
+URI escape a string:
+
+```shell
+$ ronin escape --uri --string "foo bar"
+foo%20bar
+```
+
+URI unescape a string:
+
+```shell
+$ ronin unescape --uri --string "foo%20bar"
+foo bar
+```
+
+Convert a file into a quoted C string:
+
+```shell
+$ ronin quote --c file.bin
+"..."
+```
+
+Convert a file into a quoted JavaScript string:
+
+```shell
+$ ronin quote --js file.bin
+```
+
+Unquote a C string:
+
+```shell
+$ ronin unquote --c --string '"\x66\x6f\x6f\x20\x62\x61\x72"'
+foo bar
+```
+
+### Text
+
+De-obfuscate an email address:
+
+```shell
+$ ronin email-addr --deobfuscate "john [dot] smith [at] example [dot] com"
+john.smith@example.com
+```
+
+Enumerate through all of the obfuscations of an email address:
+
+```shell
+$ ronin email-addr --enum-obfuscations john.smith@example.com
+john.smith @ example.com
+john.smith AT example.com
+john.smith at example.com
+john.smith[AT]example.com
+john.smith[at]example.com
+...
+```
+
+Extract high-entropy data from a file:
+
+```shell
+$ ronin entropy -e 5.0 index.html
+```
+
+Grep for common patterns of data:
+
+```shell
+$ ronin grep --hash index.html
+```
+
+Extract common patterns from data:
+
+```shell
+$ ronin extract --hash index.html
+```
+
+Generate a random typo of a word:
+
+```shell
+$ ronin typo microsoft
+microssoft
+```
+
+Enumerate over every typo variation of a word:
+
+```shell
+$ ronin typo --enum microsoft
+microosoft
+microsooft
+microssoft
+```
+
+Generate a random homoglyph version of a word:
+
+```shell
+$ ronin homoglyph CEO
+CEO
+```
+
+Enumerate over every homoglyph variation of a word:
+
+```shell
+$ ronin homoglyph --enum CEO
+ϹEO
+СEO
+ⅭEO
+CEO
+CΕO
+CЕO
+CEO
+CEΟ
+CEО
+CEO
+```
+
+Syntax-highlights a file:
+
+```shell
+$ ronin highlight index.html
+```
+
+### Cryptography
+
+AES-256 encrypt a file:
+
+```shell
+$ ronin encrypt --cipher aes-256-cbc --password "..." file.txt > encrypted.bin
+```
+
+Decrypt data:
+
+```shell
+$ ronin decrypt --cipher aes-256-cbc --password "..." encrypted.bin
+```
+
+Generates an HMAC for a file:
+
+```shell
+$ ronin hmac --hash sha1 --password "too many secrets" data.txt
+```
+
+Generates an HMAC for a string:
+
+```shell
+$ ronin hmac --hash sha1 --password "too many secrets" --string "..."
+```
+
+Calculate an MD5 checksum of a string:
+
+```shell
+$ ronin md5 --string "hello world"
+5eb63bbbe01eeed093cb22bb8f5acdc3
+```
+
+Calculate the MD5 checksum of a file:
+
+```shell
+$ ronin md5 file.txt
+```
+
+Calculate the MD5 checksum of every line in a file:
+
+```shell
+$ ronin md5 --multiline file.txt
+```
+
+Calculate an SHA1 checksum of a string:
+
+```shell
+$ ronin sha1 --string "hello world"
+2aae6c35c94fcfb415dbe95f408b9ce91ee846ed
+```
+
+Calculate the SHA1 checksum of a file:
+
+```shell
+$ ronin sha1 file.txt
+```
+
+Calculate the SHA1 checksum of every line in a file:
+
+```shell
+$ ronin sha1 --multiline file.txt
+```
+
+Calculate an SHA256 checksum of a string:
+
+```shell
+$ ronin sha256 --string "hello world"
+b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
+```
+
+Calculate the SHA256 checksum of a file:
+
+```shell
+$ ronin sha256 file.txt
+```
+
+Calculate the SHA256 checksum of every line in a file:
+
+```shell
+$ ronin sha256 --multiline file.txt
+```
+
+Calculate an SHA512 checksum of a string:
+
+```shell
+$ ronin sha512 --string "hello world"
+309ecc489c12d6eb4cc40f50c902f2b4d0ed77ee511a7c7a9bcd3ca86d4cd86f989dd35bc5ff499670da34255b45b0cfd830e81f605dcf7dc5542e93ae9cd76f
+```
+
+Calculate the SHA512 checksum of a file:
+
+```shell
+$ ronin sha512 file.txt
+```
+
+Calculate the SHA512 checksum of every line in a file:
+
+```shell
+$ ronin sha512 --multiline file.txt
+```
+
+ROT-13 encodes a string:
+
+```shell
+$ ronin rot --string "The quick brown fox jumps over the lazy dog"
+Gur dhvpx oebja sbk whzcf bire gur ynml qbt
+```
+
+XOR encodes a string:
+
+```shell
+$ ronin xor --key ABC --string "The quick brown fox jumps over the lazy dog"
+"\x15*&a36(!(a 1.5-a$,9b)4/32b,7'1a6+$b/ 8:a&,&"
+```
+
+### Networking
+
+Query the ASN of an IP address:
+
+```shell
+$ ronin asn -I 4.2.2.1
+4.0.0.0/9 AS3356 (US) LEVEL3
+```
+
+Get the system's external/public IP address:
+
+```shell
+$ ronin ip --public
+```
+
+Convert an IP address to decimal format:
+
+```shell
+$ ronin ip --decimal 127.0.0.1
+2130706433
+```
+
+Convert a file of IP addresses into URLs:
+
+```shell
+$ ronin ip --file targets.txt --http
+```
+
+Enumerate over every IP address in the IP CIDR range:
+
+```shell
+$ ronin iprange 10.1.0.0/15
+10.0.0.1
+10.0.0.2
+10.0.0.3
+10.0.0.4
+10.0.0.5
+10.0.0.6
+10.0.0.7
+10.0.0.8
+10.0.0.9
+...
+```
+
+Enumerate over every IP address in the IP glob range:
+
+```shell
+$ ronin iprange 10.1-3.0.*
+10.1.0.1
+10.1.0.2
+10.1.0.3
+10.1.0.4
+10.1.0.5
+10.1.0.6
+10.1.0.7
+10.1.0.8
+10.1.0.9
+10.1.0.10
+...
+```
+
+Enumerate over every IP address between two IP addresses:
+
+```shell
+$ ronin iprange --start 10.0.0.1 --stop 10.0.3.33
+10.0.0.1
+10.0.0.2
+10.0.0.3
+10.0.0.4
+10.0.0.5
+10.0.0.6
+10.0.0.7
+10.0.0.8
+10.0.0.9
+10.0.0.10
+```
+
+Connect to a remote TCP service:
+
+```shell
+$ ronin netcat -v example.com 80
+```
+
+Listen on a local TCP port:
+
+```shell
+$ ronin netcat -v -l 1337
+```
+
+Connect to a remote SSL/TLS service:
+
+```shell
+$ ronin netcat -v --ssl example.com 443
+```
+
+Connect to a remote UDP service:
+
+```shell
+$ ronin netcat -v -u example.com 1337
+```
+
+Listen on a local UDP port:
+
+```shell
+$ ronin netcat -v -u -l 1337
+```
+
+Opens a UNIX socket:
+
+```shell
+$ ronin netcat -v --unix /path/to/unix.socket
+```
+
+Hexdump all data received from a socket:
+
+```shell
+$ ronin netcat --hexdump example.com 80
+GET / HTTP/1.1
+Host: example.com
+User-Agent: Ruby
+
+00000000 48 54 54 50 2f 31 2e 31 20 32 30 30 20 4f 4b 0d |HTTP/1.1 200 OK.|
+00000010 0a 41 67 65 3a 20 32 35 30 38 30 36 0d 0a 43 61 |.Age: 250806..Ca|
+00000020 63 68 65 2d 43 6f 6e 74 72 6f 6c 3a 20 6d 61 78 |che-Control: max|
+00000030 2d 61 67 65 3d 36 30 34 38 30 30 0d 0a 43 6f 6e |-age=604800..Con|
+00000040 74 65 6e 74 2d 54 79 70 65 3a 20 74 65 78 74 2f |tent-Type: text/|
+00000050 68 74 6d 6c 3b 20 63 68 61 72 73 65 74 3d 55 54 |html; charset=UT|
+...
+```
+
+#### DNS
+
+Query DNS records:
+
+```shell
+$ ronin dns -t TXT github.com
+```
+
+Find all registered TLDs for a host name:
+
+```shell
+$ ronin host --enum-tlds --registered github.com
+github.ac
+github.actor
+github.ae
+github.africa
+github.agency
+github.ai
+...
+```
+
+Find all registered public suffixes for a host name:
+
+```shell
+$ ronin host --enum-suffix --registered github.com
+example.com.ag
+example.ai
+example.al
+example.am
+example.com.ar
+example.at
+example.co.at
+example.or.at
+example.com.au
+example.be
+example.com.bh
+...
+```
+
+Enumerate over every possible typosquat variation of a domain:
+
+```shell
+$ ronin typosquat microsoft.com
+microosoft.com
+microsooft.com
+microssoft.com
+```
+
+Find all of the registered typosquat domains for a valid domain:
+
+```shell
+$ ronin typosquat --registered microsoft.com
+```
+
+Find all of the typosquat domains with addresses for a valid domain:
+
+```shell
+$ ronin typosquat --has-addresses microsoft.com
+```
+
+Find all of the unregistered typosquat domains for a valid domain:
+
+```shell
+$ ronin typosquat --unregistered microsoft.com
+```
+
+#### SSL/TLS Certs
+
+Dump information about a SSL/TLS certificate:
+
+```shrll
+$ ronin cert-dump https://example.com/
+```
+
+Download a SSL/TLS certificate from a host and port:
+
+```shell
+$ ronin cert-grab github.com:443
+```
+
+Generate a new SSL/TLS certificate:
+
+```shell
+$ ronin cert-gen -c test.com -O "Test Co" -U "Test Dept" \
+ -L "Test City" -S NY -C US
+```
+
+#### HTTP
+
+Perform an HTTP `GET` request (with syntax highlighting):
+
+```shell
+$ ronin http https://example.com/
+```
+
+Send an HTTP request with additional headers:
+
+```shell
+$ ronin http --post --header "Authorization: ..." https://foo.bar/
+```
+
+Send an HTTP request with a known `User-Agent` string:
+
+```shell
+$ ronin http --post --user-agent chrome-android https://foo.bar/
+```
+
+Send an HTTP request with a custom `User-Agent` string:
+
+```shell
+$ ronin http --post --user-agent-string "..." https://foo.bar/
+```
+
+Open an interactive HTTP shell:
+
+```shell
+$ ronin http --shell https://example.com/
+https://example.com/> help
+ help [COMMAND] Prints the list of commands or additional help
+ get PATH[?QUERY] [BODY] Performs a GET request
+ head PATH[?QUERY] Performs a HEAD request
+ patch PATH[?QUERY] [BODY] Performs a PATCH request
+ post PATH[?QUERY] [BODY] Performs a POST request
+ put PATH [BODY] Performs a PUT request
+ copy PATH DEST Performs a COPY request
+ delete PATH[?QUERY] Performs a DELETE request
+ lock PATH[?QUERY] Performs a LOCK request
+ options PATH[?QUERY] Performs a OPTIONS request
+ mkcol PATH[?QUERY] Performs a MKCOL request
+ move PATH[?QUERY] DEST Performs a MOVE request
+ propfind PATH[?QUERY] Performs a PROPFIND request
+ proppatch PATH[?QUERY] Performs a PROPPATCH request
+ trace PATH[?QUERY] Performs a TRACE request
+ unlock PATH[?QUERY] Performs a UNLOCK request
+ cd PATH Changes the base URL path
+ headers [{set | unset} NAME [VALUE]] Manages the request headers
+```
+
+Print the HTTP status of every URL in a file:
+
+```shell
+$ ronin url --file urls.txt --status
+```
+
### See Also
* [ronin-repos](https://github.com/ronin-rb/ronin-repos#synopsis)
* [ronin-db](https://github.com/ronin-rb/ronin-db#synopsis)
* [ronin-web](https://github.com/ronin-rb/ronin-web#synopsis)