Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Von Mario Hewardt
Veröffentlicht: 26. März 2026
Herunterladen von Listent für macOS (GitHub)
Einführung
Ein Befehlszeilentool zum Ermitteln und Auflisten von Codesignaturberechtigungen für ausführbare MacOS-Binärdateien. Unterstützt statische Überprüfung, Echtzeitprozessüberwachung und Hintergrunddaemon-Operation.
listent überprüft rekursiv Verzeichnisse, um ausführbare Binärdateien zu finden und extrahiert ihre Codesignaturberechtigungen. Es wurde für Sicherheitsexperten, Entwickler und Systemadministratoren entwickelt, die die von macOS-Anwendungen angeforderten Berechtigungen überwachen oder verstehen müssen.
Funktionen
Grundlegende Funktionen
- Schnelles Scannen: Effizientes Durchlaufen von Verzeichnisstrukturen mit intelligenten Filter- und Fortschrittsindikatoren
-
Berechtigungsextraktion: Verwendet macOS
codesignzum Extrahieren von Berechtigungen aus Binärdateien - Flexible Filterung: Filtern nach Pfaden und bestimmten Berechtigungsschlüsseln mit Glob-Musterunterstützung
- Mehrere Ausgabeformate: Lesbare und strukturierte JSON-Ausgabe
- Mehrere Pfade: Scannen mehrerer Verzeichnisse in einem einzigen Befehl
- Elegante Unterbrechungen: Saubere Abbruchvorgänge mit Strg+C
Betriebsmodi
1. Statischer Scanmodus (Standard)
Scannen von Dateien und Verzeichnissen nach Berechtigungen:
# Scan default locations (/usr/bin and /usr/sbin)
listent
# Scan specific paths
listent /usr/bin /usr/sbin
# Filter by entitlement patterns
listent -e "com.apple.security.*"
listent -e "*network*" -e "*debug*"
# JSON output for automation
listent /usr/bin -e "*security*" --json
2. Echtzeitmonitormodus
Überwachen neuer Prozesse auf Berechtigungen:
# Monitor all new processes
listent monitor
# Monitor with custom polling interval
listent monitor --interval 0.5
# Monitor specific entitlements only
listent monitor -e "com.apple.security.network.*"
3. Daemon-Modus
Führen Sie die Überwachung kontinuierlich im Vordergrund aus (nützlich für Tests oder manuelle Daemon-Vorgänge):
# Run as daemon in foreground
listent daemon run
# Daemon with custom config file
listent daemon run --config /etc/listent/custom.toml
Benutzerdefinierte Konfigurationsdateivorlage (daemon.toml):
[daemon]
# How often to poll for new processes, in seconds (0.1 - 300.0)
polling_interval = 1.0
# Start automatically when loaded by launchd (RunAtLoad)
auto_start = true
[monitoring]
# Filesystem paths to scan for running process binaries.
# Empty list = monitor processes from all paths.
path_filters = ["/usr/bin", "/usr/sbin"]
# Entitlement patterns to match (glob syntax). Empty list = all entitlements.
# Examples: "com.apple.security.*", "*network*"
entitlement_filters = []
Abfrageprotokolle mit:
# View listent logs in real-time
log stream --predicate 'subsystem == "com.microsoft.sysinternals.listent"' --level info
# View recent logs
log show --predicate 'subsystem == "com.microsoft.sysinternals.listent"' --last 1h
# Filter for errors only
log show --predicate 'subsystem == "com.microsoft.sysinternals.listent" AND messageType == error' --last 24h
4. Hintergrunddaemondienst
Führen Sie die Überwachung als persistenter Systemdienst aus, der von launchd verwaltet wird.
# Install and start daemon
sudo listent daemon install
# Check daemon status
listent daemon status
# View daemon logs
listent daemon logs
listent daemon logs --since 1h
listent daemon logs --since 30m
listent daemon logs --since "2025-01-15 10:00"
listent daemon logs --format json
listent daemon logs -f # Follow logs in real-time
# Stop daemon process
listent daemon stop
# Uninstall service
sudo listent daemon uninstall
Beispiele
Statisches Scannen
# Basic scan with progress (uses default /usr/bin and /usr/sbin)
listent
# Multi-directory scan with filtering
listent /usr/bin /usr/sbin -e "*security*"
# Find all network-related entitlements
listent -e "*network*" --json | jq '.results[].entitlements'
# Scan quietly (suppress warnings)
listent /usr/bin --quiet
Prozessüberwachung
# Monitor all processes with 2-second intervals
listent monitor --interval 2.0
# Monitor only security-related entitlements
listent monitor -e "com.apple.security.*"
# Run as daemon with custom config
listent daemon run --config /etc/listent/daemon.toml
Daemon-Verwaltung
# Install daemon with default monitoring (requires sudo)
sudo listent daemon install
# Install with custom configuration file
sudo listent daemon install --config /path/to/config.toml
# View recent daemon activity
listent daemon logs --since 1h
# Check if daemon is running
listent daemon status
# Stop and remove daemon
listent daemon stop
sudo listent daemon uninstall
Konfiguration
Befehlszeilenoptionen
-
Pfade: Mehrere Pfade können als Positionsargumente angegeben werden:
listent /path1 /path2 -
Berechtigungsfilterung:
-e "pattern"unterstützt exakte Übereinstimmungen und Globs (*,?,[]) -
Ausgabeformat:
--jsonoder-j, für strukturierte Ausgabe, Standard ist menschenlesbar -
Ruhemodus:
--quietoder-qunterdrückt Warnungen zu nicht lesbaren Dateien -
Überwachung:
listent monitorUnterbefehl ermöglicht die Überwachung von Prozessen in Echtzeit. -
Überwachungsintervall:
--interval SECONDSLegt die Abrufhäufigkeit fest (0,1-300.0, Standard: 1.0) -
Daemonmodus:
listent daemon runWird als Hintergrunddaemonprozess ausgeführt -
Daemon-Verwaltung:
listent daemon install|uninstall|status|stop|logs -
Konfigurationsdatei: oder
--config FILEgibt den Daemonkonfigurationspfad an.-c FILE
Berechtigungsmuster
# Exact match
-e "com.apple.security.network.client"
# Wildcard patterns
-e "com.apple.security.*" # All Apple security entitlements
-e "*network*" # Any entitlement containing "network"
-e "*.debug.*" # Debug-related entitlements
# Multiple patterns (OR logic)
-e "com.apple.private.*" -e "*.debug.*"
Daemon-Konfiguration
Daemoneinstellungen werden über eine TOML-Konfigurationsdatei konfiguriert:
-
Standardspeicherort:
~/.config/listent/daemon.toml -
Benutzerdefinierter Pfad: Verwenden
--configmitdaemon install
Um die Konfiguration zu ändern, bearbeiten Sie die Konfigurationsdatei, und starten Sie den Daemon neu:
# Edit config
nano ~/.config/listent/daemon.toml
# Restart daemon
listent daemon stop
sudo listent daemon install
Beispiel für die Daemonkonfiguration:
[daemon]
polling_interval = 1.0
auto_start = true
[monitoring]
path_filters = []
entitlement_filters = ["com.apple.security.*", "*network*"]
[logging]
level = "info"
subsystem = "com.microsoft.sysinternals.listent"
category = "daemon"
Problembehandlung
STRG+C funktioniert nicht in externen Terminals
Wenn STRG+C den Scan in Terminal.app oder iTerm2 nicht unterbricht, liegt dies an einem MacOS-Terminalsignalbehandlungsproblem.
Problemumgehung: Bevor Sie listent ausführen, führen Sie Folgendes aus:
trap - INT
Dadurch werden alle vorhandenen Interrupt-Traps entfernt und das standardmäßige SIGINT-Verhalten wiederhergestellt. Danach sollte STRG+C normal funktionieren.
Hinweis: Dieses Problem wirkt sich nicht auf das integrierte Terminal von VS Code aus.
Ausgabeformate
Menschlich lesbar (Standard)
Found 2 binaries with 5 total entitlements:
/usr/bin/security:
com.apple.private.platformsso.security: true
/usr/bin/nc:
com.apple.security.network.client: true
com.apple.security.network.server: true
Scan Summary:
Scanned: 156 files
Matched: 2 files
Duration: 2.34s
JSON-Format
{
"results": [
{
"path": "/usr/bin/security",
"entitlements": {
"com.apple.private.platformsso.security": true
},
"entitlement_count": 1
}
],
"summary": {
"scanned": 156,
"matched": 2,
"duration_ms": 2340,
"skipped_unreadable": 0
}
}
Sicherheit
Wenn Sie glauben, dass Sie ein Sicherheitsproblem gefunden haben, melden Sie es bitte über das GitHub-Repository des Projekts , anstatt ein öffentliches Problem zu öffnen.
jcd für Linux und macOS herunterladen (GitHub)
Läuft auf:
- macOS