Skip to content
KitploitKITPLOIT
StrumentiBlog
Log in
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.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
PyJFuzz — PyJFuzz - Fuzzer JSON in Python | Kitploit
Strumenti/GitHubGitHub/mseclab/pyjfuzz
Analisi Dinamica (Sandboxing)Analisi delle VulnerabilitàTest di Sicurezza delle APISicurezza WebFuzzing
GitHubmseclab/pyjfuzz

PyJFuzz

PyJFuzz - Fuzzer JSON in Python

Vedi Repository
37767173 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

LOGO

PyJFuzz è un piccolo framework estensibile e pronto all'uso utilizzato per fuzzare input JSON, come API REST di endpoint mobili, implementazioni JSON, browser, eseguibili da riga di comando e molto altro.

Versione 1.1.0
Homepage http://www.mseclab.com/
GitHub https://github.com/mseclab/PyJFuzz
Autore Daniele Linguaglossa (@dzonerzy)
Licenza MIT - (vedi file LICENSE)

Installazione

Dipendenze

Per funzionare, PyJFuzz necessita di alcune dipendenze: bottle, netifaces, GitPython e gramfuzz. Puoi installarle automaticamente tramite setup.py.

Installazione

Puoi installare PyJFuzz con il seguente comando

git clone https://github.com/mseclab/PyJFuzz.git && cd PyJFuzz && sudo python setup.py install

Documentazione ed Esempi

Strumento CLI

Una volta installato, PyJFuzz creerà sia una libreria Python che un'utilità da riga di comando chiamata pjf (screenshot qui sotto)

MENU

PJF

Libreria

PyJFuzz può anche funzionare come libreria. Puoi importarla nel tuo progetto come segue

from pyjfuzz.lib import *

Classi

Gli oggetti/classi disponibili sono i seguenti:

  • PJFServer - Utilizzato per avviare e fermare i server HTTP e HTTPS integrati
  • PJFProcessMonitor - Utilizzato per monitorare i crash dei processi, riavvia automaticamente il processo ogni volta che si arresta
  • PJFTestcaseServer - Il server di testcase viene utilizzato in combinazione con PJFProcessMonitor; ogni volta che un processo va in crash, il server di testcase registra e memorizza il JSON che ha causato il crash
  • PJFFactory - È l'oggetto principale utilizzato per eseguire il vero fuzzing degli oggetti JSON
  • PJFConfiguration - È il file di configurazione per ciascuno degli oggetti disponibili
  • PJFExternalFuzzer - Utilizzato da PJFactory, è una classe ausiliaria che fornisce un'interfaccia verso altri fuzzer da riga di comando come radamsa
  • PJFMutation - Utilizzato da PJFFactory, fornisce tutte le mutazioni utilizzate durante la sessione di fuzzing
  • PJFExecutor - Fornisce un'interfaccia per interagire con processi esterni

CLASSI

Esempi

Di seguito alcuni esempi banali su come implementare un programma basato su PyJFuzz

simple_fuzzer.py

from argparse import Namespace
from pyjfuzz.lib import *

config = PJFConfiguration(Namespace(json={"test": ["1", 2, True]}, nologo=True, level=6))
fuzzer = PJFFactory(config)
while True:
    print fuzzer.fuzzed

custom_techniques.py

from argparse import Namespace
from pyjfuzz.lib import *

# Le tecniche possono essere definite per gruppo o per numero di tecnica
# I gruppi sono CHTPRSX; per capire cosa sono, esegui pyjfuzz con l'opzione -h o guarda lo screenshot della riga di comando
# Questo qui sotto inizializza un oggetto config che utilizza solo gli attacchi del gruppo P, dove P sta per Path Traversal
config = PJFConfiguration(Namespace(json={"test": ["1", 2, True]}, nologo=True, level=6, techniques="P"))
# Una volta definito un oggetto config, puoi accedere a config.techniques per visualizzare le tecniche selezionate per il tuo gruppo
print("Techniques IDs: {0}".format(str(config.techniques)))
# Puoi eventualmente modificarle!
config.techniques = [2]
# In questo modo verrà eseguito solo l'attacco numero 2 (LFI Attack)!
fuzzer = PJFFactory(config)
while True:
    print fuzzer.fuzzed

simple_server.py

from argparse import Namespace
from pyjfuzz.lib import *

config = PJFConfiguration(Namespace(json={"test": ["1", 2, True]}, nologo=True, level=6, debug=True, indent=True))
PJFServer(config).run()

A volte potresti aver bisogno di modificare impostazioni standard non personalizzabili come la porta del server HTTP o HTTPS; questo può essere fatto nel seguente modo

from argparse import Namespace
from pyjfuzz.lib import *

config = PJFConfiguration(Namespace(json={"test": ["1", 2, True]}, nologo=True, level=6, indent=True))
print config.ports["servers"]["HTTP_PORT"]   # 8080
print config.ports["servers"]["HTTPS_PORT"]  # 8443
print config.ports["servers"]["TCASE_PORT"]  # 8888
config.ports["servers"]["HTTPS_PORT"] = 443  # Cambia la porta HTTPS a 443

Ricorda: Quando cambi le porte predefinite, dovresti sempre gestire le eccezioni dovute ai privilegi necessari!

Di seguito una lista completa di tutte le impostazioni / personalizzazioni disponibili dell'oggetto PJFConfiguration:

Tabella di configurazione

Nome Tipo Descrizione
json dict Oggetto JSON da fuzzare
json_file str Percorso di un file JSON
parameters list<str> Lista di parametri da fuzzare (presi dall'oggetto JSON)
techniques str<int> Stringa di attacchi abilitati, utilizzata per generare JSON fuzzato, come XSS, LFI ecc. es. "CHPTRSX" (Guarda la tabella delle tecniche)
level int Livello di fuzzing nell'intervallo 0-6
utf8 bool Se true, passa dalla codifica unicode alla rappresentazione pura di byte
indent bool Imposta se indentare l'oggetto risultato
url_encode bool Imposta se codificare URL l'oggetto risultato
strong_fuzz bool Imposta se utilizzare il strong fuzzing (il strong fuzzing non mantiene la struttura JSON, utile per il fuzzing di parser)
debug bool Imposta se abilitare le stampe di debug
exclude bool Esclude dal fuzzing i parametri selezionati dall'opzione parameters
notify bool Imposta se notificare al monitor dei processi quando si verifica un crash, utilizzato solo con PJFServer
html str Percorso di una directory HTML da servire all'interno di PJFServer
ext_fuzz bool Imposta se utilizzare il binario da "command" come fuzzer esterno
cmd_fuzz bool Imposta se utilizzare il binario da "command" come target del fuzzer
content_type str Imposta il tipo di contenuto risultato di PJFServer (default application/json)
command list<str> Comando da eseguire; ogni parametro è un elemento della lista, puoi usare shlex.split di Python
Scarica lo strumento