diff --git a/index.html b/index.html index 9f5e094..d95bd38 100644 --- a/index.html +++ b/index.html @@ -78,6 +78,13 @@ > Tokenade + - @@ -397,12 +397,12 @@ - +
-

Fuzzer mutate text into diverse payloads

+

Mutation Lab mutate text into diverse payloads

diff --git a/js/app.js b/js/app.js index 360f8e7..9e820d7 100644 --- a/js/app.js +++ b/js/app.js @@ -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 || '');