Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Марио Хевардт
Опубликовано: 26 марта 2026 г.
Скачать listent для macOS (GitHub)
Введение
Инструмент командной строки для обнаружения и перечисления атрибутов подписывания кода в исполняемых двоичных файлах macOS. Поддерживает статическую проверку, мониторинг процессов в режиме реального времени и фоновую операцию управляющей программы.
listent рекурсивно сканирует каталоги, чтобы найти исполняемые двоичные файлы и извлечь права на подписание кода. Он предназначен для исследователей безопасности, разработчиков и системных администраторов, которые должны проверять или понимать разрешения, запрашиваемые приложениями macOS.
Features
Основные возможности
- Быстрое сканирование: эффективно проходит по деревьям каталогов с интеллектуальной фильтрацией и индикаторами прогресса выполнения
-
Извлечение прав: использует macOS
codesignдля извлечения прав из двоичных файлов - Гибкая фильтрация: фильтрация по путям и определённым ключам прав с поддержкой шаблонов glob
- Несколько форматов выходных данных: удобочитаемые и структурированные выходные данные JSON
- Несколько путей: сканирование нескольких каталогов в одной команде
- Аккуратные прерывания: аккуратное завершение с помощью Ctrl+C
Режимы работы
1. Статический режим сканирования (по умолчанию)
Сканируйте файлы и каталоги на разрешения:
# 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. Режим мониторинга в режиме реального времени
Отслеживайте новые процессы предоставления доступов:
# 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. Режим управляющей программы
Непрерывное выполнение мониторинга на переднем плане (полезно для тестирования или ручной операции управляющей программы):
# Run as daemon in foreground
listent daemon run
# Daemon with custom config file
listent daemon run --config /etc/listent/custom.toml
Пользовательский шаблон файла конфигурации (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 = []
Запросите журналы с помощью:
# 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. Фоновая служба управляющей программы
Запуск мониторинга как непрерывной системной службы, управляемой с помощью launchd.
# 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
Примеры
Статическое сканирование
# 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
Наблюдение за процессами
# 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
Управление демоном
# 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
Конфигурация
Параметры командной строки
-
Пути: в качестве позиционных аргументов можно указать несколько путей:
listent /path1 /path2 -
Фильтрация прав:
-e "pattern"поддерживает точные совпадения и глобы (*,?,[]) -
Формат выходных данных:
--jsonили-jдля структурированных выходных данных по умолчанию доступен для чтения человеком. -
Тихий режим:
--quietили-qподавляет предупреждения о непрочитаемых файлах -
Мониторинг:
listent monitorподкоманда включает мониторинг процессов в режиме реального времени -
Интервал мониторинга:
--interval SECONDSзадает частоту опроса (0.1-300.0, по умолчанию: 1.0) -
Режим управляющей программы:
listent daemon runвыполняется как фоновый процесс управляющей программы -
Управление демонами:
listent daemon install|uninstall|status|stop|logs -
Файл конфигурации:
--config FILEили-c FILEзадает путь к конфигурации управляющей программы
Шаблоны прав
# 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.*"
Конфигурация демона
Параметры управляющей программы настраиваются с помощью файла конфигурации TOML:
-
Расположение по умолчанию:
~/.config/listent/daemon.toml -
Пользовательский путь: Используйте
--configсdaemon install
Чтобы изменить конфигурацию, измените файл конфигурации и перезапустите управляемую программу:
# Edit config
nano ~/.config/listent/daemon.toml
# Restart daemon
listent daemon stop
sudo listent daemon install
Пример конфигурации управляющей программы:
[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"
Troubleshooting
CTRL+C не работает в внешних терминалах
Если ctrl+C не прерывает проверку в Terminal.app или iTerm2, это связано с проблемой обработки сигнала терминала macOS.
Обходное решение: перед выполнением listentвыполните следующую команду:
trap - INT
При этом удаляется любая существующая ловушка прерываний и восстанавливается поведение SIGINT по умолчанию. После этого ctrl+C должен работать нормально.
Примечание. Эта проблема не влияет на интегрированный терминал VS Code.
Форматы выходных данных
Читаемый человеком (по умолчанию)
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
{
"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
}
}
Безопасность
Если вы считаете, что вы нашли проблему безопасности, сообщите о ней через репозиторий GitHub проекта , а не открывая общедоступную проблему.
Скачивание jcd для Linux и macOS (GitHub)
Выполняется:
- macOS