OSIPs
Questo script analizza ogni file da una cartella specificata in modo ricorsivo, estrae ogni indirizzo IPv4 e IPv6, filtra gli indirizzi IP pubblici e poi interroga questi IP rispetto ai relay TOR, al servizio WhoIs e al servizio di localizzazione. Genera 4 file: un file CSV e un file JSON con tutti i dettagli degli indirizzi IP, un file CSV contenente un indice di ogni indirizzo IP trovato e un file KML con tutte le localizzazioni raccolte.
Caratteristiche
- Analizza qualsiasi numero di file in una singola esecuzione
- Può essere eseguito anche per un singolo file di input
- Estrae tutti gli indirizzi IPv4 e IPv6 univoci validi (confrontando correttamente due indirizzi, anche se scritti in modo diverso)
- Raccoglie informazioni Who Is pubblicamente disponibili per tutti gli indirizzi IP pubblici
- Interroga tutti gli indirizzi IP pubblici rispetto ai relay TOR
- Raccoglie informazioni sulla posizione geografica per tutti gli indirizzi IP pubblici
- Può essere eseguito con parametri da riga di comando in modalità non interattiva per una facile integrazione in altri script
- Può essere eseguito senza parametri e i valori di input possono essere forniti in modo interattivo
- Consente all'utente di selezionare quali passaggi eseguire o escludere
- Fornisce informazioni dettagliate sulla console ad ogni passaggio eseguito
- Esporta tutti i dettagli degli indirizzi IP sia in un file CSV che in un file JSON
- Esporta un file KML che può essere facilmente caricato su una mappa
- Mantiene un indice di tutti gli indirizzi IP trovati in un file CSV separato per una facile tracciabilità
Prerequisiti:
Python 3.9.x
Installazione
Per installare le dipendenze, esegui:
pip install -r requirements.txt
Compilazione in eseguibile
pip install pyinstaller
pyinstaller --onefile osips.py
Utilizzo
python osips.py [-h] [-F INPUTFOLDER] [-f INPUTFILE] [-p INPUTFILESPATTERN] [-o OUTPUTFILESNAME] [-t {y,n,Y,N}] [-w {y,n,Y,N}] [-l {y,n,Y,N}] [-locationEndpoint LOCATIONENDPOINT]
In modo interattivo
python osips.py
In modo non interattivo
python osips.py --checkTor Y --checkWhoIs Y --checkLocations Y --inputFolder testFolder/ --inputFilesPattern * --outputFilesName test
Aiuto
python osips.py -h
Opzioni
-h, --help
Mostra il messaggio di aiuto ed esce
-F INPUTFOLDER, --inputFolder INPUTFOLDER
Una cartella contenente file con IP (file di log, file di posta elettronica, file di testo, ecc.). Gli IP possono essere IPv4 e/o IPv6 e possono essere posizionati ovunque nei file. Lo script analizzerà ogni file nella cartella e scannerizzerà ogni IP
-f INPUTFILE, --inputFile INPUTFILE
Usa questa opzione per analizzare un solo file invece di una cartella con file. Il file può essere qualsiasi file di testo che contiene indirizzi IP (file di log, file di posta elettronica, file di testo, ecc.)
-p INPUTFILESPATTERN, --inputFilesPattern INPUTFILESPATTERN
Inserisci il pattern da utilizzare per i file nella cartella di input. Esempio: * per tutti i file, *.txt per i file di testo.
-o OUTPUTFILESNAME, --outputFilesName OUTPUTFILESNAME
Il nome per i file di output, SENZA ESTENSIONE. Verranno creati 4 file diversi con questo nome: un file CSV che memorizza i dettagli degli IP, un file indice che memorizza gli indici degli IP, un file JSON che memorizza i dettagli e un file KML che memorizza le localizzazioni.
-t {y,n,Y,N}, --checkTor {y,n,Y,N}
Specifica se si desidera controllare ogni indirizzo IP pubblico rispetto agli indirizzi IP dei relay TOR
-w {y,n,Y,N}, --checkWhoIs {y,n,Y,N}
Specifica se si desidera estrarre le informazioni WhoIs per ogni indirizzo IP pubblico
-l {y,n,Y,N}, --checkLocations {y,n,Y,N}
Specifica se si desidera geocodificare ogni indirizzo IP pubblico ed estrarre informazioni sulla posizione utilizzando
Osservazioni
- Lo strumento estrae indirizzi IPv4 solo in notazione decimale puntata (xxx.xxx.xxx.xxx). Non estrae indirizzi IPv4 in notazione decimale, ottale o esadecimale a causa dell'alto tasso di falsi positivi.
- A seconda del numero di indirizzi IP pubblici trovati, l'interrogazione dei servizi online potrebbe richiedere molto tempo. Se hai a che fare con molti indirizzi IP, si consiglia di eseguire prima lo strumento senza interrogare alcun servizio e solo per estrarre gli indirizzi IP. Dopo aver visto il risultato dell'estrazione, puoi calcolare una stima del tempo totale di esecuzione dello strumento se i servizi vengono interrogati e, eventualmente, scegliere di interrogare solo uno o due servizi.
- I relay TOR vengono controllati al momento dell'esecuzione dello strumento. Poiché questi IP cambiano costantemente, queste informazioni potrebbero non essere molto accurate. Se è possibile identificare anche una data per un IP, dovrebbe essere verificato tramite ExoneraTor a questo indirizzo: https://metrics.torproject.org/exonerator.html
- Le informazioni Who Is e le informazioni sulla posizione vengono raccolte in tempo reale da servizi pubblicamente disponibili, quindi gli indirizzi IP vengono inviati a questi servizi. Esistono database scaricabili che consentirebbero di raccogliere queste informazioni localmente, ma questi download non sono gratuiti e necessitano di aggiornamenti costanti. Questo strumento non è progettato per funzionare con database locali.
- Il servizio predefinito per la raccolta della posizione è https://reallyfreegeoip.org. Questo è un servizio gratuito senza limitazioni, ma potrebbe non essere molto accurato. Puoi cambiare questo servizio con un altro, utilizzando il parametro -locationEndpoint dello script. Puoi fornire un altro servizio che accetta un indirizzo IP come parametro e restituisce una risposta JSON. Usa come segnaposto per l'indirizzo IP della posizione. Esempi: https://ipapi.co//json, https://api.ipstack.com/?access_key=ACCESS_KEY, https://freeapi.robtex.com/ipquery/. Tieni presente che alcuni di questi altri endpoint REST potrebbero non restituire i campi richiesti e quindi interrompere la logica dello script. In questo caso, il metodo chiamato RequestInfoFromRestEndpoint deve essere modificato di conseguenza.
Ringraziamenti