← retour aux outils back to tools

# 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

Feature | enum4linux | enum4linux-ng
--- | --- | ---
Language | Bash/Perl | Python3
JSON output | No | Yes
YAML output | No | Yes
Error handling | Poor | Improved
RID cycling | Basic | Enhanced
Kerberos | No | Yes
Python3 | No | Yes

## 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é | enum4linux | enum4linux-ng
--- | --- | ---
Langage | Bash/Perl | Python3
Sortie JSON | Non | Oui
Sortie YAML | Non | Oui
Gestion des erreurs | Faible | Améliorée
RID cycling | Basique | Amélioré
Kerberos | Non | Oui
Python3 | Non | Oui

## 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