文章Masscan 详细使用教程
King MoonMasscan 是一个高效的网络扫描工具,能够快速扫描大量 IP 地址。以下是 Masscan 的详细使用教程,包括所有主要参数和选项。
1. 安装 Masscan
在使用 Masscan 之前,您需要先安装它。可以通过以下命令在 Linux 系统中安装:
1
| sudo apt-get install masscan
|
或者从源代码编译:
1 2 3 4 5
| sudo apt-get --assume-yes install git make gcc git clone https://github.com/robertdavidgraham/masscan.git cd masscan make make install
|
2. 基本用法
Masscan 的基本语法如下:
示例:扫描整个 192.168.1.0/24 网段的 80 端口。
1
| masscan 192.168.1.0/24 -p80
|
3. 常用参数
以下是 Masscan 的常用参数及其说明:
3.1 扫描目标
<ip范围>: 指定要扫描的 IP 地址范围,例如 192.168.1.0/24 或 10.0.0.1-10.0.0.254。
3.2 扫描端口
-p <端口>: 指定要扫描的端口,可以是单个端口、多个端口(用逗号分隔)或端口范围。
3.3 输出格式
1
| masscan -p80 -oX results.xml
|
1
| masscan -p80 -oJ results.json
|
-oG <文件名>: 输出为 grepable 格式。
1
| masscan -p80 -oG results.grep
|
-oL <文件名>: 输出为普通文本格式(默认)。
3.4 扫描速率
--rate <速率>: 设置每秒发送的包数量,默认值为 10000。
1
| masscan --rate=1000 <ip范围> -p<端口>
|
3.5 网络接口
--interface <接口名>: 指定要使用的网络接口。
1
| masscan --interface=eth0 <ip范围> -p<端口>
|
3.6 排除特定 IP
--exclude <ip地址>: 排除特定 IP 地址或范围。
1
| masscan <ip范围> -p<端口> --exclude <排除的IP>
|
4. 高级选项
4.1 TCP 标志设置
--tcp-flags <flags>: 设置 TCP 标志,例如 SYN、ACK 等。
4.2 自定义数据包大小
--packet-size <大小>: 设置自定义数据包大小(默认是无)。
4.3 自定义源端口
--source-port <端口>: 指定源端口。
4.4 DNS 查询
--dns-server <IP>: 指定 DNS 查询服务器。
示例命令
以下是一些示例命令,展示如何结合使用这些参数:
1 2 3 4 5 6 7 8
| masscan 192.168.1.0/24 -p80,443 -oX scan_results.xml
masscan --rate=5000 --exclude=192.168.1.5 192.168.1.0/24 -p1-100 -oJ scan_results.json
masscan --interface=eth0 --rate=1000 -p22,80,443 10.0.0.1/24
|
进阶命令
1 2
| masscan -iL cn2.txt -p443 -oX scan_AS4809_2024-10-6.xml --rate 10000
|
调用he.net查询ASN IP段,以下是一些常用的ASN
1 2 3 4 5 6 7 8
| 4809
45102
31898
25820
|
安装python依赖
1
| pip install requests BeautifulSoup4
|
使用python查询asn的ip段
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| import requests from bs4 import BeautifulSoup import csv
asn = "AS4809" url = f"https://bgp.he.net/{asn}#_prefixes"
response = requests.get(url) response.encoding = 'utf-8' html_content = response.text
soup = BeautifulSoup(html_content, "html.parser")
table = soup.find("table", {"id": "table_prefixes4"})
csv_file = f"{asn}_prefixes.csv" with open(csv_file, mode="w", newline='', encoding="utf-8") as file: writer = csv.writer(file) headers = ["Prefix", "Description", "Country"] writer.writerow(headers)
for row in table.find_all("tr")[1:]: prefix_cell = row.find("td", {"class": "nowrap"}) description_cell = row.find_all("td")[1]
prefix = prefix_cell.find("a").get_text(strip=True)
description = description_cell.get_text(strip=True).split("\n")[0]
country_flag = description_cell.find("img") if country_flag: country = country_flag['alt'] else: country = "Unknown"
writer.writerow([prefix, description, country])
print(f"表格数据已保存到 {csv_file} 文件中。")
|
注意事项
- 法律合规:在进行网络扫描时,请确保遵循相关法律法规,避免对目标网络造成影响。
- 防火墙配置:在某些情况下,防火墙可能会阻止 Masscan 的扫描请求,因此需要进行适当的配置。