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
sx — :vulcan_salute: Scanner réseau rapide, moderne et facile à utiliser. | Kitploit
Outils/GitHubGitHub/v-byte-cpu/sx
ReconnaissanceCartographie RéseauScan de PortsCollecte d'InformationsTests d'Intrusion
GitHubv-byte-cpu/sx

sx

🖖 Scanner réseau rapide, moderne et facile à utiliser.

Voir le dépôt
1.6k10862il y a 27 joursVé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

sx

License Build Status GoReportCard Status Platform

sx est le scanner réseau en ligne de commande conçu pour suivre la philosophie UNIX.

L'objectif de ce projet est de créer le scanner réseau le plus rapide avec un code propre et simple.

📖 Table des matières

  • Fonctionnalités
  • Installation
  • Compiler depuis les sources
  • Démarrage rapide
  • Références
  • Contribuer
  • Crédits
  • Licence

✨ Fonctionnalités

  • ⚡ 30x plus rapide que nmap
  • Scan ARP : Scanner vos réseaux locaux pour détecter les périphériques actifs
  • Scan ICMP : Utiliser des techniques avancées de scan ICMP pour détecter les hôtes actifs et les règles de pare-feu
  • Scan TCP SYN : Scan semi-ouvert traditionnel pour trouver les ports TCP ouverts
  • Scans TCP FIN / NULL / Xmas : Techniques de scan pour contourner certaines règles de pare-feu
  • Scans TCP personnalisés avec n'importe quels flags TCP : Envoyez les paquets exotiques de votre choix et obtenez un résultat avec tous les flags TCP définis dans le paquet de réponse
  • Scan UDP : Scanner les ports UDP et obtenir les réponses ICMP complètes pour détecter les ports ouverts ou les règles de pare-feu
  • Scans applicatifs :
    • Scan SOCKS5 : Détecter les proxies SOCKS5 actifs en scannant une plage IP ou une liste de paires ip/port depuis un fichier
  • Itération aléatoire sur les adresses IP à l'aide de groupes multiplicatifs cycliques finis
  • Support de sortie JSON : sx est conçu spécifiquement pour un traitement automatique pratique des résultats

📦 Installation

Le moyen le plus simple est de télécharger depuis GitHub Releases et de placer le fichier exécutable dans votre PATH.

🛠 Compiler depuis les sources

Prérequis :

  • Go 1.25 ou plus récent
  • libpcap (déjà installé si vous utilisez wireshark)

Sur macOS, installez d'abord les Xcode Command Line Tools pour que CGO puisse lier la libpcap système :

root@kitploit:~
xcode-select --install

Depuis la racine de l'arborescence des sources, exécutez :

root@kitploit:~
go build

🚀 Démarrage rapide

Voici quelques exemples rapides montrant comment scanner des réseaux avec sx.

Scan ARP

Scannez votre réseau local et affichez l'adresse IP, l'adresse MAC et le fabricant matériel associé des périphériques connectés :

root@kitploit:~
sx arp 192.168.0.1/24

exemple de sortie :

root@kitploit:~
192.168.0.1          b0:be:76:40:05:8d    TP-LINK TECHNOLOGIES CO.,LTD.
192.168.0.111        80:c5:f2:0b:02:e3    AzureWave Technology Inc.
192.168.0.171        88:53:95:2d:3c:af    Apple, Inc.

avec sortie JSON :

root@kitploit:~
sx arp --json 192.168.0.1/24

exemple de sortie :

root@kitploit:~
{"ip":"192.168.0.1","mac":"b0:be:76:40:05:8d","vendor":"TP-LINK TECHNOLOGIES CO.,LTD."}
{"ip":"192.168.0.111","mac":"80:c5:f2:0b:02:e3","vendor":"AzureWave Technology Inc."}
{"ip":"192.168.0.171","mac":"88:53:95:2d:3c:af","vendor":"Apple, Inc."}

attendez 5 secondes avant de quitter pour recevoir les paquets de réponse retardés, par défaut sx attend 300 millisecondes :

root@kitploit:~
sx arp --exit-delay 5s 192.168.0.1/24

Mode de scan en direct qui rescanner le réseau toutes les 10 secondes :

root@kitploit:~
sx arp 192.168.0.1/24 --live 10s

Scan TCP

Contrairement à nmap et autres scanners qui effectuent implicitement des requêtes ARP pour résoudre les adresses IP en adresses MAC avant le scan réel, sx utilise explicitement le concept de cache ARP. Un fichier de cache ARP est un fichier texte simple contenant une chaîne JSON par ligne (fichier JSONL), qui a les mêmes champs JSON que la sortie JSON du scan ARP décrite ci-dessus. Les scans de protocoles de plus haut niveau comme TCP et UDP lisent le fichier de cache ARP depuis l'entrée standard, puis démarrent le scan réel.

Cela simplifie non seulement la conception du programme, mais accélère également le processus de scan, car il n'est pas nécessaire d'effectuer un scan ARP à chaque fois.

Supposons que le cache ARP réel se trouve dans le fichier arp.cache. Nous pouvons le créer manuellement ou utiliser le scan ARP comme montré ci-dessous :

root@kitploit:~
sx arp 192.168.0.1/24 --json | tee arp.cache

Une fois que nous avons le fichier de cache ARP, nous pouvons lancer des scans de protocoles de plus haut niveau comme le scan TCP SYN :

root@kitploit:~
cat arp.cache | sx tcp -p 1-65535 192.168.0.171

exemple de sortie :

root@kitploit:~
192.168.0.171        22
192.168.0.171        443

Dans ce cas, nous découvrons que les ports 22 et 443 sont ouverts.

Si vous voyez send: No buffer space available lors de scans volumineux, cela signifie généralement que l'expéditeur dépasse les tampons du noyau/des sockets raw. La première correction consiste à ajouter --rate et à réduire la rafale d'envoi, par exemple -r 100000/s ou moins si nécessaire. Sur certains systèmes, ajuster les limites des sockets/tampons du système d'exploitation peut également aider, mais la limitation de débit est la correction principale.

scan avec sortie JSON :

root@kitploit:~
cat arp.cache | sx tcp  --json -p 1-65535 192.168.0.171

exemple de sortie :

root@kitploit:~
{"scan":"tcpsyn","ip":"192.168.0.171","port":22}
{"scan":"tcpsyn","ip":"192.168.0.171","port":443}

scan de plusieurs plages de ports :

root@kitploit:~
cat arp.cache | sx tcp -p 1-23,25-443 192.168.0.171

ou ports individuels :

root@kitploit:~
cat arp.cache | sx tcp -p 22,443 192.168.0.171

ou utilisez l'option --ports-file pour spécifier un fichier avec des ports ou plages de ports à scanner, un par ligne.

scan de paires ip/port depuis un fichier avec sortie JSON :

root@kitploit:~
cat arp.cache | sx tcp --json -f ip_ports_file.jsonl

Chaque ligne du fichier d'entrée est une chaîne JSON, qui doit contenir les champs ip et port.

exemple de fichier d'entrée :

root@kitploit:~
{"ip":"10.0.1.1","port":1080}
{"ip":"10.0.2.2","port":1081}

Il est possible de spécifier le fichier de cache ARP à l'aide des options -a ou --arp-cache :

root@kitploit:~
sx tcp -a arp.cache -p 22,443 192.168.0.171

ou redirection stdin :

root@kitploit:~
sx tcp -p 22,443 192.168.0.171 < arp.cache

Vous pouvez également utiliser la sous-commande tcp syn au lieu de tcp :

root@kitploit:~
cat arp.cache | sx tcp syn -p 22 192.168.0.171

tcp est simplement un raccourci pour la sous-commande tcp syn sauf si l'option --flags est passée, voir ci-dessous.

Interfaces VPN

sx prend en charge le scan avec des interfaces réseau virtuelles (wireguard, openvpn, etc.) et dans ce cas, il n'est pas nécessaire d'utiliser le cache ARP, car ces interfaces nécessitent des paquets IP bruts plutôt que des trames Ethernet en entrée. Par exemple, scanner une adresse IP sur un réseau VPN :

root@kitploit:~
sx tcp 10.1.27.1 -p 80 --json

Scan TCP FIN

La plupart des scanners réseau essaient d'interpréter les résultats du scan. Par exemple, ils disent "ce port est fermé" au lieu de "j'ai reçu un RST". Parfois ils ont raison. Parfois non. C'est plus facile pour les débutants, mais quand vous savez ce que vous faites, vous essayez de déduire ce qui s'est réellement passé à partir de l'interprétation du programme, surtout pour des techniques de scan plus avancées.

sx essaie de surmonter ces problèmes. Il retourne des informations sur tous les paquets de réponse pour les scans TCP FIN, NULL, Xmas et TCP personnalisés. Les informations contiennent l'adresse IP, le port TCP et tous les flags TCP définis dans le paquet de réponse.

Le scan TCP FIN et ses autres variantes (NULL et Xmas) exploitent la RFC793 Section 3.9 :

SEGMENT ARRIVES

If the state is CLOSED (i.e., TCB does not exist) then

root@kitploit:~
 all data in the incoming segment is discarded.  An incoming
 segment containing a RST is discarded.  An incoming segment not
 containing a RST causes a RST to be sent in response.  The
 acknowledgment and sequence field values are selected to make the
 reset sequence acceptable to the TCP that sent the offending
 segment.

donc un port fermé devrait retourner un paquet avec le flag RST.

Cette section indique également :

If the state is LISTEN then

...

Any other control or text-bearing segment (not containing SYN) must have an ACK and thus would be discarded by the ACK processing. An incoming RST segment could not be valid, since it could not have been sent in response to anything sent by this incarnation of the connection. So you are unlikely to get here, but if you do, drop the segment, and return.

la phrase principale ici : drop the segment, and return. Donc un port ouvert sur la plupart des systèmes d'exploitation abandonnera le paquet TCP contenant n'importe quel flag sauf SYN, ACK et RST.

Scannons un port fermé avec le scan TCP FIN :

root@kitploit:~
cat arp.cache | sx tcp fin --json -p 23 192.168.0.171

exemple de sortie :

root@kitploit:~
{"scan":"tcpfin","ip":"192.168.0.171","port":23,"flags":"ar"}

Le champ flags contient tous les flags TCP dans le paquet de réponse, où chaque lettre représente l'un des flags TCP :

  • s - flag SYN
  • a - flag ACK
  • f - flag FIN
  • r - flag RST
  • p - flag PSH
  • u - flag URG
  • e - flag ECE
  • c - flag CWR
  • n - flag NS

Dans ce cas, nous découvrons que le port 23 a envoyé un paquet de réponse avec les flags ACK et RST définis (réponse typique pour un port fermé selon la rfc793).

Si nous scannons un port ouvert, nous n'obtenons aucune réponse (à moins que le pare-feu ne simule les réponses).

Les autres types de scans TCP peuvent être menés par analogie.

Scan TCP NULL :

root@kitploit:~
cat arp.cache | sx tcp null --json -p 23 192.168.0.171

Scan TCP Xmas :

root@kitploit:~
cat arp.cache | sx tcp xmas --json -p 23 192.168.0.171

Scans TCP personnalisés

Il est possible d'envoyer des paquets TCP avec des flags TCP personnalisés en utilisant l'option --flags.

Envoyons un paquet TCP avec les flags SYN, FIN et ACK définis pour identifier le système d'exploitation distant :

root@kitploit:~
cat arp.cache | sx tcp --flags syn,fin,ack --json -p 23 192.168.0.171

Windows et MacOS ne répondront pas à ce paquet, mais Linux enverra un paquet de réponse avec le flag RST.

Arguments possibles pour l'option --flags :

  • syn - flag SYN
  • ack - flag ACK
  • fin - flag FIN
  • rst - flag RST
  • psh - flag PSH
  • urg - flag URG
  • ece - flag ECE
  • cwr - flag CWR
  • ns - flag NS

Scan UDP

sx peut aider à investiguer les ports UDP ouverts. Le scan UDP exploite la RFC1122 Section 4.1.3.1 :

If a datagram arrives addressed to a UDP port for which there is no pending LISTEN call, UDP SHOULD send an ICMP Port Unreachable message.

Comme pour les scans TCP, sx retourne des informations sur tous les paquets ICMP de réponse pour le scan UDP. Les informations contiennent l'adresse IP, le type et le code du paquet ICMP définis dans le paquet de réponse.

Par exemple, pour détecter un serveur DNS sur l'hôte, exécutez :

root@kitploit:~
cat arp.cache | sx udp --json -p 53 192.168.0.171

exemple de sortie :

root@kitploit:~
{"scan":"udp","ip":"192.168.0.171","icmp":{"type":3,"code":3}}

Dans ce cas, nous découvrons que l'hôte a envoyé un paquet ICMP de réponse avec le type Destination Unreachable et le code Port Unreachable (réponse typique pour un port fermé selon la rfc1122).

Les pare-feux définissent généralement un code ICMP différent de Port Unreachable et peuvent ainsi être facilement détectés.

Limitation de débit

Parfois, vous devez limiter la vitesse à laquelle les paquets générés sont envoyés. Cela peut être fait avec l'option --rate.

Par exemple, pour limiter la vitesse à 1 paquet toutes les 5 secondes :

root@kitploit:~
cat arp.cache | sx tcp --rate 1/5s --json -p 22,80,443 192.168.0.171

Exclure des sous-réseaux

Parfois, vous devez exclure certaines adresses IP et sous-réseaux du scan. Cela peut être fait avec l'option --exclude. Elle spécifie un fichier avec des IP ou sous-réseaux en notation CIDR à exclure, un par ligne.

Par exemple, pour exclure les adresses RFC 1918, créez un fichier ips.txt avec le contenu suivant :

root@kitploit:~
10.0.0.0/8
172.16.0.0/16
192.168.0.0/16

Vous pouvez également insérer des commentaires et des lignes vides :

root@kitploit:~
# exclude RFC 1918 addresses
10.0.0.0/8 # comment 1
172.16.0.0/12 # comment 2
192.168.0.0/16 # comment 3

0.0.0.0/8 # used in initialization procedures (RFC 6890)

# exclude RFC 5735 addresses
127.0.0.0/8 # loopback address
192.0.0.0/24 # reserved block for IETF protocol assignments
224.0.0.0/4 # allocated for use in IPv4 multicast address assignments
240.0.0.0/4 # reserved for future use

# exclude Amazon network
3.0.0.0/8

# ip addresses are valid as well
1.1.1.1

et exécutez un scan avec l'option --exclude ips.txt.

Scanner TCP SYN LAN en direct

Comme exemple de composition de scan, vous pouvez combiner les scans ARP et TCP SYN pour créer un scanner de ports TCP en direct qui scanne périodiquement l'ensemble du réseau LAN.

Lancez un scan ARP en direct et enregistrez les résultats dans le fichier arp.cache :

root@kitploit:~
sx arp 192.168.0.1/24 --live 10s --json | tee arp.cache

Dans un autre terminal, lancez le scan TCP SYN :

root@kitploit:~
while true; do sx tcp -p 1-65535 -a arp.cache -f arp.cache; sleep 30; done

Scan SOCKS5

sx peut détecter les proxies SOCKS5 actifs. Pour scanner, vous devez spécifier une plage IP ou un fichier JSONL avec des paires ip/port.

Par exemple, un scan de plage IP :

root@kitploit:~
sx socks -p 1080 10.0.0.1/16

scan de paires ip/port depuis un fichier avec sortie JSON :

root@kitploit:~
sx socks --json -f ip_ports_file.jsonl 

Chaque ligne du fichier d'entrée est une chaîne JSON, qui doit contenir les champs ip et port.

exemple de fichier d'entrée :

root@kitploit:~
{"ip":"10.0.1.1","port":1080}
{"ip":"10.0.2.2","port":1081}

Vous pouvez également spécifier une plage de ports à scanner :

root@kitploit:~
sx socks -p 1080-4567 -f ips_file.jsonl

Dans ce cas, seules les adresses IP seront prises du fichier et le champ port n'est plus nécessaire.

Aide d'utilisation

root@kitploit:~
sx help

📜 Références

  • Network Security Assessment: Know Your Network 1st Edition de Chris McNab
  • ICMP Usage in Scanning - The Complete Know-How de Ofir Arkin
  • Transmission Control Protocol ( rfc793 )
  • User Datagram Protocol ( rfc768 )
  • Requirements for Internet Hosts -- Communication Layers ( rfc1122 )
  • SOCKS Protocol Version 5 ( rfc1928 )
  • Internet Control Message Protocol ( rfc792 )

🤝 Contribuer

Les contributions, les problèmes et les demandes de fonctionnalités sont les bienvenus.

💎 Crédits

Le logo a été conçu par mikhailtsoy.com

Licence

Ce projet est sous licence MIT. Voir le fichier LICENSE pour le texte complet de la licence.

Télécharger l’outil