Sha256: 452e6ad286207c8d341f9ab26d95da116e089016ff45b5d16372e84f108f0e34
Contents?: true
Size: 1.14 KB
Versions: 2
Compression:
Stored size: 1.14 KB
Contents
# # Unpacker for eval() based packers, a part of javascript beautifier # by Einar Lielmanis <einar@jsbeautifier.org> # # 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
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
js-beautify-0.1.8 | js-beautify-copy/python/jsbeautifier/unpackers/evalbased.py |
js-beautify-0.1.7 | js-beautify-copy/python/jsbeautifier/unpackers/evalbased.py |