NOTE - This software was previously licensed under GPLv3 and has since been updated to BSD.
ipv666
v0.4
The tools included in this codebase are as follows:
scan discover
To get started check out the Installation section first and then head to whichever section details the tool you're looking to use.
This software is brought to you free of charge by @_lavalamp and @marcnewlin, and we hope that you find it useful. If you do find it useful and you'd like to support our continued contributions to the codebase, please consider donating via any of the following:
- BTC - 371FzLrE7dzd3cZNjDytSyV5hDhDpLj1Mr
- ETH - 0x2A35C6987a7E2515EEdB8fB43a7FA86a9Ea917f4
- LTC - MGkiBazpfs17ek7DuVJKwzwcFjVcmwrXur
Installation
v0.2ipv666
ipv666v1.11
v1.11
go get github.com/lavalamp-/ipv666/ipv666
ipv666$GOPATH/binPATH
NOTE - This software is only intended to be run on Linux-based operating systems. Support for other operating systems is not presently planned.
v0.4ipv666
scan discover
scan discover
bandwidth
Usage
This utility scans for live hosts over IPv6 based on the network range you specify. If no range is
specified, then this utility scans the global IPv6 address space (e.g. 2000::/4). The scanning process
generates candidate addresses, scans for them, tests the network ranges where live addresses are found
for aliased conditions, and adds legitimate discovered IPv6 addresses to an output list.
Usage:
ipv666 scan discover [flags]
Flags:
-h, --help help for discover
-o, --output string The path to the file where discovered addresses should be written.
-t, --output-type string The type of output to write to the output file (txt or bin).
Global Flags:
-b, --bandwidth string The maximum bandwidth to use for ping scanning
-f, --force Whether or not to force accept all prompts (useful for daemonized scanning).
-l, --log string The log level to emit logs at (one of debug, info, success, warn, error).
-n, --network string The IPv6 CIDR range to scan.
Examples
discovered_addrs.txt
ipv666 scan discover
2600:6000::/32addresses.txt
ipv666 scan discover -b 10M -o addresses.txt -n 2600:6000::/32
scan alias
scan alias
Usage
A utility for testing whether or not a network range exhibits traits of an aliased network range.
Aliased network ranges are ranges in which every host responds to a ping request, thereby making it
look like the range is full of IPv6 hosts. Pointing this utility at a network range will let tell you
whether or not that network range is aliased and, if it is, the boundary of the network range that is
aliased.
Usage:
ipv666 scan alias [flags]
Flags:
-h, --help help for alias
Global Flags:
-b, --bandwidth string The maximum bandwidth to use for ping scanning
-f, --force Whether or not to force accept all prompts (useful for daemonized scanning).
-l, --log string The log level to emit logs at (one of debug, info, success, warn, error).
-n, --network string The IPv6 CIDR range to scan.
Examples
2600:9000:2173:6d50:5dca:2d48::/96
ipv666 scan alias -n 2600:9000:2173:6d50:5dca:2d48::/96
2600:9000:2173:6d50:5dca:2d48::/96
ipv666 scan alias -n 2600:9000:2173:6d50:5dca:2d48::/96 -b 10M -l debug
generate addresses
generate addresses
Usage
This utility will generate IPv6 addresses in target network range (or in the global address
space) based on the default included cluster model or a cluster model that you specify.
Usage:
ipv666 generate addresses [flags]
Flags:
-c, --count int The number of IP addresses to generate. (default 1000000)
-h, --help help for addresses
-m, --model string Local file path to the model to generate addresses from (if empty,
uses the default model packaged with ipv666).
-n, --network string The address range to generate addresses within (if empty, generates
addresses in the global address space of ::/0).
-o, --out string File path to where the generated IP addresses should be written.
Global Flags:
-f, --force Whether or not to force accept all prompts (useful for daemonized scanning).
-l, --log string The log level to emit logs at (one of debug, info, success, warn, error).
Examples
ipv666/tmp/output
ipv666 generate addresses -o /tmp/output
2600::/4/tmp/model/tmp/output
ipv666 generate addresses -c 500000 -n 2600::/4 -m /tmp/model -o /tmp/output
generate model
generate model
Usage
This utility will generate a predictive clustering model based on the contents of
an IPv6 address file.
Usage:
ipv666 generate model [flags]
Flags:
-h, --help help for model
-i, --input string An input file containing IPv6 addresses to use for the model.
-o, --out string The file path to write the resulting model to.
Global Flags:
-f, --force Whether or not to force accept all prompts (useful for daemonized scanning).
-l, --log string The log level to emit logs at (one of debug, info, success, warn, error).
Examples
/tmp/addresses/tmp/model
ipv666 generate model -i /tmp/addresses -o /tmp/model
generate blacklist
generate blacklistdiscoveraliasclean
You will be prompted after invocation asking whether you'd like to create a new blacklist or add these new networks to your existing blacklist.
Usage
This utility takes a list of IPv6 CIDR ranges from a text file (new-line delimited),
adds them to the current network blacklist, and sets the new blacklist as the one to use
for the 'scan' command.
Usage:
ipv666 generate blacklist [flags]
Flags:
-h, --help help for blacklist
-i, --input string An input file containing IPv6 network ranges to build a blacklist from.
Global Flags:
-f, --force Whether or not to force accept all prompts (useful for daemonized scanning).
-l, --log string The log level to emit logs at (one of debug, info, success, warn, error).
Examples
/tmp/addrranges
ipv666 generate blacklist -i /tmp/addrranges
/tmp/addrranges
ipv666 generate blacklist -i /tmp/addrranges -f
clean
clean
Usage
This utility will clean the contents of an IPv6 address file (new-line delimited, standard ASCII hex
representation) based on the contents of an IPv6 network blacklist file. If no blacklist path is
supplied then the utility will use the default blacklist. The cleaned results will then be written to
an output file.
Usage:
ipv666 clean [flags]
Flags:
-b, --blacklist string The local file path to the blacklist to use. If not specified, defaults to
the most recent blacklist in the configured blacklist directory.
-h, --help help for clean
-i, --input string An input file containing IPv6 addresses to clean via a blacklist.
-o, --out string The file path where the cleaned results should be written to.
Global Flags:
-f, --force Whether or not to force accept all prompts (useful for daemonized scanning).
-l, --log string The log level to emit logs at (one of debug, info, success, warn, error).
Examples
/tmp/addresses/tmp/cleanedaddrs
ipv666 clean -i /tmp/addresses -o /tmp/cleanedaddrs
/tmp/addresses/tmp/blacklist/tmp/cleanedaddrs
ipv666 clean -i /tmp/addresses -o /tmp/cleanedaddrs -b /tmp/blacklist
convert
converttxtbinhex
Usage
This utility will process the contents of a file as containing IPv6 addresses, convert those addresses
to another format, and then write a new file with the same addresses in the new format. This
functionality is (hopefully) intelligent enough to determine how the addresses are stored in the file
without having to specify an input type.
Usage:
ipv666 convert [flags]
Flags:
-h, --help help for convert
-i, --input string The file to process IPv6 addresses out of.
-o, --out string The file path to write the converted file to.
-t, --type string The format to write the IPv6 addresses in (one of 'txt', 'bin', 'hex').
Global Flags:
-f, --force Whether or not to force accept all prompts (useful for daemonized scanning).
-l, --log string The log level to emit logs at (one of debug, info, success, warn, error).
Examples
/tmp/addresses/tmp/out
ipv666 convert -i /tmp/addresses -o /tmp/out -t bin
/tmp/addresses/tmp/out
ipv666 convert -i /tmp/addresses -o /tmp/out -t hex
References
ipv666
License
This software is licensed via the GNU General Public License v3.0.
We invite people to contribute to the codebase, fork it, do whatever you'd like! The only requirement that we have with this license is that derivative work is similarly open sourced.
Thanks
Many thanks to the following people for their contributions, inspiration, and help.
- Vasyl Pihur
- Zakir Durumeric
- David Adrian
- Eric Wustrow
- J. Alex Halderman
- Paul Pearce
- Ariana Mirian
- HD Moore
- Oliver Gasser
- Quirin Scheitle
- Tobias Fiebig
- Matthew Bryant