Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
call_map — Die aktuelle Entwicklung für Call Map findet unter https://github.com/ajylee/call_map statt. Call Map ist ein Tool zur Navigation in Python-Call-Graphen. | Kitploit
Tools/GitHubGitHub/nccgroup/call_map
Statische Code-Analyse (SAST)SchwachstellenanalyseCode-AnalyseReverse Engineering
GitHubnccgroup/call_map

call_map

Die aktuelle Entwicklung für Call Map findet unter https://github.com/ajylee/call_map statt. Call Map ist ein Tool zur Navigation in Python-Call-Graphen.

Repository anzeigen
2982vor 8 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

========== Call Map

.. default-role:: code

Über

Call Map ist ein Werkzeug zur Navigation in Python-Aufrufgraphen, mit Plänen, weitere Sprachen zu unterstützen. Unten sehen Sie einen Screenshot nach der Ausführung von call_map -m toolz und anschließendem Klicken auf einige Funktionen.

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

Während Call Map dazu dienen soll, ein allgemeines Verständnis einer Codebasis zu erlangen, eignet es sich auch hervorragend für die Verfolgung von Codepfaden, was ein wichtiges Sicherheitsanliegen darstellt. Viele Sicherheitsprobleme werden aufgedeckt, indem man einen Codepfad findet, der Benutzereingaben mit gefährlichen Codemustern verbindet.

Weitere Informationen finden Sie im Blogbeitrag__.

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

Installation

Call Map wird als Python-Paket für Python 3.5 verteilt. Zur Installation mit pip3 führen Sie Folgendes aus::

From top level directory of call_map

pip3 install -e .

Beachten Sie, dass einige Python-3-Distributionen den Paketmanager pip nennen und andere pip3. Möglicherweise müssen Sie pip3 durch pip ersetzen.

Die obigen Befehle sollten die ausführbare Datei call_map im selben Pfad installieren, in dem sich der Python-Interpreter befindet.

Details und alternative Methoden finden Sie in INSTALL.rst.

Schnellstart

Öffnen Sie Dateien, um mit der Erkundung zu beginnen::

call_map -f example.py

you can also open multiple files

call_map -f *.py

Sie können auch zum Modulsuchpfad (sys.path) hinzufügen::

call_map -f *.py -p .

Call Map versucht, die Dateien als Module aufzulösen, sofern sie im Modulsuchpfad gefunden werden können. Weitere Dokumentation zu den Befehlszeilenargumenten finden Sie mit call_map -h.

Konfiguration

Um Call Map zu konfigurieren, setzen Sie die Umgebungsvariable CALL_MAP_RC_DIRECTORY. Der Pfad zur Konfigurationsdatei von Call Map lautet::

$CALL_MAP_RC_DIRECTORY/call_map_rc.py

Derzeit sind die folgenden Konfigurationsoptionen verfügbar:

  • open_in_editor(path: pathlib.Path, line: int): Wenn Sie diese Funktion definieren, wird sie bei jedem Öffnen einer Datei aufgerufen. Beispielsweise kann Folgendes verwendet werden, um Dateien in einem Emacs-Server zu öffnen, wenn Sie server-mode in einer laufenden Emacs-Sitzung aufgerufen haben::

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

    Das Folgende kann verwendet werden, um Dateien im GVim-Server zu öffnen, wenn Sie einen GVim-Server mit gvim --servername my_vim_server gestartet haben::

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

  • MULTITHREADING: Gibt an, ob ein separater Thread für die GUI und die Suche im Aufrufgraphen verwendet werden soll. Standardwert ist True. Das Deaktivieren dient Debugzwecken.

Quirks

Es gibt einige Eigenheiten im UI-Design, weil ich noch keine bessere Lösung gefunden habe oder der Kompromiss aus zusätzlicher Komplexität ungünstig ist.

  • Verwendungen können scheinbar mehrfach angezeigt werden, tatsächlich handelt es sich aber um verschiedene Verwendungen im selben Gültigkeitsbereich.

  • Ihnen fällt vielleicht auf, dass einige Builtins wie help, id und filter ignoriert werden. Die vollständige Liste der ignorierten Funktionen finden Sie in call_map/config.py im Quellcode.

  • Wenn die hervorzuhebende Position am Anfang einer Datei liegt, wird sie nicht hervorgehoben. Das liegt daran, dass sich in der Regel nur Module und Skripte am Anfang ihrer jeweiligen Dateien befinden.

Von Jedi übernommene Quirks

Einige Eigenheiten werden vom Python-Analyse-Backend jedi übernommen.

  • Der Suchbereich für Verwendungen ist die Menge der Module, die vom jedi-Backend geladen wurden. Der Bereich ändert sich also, wenn Sie neue Module erkunden. Wenn Sie ein Modul explizit in den Suchbereich aufnehmen möchten, fügen Sie es der anfänglichen Liste der zu untersuchenden Module hinzu.

  • jedi durchsucht immer den sys.path des Interpreters, auch wenn dieser nicht explizit eingebunden ist, priorisiert jedoch den benutzerdefinierten sys_path.

Caveats

Alle Einschränkungen, die für statische Analyse-Backends gelten, gelten auch für Call Map. (Derzeit ist nur das jedi-Backend in Call Map integriert.)

Jedi

Das jedi-Backend für die Python-Analyse findet nicht immer alle Verwendungen. Die dynamische Natur von Python macht es unmöglich, die Definition einer Funktion mit statischer Analyse immer zu bestimmen. Manchmal löst jedi einen Aufruf zu mehreren möglichen Funktionen auf. Beispielsweise hängt os.path.abspath von der Plattform ab. In diesem Fall listet call_map beide Möglichkeiten als abspath und abspath (2) auf. jedi löst auch nicht alle Aufrufe und Verwendungen auf. Die eigene Dokumentation von Jedi enthält ebenfalls eine Liste von Einschränkungen__.

Manchmal wirkt sich ein Fehler, den Jedi bei der Analyse eines Elements auslöst, auf andere Elemente aus. Wenn Jedi beispielsweise beim Suchen von Verwendungen einen Fehler bei einer Verwendung auslöst, sind die anderen gefundenen Verwendungen möglicherweise nicht wiederherstellbar (Stand Jedi v0.10.0).

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

Tool herunterladen