Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
call_map — El desarrollo actual de Call Map tiene lugar en https://github.com/ajylee/call_map. Call Map es una herramienta para navegar por grafos de llamadas de Python. | Kitploit
Herramientas/GitHubGitHub/nccgroup/call_map
Análisis Estático de Código (SAST)Análisis de VulnerabilidadesAnálisis de CódigoIngeniería Inversa
GitHubnccgroup/call_map

call_map

El desarrollo actual de Call Map tiene lugar en https://github.com/ajylee/call_map. Call Map es una herramienta para navegar por grafos de llamadas de Python.

Ver Repositorio
2982hace 8 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Call Map

.. default-role:: code

Acerca de

Call Map es una herramienta para navegar por grafos de llamadas en Python, con planes de soportar otros lenguajes. A continuación se muestra una captura de pantalla después de ejecutar call_map -m toolz, y luego hacer clic en algunas funciones.

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

Si bien Call Map está pensado para ayudar a obtener una comprensión general de un código base, también es ideal para rastrear rutas de código, lo que constituye una preocupación de seguridad importante. Muchos problemas de seguridad se revelan al encontrar una ruta de código que conecta la entrada del usuario con patrones de codificación peligrosos.

Consulta la entrada de blog__ para más información.

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

Instalación

Call Map se distribuye como un paquete de Python para Python 3.5. Para instalarlo con pip3, ejecuta::

From top level directory of call_map

pip3 install -e .

Ten en cuenta que algunas distribuciones de Python 3 llaman al gestor de paquetes pip, y otras lo llaman pip3, por lo que es posible que debas sustituir pip3 por pip.

Los comandos anteriores deberían instalar el ejecutable call_map en la misma ruta en la que se encuentra el intérprete de Python.

Para más detalles y métodos alternativos, consulta INSTALL.rst.

Inicio rápido

Abre archivos para empezar a explorar::

call_map -f example.py

you can also open multiple files

call_map -f *.py

También puedes añadir a la ruta de búsqueda de módulos (sys.path)::

call_map -f *.py -p .

Call Map intentará resolver los archivos como módulos siempre que puedan encontrarse en la ruta de búsqueda de módulos. Para más documentación sobre los argumentos de línea de comandos, call_map -h.

Configuración

Para configurar Call Map, define la variable de entorno CALL_MAP_RC_DIRECTORY. La ruta al archivo de configuración de Call Map será::

$CALL_MAP_RC_DIRECTORY/call_map_rc.py

Por ahora, las opciones de configuración son:

  • open_in_editor(path: pathlib.Path, line: int): si defines esta función, se llamará cada vez que abras un archivo. Por ejemplo, lo siguiente se puede usar para abrir archivos en un servidor Emacs si has llamado a server-mode en una sesión de Emacs en ejecución::

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

    Lo siguiente se puede usar para abrir archivos en el servidor GVim si iniciaste un servidor GVim con 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: Si se debe usar un hilo separado para la interfaz gráfica y la búsqueda en el grafo de llamadas. El valor predeterminado es True. Desactivarlo es para fines de depuración.

Peculiaridades

Hay un par de peculiaridades en el diseño de la interfaz, debido a que no he llegado a una solución mejor o a que la compensación por una complejidad adicional es desfavorable.

  • Los usos pueden parecer que aparecen más de una vez, pero en realidad son usos diferentes en el mismo ámbito.

  • Puede que notes que algunas funciones integradas como help, id y filter se ignoran. Consulta call_map/config.py en el código fuente para ver la lista completa de funciones ignoradas.

  • Si la posición que se debe resaltar está al inicio de un archivo, no se resaltará. Esto se debe a que normalmente solo los módulos y scripts se encuentran al inicio de sus respectivos archivos.

Peculiaridades heredadas de Jedi

Algunas peculiaridades se heredan del backend de análisis de Python jedi.

  • El ámbito de búsqueda de usos es el conjunto de módulos que ha cargado el backend jedi. Eso significa que el ámbito cambiará a medida que explores nuevos módulos. Si quieres incluir explícitamente un módulo en el ámbito de búsqueda, agrégalo a la lista inicial de módulos que se inspeccionarán.

  • jedi siempre busca en el sys.path del intérprete, incluso cuando no está incluido explícitamente. Sin embargo, priorizará el sys_path definido por el usuario.

Advertencias

Cualquier advertencia que exista para los backends de análisis estático también se aplica a Call Map. (Por ahora solo el backend jedi está integrado en Call Map.)

Jedi

El backend jedi para el análisis de Python no siempre encuentra todos los usos. La naturaleza dinámica de Python hace imposible determinar siempre la definición de una función con análisis estático. A veces jedi resuelve una llamada a múltiples funciones posibles. Por ejemplo, os.path.abspath depende de la plataforma. En este caso, call_map lista ambas posibilidades como abspath y abspath (2). jedi tampoco resuelve todas las llamadas y usos. La propia documentación de Jedi también tiene una lista de advertencias__.

A veces, cuando Jedi lanza un error al analizar un elemento, el error afecta a otros elementos. Por ejemplo, al buscar usos, si Jedi produce un error en un uso, los otros usos que haya encontrado pueden ser irrecuperables (a partir de Jedi v0.10.0).

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

Descargar herramienta