Module refinery.units.obfuscation.js.getattr
Expand source code Browse git
from __future__ import annotations
import re
from refinery.lib.patterns import formats
from refinery.units.obfuscation import Deobfuscator, StringLiterals
class deob_js_getattr(Deobfuscator):
"""
JavaScript deobfuscator to turn `WScript["CreateObject"]` into `WScript.CreateObject`.
"""
def deobfuscate(self, data):
strlit = StringLiterals(formats.string, data)
@strlit.outside
def dottify(match: re.Match[str]):
name = match[2][1:-1]
if name.isidentifier():
return F'{match[1]}.{name}'
return match[0]
return re.sub(FR'(\w+)\[({formats.string})\]', dottify, data)
Classes
class deob_js_getattr-
JavaScript deobfuscator to turn
WScript["CreateObject"]intoWScript.CreateObject.Expand source code Browse git
class deob_js_getattr(Deobfuscator): """ JavaScript deobfuscator to turn `WScript["CreateObject"]` into `WScript.CreateObject`. """ def deobfuscate(self, data): strlit = StringLiterals(formats.string, data) @strlit.outside def dottify(match: re.Match[str]): name = match[2][1:-1] if name.isidentifier(): return F'{match[1]}.{name}' return match[0] return re.sub(FR'(\w+)\[({formats.string})\]', dottify, data)Ancestors
Subclasses
Class variables
var required_dependenciesvar optional_dependenciesvar consolevar reverse
Methods
def deobfuscate(self, data)-
Expand source code Browse git
def deobfuscate(self, data): strlit = StringLiterals(formats.string, data) @strlit.outside def dottify(match: re.Match[str]): name = match[2][1:-1] if name.isidentifier(): return F'{match[1]}.{name}' return match[0] return re.sub(FR'(\w+)\[({formats.string})\]', dottify, data)
Inherited members