Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
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
Zerodapi — 0dAPI Documentazione Ufficiale | Kitploit
Strumenti/GitHubGitHub/0dai-ml/zerodapi
OSINT (Open Source Intelligence)Scanner di VulnerabilitàFramework di ExploitGenerazione di PayloadSicurezza WebPenetration TestingApprendimento e FormazioneSicurezza dell'IA
GitHub0dai-ml/zerodapi

Zerodapi

0dAPI Documentazione Ufficiale

Vedi Repository
12 anni faNon ancora revisionato

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

Documentazione di Zerodai

Inizia!

root@kitploit:~
pip install zerodai==0.0.0.20
root@kitploit:~
export zerodapi_key="TU_API_KEY"

Ottieni la tua api key https://zerodai.com Chat Conversazionale Semplice - Senza memoria

root@kitploit:~

from zerodai import zerodai
import os
zerodai.api_auth(os.getenv("zerodapi_key"))
messages = []
while True:
    prompt = input("> ")
    if prompt == "exit":
        break
    messages.append({"role": "user", "content": prompt})

    messages.append({"role": "system", "content": "Eres 0dAI un asistente de ciberseguridad cuya unica función es..."})
    zerodai.inference(model="0dai70b", messages=messages, temperature=0.7, stream=True)

Zerodai è una libreria di elaborazione del linguaggio naturale orientata alla cybersecurity che mira ad automatizzare parzialmente processi basati sull'elaborazione umana di informazioni, ragionamento, pianificazione ed esecuzione. Cerchiamo di creare un framework di agenti per la cybersecurity con le seguenti capacità:

Capacità

  • Modularità e adattabilità: Vogliamo che questa libreria sia facile da implementare e da integrare con altri componenti software.
  • Semplificazione: Vogliamo semplificare in un formato più umano tutte le informazioni che l'utente riceve al termine di un processo.

Inferenze

È il metodo base di interazione con il modello e dispone dei seguenti parametri. È importante che questi parametri siano appresi e compresi bene, poiché sono la base della libreria.

Parametri

  • model: Il modello linguistico da utilizzare. I modelli disponibili sono:

    • 0dai7b: Modello base con uso illimitato, veloce e perfetto per conversazioni semplici e assistenza nella programmazione. Difende bene in cybersecurity.

      • 16k di contesto
      • 16 bit
      • No function calls
    • 0dai8x7b: Modello flessibile con una finestra di contesto ampia, livello GPT-4 per quanto riguarda il codice, buono per domande e script complessi di cybersecurity.

      • 32k di contesto
      • 8 bit
      • No function calls
    • 0daifn: Modello raccomandato per function calls, il migliore per function calls, molto contesto, più leggero di 0dai70b, inoltre a livello di function calls multi-passo è al livello del miglior gpt

      • 64k di contesto
      • 16 bit
      • Capacità di Function Calls
    • 0dai70b (Raccomandato): Attualmente SOTA in cybersecurity, capace di complessi ragionamenti logici basati su molto contesto e di risolvere prove di pentesting in modo semi-autonomo. Dispone di function calls e può rispondere con messaggi strutturati. È il più lento ma offre un grande salto di qualità.

      • 64k di contesto
      • 16 bit
      • Capacità di function calls
  • messages: I messaggi che verranno inviati al modello. Qui dobbiamo capire 3 ruoli:

    • system: Prompt con istruzioni da seguire.
    • user: Compito o domanda.
    • assistant: Risposta dell'assistente.

    I messaggi devono avere questo formato:

root@kitploit:~
  messages = [
{"role": "system", "content": """Eres 0dAI tu función es..."""},
{"role": "user", "content": "0dAI escribe un exploit en C"},
]
  • functions: Le funzioni che possono essere chiamate durante l'interazione. Entreremo più nel dettaglio sulle funzioni in fn_c. In questo caso, ci restituirà semplicemente il JSON.

    Una funzione si dichiara così:

root@kitploit:~
function_shodan = [ {
    "name": "shodan_dork",
    "description": "This tools is used to generate a shodan query",
    "parameter_definitions": {
      "dork": {
        "type": "string",
        "description": "The shodan dork",
        "required": True
      }
    }
  }, ]
  • temperature: Controlla la casualità delle risposte del modello. A temperatura più alta, più casualità; a temperatura più bassa, meno casualità.

  • stream (bool): Se trasmettere la risposta in tempo reale.

Utilizzo:

root@kitploit:~
from zerodai import zerodai
messages = []
messages.append({"role": "user", "content": prompt})
messages.append({"role": "system", "content": "Eres 0dAI un asistente de ciberseguridad cuya unica función es..."})
zerodai.inference(model="0dai70b", messages=messages, temperature=0.7, stream=True)

Function calls (fn_c)

In base a una funzione o a una lista di funzioni nel parametro function, il Modello sarà in grado di generare una risposta strutturata che possa servirci dopo un'inferenza: Funzione base

root@kitploit:~
function_shodan = [ {
    "name": "shodan_dork",
    "description": "This tools is used to generate a shodan query",
    "parameter_definitions": {
      "dork": {
        "type": "string",
        "description": "The shodan dork",
        "required": True
      }
    }
  }, ]

Risposta del modello in base a questa funzione

root@kitploit:~
[
    {
        "tool_name": "shodan_dork",
        "parameters": {
            "dork": "hacked-router-help-sos"
        }
    }
]

Queste funzioni possono essere multi-passo o no, lo definirà il numero di posizioni del JSON, una risposta multi-passo si presenta così

root@kitploit:~
[
    {
        "tool_name": "shodan_dork",
        "parameters": {
            "dork": "hacked-router-help-sos"
        }
    },
    {
        "tool_name": "shodan_dork",
        "parameters": {
            "dork": "\"smb\" \"authentication: disabled\""
        }
    },
      {
        "tool_name": "shodan_dork",
        "parameters": {
            "dork": ".docuword_exploited.txt"
        }
     }
   ]

Può esistere anche una logica ricorsiva in termini di inferenza - funzione che si retroalimentano, immaginiamo questo caso

Funzione sottodomini

root@kitploit:~
funcion_subdomains = [ {
    "name": "subdominios",
    "description": "This tools is used to collect domains to extract subdomains",
    "parameter_definitions": {
      "domain": {
        "type": "string",
        "description": "The domain",
        "required": True
      }
    }
  }, ]

Funzione crawler

root@kitploit:~
crawler_endpoints = [ {
    "name": "crawler",
    "description": "This tools is used to crawle ndpoints for a host",
    "parameter_definitions": {
      "host": {
        "type": "string",
        "description": "The domain",
        "required": True
      }
    }
  }, ]

Input:

Devo ottenere i sottodomini di openai.com e omegaai.io

Output 1. Funzione:

root@kitploit:~
[
    {
        "tool_name": "subdomains",
        "parameters": {
            "domain": "openai.com"
        }
    },
    {
        "tool_name": "subdomains",
        "parameters": {
            "domain": "omegaai.io"
        }
    },
]

Dopo aver estratto i sottodomini dall'input, applichiamo la nostra logica di esecuzione che sarebbe ottenere i sottodomini...

root@kitploit:~
subdomain1.openai.com
subdomain2.openai.com
subdomain3.openai.com
subdomain1.omegaai.io
subdomain2.omegaai.io
subdomain3.omegaai.io

Dopo aver passato questo alla funzione del crawler sarebbe qualcosa come

Output 2. Funzione:

root@kitploit:~
[
    {
        "tool_name": "crawler",
        "parameters": {
            "domain": "subdominio1.openai.com"
        }
    },
    {
        "tool_name": "crawler",
        "parameters": {
            "domain": "subdominio1.omegaai.io"
        }
    },
   {
        "tool_name": "crawler",
        "parameters": {
            "domain": "subdominio2.openai.com"
        }
    },
    {
        "tool_name": "crawler",
        "parameters": {
            "domain": "subdominio2.omegaai.io"
        }
    },
   {
        "tool_name": "crawler",
        "parameters": {
            "domain": "subdominio3.openai.com"
        }
    },
    {
        "tool_name": "crawler",
        "parameters": {
            "domain": "subdominio3.omegaai.io"
        }
    },
]

fn_c Ci permette di raccogliere i parametri e il nome del tool direttamente senza dover passare attraverso quella logica di filtraggio del JSON in sé

###UTILIZZO

root@kitploit:~
from zerodai import zerodai
zerodai.api_auth("TU_API_KEY")
tool_name, parameters = zerodai.fn_c(model_fn=model_fn_call, messages=messages, functions=subdomain_functions, stream=stream, multistep=False)
print(tool_name)
print(parameters)
print(parameters["domain"])

Nota: Lo standard delle funzioni è solitamente OpenAI, per questo abbiamo progettato una funzione che converte le funzioni di OpenAI nel nostro formato proprietario, esempio:

root@kitploit:~
tool_name, parameters = cls.fn_c(model_fn=model_fn_call, messages=messages, functions=OpenAI2CommandR(osint_funcs), stream=stream, multistep=False)

Agenti

Zerodai include un sistema di agenti che può essere esteso tramite funzioni e un modulo di esecuzione

root@kitploit:~
def exec_module(tool, arguments, multitool=True):
    output = ""
    if tool == "Shodan":
        process = subprocess.Popen(["nmap", "-Pn", next(iter(arguments.values()))], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
        for line in iter(process.stdout.readline, b''):
            output += line.decode('utf-8').strip()
            print(line.decode('utf-8').strip())
            
    elif tool == "XSS-Scanner" or tool == "nuclei-http":
      try:
        process = subprocess.Popen(["nuclei", "-t", "dns", next(iter(arguments.values()))], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, cwd="/home/omegaleitatadmin/exllamav2/0dAPI/nuclei-templates/nuclei-templates-9.8.6/")
        for line in iter(process.stdout.readline, b''):
            output += line.decode('utf-8').strip()
            print(line.decode('utf-8').strip())
      except:
        pass
    elif tool == "WAF-tool":
        process = subprocess.Popen(["python3", "whatwaf", "-u", "https://" + next(iter(arguments.values()))], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, cwd="/home/omegaleitatadmin/exllamav2/0dAPI/WhatWaf")
        for line in iter(process.stdout.readline, b''):
            output += line.decode('utf-8').strip()
            print(line.decode('utf-8').strip())
      
    elif tool == "Attack":
        process = subprocess.Popen(["nmap", "-Pn", next(iter(arguments.values()))], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
        for line in iter(process.stdout.readline, b''):
            output += line.decode('utf-8').strip()
            print(line.decode('utf-8').strip())
    elif tool == "OSINT":
        ZeroDAI.Osint(next(iter(arguments.values())))
        
    return output

Questo codice deve andare di pari passo con le funzioni utilizzate

root@kitploit:~
python_functions = [ {
    "name": "Shodan",
    "description": "tool for shodan",
    "parameter_definitions": {
      "ip": {
        "type": "string",
        "description": "The ip",
        "required": True
      }
    }
  },
 {
    "name": "nuclei-http",
    "description": "This tools is use for nuclei",
    "parameter_definitions": {
      "target": {
        "type": "string",
        "description": "The domain",
        "required": True
      }
    }
  },
 {
    "name": "WAF-tool",
    "description": "This tools is used for waf",
    "parameter_definitions": {
      "webapp": {
        "type": "string",
        "description": "The webapp",
        "required": True
      }
    }
  },
 {
    "name": "Attack",
    "description": "This tools is used to attack a host",
    "parameter_definitions": {
      "host": {
        "type": "string",
        "description": "The domain",
        "required": True
      }
    }
  }, ]

Questo permette di creare agenti dinamici multi-passo e multi-strumento

###Utilizzo

root@kitploit:~
zerodai.agent(model="0dai70b", 
                  messages=messages, 
                  model_fn_call="0daifn", 
                  temperature=0.7,
                  functions=python_functions,
                  exec_module=exec_module,
                  exec_module_bool=True, 
                  multistep=True)

exec_module-bool per indicare se vogliamo usare un modulo di esecuzione (Se impostiamo True e nessun modulo di esecuzione, ne eseguirà uno predefinito)

exec_module modulo di esecuzione

functions Funzioni in accordo con il modulo di esecuzione

multistep Se vogliamo che vengano eseguiti più passaggi in ogni iterazione del modello di function calls

##Prove di concetto

4. DATA LEAKS PoC

DarkGPT-Osint

5. MultiStep-Agent PoC

DarkGPT-Osint

Questa API include integrazioni con shodan, vari servizi di dati, censys e molto altro, questi servizi richiedono solo l'API di 0dAI:

Fughe di dati

zerodai.Osint(prompt)

prompt - Semplice messaggio in linguaggio naturale affinché il LLM effettui una ricerca nelle nostre fonti private di fughe di dati e ti dia le fughe di un utente

Shodan

zerodai.Osint(prompt)

prompt - Semplice messaggio in linguaggio naturale affinché il LLM effettui una ricerca su shodan e ti dia i risultati direttamente

Rubber ducky

zerodai.rubberducky_gen(prompt)

prompt - Semplice messaggio in linguaggio naturale affinché il LLM generi un payload valido di rubber ducky

Questa API è stata sviluppata interamente da Luijait (Luis Javier Navarrete Lozano) sotto 0dAI, se si utilizzano le conoscenze qui descritte in un altro paper è necessario dare crediti all'autore, come primo nome Luijait e come secondo 0dAI

Scarica lo strumento