diff options
| author | cyfraeviolae <cyfraeviolae> | 2024-04-03 03:17:55 -0400 | 
|---|---|---|
| committer | cyfraeviolae <cyfraeviolae> | 2024-04-03 03:17:55 -0400 | 
| commit | 12cf076118570eebbff08c6b3090e0d4798447a1 (patch) | |
| tree | 3ba25e17e3c3a5e82316558ba3864b955919ff72 /venv/lib/python3.11/site-packages/jsbeautifier/unpackers | |
| parent | c45662ff3923b34614ddcc8feb9195541166dcc5 (diff) | |
no venv
Diffstat (limited to 'venv/lib/python3.11/site-packages/jsbeautifier/unpackers')
22 files changed, 0 insertions, 693 deletions
diff --git a/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/__init__.py b/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/__init__.py deleted file mode 100644 index 01c254f..0000000 --- a/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/__init__.py +++ /dev/null @@ -1,73 +0,0 @@ -# -# General code for JSBeautifier unpackers infrastructure. See README.specs -#     written by Stefano Sanfilippo <a.little.coder@gmail.com> -# - -"""General code for JSBeautifier unpackers infrastructure.""" - -import pkgutil -import re -from jsbeautifier.unpackers import evalbased - -# NOTE: AT THE MOMENT, IT IS DEACTIVATED FOR YOUR SECURITY: it runs js! -BLACKLIST = ["jsbeautifier.unpackers.evalbased"] - - -class UnpackingError(Exception): -    """Badly packed source or general error. Argument is a -    meaningful description.""" - -    pass - - -def getunpackers(): -    """Scans the unpackers dir, finds unpackers and add them to UNPACKERS list. -    An unpacker will be loaded only if it is a valid python module (name must -    adhere to naming conventions) and it is not blacklisted (i.e. inserted -    into BLACKLIST.""" -    path = __path__ -    prefix = __name__ + "." -    unpackers = [] -    interface = ["unpack", "detect", "PRIORITY"] -    for _importer, modname, _ispkg in pkgutil.iter_modules(path, prefix): -        if "tests" not in modname and modname not in BLACKLIST: -            try: -                module = __import__(modname, fromlist=interface) -            except ImportError: -                raise UnpackingError("Bad unpacker: %s" % modname) -            else: -                unpackers.append(module) - -    return sorted(unpackers, key=lambda mod: mod.PRIORITY) - - -UNPACKERS = getunpackers() - - -def run(source, evalcode=False): -    """Runs the applicable unpackers and return unpacked source as a string.""" -    for unpacker in [mod for mod in UNPACKERS if mod.detect(source)]: -        source = unpacker.unpack(source) -    if evalcode and evalbased.detect(source): -        source = evalbased.unpack(source) -    return source - - -def filtercomments(source): -    """NOT USED: strips trailing comments and put them at the top.""" -    trailing_comments = [] -    comment = True - -    while comment: -        if re.search(r"^\s*\/\*", source): -            comment = source[0, source.index("*/") + 2] -        elif re.search(r"^\s*\/\/", source): -            comment = re.search(r"^\s*\/\/", source).group(0) -        else: -            comment = None - -        if comment: -            source = re.sub(r"^\s+", "", source[len(comment) :]) -            trailing_comments.append(comment) - -    return "\n".join(trailing_comments) + source diff --git a/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/__pycache__/__init__.cpython-311.pyc Binary files differdeleted file mode 100644 index 824dc1c..0000000 --- a/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/__pycache__/__init__.cpython-311.pyc +++ /dev/null diff --git a/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/__pycache__/evalbased.cpython-311.pyc b/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/__pycache__/evalbased.cpython-311.pyc Binary files differdeleted file mode 100644 index 38644e1..0000000 --- a/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/__pycache__/evalbased.cpython-311.pyc +++ /dev/null diff --git a/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/__pycache__/javascriptobfuscator.cpython-311.pyc b/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/__pycache__/javascriptobfuscator.cpython-311.pyc Binary files differdeleted file mode 100644 index 8ee047d..0000000 --- a/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/__pycache__/javascriptobfuscator.cpython-311.pyc +++ /dev/null diff --git a/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/__pycache__/myobfuscate.cpython-311.pyc b/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/__pycache__/myobfuscate.cpython-311.pyc Binary files differdeleted file mode 100644 index cf2948e..0000000 --- a/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/__pycache__/myobfuscate.cpython-311.pyc +++ /dev/null diff --git a/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/__pycache__/packer.cpython-311.pyc b/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/__pycache__/packer.cpython-311.pyc Binary files differdeleted file mode 100644 index c0abc98..0000000 --- a/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/__pycache__/packer.cpython-311.pyc +++ /dev/null diff --git a/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/__pycache__/urlencode.cpython-311.pyc b/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/__pycache__/urlencode.cpython-311.pyc Binary files differdeleted file mode 100644 index ba90614..0000000 --- a/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/__pycache__/urlencode.cpython-311.pyc +++ /dev/null diff --git a/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/evalbased.py b/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/evalbased.py deleted file mode 100644 index 74f1f0f..0000000 --- a/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/evalbased.py +++ /dev/null @@ -1,44 +0,0 @@ -# -# Unpacker for eval() based packers, a part of javascript beautifier -# by Einar Lielmanis <einar@beautifier.io> -# -#     written by Stefano Sanfilippo <a.little.coder@gmail.com> -# -# usage: -# -# if detect(some_string): -#     unpacked = unpack(some_string) -# - -"""Unpacker for eval() based packers: runs JS code and returns result. -Works only if a JS interpreter (e.g. Mozilla's Rhino) is installed and -properly set up on host.""" - -from subprocess import PIPE, Popen - -PRIORITY = 3 - - -def detect(source): -    """Detects if source is likely to be eval() packed.""" -    return source.strip().lower().startswith("eval(function(") - - -def unpack(source): -    """Runs source and return resulting code.""" -    return jseval("print %s;" % source[4:]) if detect(source) else source - - -# In case of failure, we'll just return the original, without crashing on user. - - -def jseval(script): -    """Run code in the JS interpreter and return output.""" -    try: -        interpreter = Popen(["js"], stdin=PIPE, stdout=PIPE) -    except OSError: -        return script -    result, errors = interpreter.communicate(script) -    if interpreter.poll() or errors: -        return script -    return result diff --git a/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/javascriptobfuscator.py b/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/javascriptobfuscator.py deleted file mode 100644 index bd3a331..0000000 --- a/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/javascriptobfuscator.py +++ /dev/null @@ -1,61 +0,0 @@ -# -# simple unpacker/deobfuscator for scripts messed up with -# javascriptobfuscator.com -# -#     written by Einar Lielmanis <einar@beautifier.io> -#     rewritten in Python by Stefano Sanfilippo <a.little.coder@gmail.com> -# -# Will always return valid javascript: if `detect()` is false, `code` is -# returned, unmodified. -# -# usage: -# -# if javascriptobfuscator.detect(some_string): -#     some_string = javascriptobfuscator.unpack(some_string) -# - -"""deobfuscator for scripts messed up with JavascriptObfuscator.com""" - -import re - -PRIORITY = 1 - - -def smartsplit(code): -    """Split `code` at " symbol, only if it is not escaped.""" -    strings = [] -    pos = 0 -    while pos < len(code): -        if code[pos] == '"': -            word = ""  # new word -            pos += 1 -            while pos < len(code): -                if code[pos] == '"': -                    break -                if code[pos] == "\\": -                    word += "\\" -                    pos += 1 -                word += code[pos] -                pos += 1 -            strings.append('"%s"' % word) -        pos += 1 -    return strings - - -def detect(code): -    """Detects if `code` is JavascriptObfuscator.com packed.""" -    # prefer `is not` idiom, so that a true boolean is returned -    return re.search(r"^var _0x[a-f0-9]+ ?\= ?\[", code) is not None - - -def unpack(code): -    """Unpacks JavascriptObfuscator.com packed code.""" -    if detect(code): -        matches = re.search(r"var (_0x[a-f\d]+) ?\= ?\[(.*?)\];", code) -        if matches: -            variable = matches.group(1) -            dictionary = smartsplit(matches.group(2)) -            code = code[len(matches.group(0)) :] -            for key, value in enumerate(dictionary): -                code = code.replace(r"%s[%s]" % (variable, key), value) -    return code diff --git a/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/myobfuscate.py b/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/myobfuscate.py deleted file mode 100644 index 0cbc7f8..0000000 --- a/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/myobfuscate.py +++ /dev/null @@ -1,90 +0,0 @@ -# -# deobfuscator for scripts messed up with myobfuscate.com -# by Einar Lielmanis <einar@beautifier.io> -# -#     written by Stefano Sanfilippo <a.little.coder@gmail.com> -# -# usage: -# -# if detect(some_string): -#     unpacked = unpack(some_string) -# - -# CAVEAT by Einar Lielmanis - -# -# You really don't want to obfuscate your scripts there: they're tracking -# your unpackings, your script gets turned into something like this, -# as of 2011-08-26: -# -#   var _escape = 'your_script_escaped'; -#   var _111 = document.createElement('script'); -#   _111.src = 'http://api.www.myobfuscate.com/?getsrc=ok' + -#              '&ref=' + encodeURIComponent(document.referrer) + -#              '&url=' + encodeURIComponent(document.URL); -#   var 000 = document.getElementsByTagName('head')[0]; -#   000.appendChild(_111); -#   document.write(unescape(_escape)); -# - -"""Deobfuscator for scripts messed up with MyObfuscate.com""" - -import re -import base64 - -# Python 2 retrocompatibility -# pylint: disable=F0401 -# pylint: disable=E0611 -try: -    from urllib import unquote -except ImportError: -    from urllib.parse import unquote - -from jsbeautifier.unpackers import UnpackingError - -PRIORITY = 1 - -CAVEAT = """// -// Unpacker warning: be careful when using myobfuscate.com for your projects: -// scripts obfuscated by the free online version call back home. -// - -""" - -SIGNATURE = ( -    r'["\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F' -    r"\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x61\x62\x63\x64\x65" -    r"\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75" -    r"\x76\x77\x78\x79\x7A\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x2B" -    r'\x2F\x3D","","\x63\x68\x61\x72\x41\x74","\x69\x6E\x64\x65\x78' -    r'\x4F\x66","\x66\x72\x6F\x6D\x43\x68\x61\x72\x43\x6F\x64\x65","' -    r'\x6C\x65\x6E\x67\x74\x68"]' -) - - -def detect(source): -    """Detects MyObfuscate.com packer.""" -    return SIGNATURE in source - - -def unpack(source): -    """Unpacks js code packed with MyObfuscate.com""" -    if not detect(source): -        return source -    payload = unquote(_filter(source)) -    match = re.search(r"^var _escape\='<script>(.*)<\/script>'", payload, re.DOTALL) -    polished = match.group(1) if match else source -    return CAVEAT + polished - - -def _filter(source): -    """Extracts and decode payload (original file) from `source`""" -    try: -        varname = re.search(r"eval\(\w+\(\w+\((\w+)\)\)\);", source).group(1) -        reverse = re.search(r"var +%s *\= *'(.*)';" % varname, source).group(1) -    except AttributeError: -        raise UnpackingError("Malformed MyObfuscate data.") -    try: -        return base64.b64decode(reverse[::-1].encode("utf8")).decode("utf8") -    except TypeError: -        raise UnpackingError("MyObfuscate payload is not base64-encoded.") diff --git a/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/packer.py b/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/packer.py deleted file mode 100644 index 117ff58..0000000 --- a/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/packer.py +++ /dev/null @@ -1,161 +0,0 @@ -# -# Unpacker for Dean Edward's p.a.c.k.e.r, a part of javascript beautifier -# by Einar Lielmanis <einar@beautifier.io> -# -#     written by Stefano Sanfilippo <a.little.coder@gmail.com> -# -# usage: -# -# if detect(some_string): -#     unpacked = unpack(some_string) -# - -"""Unpacker for Dean Edward's p.a.c.k.e.r""" - -import re -import string -import sys -from jsbeautifier.unpackers import UnpackingError - -PRIORITY = 1 - - -def detect(source): -    global beginstr -    global endstr -    beginstr = "" -    endstr = "" -    begin_offset = -1 -    """Detects whether `source` is P.A.C.K.E.R. coded.""" -    mystr = re.search( -        r"eval[ ]*\([ ]*function[ ]*\([ ]*p[ ]*,[ ]*a[ ]*,[ ]*c[" -        " ]*,[ ]*k[ ]*,[ ]*e[ ]*,[ ]*", -        source, -    ) -    if mystr: -        begin_offset = mystr.start() -        beginstr = source[:begin_offset] -    if begin_offset != -1: -        """Find endstr""" -        source_end = source[begin_offset:] -        if source_end.split("')))", 1)[0] == source_end: -            try: -                endstr = source_end.split("}))", 1)[1] -            except IndexError: -                endstr = "" -        else: -            endstr = source_end.split("')))", 1)[1] -    return mystr is not None - - -def unpack(source): -    """Unpacks P.A.C.K.E.R. packed js code.""" -    payload, symtab, radix, count = _filterargs(source) - -    if count != len(symtab): -        raise UnpackingError("Malformed p.a.c.k.e.r. symtab.") - -    try: -        unbase = Unbaser(radix) -    except TypeError: -        raise UnpackingError("Unknown p.a.c.k.e.r. encoding.") - -    def lookup(match): -        """Look up symbols in the synthetic symtab.""" -        word = match.group(0) -        return symtab[unbase(word)] or word - -    payload = payload.replace("\\\\", "\\").replace("\\'", "'") -    if sys.version_info.major == 2: -        source = re.sub(r"\b\w+\b", lookup, payload) -    else: -        source = re.sub(r"\b\w+\b", lookup, payload, flags=re.ASCII) -    return _replacestrings(source) - - -def _filterargs(source): -    """Juice from a source file the four args needed by decoder.""" -    juicers = [ -        (r"}\('(.*)', *(\d+|\[\]), *(\d+), *'(.*)'\.split\('\|'\), *(\d+), *(.*)\)\)"), -        (r"}\('(.*)', *(\d+|\[\]), *(\d+), *'(.*)'\.split\('\|'\)"), -    ] -    for juicer in juicers: -        args = re.search(juicer, source, re.DOTALL) -        if args: -            a = args.groups() -            if a[1] == "[]": -                a = list(a) -                a[1] = 62 -                a = tuple(a) -            try: -                return a[0], a[3].split("|"), int(a[1]), int(a[2]) -            except ValueError: -                raise UnpackingError("Corrupted p.a.c.k.e.r. data.") - -    # could not find a satisfying regex -    raise UnpackingError( -        "Could not make sense of p.a.c.k.e.r data (unexpected code structure)" -    ) - - -def _replacestrings(source): -    global beginstr -    global endstr -    """Strip string lookup table (list) and replace values in source.""" -    match = re.search(r'var *(_\w+)\=\["(.*?)"\];', source, re.DOTALL) - -    if match: -        varname, strings = match.groups() -        startpoint = len(match.group(0)) -        lookup = strings.split('","') -        variable = "%s[%%d]" % varname -        for index, value in enumerate(lookup): -            source = source.replace(variable % index, '"%s"' % value) -        return source[startpoint:] -    return beginstr + source + endstr - - -class Unbaser(object): -    """Functor for a given base. Will efficiently convert -    strings to natural numbers.""" - -    ALPHABET = { -        62: "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", -        95: ( -            " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ" -            "[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~" -        ), -    } - -    def __init__(self, base): -        self.base = base - -        # fill elements 37...61, if necessary -        if 36 < base < 62: -            if not hasattr(self.ALPHABET, self.ALPHABET[62][:base]): -                self.ALPHABET[base] = self.ALPHABET[62][:base] -        # attrs = self.ALPHABET -        # print ', '.join("%s: %s" % item for item in attrs.items()) -        # If base can be handled by int() builtin, let it do it for us -        if 2 <= base <= 36: -            self.unbase = lambda string: int(string, base) -        else: -            # Build conversion dictionary cache -            try: -                self.dictionary = dict( -                    (cipher, index) for index, cipher in enumerate(self.ALPHABET[base]) -                ) -            except KeyError: -                raise TypeError("Unsupported base encoding.") - -            self.unbase = self._dictunbaser - -    def __call__(self, string): -        return self.unbase(string) - -    def _dictunbaser(self, string): -        """Decodes a  value to an integer.""" -        ret = 0 -        for index, cipher in enumerate(string[::-1]): -            ret += (self.base**index) * self.dictionary[cipher] -        return ret diff --git a/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/tests/__init__.py b/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/tests/__init__.py deleted file mode 100644 index dfe67ba..0000000 --- a/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/tests/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -# Empty file :) -# pylint: disable=C0111 diff --git a/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/tests/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/tests/__pycache__/__init__.cpython-311.pyc Binary files differdeleted file mode 100644 index 612fa57..0000000 --- a/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/tests/__pycache__/__init__.cpython-311.pyc +++ /dev/null diff --git a/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/tests/__pycache__/testjavascriptobfuscator.cpython-311.pyc b/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/tests/__pycache__/testjavascriptobfuscator.cpython-311.pyc Binary files differdeleted file mode 100644 index 6c1abb8..0000000 --- a/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/tests/__pycache__/testjavascriptobfuscator.cpython-311.pyc +++ /dev/null diff --git a/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/tests/__pycache__/testmyobfuscate.cpython-311.pyc b/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/tests/__pycache__/testmyobfuscate.cpython-311.pyc Binary files differdeleted file mode 100644 index c62db76..0000000 --- a/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/tests/__pycache__/testmyobfuscate.cpython-311.pyc +++ /dev/null diff --git a/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/tests/__pycache__/testpacker.cpython-311.pyc b/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/tests/__pycache__/testpacker.cpython-311.pyc Binary files differdeleted file mode 100644 index 86d19bf..0000000 --- a/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/tests/__pycache__/testpacker.cpython-311.pyc +++ /dev/null diff --git a/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/tests/__pycache__/testurlencode.cpython-311.pyc b/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/tests/__pycache__/testurlencode.cpython-311.pyc Binary files differdeleted file mode 100644 index 93bd7db..0000000 --- a/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/tests/__pycache__/testurlencode.cpython-311.pyc +++ /dev/null diff --git a/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/tests/testjavascriptobfuscator.py b/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/tests/testjavascriptobfuscator.py deleted file mode 100644 index d40db2d..0000000 --- a/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/tests/testjavascriptobfuscator.py +++ /dev/null @@ -1,59 +0,0 @@ -# -#     written by Stefano Sanfilippo <a.little.coder@gmail.com> -# - -"""Tests for JavaScriptObfuscator unpacker.""" - -import unittest -from jsbeautifier.unpackers.javascriptobfuscator import unpack, detect, smartsplit - -# pylint: disable=R0904 - - -class TestJavascriptObfuscator(unittest.TestCase): -    """JavascriptObfuscator.com test case.""" - -    def test_smartsplit(self): -        """Test smartsplit() function.""" -        split = smartsplit - -        def equals(data, result): -            return self.assertEqual(split(data), result) - -        equals("", []) -        equals('"a", "b"', ['"a"', '"b"']) -        equals('"aaa","bbbb"', ['"aaa"', '"bbbb"']) -        equals('"a", "b\\""', ['"a"', '"b\\""']) - -    def test_detect(self): -        """Test detect() function.""" - -        def positive(source): -            return self.assertTrue(detect(source)) - -        def negative(source): -            return self.assertFalse(detect(source)) - -        negative("") -        negative("abcd") -        negative("var _0xaaaa") -        positive('var _0xaaaa = ["a", "b"]') -        positive('var _0xaaaa=["a", "b"]') -        positive('var _0x1234=["a","b"]') - -    def test_unpack(self): -        """Test unpack() function.""" - -        def decodeto(ob, original): -            return self.assertEqual(unpack(ob), original) - -        decodeto("var _0x8df3=[];var a=10;", "var a=10;") -        decodeto( -            'var _0xb2a7=["\x74\x27\x65\x73\x74"];var i;for(i=0;i<10;++i)' -            "{alert(_0xb2a7[0]);} ;", -            "var i;for(i=0;i<10;++i){alert" '("t\'est");} ;', -        ) - - -if __name__ == "__main__": -    unittest.main() diff --git a/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/tests/testmyobfuscate.py b/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/tests/testmyobfuscate.py deleted file mode 100644 index d69df82..0000000 --- a/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/tests/testmyobfuscate.py +++ /dev/null @@ -1,48 +0,0 @@ -# -#     written by Stefano Sanfilippo <a.little.coder@gmail.com> -# - -"""Tests for MyObfuscate unpacker.""" - -import unittest -import os -from jsbeautifier.unpackers.myobfuscate import detect, unpack -from jsbeautifier.unpackers.tests import __path__ as path - -INPUT = os.path.join(path[0], "test-myobfuscate-input.js") -OUTPUT = os.path.join(path[0], "test-myobfuscate-output.js") - -# pylint: disable=R0904 - - -class TestMyObfuscate(unittest.TestCase): -    # pylint: disable=C0103 -    """MyObfuscate obfuscator testcase.""" - -    @classmethod -    def setUpClass(cls): -        """Load source files (encoded and decoded version) for tests.""" -        with open(INPUT, "r") as data: -            cls.input = data.read() -        with open(OUTPUT, "r") as data: -            cls.output = data.read() - -    def test_detect(self): -        """Test detect() function.""" - -        def detected(source): -            return self.assertTrue(detect(source)) - -        detected(self.input) - -    def test_unpack(self): -        """Test unpack() function.""" - -        def check(inp, out): -            return self.assertEqual(unpack(inp), out) - -        check(self.input, self.output) - - -if __name__ == "__main__": -    unittest.main() diff --git a/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/tests/testpacker.py b/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/tests/testpacker.py deleted file mode 100644 index 1de9934..0000000 --- a/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/tests/testpacker.py +++ /dev/null @@ -1,73 +0,0 @@ -# -*- coding: utf-8 -*- -# -#     written by Stefano Sanfilippo <a.little.coder@gmail.com> -# - -"""Tests for P.A.C.K.E.R. unpacker.""" - -import unittest -from jsbeautifier.unpackers.packer import detect, unpack - -# pylint: disable=R0904 - - -class TestPacker(unittest.TestCase): -    """P.A.C.K.E.R. testcase.""" - -    def test_detect(self): -        """Test detect() function.""" - -        def positive(source): -            return self.assertTrue(detect(source)) - -        def negative(source): -            return self.assertFalse(detect(source)) - -        negative("") -        negative("var a = b") -        positive("eval(function(p,a,c,k,e,r") -        positive("eval ( function(p, a, c, k, e, r") - -    def test_unpack(self): -        """Test unpack() function.""" - -        def check(inp, out): -            return detect(inp) and self.assertEqual(unpack(inp), out) - -        check( -            "eval(function(p,a,c,k,e,r){e=String;if(!''.replace(/^/,String)" -            "){while(c--)r[c]=k[c]||c;k=[function(e){return r[e]}];e=" -            "function(){return'\\\\w+'};c=1};while(c--)if(k[c])p=p.replace(" -            "new RegExp('\\\\b'+e(c)+'\\\\b','g'),k[c]);return p}('0 2=1'," -            "62,3,'var||a'.split('|'),0,{}))", -            "var a=1", -        ) - -        check( -            "function test (){alert ('This is a test!')}; " -            "eval(function(p,a,c,k,e,r){e=String;if(!''.replace(/^/,String))" -            "{while(c--)r[c]=k[c]||c;k=[function(e){return r[e]}];e=function" -            "(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp(" -            "'\\b'+e(c)+'\\b','g'),k[c]);return p}('0 2=\\'{Íâ–+›ï;ã†Ù¥#\\'',3,3," -            "'var||a'.split('|'),0,{}))", -            "function test (){alert ('This is a test!')}; var a='{Íâ–+›ï;ã†Ù¥#'", -        ) - -        check( -            "eval(function(p,a,c,k,e,d){e=function(c){return c.toString(36)};if(!''.replace(/^/,String)){while(c--){d[c.toString(a)]=k[c]||c.toString(a)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('2 0=\"4 3!\";2 1=0.5(/b/6);a.9(\"8\").7=1;',12,12,'str|n|var|W3Schools|Visit|search|i|innerHTML|demo|getElementById|document|w3Schools'.split('|'),0,{}))", -            'var str="Visit W3Schools!";var n=str.search(/w3Schools/i);document.getElementById("demo").innerHTML=n;', -        ) - -        check( -            "a=b;\r\nwhile(1){\ng=h;{return'\\w+'};break;eval(function(p,a,c,k,e,d){e=function(c){return c.toString(36)};if(!''.replace(/^/,String)){while(c--){d[c.toString(a)]=k[c]||c.toString(a)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('$(5).4(3(){$('.1').0(2);$('.6').0(d);$('.7').0(b);$('.a').0(8);$('.9').0(c)});',14,14,'html|r5e57|8080|function|ready|document|r1655|rc15b|8888|r39b0|r6ae9|3128|65309|80'.split('|'),0,{}))c=abx;", -            "a=b;\r\nwhile(1){\ng=h;{return'\\w+'};break;$(document).ready(function(){$('.r5e57').html(8080);$('.r1655').html(80);$('.rc15b').html(3128);$('.r6ae9').html(8888);$('.r39b0').html(65309)});c=abx;", -        ) - -        check( -            "eval(function(p,a,c,k,e,r){e=function(c){return c.toString(36)};if('0'.replace(0,e)==0){while(c--)r[e(c)]=k[c];k=[function(e){return r[e]||e}];e=function(){return'[0-9ab]'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('$(5).a(6(){ $('.8').0(1); $('.b').0(4); $('.9').0(2); $('.7').0(3)})',[],12,'html|52136|555|65103|8088|document|function|r542c|r8ce6|rb0de|ready|rfab0'.split('|'),0,{}))", -            "$(document).ready(function(){ $('.r8ce6').html(52136); $('.rfab0').html(8088); $('.rb0de').html(555); $('.r542c').html(65103)})", -        ) - - -if __name__ == "__main__": -    unittest.main() diff --git a/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/tests/testurlencode.py b/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/tests/testurlencode.py deleted file mode 100644 index 10e236d..0000000 --- a/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/tests/testurlencode.py +++ /dev/null @@ -1,46 +0,0 @@ -# -#     written by Stefano Sanfilippo <a.little.coder@gmail.com> -# - -"""Tests for urlencoded unpacker.""" - -import unittest - -from jsbeautifier.unpackers.urlencode import detect, unpack - -# pylint: disable=R0904 - - -class TestUrlencode(unittest.TestCase): -    """urlencode test case.""" - -    def test_detect(self): -        """Test detect() function.""" - -        def encoded(source): -            return self.assertTrue(detect(source)) - -        def unencoded(source): -            return self.assertFalse(detect(source)) - -        unencoded("") -        unencoded("var a = b") -        encoded("var%20a+=+b") -        encoded("var%20a=b") -        encoded("var%20%21%22") - -    def test_unpack(self): -        """Test unpack function.""" - -        def equals(source, result): -            return self.assertEqual(unpack(source), result) - -        equals("", "") -        equals("abcd", "abcd") -        equals("var a = b", "var a = b") -        equals("var%20a=b", "var a=b") -        equals("var%20a+=+b", "var a = b") - - -if __name__ == "__main__": -    unittest.main() diff --git a/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/urlencode.py b/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/urlencode.py deleted file mode 100644 index d0d492a..0000000 --- a/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/urlencode.py +++ /dev/null @@ -1,36 +0,0 @@ -# -# Trivial bookmarklet/escaped script detector for the javascript beautifier -#     written by Einar Lielmanis <einar@beautifier.io> -#     rewritten in Python by Stefano Sanfilippo <a.little.coder@gmail.com> -# -# Will always return valid javascript: if `detect()` is false, `code` is -# returned, unmodified. -# -# usage: -# -# some_string = urlencode.unpack(some_string) -# - -"""Bookmarklet/escaped script unpacker.""" - -# Python 2 retrocompatibility -# pylint: disable=F0401 -# pylint: disable=E0611 -try: -    from urllib import unquote_plus -except ImportError: -    from urllib.parse import unquote_plus - -PRIORITY = 0 - - -def detect(code): -    """Detects if a scriptlet is urlencoded.""" -    # the fact that script doesn't contain any space, but has %20 instead -    # should be sufficient check for now. -    return " " not in code and ("%20" in code or code.count("%") > 3) - - -def unpack(code): -    """URL decode `code` source string.""" -    return unquote_plus(code) if detect(code) else code  | 
