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.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
jd — CLI Go che deoffusca l'output di javascript-obfuscator (obfuscator.io) e deminifica JavaScript utilizzando trasformazioni AST, decodifica statica e un fallback sandbox goja. | Kitploit
Strumenti/GitHubGitHub/ejfkdev/jd
Analisi StaticaAnalisi Dinamica (Sandboxing)Analisi del CodiceReverse EngineeringAnalisi MalwareUtilità e Framework
GitHubejfkdev/jd

jd

CLI Go che deoffusca l'output di javascript-obfuscator (obfuscator.io) e deminifica JavaScript utilizzando trasformazioni AST, decodifica statica e un fallback sandbox goja.

Vedi Repository
2201 mese 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

jd

CI Release License Go Version Release zread

中文

jd è uno strumento Go che deoffusca l'output di javascript-obfuscator (obfuscator.io) e deminimizza JavaScript. È un port in Go di webcrack e synchrony.

Funzionalità

Deoffuscamento di Obfuscator.io

Rileva e inverte l'output di javascript-obfuscator:

  • Rilevamento dell'array di stringhe (forme con funzione wrapper e array semplice, var/const/let)
  • Rilevamento del rotatore di array (IIFE push/shift con condizione di uscita)
  • Rilevamento del decoder (index-shift, codifiche Base64/RC4/personalizzate, decoder a due parametri)
  • Risoluzione degli alias wrapper (alias var/function verso i decoder)
  • Decodifica ibrida — simulazione statica (SIMPLE/Base64/RC4) con fallback sulla sandbox goja per encoder personalizzati
  • Rimozione degli helper — dichiarazioni di array di stringhe, rotatore e decoder rimosse dopo la decodifica

Unminify

Oltre 20 trasformazioni di leggibilità:

TrasformazioneEsempio
computed-propertiesconsole["log"] → console.log
merge-strings"a" + "b" → "ab"
unminify-booleans!0 → true, !1 → false
number-expressions1 + 2 → 3
void-to-undefinedvoid 0 → undefined
raw-literals0x1 → 1
sequencea(), b(), c() → istruzioni separate
split-variable-declarationsvar a=1, b=2 → var a=1; var b=2
block-statementsracchiude corpi con singola istruzione in { }
logical-to-ifa && b() → if (a) b()
ternary-to-ifa ? b() : c() → if (a) b() else c()
merge-else-ifelse { if (...) } → else if (...)
for-to-whilefor(;;) → while(true)
yoda5 === x → x === 5
infinity1/0 → Infinity
invert-boolean-logic!(a == b) → a != b
unary-expressionsrimuove void/!/typeof no-op a livello di istruzione
remove-double-not!!true → true

Supporto ai moduli ES

Il parser di goja non supporta la sintassi dei moduli ES (import/export). jd pre-estrae le istruzioni import/export, analizza lo script rimanente, esegue le trasformazioni, quindi antepone le istruzioni all'output. Le espressioni import() dinamiche vengono correttamente distinte dalle dichiarazioni import.

Formattazione sicura per le regex

Per i file che goja non riesce ad analizzare completamente (ad esempio le definizioni di linguaggio dell'editor Monaco con uso intensivo di regex), jd ripiega sulla formattazione a livello di sorgente: un tokenizer divide sui punti e virgola preservando letterali regex, stringhe e commenti verbatim.

Installazione

macOS (Homebrew)

brew install ejfkdev/tap/jd

Binari precompilati

Scarica da GitHub Releases (Linux/macOS/Windows, x86_64/ARM64).

Compilazione dal sorgente

go build -o jd .

Utilizzo

# Deoffusca un file (output su stdout)
jd obfuscated.js

# Scrivi su un file
jd obfuscated.js -o cleaned.js

# Leggi da stdin
cat obfuscated.js | jd -

# Elabora una directory — elabora ricorsivamente tutti i file .js/.mjs/.cjs,
# rispecchia l'albero delle directory nella directory di output.
jd src/ -o dist/

# Modalità directory con output predefinito: crea <input>-deobfuscated
jd src/

# Specifica le estensioni dei file
jd src/ -o dist/ --ext .js,.mjs

# Elaborazione parallela (N worker, predefinito: numero di CPU)
jd src/ -o dist/ -j 8

# Salta i file non di codice (output solo JS elaborato)
jd src/ -o dist/ --copy-noncode=false

# Solo deoffuscamento, salta unminify
jd --unminify=false obfuscated.js

# Output JSON con avvisi
jd --json obfuscated.js

Flag

FlagPredefinitoDescrizione
-o, --outputstdoutfile o directory di output (predefinito per dir: <input>-deobfuscated)
--deobfuscatetrueesegue il deoffuscamento di obfuscator.io
--unminifytrueesegue le trasformazioni di leggibilità
--sandboxautoesecuzione del decoder: auto (statico poi sandbox), only (sempre sandbox), off (solo statico)
--timeout10stimeout della sandbox per file
--ext.js,.mjs,.cjsestensioni dei file da elaborare in modalità directory
-j, --workers0 (=CPU)worker paralleli per la modalità directory
--copy-noncodetruecopia i file non di codice nella directory di output
-v, --verbosefalsestampa la diagnostica su stderr
--jsonfalseemette JSON {code, warnings}

Architettura

jd/
├── main.go                     # CLI entry
├── internal/
│   ├── cli/                    # cobra CLI (i18n: English/Chinese)
│   ├── deobfuscator/           # top-level pipeline + ES module preprocessing
│   ├── jsast/                  # AST walker (Cursor, Replace, Remove, Clone)
│   ├── codegen/                # AST → JavaScript printer (pretty/compact)
│   ├── scope/                  # lexical scope & binding analysis
│   ├── sandbox/                # goja VM wrapper for decoder execution
│   ├── decoder/                # static decoding: Base64/RC4/rotation
│   ├── deobfuscate/            # string-array/rotator/decoder detection + transforms
│   ├── unminify/               # 20 readability transforms + fixpoint runner
│   └── transform/              # Transform abstraction + ApplyFixpoint
└── testdata/samples/           # test fixtures

Pipeline

parse → splitModuleStatements → deobfuscate → unminify → generate
Scarica lo strumento