Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
call_map — O desenvolvimento atual do Call Map ocorre em https://github.com/ajylee/call_map. O Call Map é uma ferramenta para navegar em grafos de chamadas Python. | Kitploit
Ferramentas/GitHubGitHub/nccgroup/call_map
Análise Estática de Código (SAST)Análise de VulnerabilidadesAnálise de CódigoEngenharia Reversa
GitHubnccgroup/call_map

call_map

O desenvolvimento atual do Call Map ocorre em https://github.com/ajylee/call_map. O Call Map é uma ferramenta para navegar em grafos de chamadas Python.

Ver Repositório
29824há 8 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Call Map

.. default-role:: code

Sobre

O Call Map é uma ferramenta para navegar em grafos de chamadas em Python, com planos de suportar outras linguagens. Abaixo está uma captura de tela após executar call_map -m toolz e clicar em algumas funções.

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

Embora o Call Map tenha como objetivo ajudar a obter uma compreensão geral de uma base de código, ele também é uma opção natural para rastrear caminhos de código, o que constitui uma preocupação de segurança importante. Muitos problemas de segurança são revelados ao encontrar um caminho de código que conecta a entrada do usuário a padrões de codificação perigosos.

Veja o blog post__ para mais informações.

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

Instalação

O Call Map é distribuído como um pacote Python para Python 3.5. Para instalar com pip3, execute::

From top level directory of call_map

pip3 install -e .

Observe que algumas distribuições de Python 3 chamam o gerenciador de pacotes de pip, e outras o chamam de pip3, então talvez seja necessário substituir pip3 por pip.

Os comandos acima devem instalar o executável call_map no mesmo caminho em que o interpretador Python está.

Para detalhes e métodos alternativos, veja INSTALL.rst.

Início Rápido

Abra arquivos para começar a explorar::

call_map -f example.py

you can also open multiple files

call_map -f *.py

Você também pode adicionar ao caminho de busca de módulos (sys.path)::

call_map -f *.py -p .

O Call Map tentará resolver os arquivos como módulos sempre que eles puderem ser encontrados no caminho de busca de módulos. Para mais documentação sobre os argumentos de linha de comando, call_map -h.

Configuração

Para configurar o Call Map, defina a variável de ambiente CALL_MAP_RC_DIRECTORY. O caminho para o arquivo de configuração do Call Map será::

$CALL_MAP_RC_DIRECTORY/call_map_rc.py

Neste momento, as opções de configuração são:

  • open_in_editor(path: pathlib.Path, line: int): se você definir esta função, ela será chamada sempre que você abrir um arquivo. Por exemplo, o seguinte pode ser usado para abrir arquivos em um servidor Emacs se você tiver chamado server-mode em uma sessão Emacs em execução::

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

    O seguinte pode ser usado para abrir arquivos no servidor GVim se você iniciou um servidor GVim com 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: Indica se deve ser usada uma thread separada para a GUI e a busca no grafo de chamadas. O padrão é True. Desativá-lo é para fins de depuração.

Peculiaridades

Há algumas peculiaridades no design da interface, devido ao fato de que ainda não cheguei a uma solução melhor ou a troca por complexidade adicional é desfavorável.

  • Os usos podem parecer aparecer mais de uma vez, mas na verdade são usos diferentes no mesmo escopo.

  • Você pode notar que alguns builtins, como help, id e filter, são ignorados. Veja call_map/config.py no código-fonte para a lista completa de funções ignoradas.

  • Se a posição a ser destacada estiver no início de um arquivo, ela não será destacada. Isso ocorre porque normalmente apenas módulos e scripts estão posicionados no início de seus respectivos arquivos.

Peculiaridades herdadas do Jedi

Algumas peculiaridades são herdadas do backend de análise Python jedi.

  • O escopo de busca de usos é o conjunto de módulos que foram carregados pelo backend jedi. Isso significa que o escopo mudará conforme você explorar novos módulos. Se você quiser incluir explicitamente um módulo no escopo de busca, adicione-o à lista inicial de módulos a serem inspecionados.

  • O jedi sempre busca no sys.path do interpretador, mesmo quando ele não é incluído explicitamente. No entanto, ele prioriza o sys_path definido pelo usuário.

Ressalvas

Quaisquer ressalvas que existam para backends de análise estática também se aplicam ao Call Map. (Neste momento, apenas o backend jedi está integrado ao Call Map.)

Jedi

O backend jedi para análise Python nem sempre encontra todos os usos. A natureza dinâmica do Python torna impossível determinar sempre a definição de uma função com análise estática. Às vezes, o jedi resolve uma chamada para múltiplas funções possíveis. Por exemplo, os.path.abspath depende da plataforma. Nesse caso, o call_map lista ambas as possibilidades como abspath e abspath (2). O jedi também não resolve todas as chamadas e usos. A própria documentação do Jedi também tem uma lista de ressalvas__.

Às vezes, quando o Jedi lança um erro ao analisar um item, o erro afeta outros itens. Por exemplo, ao encontrar usos, se o Jedi gerar um erro em um uso, os outros usos que ele encontrou podem ser irrecuperáveis (a partir do Jedi v0.10.0).

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

Baixar ferramenta