UI: move Tokenizer tab to far right; rename Fuzzer to Mutation Lab

This commit is contained in:
EP
2025-08-20 21:16:43 -07:00
parent 36ed8401e9
commit 233bf577f6
2 changed files with 18 additions and 20 deletions
+10 -10
View File
@@ -78,6 +78,13 @@
>
<i class="fas fa-bomb"></i> Tokenade
</button>
<button
:class="{ active: activeTab === 'fuzzer' }"
@click="switchToTab('fuzzer')"
title="Generate many mutated payloads for testing"
>
<i class="fas fa-bug"></i> Mutation Lab
</button>
<button
:class="{ active: activeTab === 'tokenizer' }"
@click="switchToTab('tokenizer')"
@@ -85,13 +92,6 @@
>
<i class="fas fa-layer-group"></i> Tokenizer
</button>
<button
:class="{ active: activeTab === 'fuzzer' }"
@click="switchToTab('fuzzer')"
title="Generate many mutated payloads for testing"
>
<i class="fas fa-bug"></i> Fuzzer
</button>
</div>
<!-- Steganography Tab -->
@@ -397,12 +397,12 @@
</div>
</div>
<!-- Fuzzer Tab -->
<!-- Mutation Lab (Fuzzer) Tab -->
<div v-if="activeTab === 'fuzzer'" class="tab-content">
<div class="transform-layout">
<div class="transform-section">
<div class="section-header">
<h3><i class="fas fa-bug"></i> Fuzzer <small>mutate text into diverse payloads</small></h3>
<h3><i class="fas fa-bug"></i> Mutation Lab <small>mutate text into diverse payloads</small></h3>
</div>
<div class="options-grid">
<label>
@@ -425,7 +425,7 @@
<label class="switch neon"><input type="checkbox" v-model="fuzzZalgo" /><span>Zalgo</span></label>
<label class="switch neon"><input type="checkbox" v-model="fuzzWhitespace" /><span>Whitespace chaos</span></label>
<label class="switch neon"><input type="checkbox" v-model="fuzzCasing" /><span>Casing chaos</span></label>
<label class="switch neon"><input type="checkbox" v-model="fuzzEncodeShuffle" /><span>Encode shuffle (Base64/URL/Hex)</span></label>
<label class="switch neon"><input type="checkbox" v-model="fuzzEncodeShuffle" /><span>Homoglyph confusables</span></label>
</div>
<div class="token-bomb-actions">
<button class="transform-button" @click="generateFuzzCases"><i class="fas fa-hammer"></i> Generate Cases</button>
+8 -10
View File
@@ -1743,18 +1743,16 @@ window.app = new Vue({
casingChaos(text, rnd) {
return [...text].map(c => /[a-z]/i.test(c)? (rnd()<0.5? c.toUpperCase():c.toLowerCase()) : c).join('');
},
// Replace encodeShuffle with homoglyph confusables injection
encodeShuffle(text, rnd) {
const opts = ['base64','base32','hex','base58','base62','url'];
const t = this.pick(opts, rnd);
const tx = {
base64: ()=> window.transforms.base64.func(text),
base32: ()=> window.transforms.base32.func(text),
hex: ()=> window.transforms.hex.func(text),
base58: ()=> window.transforms.base58.func(text),
base62: ()=> window.transforms.base62.func(text),
url: ()=> window.transforms.url.func(text)
const map = {
'A':'Α','B':'Β','C':'Ϲ','E':'Ε','H':'Η','I':'Ι','K':'Κ','M':'Μ','N':'Ν','O':'Ο','P':'Ρ','T':'Τ','X':'Χ','Y':'Υ',
'a':'а','c':'с','e':'е','i':'і','j':'ј','o':'о','p':'р','s':'ѕ','x':'х','y':'у'
};
return (tx[t]||(()=>text))();
return [...text].map(ch => {
if (map[ch] && rnd() < 0.25) return map[ch];
return ch;
}).join('');
},
generateFuzzCases() {
const src = String(this.fuzzerInput || '');