Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
call_map — Développement actuel de Call Map se déroule sur https://github.com/ajylee/call_map. Call Map est un outil pour naviguer dans les graphes d'appels Python. | Kitploit
Outils/GitHubGitHub/nccgroup/call_map
Analyse Statique de Code (SAST)Analyse des VulnérabilitésAnalyse de CodeRétro-ingénierie
GitHubnccgroup/call_map

call_map

Développement actuel de Call Map se déroule sur https://github.com/ajylee/call_map. Call Map est un outil pour naviguer dans les graphes d'appels Python.

Voir le dépôt
2982il y a 8 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Call Map

.. default-role:: code

About

Call Map est un outil pour naviguer dans les graphes d'appels en Python, avec l'intention de prendre en charge d'autres langages. Vous trouverez ci-dessous une capture d'écran après avoir exécuté call_map -m toolz, puis cliqué sur certaines fonctions.

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

Bien que Call Map soit destiné à aider à acquérir une compréhension générale d'une base de code, il est également tout indiqué pour le traçage des chemins de code, ce qui constitue un enjeu de sécurité important. De nombreux problèmes de sécurité sont révélés en trouvant un chemin de code qui relie les entrées utilisateur à des schémas de codage dangereux.

Voir le billet de blog__ pour plus d'informations.

__ 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 est distribué comme un paquet Python pour Python 3.5. Pour installer avec pip3, exécutez::

From top level directory of call_map

pip3 install -e .

Notez que certaines distributions Python 3 appellent le gestionnaire de paquets pip, et d'autres l'appellent pip3. Vous devrez donc peut-être remplacer pip3 par pip.

Les commandes ci-dessus devraient installer l'exécutable call_map dans le même chemin que celui où se trouve l'interpréteur Python.

Pour plus de détails et d'autres méthodes, voir INSTALL.rst.

Quick Start

Ouvrez des fichiers pour commencer à explorer::

call_map -f example.py

you can also open multiple files

call_map -f *.py

Vous pouvez également ajouter au chemin de recherche des modules (sys.path)::

call_map -f *.py -p .

Call Map essaiera de résoudre les fichiers en tant que modules chaque fois qu'ils peuvent être trouvés dans le chemin de recherche des modules. Pour plus de documentation sur les arguments de la ligne de commande, call_map -h.

Configuration

Pour configurer Call Map, définissez la variable d'environnement CALL_MAP_RC_DIRECTORY. Le chemin du fichier de configuration de Call Map sera::

$CALL_MAP_RC_DIRECTORY/call_map_rc.py

Les options de configuration actuelles sont :

  • open_in_editor(path: pathlib.Path, line: int): si vous définissez cette fonction, elle sera appelée à chaque fois que vous ouvrez un fichier. Par exemple, ce qui suit peut être utilisé pour ouvrir des fichiers dans un serveur Emacs si vous avez appelé server-mode dans une session Emacs en cours::

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

    Ce qui suit peut être utilisé pour ouvrir des fichiers dans le serveur GVim si vous avez démarré un serveur GVim avec 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: indique s'il faut utiliser un thread séparé pour l'interface graphique et la recherche dans le graphe d'appels. La valeur par défaut est True. La désactiver est à des fins de débogage.

Particularités

Il y a quelques particularités dans la conception de l'interface, dues au fait que je ne suis pas arrivé à une meilleure solution ou que le compromis avec une complexité supplémentaire est défavorable.

  • Les utilisations peuvent sembler apparaître plus d'une fois, mais il s'agit en réalité d'utilisations différentes dans la même portée.

  • Vous remarquerez peut-être que certaines fonctions intégrées telles que help, id et filter sont ignorées. Voir call_map/config.py dans le code source pour la liste complète des fonctions ignorées.

  • Si la position à mettre en surbrillance se trouve au début d'un fichier, elle ne sera pas mise en surbrillance. Cela est dû au fait que généralement seuls les modules et les scripts sont positionnés au début de leurs fichiers respectifs.

Particularités héritées de Jedi

Certaines particularités sont héritées du backend d'analyse Python jedi.

  • La portée de recherche des utilisations est l'ensemble des modules qui ont été chargés par le backend jedi. Cela signifie que la portée changera à mesure que vous explorerez de nouveaux modules. Si vous souhaitez inclure explicitement un module dans la portée de recherche, ajoutez-le à la liste initiale des modules à inspecter.

  • jedi recherche toujours dans sys.path de l'interpréteur, même lorsqu'il n'est pas explicitement inclus. Cependant, il donnera la priorité au sys_path défini par l'utilisateur.

Mises en garde

Toutes les mises en garde qui existent pour les backends d'analyse statique s'appliquent également à Call Map. (Pour le moment, seul le backend jedi est intégré à Call Map.)

Jedi

Le backend jedi pour l'analyse Python ne trouve pas toujours toutes les utilisations. La nature dynamique de Python rend impossible de déterminer toujours la définition d'une fonction par analyse statique. Parfois, jedi résout un appel vers plusieurs fonctions possibles. Par exemple, os.path.abspath dépend de la plateforme. Dans ce cas, call_map répertorie les deux possibilités sous abspath et abspath (2). jedi ne résout pas non plus tous les appels et toutes les utilisations. La documentation de Jedi comporte également une liste de mises en garde__.

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

Parfois, lorsque Jedi lève une erreur en analysant un élément, l'erreur affecte d'autres éléments. Par exemple, lors de la recherche d'utilisations, si Jedi lève une erreur sur une utilisation, les autres utilisations qu'il a trouvées peuvent être irrécupérables (dans Jedi v0.10.0).

Télécharger l’outil