# What is this? This scans for MineCraft servers... really really fast! [but this scans even faster](https://github.com/xnite/BBCrawler) # Getting Started * Clone this repository somewhere. * Run `npm install` from within this directory. ## Getting Help You can get help through our [Discord server](https://discord.gg/3RUjaRzdKv) ## Usage Run `node ./scanner.js [options] --ip ` ### Examples `node ./scanner.js --ip 192.168.1.0/24 --port 25565-25569 --show-desc --min-players 1 --max-players 100 --out report.csv` `node ./scanner.js --ip 192.168.1.0/24 --port 25565-25569 --show-desc --min-players 1 --max-players 100 --version '1.8.*' --out 1.8.x-servers.csv` `node ./scanner.js --ip 192.168.1.0/24 --port 25565-25569 --show-desc --min-players 1 --max-players 100 --version '*forge*' --out forge-servers.csv` ### Options * `--ip ` - IP Address or Range of IP Addresses with CIDR notation (eg- 192.168.1.0/24) * `--port ` - Ports to look for minecraft servers on. (Default: `25565-25566`) * `--min-players ` - Minimum number of players. * `--max-players ` - Maximum player count. * `--version ` - Glob expression to filter version (eg- `1.19.*`, or `1.1*.*`). (Default: `*`) * `--conc ` - How many concurrent connections to use for scanning. (Default is 256) #### Output Options * `--show-desc` - Enable showing of server description in output. * `--quiet` - Silence terminal output. #### Output File Options * `--out ` - Output to CSV file (Can be opened as a spreadsheet in MS Office, Google Docs, etc.) * `--format ` - Output format (`txt-connect-only` for `ip:port` list format) * `--log-desc` - Output server discription to output file. #### Geo Location * `--geo-ip` - Use IP Geolocation database. * `--geo-coords` - Add geo-coordinates to output. * `--maxmind-key` - Provide a key for maxmind database download. ## By really fast, I mean really fast! # time node ./scanner.js --ip 135.148.60.0/24 --show-desc --quiet --out example.csv Scanning ports 25565-25566 on 135.148.60.0/24 Scan finished! real 0m3.183s user 0m0.825s sys 0m0.334s # cat example.csv | wc -l 85 In this example it took `3.183` seconds to scan `255` IP addresses, and find `85` MineCraft servers. At this speed, a full `/16` (`123.45.0.0 - 123.45.255.255`) will take about `13.5` minutes to scan. ## Limitations * Fails to scan more than a /10 without kicking the bucket... so you should probably stick to that or smaller ranges. * Working on a Minecraft bot client... doesn't work though... you can see how badly it doesn't work by using `--enable-client` flag... it is totally broken. **Don't use it**. * Above limitations are solved by running [BBCrawler](https://github.com/xnite/BBCrawler) instead but that is more complex than most people will want.