Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Outils/GitHubGitHub/praetorian-inc/fingerprintx
ReconnaissanceCartographie RéseauScan de PortsCollecte d'InformationsUtilitaires et FrameworksArchived
GitHubpraetorian-inc/fingerprintx

fingerprintx

Utilitaire autonome pour la découverte de services sur les ports ouverts !

Voir le dépôt
7587810il y a 7 moisVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

fingerprintx

Fonctionnalités • Installation • Utilisation • Exécution de fingerprintx • Utilisation comme bibliothèque • Pourquoi pas nmap ? • Notes • Remerciements

fingerprintx est un utilitaire similaire à httpx qui prend également en charge l'identification de services tels que RDP, SSH, MySQL, PostgreSQL, Kafka, etc. fingerprintx peut être utilisé aux côtés de scanners de ports comme Naabu pour identifier un ensemble de ports découverts lors d'un scan de ports. Par exemple, un ingénieur peut souhaiter scanner une plage IP puis identifier rapidement le service exécuté sur tous les ports découverts.

Fonctionnalités

  • Identification rapide des services exposés
  • Découverte de services au niveau applicatif
  • Fonctionne bien avec d'autres outils en ligne de commande
  • Collecte automatique de métadonnées à partir des services identifiés

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

Exemple de fingerprintx

Exemple de chaîne fingerprintx

Exemple SMB fingerprintx

Protocoles pris en charge :

51 plugins de détection de services prenant en charge les protocoles TCP et UDP :

Fonctionnalités notables :

  • Bases de données vectorielles : ChromaDB, Milvus, Pinecone
  • Bases de données relationnelles : PostgreSQL, MySQL, MSSQL, OracleDB, DB2, Sybase, Firebird
  • Bases de données NoSQL : MongoDB, CouchDB, Cassandra, Redis, Elasticsearch, InfluxDB, Neo4j
  • Outils de développement : JDWP (Java Debug Wire Protocol), Java RMI
  • Protocoles industriels : Modbus, IPMI
  • Messagerie : Kafka, MQTT, SMTP
  • Accès à distance : SSH, RDP, Telnet, VNC
  • Transfert de fichiers : FTP, SMB, Rsync
  • Télécom/AAA : Diameter (réseaux 3GPP, LTE/5G), SMPP (passerelles SMS)

Installation

Depuis Github

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

Depuis les sources (go version > 1.18)

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

# with go version > 1.18
$ go build ./cmd/fingerprintx
$ ./fingerprintx -h

Docker

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

# build
docker build -t fingerprintx .

# and run it
docker run --rm fingerprintx -h
docker run --rm fingerprintx -t praetorian.com:80 --json

Utilisation

root@kitploit:~
fingerprintx -h

L'option -h affichera tous les indicateurs pris en charge pour fingerprintx.

root@kitploit:~
Usage:
  fingerprintx [flags]
TARGET SPECIFICATION:
	Requires a host and port number or ip and port number. The port is assumed to be open.
	HOST:PORT or IP:PORT
EXAMPLES:
	fingerprintx -t praetorian.com:80
	fingerprintx -l input-file.txt
	fingerprintx --json -t praetorian.com:80,127.0.0.1:8000

Flags:
      --csv               output format in csv
  -f, --fast              fast mode
  -h, --help              help for fingerprintx
      --json              output format in json
  -l, --list string       input file containing targets
  -o, --output string     output file
  -t, --targets strings   target or comma separated target list
  -w, --timeout int       timeout (milliseconds) (default 500)
  -U, --udp               run UDP plugins
  -v, --verbose           verbose mode

Le mode fast tentera uniquement d'identifier le service par défaut associé à ce port pour chaque cible. Par exemple, si praetorian.com:8443 est l'entrée, seul le plugin https sera exécuté. Si https n'est pas exécuté sur praetorian.com:8443, il n'y aura AUCUNE sortie. Pourquoi faire cela ? C'est un moyen rapide d'identifier la plupart des services dans une grande liste d'hôtes (pensez à la règle des 80/20).

Exécution de fingerprintx

Avec une cible :

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

Par défaut, la sortie est sous la forme : SERVICE://HOST:PORT. Pour obtenir une sortie de service plus détaillée, spécifiez JSON avec l'option --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"}}

Redirigez la sortie d'un autre programme (comme 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

Exécution avec un fichier d'entrée :

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

# or if you prefer
$ fingerprintx -l input.txt
http://praetorian.com:80
telnet://telehack.com:23

Avec plus de métadonnées en sortie :

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"}}

Utilisation comme bibliothèque

fingerprintx peut être importé dans votre projet pour scanner les services sur les ports ouverts. Un exemple de code illustrant comment procéder est fourni ici dans le répertoire examples. Compilez avec go build scan.go. Un autre fichier pouvant servir de référence lors de l'importation de fingerprintx dans votre propre projet est l'exécuteur en ligne de commande.

Pourquoi pas Nmap ?

Nmap est la référence pour le scan réseau. Pourquoi utiliser fingerprintx à la place de nmap ? Les deux raisons principales sont :

  • fingerprintx travaille plus intelligemment, pas plus fort : le premier plugin exécuté sur un serveur avec le port 8080 ouvert est le plugin http. L'approche par service par défaut réduit le temps de scan dans le meilleur des cas. La plupart du temps, les services exécutés sur les ports 80, 443, 22 sont http, https et ssh — c'est donc ce que fingerprintx vérifie en premier.
  • fingerprintx prend en charge la sortie json avec l'option --json. Nmap prend en charge de nombreuses options de sortie (normal, xml, grep), mais elles sont souvent difficiles à analyser et à script correctement. fingerprintx prend en charge la sortie json ce qui facilite l'intégration avec d'autres outils dans des pipelines de traitement.

Notes

  • Pourquoi avez-vous un dossier third_party qui importe les bibliothèques de cryptographie Go ?
    • Bonne question ! Le module d'identification ssh identifie les différentes options cryptographiques prises en charge par le serveur lors de la collecte des métadonnées pendant le processus de handshake. Cela utilise quelques fonctions non exportées, c'est pourquoi les bibliothèques de cryptographie Go sont incluses ici avec un fichier export.go.
  • Fingerprintx n'est pas conçu pour identifier les ports ouverts sur les systèmes cibles et suppose que chaque entrée target:port est ouverte. Si aucun des ports n'est ouvert, il n'y aura pas de sortie car aucun service n'est exécuté sur les cibles.
  • Comment cela se compare-t-il à zgrab2 ?
    • L'utilisation en ligne de commande (et le cas d'utilisation) de zgrab2 est légèrement différente de celle de fingerprintx. Pour zgrab2, le protocole doit être spécifié à l'avance : echo praetorian.com | zgrab2 http -p 8000, ce qui suppose que vous savez déjà ce qui s'y exécute. Pour fingerprintx, ce n'est pas le cas : echo praetorian.com:8000 | fingerprintx. L'approche de scan au niveau applicatif est très similaire.

Remerciements

fingerprintx est le travail de nombreuses personnes, y compris notre grande promotion de stagiaires de 2022. Voici une liste des contributeurs à ce jour :

  • [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)
Télécharger l’outil
SERVICETRANSPORT
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