Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
fingerprintx — 用于开放端口上服务发现的独立工具! | Kitploit
工具/GitHubGitHub/praetorian-inc/fingerprintx
侦察网络映射端口扫描信息收集实用工具与框架Archived
GitHubpraetorian-inc/fingerprintx

fingerprintx

用于开放端口上服务发现的独立工具!

查看仓库
75878107个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

fingerprintx

功能 • 安装 • 使用 • 运行 fingerprintx • 作为库使用 • 为何不用 Nmap? • 说明 • 致谢

fingerprintx 是一款类似于 httpx 的工具,但额外支持对 RDP、SSH、MySQL、PostgreSQL、Kafka 等服务的指纹识别。fingerprintx 可与 Naabu 等端口扫描器配合使用,对端口扫描过程中发现的端口集进行指纹识别。例如,工程师可能希望扫描某个 IP 范围,然后快速识别所有已发现端口上运行的服务。

功能

  • 快速识别暴露的服务
  • 应用层服务发现
  • 与其他命令行工具配合良好
  • 自动收集已识别服务的元数据

https://user-images.githubusercontent.com/69640071/193334167-8405dd50-f9bf-4386-b7b8-83255af41a8b.mov

Fingerprintx 示例

Fingerprintx 链式示例

Fingerprintx SMB 示例

支持的协议:

51 个服务检测插件,支持 TCP 和 UDP 协议:

显著特性:

  • 向量数据库: ChromaDB, Milvus, Pinecone
  • 关系型数据库: PostgreSQL, MySQL, MSSQL, OracleDB, DB2, Sybase, Firebird
  • NoSQL 数据库: MongoDB, CouchDB, Cassandra, Redis, Elasticsearch, InfluxDB, Neo4j
  • 开发者工具: JDWP(Java 调试线协议),Java RMI
  • 工业协议: Modbus, IPMI
  • 消息队列: Kafka, MQTT, SMTP
  • 远程访问: SSH, RDP, Telnet, VNC
  • 文件传输: FTP, SMB, Rsync
  • 电信/AAA: Diameter(3GPP 网络,LTE/5G),SMPP(SMS 网关)

安装

从 GitHub

root@kitploit:~
go install github.com/praetorian-inc/fingerprintx/cmd/fingerprintx@latest

从源码(go 版本 > 1.18)

root@kitploit:~
$ git clone [email protected]:praetorian-inc/fingerprintx.git
$ cd fingerprintx

# 使用 go 版本 > 1.18
$ go build ./cmd/fingerprintx
$ ./fingerprintx -h

Docker

root@kitploit:~
$ git clone [email protected]:praetorian-inc/fingerprintx.git
$ cd fingerprintx

# 构建
docker build -t fingerprintx .

# 运行
docker run --rm fingerprintx -h
docker run --rm fingerprintx -t praetorian.com:80 --json

使用

root@kitploit:~
fingerprintx -h

使用 -h 选项将显示 fingerprintx 支持的所有标志。

root@kitploit:~
Usage:
  fingerprintx [flags]
目标指定:
	需要主机和端口号,或 IP 和端口号。假设端口已开放。
	格式:HOST:PORT 或 IP:PORT
示例:
	fingerprintx -t praetorian.com:80
	fingerprintx -l input-file.txt
	fingerprintx --json -t praetorian.com:80,127.0.0.1:8000

Flags:
      --csv               以 CSV 格式输出
  -f, --fast              快速模式
  -h, --help              fingerprintx 帮助
      --json              以 JSON 格式输出
  -l, --list string       包含目标的输入文件
  -o, --output string     输出文件
  -t, --targets strings   目标或逗号分隔的目标列表
  -w, --timeout int       超时时间(毫秒)(默认 500)
  -U, --udp               运行 UDP 插件
  -v, --verbose           详细模式

“快速”模式将仅尝试对每个目标端口对应的默认服务进行指纹识别。例如,如果输入为 praetorian.com:8443,则仅运行 https 插件。如果在 praetorian.com:8443 上未运行 https,则不会有任何输出。为什么这样做?这是一种从大量主机列表中快速对大部分服务进行指纹识别的方法(可参考 80/20 法则)。

运行 Fingerprintx

单个目标:

root@kitploit:~
$ fingerprintx -t 127.0.0.1:8000
http://127.0.0.1:8000

默认输出格式为:SERVICE://HOST:PORT。要获取更详细的服务输出,请使用 --json 标志指定 JSON 格式:

root@kitploit:~
$ fingerprintx -t 127.0.0.1:8000 --json
{"ip":"127.0.0.1","port":8000,"service":"http","transport":"tcp","metadata":{"responseHeaders":{"Content-Length":["1154"],"Content-Type":["text/html; charset=utf-8"],"Date":["Mon, 19 Sep 2022 18:23:18 GMT"],"Server":["SimpleHTTP/0.6 Python/3.10.6"]},"status":"200 OK","statusCode":200,"version":"SimpleHTTP/0.6 Python/3.10.6"}}

从其他程序(例如 naabu)管道输入:

root@kitploit:~
$ naabu 127.0.0.1 -silent 2>/dev/null | fingerprintx
http://127.0.0.1:8000
ftp://127.0.0.1:21

使用输入文件运行:

root@kitploit:~
$ cat input.txt | fingerprintx
http://praetorian.com:80
telnet://telehack.com:23

# 或者使用
$ fingerprintx -l input.txt
http://praetorian.com:80
telnet://telehack.com:23

输出更多元数据:

root@kitploit:~
$ cat input.txt | fingerprintx --json
{"host":"praetorian.com","ip":"146.148.61.165","port":80,"service":"http","transport":"tcp","metadata":{"responseHeaders":{"Connection":["keep-alive"],"Content-Type":["text/html"],"Date":["Mon, 19 Sep 2022 18:37:55 GMT"],"Etag":["W/\"5e3e263f-1703\""],"Keep-Alive":["timeout=20"],"Server":["nginx"],"Vary":["Accept-Encoding"]},"status":"404 Not Found","statusCode":404,"version":"nginx"}}
{"host":"telehack.com","ip":"64.13.139.230","port":23,"service":"telnet","transport":"tcp","metadata":{"serverData":"fffb03"}}

作为库使用

fingerprintx 可以导入到你的项目中,扫描开放端口上的服务。相关示例代码见 此处(examples 目录中的 scan.go)。使用 go build scan.go 构建。另一个在导入 fingerprintx 到你自己项目时可能有用的参考文件是命令行运行器。

为什么不用 Nmap?

Nmap 是网络扫描的标准工具。为什么使用 fingerprintx 而不是 nmap?主要有两个原因:

  • fingerprintx 更聪明,而不是更费力:针对运行在端口 8080 的服务器,第一个运行的插件是 http 插件。这种默认服务方法在最佳情况下能大幅缩短扫描时间。大多数情况下运行在端口 80、443、22 的服务分别是 http、https 和 ssh——因此 fingerprintx 会首先检查这些。
  • fingerprintx 支持通过 --json 标志输出 JSON 格式。Nmap 支持多种输出选项(normal、xml、grep),但通常难以解析和编写相应脚本。fingerprintx 支持 JSON 输出,便于在处理流水线中与其他工具集成。

说明

  • 为什么你有一个 third_party 文件夹导入了 Go 加密库?
    • 问得好!ssh 指纹模块在握手过程中收集元数据时会识别服务器支持的各种加密选项。这需要使用一些未导出的函数,因此 Go 加密库被包含在这里,并附带一个 export.go 文件。
  • Fingerprintx 并不设计用于识别目标系统上的开放端口,它假设输入的每个 target:port 都是开放的。如果没有端口开放,则不会有输出,因为目标上没有服务在运行。
  • 它和 zgrab2 相比如何?
    • zgrab2 的命令行用法(和使用场景)与 fingerprintx 略有不同。对于 zgrab2,必须预先指定协议:echo praetorian.com | zgrab2 http -p 8000,这要求你已经知道主机上运行的是什么服务。而 fingerprintx 则不需要:echo praetorian.com:8000 | fingerprintx。“应用层”协议扫描方法非常相似。

致谢

fingerprintx 是许多人的劳动成果,包括我们杰出的 2022 届实习生。以下是至今的贡献者列表:

  • [Soham Roy]praetorian-sohamroy
  • [Jue Huang] (https://github.com/jue-huang)
  • [Henry Jung] (https://github.com/henryjung64)
  • [Tristan Wiesepape][qwetboy10] (https://github.com/qwetboy10)
  • [Joseph Henry][jwhenry28] (https://github.com/jwhenry28)
  • [Noah Tutt][noahtutt] (https://github.com/noahtutt)
  • [Nathan Sportsman][nsportsman] (https://github.com/nsportsman)
下载工具
服务传输层
CassandraTCP
ChromaDBTCP
CouchDBTCP
DB2TCP
DHCPUDP
DiameterTCP
DNSTCP/UDP
EchoTCP
ElasticsearchTCP
FirebirdTCP
FTPTCP
HTTP/HTTPSTCP
IMAPTCP
InfluxDBTCP
IPMITCP
IPSECUDP
Java RMITCP
JDWPTCP
KafkaTCP
LDAPTCP
Linux RPCTCP
MemcachedTCP
MilvusTCP
ModbusTCP
MongoDBTCP
MQTTTCP
MSSQLTCP
MySQLTCP
Neo4jTCP
NetBIOS-NSUDP
NTPUDP
OpenVPNUDP
OracleDBTCP
PineconeTCP
POP3TCP
PostgreSQLTCP
RDPTCP
RedisTCP
RsyncTCP
RTSPTCP
SMBTCP
SMPPTCP
SMTPTCP
SNMPUDP
SNPPTCP
SSHTCP
STUNUDP
SybaseTCP
TelnetTCP
VNCTCP