Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
call_map — Lo sviluppo attuale di Call Map avviene su https://github.com/ajylee/call_map. Call Map è uno strumento per navigare i grafi delle chiamate in Python. | Kitploit
Strumenti/GitHubGitHub/nccgroup/call_map
Analisi Statica del Codice (SAST)Analisi delle VulnerabilitàAnalisi del CodiceReverse Engineering
GitHubnccgroup/call_map

call_map

Lo sviluppo attuale di Call Map avviene su https://github.com/ajylee/call_map. Call Map è uno strumento per navigare i grafi delle chiamate in Python.

Vedi Repository
298248 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Call Map

.. default-role:: code

Informazioni

Call Map è uno strumento per navigare i grafi di chiamata in Python, con l'intenzione di supportare altri linguaggi. Di seguito è mostrata una schermata dopo aver eseguito call_map -m toolz e aver fatto clic su alcune funzioni.

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

Sebbene Call Map sia pensato per aiutare ad acquisire una comprensione generale di un codebase, si presta naturalmente anche al tracciamento dei percorsi del codice, che costituisce un'importante questione di sicurezza. Molti problemi di sicurezza emergono individuando un percorso del codice che collega l'input dell'utente a pattern di codice pericolosi.

Vedi il post sul blog__ per maggiori informazioni.

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

Installazione

Call Map è distribuito come pacchetto Python per Python 3.5. Per installarlo con pip3, esegui::

From top level directory of call_map

pip3 install -e .

Nota che alcune distribuzioni di Python 3 chiamano il gestore dei pacchetti pip, mentre altre lo chiamano pip3, quindi potrebbe essere necessario sostituire pip3 con pip.

I comandi precedenti dovrebbero installare l'eseguibile call_map nello stesso percorso in cui si trova l'interprete Python.

Per maggiori dettagli e metodi alternativi, vedere INSTALL.rst.

Avvio rapido

Apri i file per iniziare a esplorare::

call_map -f example.py

you can also open multiple files

call_map -f *.py

Puoi anche aggiungere al percorso di ricerca dei moduli (sys.path)::

call_map -f *.py -p .

Call Map proverà a risolvere i file come moduli ogni volta che possono essere trovati nel percorso di ricerca dei moduli. Per ulteriore documentazione sugli argomenti da riga di comando, call_map -h.

Configurazione

Per configurare Call Map, imposta la variabile d'ambiente CALL_MAP_RC_DIRECTORY. Il percorso del file di configurazione di Call Map sarà::

$CALL_MAP_RC_DIRECTORY/call_map_rc.py

Al momento le opzioni di configurazione sono:

  • open_in_editor(path: pathlib.Path, line: int): se definisci questa funzione verrà chiamata ogni volta che apri un file. Ad esempio, quanto segue può essere usato per aprire file in un server Emacs se hai chiamato server-mode in una sessione Emacs in esecuzione::

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

    Quanto segue può essere usato per aprire file nel server GVim se hai avviato un server 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: se usare un thread separato per la GUI e la ricerca del grafo delle chiamate. Il valore predefinito è True. Disattivarlo serve a scopo di debug.

Stranezze

Ci sono un paio di stranezze nella progettazione dell'interfaccia, dovute al fatto che non sono giunto a una soluzione migliore o che il compromesso di una maggiore complessità è sfavorevole.

  • Gli usi possono sembrare presenti più di una volta, ma in realtà sono usi diversi nello stesso scope.

  • Potresti notare che alcuni built-in come help, id e filter vengono ignorati. Vedi call_map/config.py nel codice sorgente per l'elenco completo delle funzioni ignorate.

  • Se la posizione da evidenziare è all'inizio di un file, non verrà evidenziata. Questo perché in genere solo i moduli e gli script si trovano all'inizio dei rispettivi file.

Stranezze ereditate da Jedi

Alcune stranezze sono ereditate dal backend jedi di analisi Python.

  • L'ambito di ricerca per gli usi è l'insieme dei moduli caricati dal backend jedi. Ciò significa che l'ambito cambierà man mano che esplori nuovi moduli. Se vuoi includere esplicitamente un modulo nell'ambito di ricerca, aggiungilo all'elenco iniziale dei moduli da ispezionare.

  • jedi cerca sempre nel sys.path dell'interprete, anche quando non è incluso esplicitamente. Tuttavia, darà priorità al sys_path definito dall'utente.

Avvertenze

Qualsiasi avvertenza valida per i backend di analisi statica si applica anche a Call Map. (Al momento solo il backend jedi è integrato in Call Map.)

Jedi

Il backend jedi per l'analisi Python non trova sempre tutti gli usi. La natura dinamica di Python rende impossibile determinare sempre la definizione di una funzione con l'analisi statica. A volte jedi risolve una chiamata in più funzioni possibili. Ad esempio os.path.abspath dipende dalla piattaforma. In questo caso call_map elenca entrambe le possibilità come abspath e abspath (2). jedi inoltre non risolve tutte le chiamate e tutti gli usi. Anche la documentazione di Jedi ha una lista di avvertenze__.

A volte, quando Jedi solleva un errore durante l'analisi di un elemento, l'errore influisce su altri elementi. Ad esempio, quando si cercano gli usi, se Jedi solleva un errore su un uso, gli altri usi che ha trovato potrebbero essere irrecuperabili (a partire da Jedi v0.10.0).

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

Scarica lo strumento