Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
call_map — Текущая разработка Call Map ведётся на https://github.com/ajylee/call_map. Call Map — это инструмент для навигации по графам вызовов Python. | Kitploit
Инструменты/GitHubGitHub/nccgroup/call_map
Статический анализ кода (SAST)Анализ уязвимостейАнализ КодаОбратная инженерия
GitHubnccgroup/call_map

call_map

Текущая разработка Call Map ведётся на https://github.com/ajylee/call_map. Call Map — это инструмент для навигации по графам вызовов Python.

Репозиторий
29828 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Call Map

.. default-role:: code

О проекте

Call Map — это инструмент для навигации по графам вызовов в Python, с планами поддержки других языков. Ниже приведён снимок экрана после выполнения call_map -m toolz и последующего щелчка по некоторым функциям.

.. figure:: docs/UI-clicked-on-function.png

Хотя Call Map предназначен для помощи в получении общего представления о кодовой базе, он также естественно подходит для трассировки путей выполнения кода, что является важной проблемой безопасности. Многие проблемы безопасности выявляются путём поиска пути выполнения, который соединяет пользовательский ввод с опасными шаблонами кода.

Подробнее см. в записи в блоге__.

__ https://www.nccgroup.trust/us/about-us/newsroom-and-events/blog/2017/july/call-map-a-tool-for-navigating-call-graphs-in-python/

Установка

Call Map распространяется как пакет Python для Python 3.5. Чтобы установить с помощью pip3, выполните::

From top level directory of call_map

pip3 install -e .

Обратите внимание, что в некоторых дистрибутивах Python 3 менеджер пакетов называется pip, а в некоторых — pip3, поэтому вам, возможно, придётся заменить pip3 на pip.

Приведённые выше команды должны установить исполняемый файл call_map в тот же путь, где находится интерпретатор Python.

Подробности и альтернативные способы см. в INSTALL.rst.

Быстрый старт

Откройте файлы, чтобы начать изучение::

call_map -f example.py

you can also open multiple files

call_map -f *.py

Вы также можете добавить путь в путь поиска модулей (sys.path)::

call_map -f *.py -p .

Call Map попытается разрешить файлы как модули, когда их можно найти в пути поиска модулей. Дополнительную документацию по аргументам командной строки см. в call_map -h.

Конфигурация

Чтобы настроить Call Map, задайте переменную окружения CALL_MAP_RC_DIRECTORY. Путь к файлу конфигурации Call Map будет следующим::

$CALL_MAP_RC_DIRECTORY/call_map_rc.py

В настоящее время параметры конфигурации таковы:

  • open_in_editor(path: pathlib.Path, line: int): если вы определите эту функцию, она будет вызываться каждый раз при открытии файла. Например, следующий код можно использовать для открытия файлов в сервере Emacs, если вы вызвали server-mode в запущенном сеансе Emacs::

    def open_in_editor(path, line): import subprocess as sbp sbp.call(['emacsclient', '+{}'.format(line), str(path)])

    Следующий код можно использовать для открытия файлов в сервере GVim, если вы запустили GVim сервер с помощью gvim --servername my_vim_server::

    def open_in_editor(path, line): import subprocess as sbp sbp.call(['gvim', '--servername', 'my_vim_server', '--remote', '+{}'.format(line), str(path)])

  • MULTITHREADING: указывает, использовать ли отдельный поток для графического интерфейса и поиска по графу вызовов. По умолчанию — True. Его отключение предназначено для отладки.

Причуды

В дизайне интерфейса есть пара причуд, связанных с тем, что я не нашёл лучшего решения или компромисс с дополнительной сложностью невыгоден.

  • Использования могут отображаться более одного раза, но на самом деле это разные использования в одной и той же области видимости.

  • Вы можете заметить, что некоторые встроенные функции, такие как help, id и filter, игнорируются. Полный список игнорируемых функций см. в call_map/config.py в исходном коде.

  • Если позиция, которую нужно подсветить, находится в начале файла, она не будет подсвечена. Это связано с тем, что обычно только модули и скрипты находятся в начале соответствующих файлов.

Причуды, унаследованные от Jedi

Некоторые причуды унаследованы от бэкенда анализа Python jedi.

  • Область поиска использований — это набор модулей, загруженных бэкендом jedi. Это означает, что область будет меняться по мере изучения новых модулей. Если вы хотите явно включить модуль в область поиска, добавьте его в исходный список модулей для проверки.

  • jedi всегда ищет в sys.path интерпретатора, даже если он не указан явно. Однако он будет отдавать приоритет пользовательскому sys_path.

Оговорки

Любые оговорки, которые существуют для бэкендов статического анализа, также применимы к Call Map. (В настоящее время в Call Map интегрирован только бэкенд jedi.)

Jedi

Бэкенд jedi для анализа Python не всегда находит все использования. Динамическая природа Python не позволяет статическому анализу всегда точно определять, где определена функция. Иногда jedi разрешает вызов в несколько возможных функций. Например, os.path.abspath зависит от платформы. В этом случае call_map перечисляет обе возможности как abspath и abspath (2). jedi также не разрешает все вызовы и использования. В документации самого Jedi также есть список оговорок__.

Иногда, когда Jedi выдаёт ошибку при анализе одного элемента, ошибка влияет на другие элементы. Например, при поиске использований, если Jedi выдаёт ошибку для одного использования, другие найденные им использования могут быть невосстановимы (по состоянию на Jedi v0.10.0).

__ https://jedi.readthedocs.io/en/latest/docs/features.html#caveats

Скачать инструмент