ngrep
Network grep. Applique la correspondance de motifs regex façon grep au trafic réseau : recherche des chaînes dans les payloads de paquets en temps réel ou depuis des fichiers pcap sans analyse complète des paquets. Network grep. Applies grep-style regex pattern matching to network traffic — searches packet payloads for strings in real-time or from pcap files without full packet analysis.
↗ https://github.com/jpr5/ngrepOverview
ngrep works like grep but on network traffic. It captures packets and searches payloads for regex patterns — ideal for quick credential hunting, protocol debugging, and finding specific strings in network traffic without setting up full traffic analysis.
Basic Usage
Search for a pattern in live traffic
sudo ngrep "password" -i eth0
Case-insensitive search
sudo ngrep -i "password" -d eth0
Search in pcap file
ngrep "password" -I capture.pcap
Search with BPF filter
sudo ngrep "User-Agent" -d eth0 'port 80'
Pattern Matching
Find credentials in HTTP
sudo ngrep -i "password|passwd|login|credential" -d eth0 'port 80'
Find basic auth headers
sudo ngrep "Authorization: Basic" -d eth0
Find FTP credentials
sudo ngrep -i "user\|pass" -d eth0 'port 21'
Find SMTP auth
sudo ngrep "AUTH\|password" -d eth0 'port 25'
Catch POST data
sudo ngrep "POST" -d eth0 'port 80'
BPF Filters
Specific port
sudo ngrep "pattern" -d eth0 'port 80'
Multiple ports
sudo ngrep "pattern" -d eth0 'port 80 or port 443'
Specific host
sudo ngrep "pattern" -d eth0 'host 192.168.1.100'
Protocol
sudo ngrep "pattern" -d eth0 'udp port 53'
Output Control
Print only matching lines (no context)
sudo ngrep -q "password" -d eth0
Show timestamps
sudo ngrep -t "password" -d eth0
XML output
sudo ngrep -O output.pcap "password" -d eth0
Save matched packets to pcap
sudo ngrep -O matches.pcap "login" -d eth0
Read from pcap
ngrep "GET /admin" -I capture.pcap
Practical Examples
Monitor for SQL injection attempts
sudo ngrep -i "union\|select\|drop table" -d eth0 'port 80'
# Capture HTTP Basic Auth
sudo ngrep "Authorization: Basic" -d eth0 | \
grep -oP 'Basic [A-Za-z0-9+/=]+' | \
while read line; do
echo "$line" | awk '{print $2}' | base64 -d
done
Watch for suspicious DNS
sudo ngrep -i "evil\|malware\|c2" -d eth0 'port 53'
Monitor web app traffic
sudo ngrep -i "error\|exception\|debug" -d eth0 'port 8080'
Tips
- Faster to set up than Wireshark for specific string searches
- Use BPF filters to narrow scope and improve performance
-q(quiet) removes the dots for non-matching packets — cleaner output- For credential hunting, pair with
base64 -dto decode HTTP Basic Auth - ngrep doesn’t reassemble TCP streams — use tcpflow for full session data
Help / Man page
ngrep [options] [match expression] [bpf filter]
-d IFACE Interface (default: first non-loopback)
-I FILE Input pcap file
-O FILE Output pcap file (matched packets)
-i Case-insensitive matching
-q Quiet (no non-matching output)
-t Show timestamps
-x Print in hex
-A N After-match context (N packets)
-B N Before-match context (N packets)
-W byline Print each packet on one line
Vue d’ensemble
ngrep fonctionne comme grep mais sur le trafic réseau. Il capture les paquets et recherche des motifs regex dans les payloads : idéal pour la chasse rapide aux credentials, le débogage de protocole, et la recherche de chaînes spécifiques dans le trafic réseau sans mettre en place une analyse de trafic complète.
Utilisation de base
# Rechercher un motif dans le trafic en direct
sudo ngrep "password" -i eth0
# Recherche insensible à la casse
sudo ngrep -i "password" -d eth0
# Rechercher dans un fichier pcap
ngrep "password" -I capture.pcap
# Recherche avec un filtre BPF
sudo ngrep "User-Agent" -d eth0 'port 80'
Correspondance de motifs
# Trouver des credentials dans HTTP
sudo ngrep -i "password|passwd|login|credential" -d eth0 'port 80'
# Trouver les en-têtes d'authentification basique
sudo ngrep "Authorization: Basic" -d eth0
# Trouver des credentials FTP
sudo ngrep -i "user\|pass" -d eth0 'port 21'
# Trouver l'authentification SMTP
sudo ngrep "AUTH\|password" -d eth0 'port 25'
# Capturer les données POST
sudo ngrep "POST" -d eth0 'port 80'
Filtres BPF
# Port spécifique
sudo ngrep "pattern" -d eth0 'port 80'
# Plusieurs ports
sudo ngrep "pattern" -d eth0 'port 80 or port 443'
# Hôte spécifique
sudo ngrep "pattern" -d eth0 'host 192.168.1.100'
# Protocole
sudo ngrep "pattern" -d eth0 'udp port 53'
Contrôle de la sortie
# N'afficher que les lignes correspondantes (sans contexte)
sudo ngrep -q "password" -d eth0
# Afficher les timestamps
sudo ngrep -t "password" -d eth0
# Sortie XML
sudo ngrep -O output.pcap "password" -d eth0
# Sauvegarder les paquets correspondants dans un pcap
sudo ngrep -O matches.pcap "login" -d eth0
# Lire depuis un pcap
ngrep "GET /admin" -I capture.pcap
Exemples pratiques
# Surveiller les tentatives d'injection SQL
sudo ngrep -i "union\|select\|drop table" -d eth0 'port 80'
# Capturer l'authentification HTTP Basic
sudo ngrep "Authorization: Basic" -d eth0 | \
grep -oP 'Basic [A-Za-z0-9+/=]+' | \
while read line; do
echo "$line" | awk '{print $2}' | base64 -d
done
# Surveiller le DNS suspect
sudo ngrep -i "evil\|malware\|c2" -d eth0 'port 53'
# Surveiller le trafic d'une application web
sudo ngrep -i "error\|exception\|debug" -d eth0 'port 8080'
Conseils
- Plus rapide à mettre en place que Wireshark pour des recherches de chaînes spécifiques
- Utiliser des filtres BPF pour réduire la portée et améliorer les performances
-q(quiet) supprime les points pour les paquets non correspondants : sortie plus propre- Pour la chasse aux credentials, associer avec
base64 -dpour décoder l’authentification HTTP Basic - ngrep ne réassemble pas les flux TCP : utiliser tcpflow pour les données de session complètes
Aide / Page de manuel
ngrep [options] [match expression] [bpf filter]
-d IFACE Interface (default: first non-loopback)
-I FILE Input pcap file
-O FILE Output pcap file (matched packets)
-i Case-insensitive matching
-q Quiet (no non-matching output)
-t Show timestamps
-x Print in hex
-A N After-match context (N packets)
-B N Before-match context (N packets)
-W byline Print each packet on one line