projectdiscovery/asnmap
GitHub: projectdiscovery/asnmap
asnmap 是一款基于 Go 的 CLI 与库,利用 ASN 数据快速映射组织的 IP CIDR 范围,提供结构化输出以便后续分析。
Stars: 1014 | Forks: 105
# 功能  - **ASN 到 CIDR** 查询 - **ORG 到 CIDR** 查询 - **DNS 到 CIDR** 查询 - **IP 到 CIDR** 查询 - **ASN/DNS/IP/ORG** 输入 - **JSON/CSV/TEXT** 输出 - 支持 **STDIN/OUT** ## 安装 asnmap 需要 **Go 1.21** 才能成功安装。要安装,只需运行以下命令或从 [release page](https://github.com/projectdiscovery/asnmap/releases) 下载预编译的二进制文件。 ``` go install github.com/projectdiscovery/asnmap/cmd/asnmap@latest ``` ## 使用方法 ``` asnmap -h ``` 这将显示工具的帮助信息。以下是它支持的所有标志。 ``` Usage: ./asnmap [flags] Flags: INPUT: -a, -asn string[] target asn to lookup, example: -a AS5650 -i, -ip string[] target ip to lookup, example: -i 100.19.12.21, -i 2a10:ad40:: -d, -domain string[] target domain to lookup, example: -d google.com, -d facebook.com -org string[] target organization to lookup, example: -org GOOGLE -f, -file string[] targets to lookup from file CONFIGURATIONS: -config string path to the asnmap configuration file -r, -resolvers string[] list of resolvers to use UPDATE: -up, -update update asnmap to latest version -duc, -disable-update-check disable automatic asnmap update check OUTPUT: -o, -output string file to write output to -j, -json display json format output -c, -csv display csv format output -v6 display ipv6 cidr ranges in cli output -v, -verbose display verbose output -silent display silent output -version show version of the project ``` ## 配置 ASNMap CLI ASNMap CLI 基于 ASNMap API 构建,需要从 [ProjectDiscovery Cloud Platform](https://cloud.projectdiscovery.io/?ref=api_key) 获取 API Token,可通过环境变量或交互式 `-auth` 选项进行配置,如下所示。 ### 使用环境变量 ``` export PDCP_API_KEY=************* ``` ### 使用 auth 选项 ``` asnmap -auth ___ _____ __ / _ | / __/ |/ /_ _ ___ ____ / __ |_\ \/ / ' \/ _ / _ \ /_/ |_/___/_/|_/_/_/_/\_,_/ .__/ /_/ projectdiscovery.io [INF] Get your free api key by signing up at https://cloud.projectdiscovery.io [*] Enter PDCP API Key (exit to abort): ************* [INF] Successfully logged in as (@user) ``` ## 运行 asnmap **asnmap** 支持多种输入,包括 **ASN**、**IP**、**DNS** 和 **ORG** 名称,以查询 ASN/CIDR 信息。 | 输入 | ASN | DNS | IP | ORG | | ------- | --------- | ------------- | --------------- | -------- | | 示例 | `AS14421` | `example.com` | `93.184.216.34` | `GOOGLE` | 输入可以使用特定选项或 STDIN 提供,支持所有支持的格式。所有选项均支持单个、多个(逗号分隔)和文件输入。 ``` echo GOOGLE | ./asnmap -silent ``` asnnmap 示例输入: ``` asnmap -a AS45596 -silent asnmap -i 100.19.12.21 -silent asnmap -d hackerone.com -silent asnmap -org GOOGLE -silent ``` ### 默认运行 **asnmap** 默认返回给定输入的 CIDR 范围。 ``` echo GOOGLE | ./asnmap ___ _____ __ / _ | / __/ |/ /_ _ ___ ____ / __ |_\ \/ / ' \/ _ / _ \ /_/ |_/___/_/|_/_/_/_/\_,_/ .__/ /_/ v0.0.1 projectdiscovery.io Use with caution. You are responsible for your actions Developers assume no liability and are not responsible for any misuse or damage. 8.8.4.0/24 8.8.8.0/24 8.35.200.0/21 34.3.3.0/24 34.4.4.0/24 34.96.0.0/20 34.96.32.0/19 34.96.64.0/18 34.98.64.0/18 34.98.136.0/21 34.98.144.0/21 ``` ### JSON 输出 **asnmap** 默认显示 CIDR 范围,所有信息始终以 JSON 格式提供,使用 `-json` 输出是最方便的自动化和后处理方式。 ``` echo hackerone.com | ./asnmap -json -silent | jq ``` ``` { "timestamp": "2022-09-19 12:14:33.267339314 +0530 IST", "input": "hackerone.com", "as_number": "AS13335", "as_name": "CLOUDFLARENET", "as_country": "US", "as_range": [ "104.16.0.0/14", "104.20.0.0/16", "104.21.0.0/17" ] } { "timestamp": "2022-09-19 12:14:33.457401266 +0530 IST", "input": "hackerone.com", "as_number": "AS13335", "as_name": "CLOUDFLARENET", "as_country": "US", "as_range": [ "2606:4700:8390::/44" ] } ``` ### CSV 输出 **asnmap** 还支持 csv 格式输出,包含与 JSON 输出相同的所有信息。 ``` echo hackerone.com | ./asnmap -csv -silent ``` ``` timestamp|input|as_number|as_name|as_country|as_range 2022-09-19 12:15:04.906664007 +0530 IST|hackerone.com|AS13335|CLOUDFLARENET|US|104.16.0.0/14,104.20.0.0/16,104.21.0.0/17 2022-09-19 12:15:05.201328136 +0530 IST|hackerone.com|AS13335|CLOUDFLARENET|US|2606:4700:9760::/44 ``` ### 与其他 PD 项目一起使用 asnmap 的输出可以直接通过管道传递给工作流中接受 stdin 作为输入的其他项目,例如: - `echo AS54115 | asnmap | tlsx` - `echo AS54115 | asnmap | dnsx -ptr` - `echo AS54115 | asnmap | naabu -p 443` - `echo AS54115 | asnmap | naabu -p 443 | httpx` - `echo AS54115 | asnmap | naabu -p 443 | httpx | nuclei -id tech-detect` ## 将 asnmap 用作库 在 [examples](examples/) 文件夹中提供了从 Go 代码使用 asnmap 的示例。