enum4linux-ng

Réécriture moderne d'enum4linux. Énumération SMB/Windows plus fiable avec sortie JSON/YAML, meilleure gestion des erreurs, et implémentation Python3. Modern rewrite of enum4linux. More reliable SMB/Windows enumeration with JSON/YAML output, better error handling, and Python3 implementation.

↗ https://github.com/cddmp/enum4linux-ng

Overview

enum4linux-ng is a complete Python3 rewrite of the original enum4linux tool. It fixes many reliability issues, adds JSON/YAML output for automation, and improves handling of modern Windows targets. Enumerates users, groups, shares, password policies, OS info, and printer info via SMB/RPC.

Basic Usage

Full enumeration (null session)

enum4linux-ng 10.10.10.1

With credentials

enum4linux-ng -u 'user' -p 'password' 10.10.10.1

JSON output

enum4linux-ng -oJ output.json 10.10.10.1

YAML output

enum4linux-ng -oY output.yaml 10.10.10.1

Verbose

enum4linux-ng -v 10.10.10.1

Quiet (minimal output)

enum4linux-ng -q 10.10.10.1

Specific Enumeration

Users only

enum4linux-ng -U 10.10.10.1

Groups only

enum4linux-ng -G 10.10.10.1

Shares only

enum4linux-ng -S 10.10.10.1

Password policy

enum4linux-ng -P 10.10.10.1

OS information

enum4linux-ng -O 10.10.10.1

Printer info

enum4linux-ng -I 10.10.10.1

NetBIOS

enum4linux-ng -n 10.10.10.1

Authentication Options

Kerberos (domain-joined scenario)

enum4linux-ng -u 'user' -p 'password' -d domain.local -k 10.10.10.1

Pass-the-hash (NTLM)

enum4linux-ng -u 'user' -H NTLM_HASH 10.10.10.1

Null session explicitly

enum4linux-ng -N 10.10.10.1

Output Processing

# Parse JSON output
cat output.json | python3 -c "
import json, sys
data = json.load(sys.stdin)
# Show users
for user in data.get('users', []):
    print(user)
"

Extract user list

cat output.json | jq '.users[].username' -r

Extract shares

cat output.json | jq '.shares[].name' -r

Key Differences from enum4linux

Featureenum4linuxenum4linux-ng
LanguageBash/PerlPython3
JSON outputNoYes
YAML outputNoYes
Error handlingPoorImproved
RID cyclingBasicEnhanced
KerberosNoYes
Python3NoYes

Tips

  • Use -oJ for JSON output when automating or feeding into other tools
  • enum4linux-ng handles modern Windows targets (2019, 2022) much better than the original
  • Null session access is less common on modern Windows — always try authenticated when possible
  • Follow up share enumeration with smbmap or smbclient for content browsing
Help / Man page
enum4linux-ng [options] host

Authentication:
  -u USER         Username
  -p PASS         Password
  -H HASH         NTLM hash
  -k              Use Kerberos auth
  -d DOMAIN       Domain name
  -N              Null session

Enumeration:
  -A              All (default if no flags)
  -U              Users
  -G              Groups
  -S              Shares
  -P              Password policy
  -O              OS info
  -I              Printer info
  -n              NetBIOS names
  -R [range]      RID cycling (e.g. 500-1000)

Output:
  -oJ FILE        JSON output
  -oY FILE        YAML output
  -v              Verbose
  -q              Quiet
  --timeout N     Timeout in seconds

Vue d’ensemble

enum4linux-ng est une réécriture complète en Python3 de l’outil original enum4linux. Elle corrige de nombreux problèmes de fiabilité, ajoute une sortie JSON/YAML pour l’automatisation, et améliore la gestion des cibles Windows modernes. Énumère les utilisateurs, groupes, partages, politiques de mot de passe, informations OS, et informations d’imprimantes via SMB/RPC.

Utilisation de base

# Énumération complète (session nulle)
enum4linux-ng 10.10.10.1

# Avec des identifiants
enum4linux-ng -u 'user' -p 'password' 10.10.10.1

# Sortie JSON
enum4linux-ng -oJ output.json 10.10.10.1

# Sortie YAML
enum4linux-ng -oY output.yaml 10.10.10.1

# Verbeux
enum4linux-ng -v 10.10.10.1

# Silencieux (sortie minimale)
enum4linux-ng -q 10.10.10.1

Énumération spécifique

# Utilisateurs uniquement
enum4linux-ng -U 10.10.10.1

# Groupes uniquement
enum4linux-ng -G 10.10.10.1

# Partages uniquement
enum4linux-ng -S 10.10.10.1

# Politique de mot de passe
enum4linux-ng -P 10.10.10.1

# Informations OS
enum4linux-ng -O 10.10.10.1

# Informations d'imprimante
enum4linux-ng -I 10.10.10.1

# NetBIOS
enum4linux-ng -n 10.10.10.1

Options d’authentification

# Kerberos (scénario intégré au domaine)
enum4linux-ng -u 'user' -p 'password' -d domain.local -k 10.10.10.1

# Pass-the-hash (NTLM)
enum4linux-ng -u 'user' -H NTLM_HASH 10.10.10.1

# Session nulle explicite
enum4linux-ng -N 10.10.10.1

Traitement de la sortie

# Parser la sortie JSON
cat output.json | python3 -c "
import json, sys
data = json.load(sys.stdin)
# Afficher les utilisateurs
for user in data.get('users', []):
    print(user)
"

Extraire la liste des utilisateurs

cat output.json | jq '.users[].username' -r

Extraire les partages

cat output.json | jq '.shares[].name' -r

Différences clés avec enum4linux

Fonctionnalitéenum4linuxenum4linux-ng
LangageBash/PerlPython3
Sortie JSONNonOui
Sortie YAMLNonOui
Gestion des erreursFaibleAméliorée
RID cyclingBasiqueAmélioré
KerberosNonOui
Python3NonOui

Conseils

  • Utilisez -oJ pour la sortie JSON lors de l’automatisation ou de l’intégration avec d’autres outils
  • enum4linux-ng gère bien mieux les cibles Windows modernes (2019, 2022) que l’original
  • L’accès en session nulle est moins courant sur les Windows modernes : essayez toujours en mode authentifié quand c’est possible
  • Poursuivez l’énumération de partages avec smbmap ou smbclient pour parcourir le contenu
Aide / Page de manuel
enum4linux-ng [options] host

Authentication:
  -u USER         Username
  -p PASS         Password
  -H HASH         NTLM hash
  -k              Use Kerberos auth
  -d DOMAIN       Domain name
  -N              Null session

Enumeration:
  -A              All (default if no flags)
  -U              Users
  -G              Groups
  -S              Shares
  -P              Password policy
  -O              OS info
  -I              Printer info
  -n              NetBIOS names
  -R [range]      RID cycling (e.g. 500-1000)

Output:
  -oJ FILE        JSON output
  -oY FILE        YAML output
  -v              Verbose
  -q              Quiet
  --timeout N     Timeout in seconds