Created
February 14, 2020 22:53
-
-
Save joshdabosh/e29c07a839c5fb1d5f7b57686f445444 to your computer and use it in GitHub Desktop.
MCPS Schedules
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
__all__ = ['code'] | |
# Don't look below, you will not understand this Python code :) I don't. | |
from js2py.pyjs import * | |
# setting scope | |
var = Scope( JS_BUILTINS ) | |
set_global_object(var) | |
# Code follows: | |
var.registers(['rstr2b64', 'rstr_hmac_md5', 'b64_md5', 'trim', 'any_md5', 'doAdminLogin', 'b64_hmac_md5', 'md5_vm_test', 'hexcase', 'any_hmac_md5', 'md5_cmn', 'deleteCookie', 'str2rstr_utf8', 'binl2rstr', 'binl_md5', 'rstr2any', 'str2rstr_utf16le', 'md5_ii', 'rstr2hex', 'encryptSingleStudentAccesPassword', 'bit_rol', 'md5_gg', 'safe_add', 'pskey', 'str2rstr_utf16be', 'encryptMultipleStudentsAccesPasswords', 'getCookie', 'encryptGuardianPasswords', 'rstr_md5', 'b64pad', 'hex_md5', 'hex_hmac_md5', 'doPCASLogin', 'md5_hh', 'encryptRecoverPasswords', 'doChangePassword', 'md5_ff', 'rstr2binl', 'encryptGuardianPassword', 'doTeacherLogin']) | |
@Js | |
def PyJsHoisted_hex_md5_(s, this, arguments, var=var): | |
var = Scope({'s':s, 'this':this, 'arguments':arguments}, var) | |
var.registers(['s']) | |
return var.get('rstr2hex')(var.get('rstr_md5')(var.get('str2rstr_utf8')(var.get('s')))) | |
PyJsHoisted_hex_md5_.func_name = 'hex_md5' | |
var.put('hex_md5', PyJsHoisted_hex_md5_) | |
@Js | |
def PyJsHoisted_b64_md5_(s, this, arguments, var=var): | |
var = Scope({'s':s, 'this':this, 'arguments':arguments}, var) | |
var.registers(['s']) | |
return var.get('rstr2b64')(var.get('rstr_md5')(var.get('str2rstr_utf8')(var.get('s')))) | |
PyJsHoisted_b64_md5_.func_name = 'b64_md5' | |
var.put('b64_md5', PyJsHoisted_b64_md5_) | |
@Js | |
def PyJsHoisted_any_md5_(s, e, this, arguments, var=var): | |
var = Scope({'s':s, 'e':e, 'this':this, 'arguments':arguments}, var) | |
var.registers(['s', 'e']) | |
return var.get('rstr2any')(var.get('rstr_md5')(var.get('str2rstr_utf8')(var.get('s'))), var.get('e')) | |
PyJsHoisted_any_md5_.func_name = 'any_md5' | |
var.put('any_md5', PyJsHoisted_any_md5_) | |
@Js | |
def PyJsHoisted_hex_hmac_md5_(k, d, this, arguments, var=var): | |
var = Scope({'k':k, 'd':d, 'this':this, 'arguments':arguments}, var) | |
var.registers(['k', 'd']) | |
return var.get('rstr2hex')(var.get('rstr_hmac_md5')(var.get('str2rstr_utf8')(var.get('k')), var.get('str2rstr_utf8')(var.get('d')))) | |
PyJsHoisted_hex_hmac_md5_.func_name = 'hex_hmac_md5' | |
var.put('hex_hmac_md5', PyJsHoisted_hex_hmac_md5_) | |
@Js | |
def PyJsHoisted_b64_hmac_md5_(k, d, this, arguments, var=var): | |
var = Scope({'k':k, 'd':d, 'this':this, 'arguments':arguments}, var) | |
var.registers(['k', 'd']) | |
return var.get('rstr2b64')(var.get('rstr_hmac_md5')(var.get('str2rstr_utf8')(var.get('k')), var.get('str2rstr_utf8')(var.get('d')))) | |
PyJsHoisted_b64_hmac_md5_.func_name = 'b64_hmac_md5' | |
var.put('b64_hmac_md5', PyJsHoisted_b64_hmac_md5_) | |
@Js | |
def PyJsHoisted_any_hmac_md5_(k, d, e, this, arguments, var=var): | |
var = Scope({'k':k, 'd':d, 'e':e, 'this':this, 'arguments':arguments}, var) | |
var.registers(['k', 'd', 'e']) | |
return var.get('rstr2any')(var.get('rstr_hmac_md5')(var.get('str2rstr_utf8')(var.get('k')), var.get('str2rstr_utf8')(var.get('d'))), var.get('e')) | |
PyJsHoisted_any_hmac_md5_.func_name = 'any_hmac_md5' | |
var.put('any_hmac_md5', PyJsHoisted_any_hmac_md5_) | |
@Js | |
def PyJsHoisted_md5_vm_test_(this, arguments, var=var): | |
var = Scope({'this':this, 'arguments':arguments}, var) | |
var.registers([]) | |
return (var.get('hex_md5')(Js('abc')).callprop('toLowerCase')==Js('900150983cd24fb0d6963f7d28e17f72')) | |
PyJsHoisted_md5_vm_test_.func_name = 'md5_vm_test' | |
var.put('md5_vm_test', PyJsHoisted_md5_vm_test_) | |
@Js | |
def PyJsHoisted_rstr_md5_(s, this, arguments, var=var): | |
var = Scope({'s':s, 'this':this, 'arguments':arguments}, var) | |
var.registers(['s']) | |
return var.get('binl2rstr')(var.get('binl_md5')(var.get('rstr2binl')(var.get('s')), (var.get('s').get('length')*Js(8.0)))) | |
PyJsHoisted_rstr_md5_.func_name = 'rstr_md5' | |
var.put('rstr_md5', PyJsHoisted_rstr_md5_) | |
@Js | |
def PyJsHoisted_rstr_hmac_md5_(key, data, this, arguments, var=var): | |
var = Scope({'key':key, 'data':data, 'this':this, 'arguments':arguments}, var) | |
var.registers(['ipad', 'key', 'hash', 'opad', 'bkey', 'data', 'i']) | |
var.put('bkey', var.get('rstr2binl')(var.get('key'))) | |
if (var.get('bkey').get('length')>Js(16.0)): | |
var.put('bkey', var.get('binl_md5')(var.get('bkey'), (var.get('key').get('length')*Js(8.0)))) | |
var.put('ipad', var.get('Array')(Js(16.0))) | |
var.put('opad', var.get('Array')(Js(16.0))) | |
#for JS loop | |
var.put('i', Js(0.0)) | |
while (var.get('i')<Js(16.0)): | |
try: | |
var.get('ipad').put(var.get('i'), (var.get('bkey').get(var.get('i'))^Js(909522486))) | |
var.get('opad').put(var.get('i'), (var.get('bkey').get(var.get('i'))^Js(1549556828))) | |
finally: | |
(var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1)) | |
var.put('hash', var.get('binl_md5')(var.get('ipad').callprop('concat', var.get('rstr2binl')(var.get('data'))), (Js(512.0)+(var.get('data').get('length')*Js(8.0))))) | |
return var.get('binl2rstr')(var.get('binl_md5')(var.get('opad').callprop('concat', var.get('hash')), (Js(512.0)+Js(128.0)))) | |
PyJsHoisted_rstr_hmac_md5_.func_name = 'rstr_hmac_md5' | |
var.put('rstr_hmac_md5', PyJsHoisted_rstr_hmac_md5_) | |
@Js | |
def PyJsHoisted_rstr2hex_(input, this, arguments, var=var): | |
var = Scope({'input':input, 'this':this, 'arguments':arguments}, var) | |
var.registers(['hex_tab', 'output', 'input', 'x', 'i']) | |
try: | |
var.get('hexcase') | |
except PyJsException as PyJsTempException: | |
PyJsHolder_65_88148891 = var.own.get('e') | |
var.force_own_put('e', PyExceptionToJs(PyJsTempException)) | |
try: | |
var.put('hexcase', Js(0.0)) | |
finally: | |
if PyJsHolder_65_88148891 is not None: | |
var.own['e'] = PyJsHolder_65_88148891 | |
else: | |
del var.own['e'] | |
del PyJsHolder_65_88148891 | |
var.put('hex_tab', (Js('0123456789ABCDEF') if var.get('hexcase') else Js('0123456789abcdef'))) | |
var.put('output', Js('')) | |
pass | |
#for JS loop | |
var.put('i', Js(0.0)) | |
while (var.get('i')<var.get('input').get('length')): | |
try: | |
var.put('x', var.get('input').callprop('charCodeAt', var.get('i'))) | |
var.put('output', (var.get('hex_tab').callprop('charAt', (PyJsBshift(var.get('x'),Js(4.0))&Js(15)))+var.get('hex_tab').callprop('charAt', (var.get('x')&Js(15)))), '+') | |
finally: | |
(var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1)) | |
return var.get('output') | |
PyJsHoisted_rstr2hex_.func_name = 'rstr2hex' | |
var.put('rstr2hex', PyJsHoisted_rstr2hex_) | |
@Js | |
def PyJsHoisted_rstr2b64_(input, this, arguments, var=var): | |
var = Scope({'input':input, 'this':this, 'arguments':arguments}, var) | |
var.registers(['tab', 'triplet', 'output', 'j', 'input', 'len', 'i']) | |
try: | |
var.get('b64pad') | |
except PyJsException as PyJsTempException: | |
PyJsHolder_65_33023946 = var.own.get('e') | |
var.force_own_put('e', PyExceptionToJs(PyJsTempException)) | |
try: | |
var.put('b64pad', Js('')) | |
finally: | |
if PyJsHolder_65_33023946 is not None: | |
var.own['e'] = PyJsHolder_65_33023946 | |
else: | |
del var.own['e'] | |
del PyJsHolder_65_33023946 | |
var.put('tab', Js('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/')) | |
var.put('output', Js('')) | |
var.put('len', var.get('input').get('length')) | |
#for JS loop | |
var.put('i', Js(0.0)) | |
while (var.get('i')<var.get('len')): | |
try: | |
var.put('triplet', (((var.get('input').callprop('charCodeAt', var.get('i'))<<Js(16.0))|((var.get('input').callprop('charCodeAt', (var.get('i')+Js(1.0)))<<Js(8.0)) if ((var.get('i')+Js(1.0))<var.get('len')) else Js(0.0)))|(var.get('input').callprop('charCodeAt', (var.get('i')+Js(2.0))) if ((var.get('i')+Js(2.0))<var.get('len')) else Js(0.0)))) | |
#for JS loop | |
var.put('j', Js(0.0)) | |
while (var.get('j')<Js(4.0)): | |
try: | |
if (((var.get('i')*Js(8.0))+(var.get('j')*Js(6.0)))>(var.get('input').get('length')*Js(8.0))): | |
var.put('output', var.get('b64pad'), '+') | |
else: | |
var.put('output', var.get('tab').callprop('charAt', (PyJsBshift(var.get('triplet'),(Js(6.0)*(Js(3.0)-var.get('j'))))&Js(63))), '+') | |
finally: | |
(var.put('j',Js(var.get('j').to_number())+Js(1))-Js(1)) | |
finally: | |
var.put('i', Js(3.0), '+') | |
return var.get('output') | |
PyJsHoisted_rstr2b64_.func_name = 'rstr2b64' | |
var.put('rstr2b64', PyJsHoisted_rstr2b64_) | |
@Js | |
def PyJsHoisted_rstr2any_(input, encoding, this, arguments, var=var): | |
var = Scope({'input':input, 'encoding':encoding, 'this':this, 'arguments':arguments}, var) | |
var.registers(['quotient', 'divisor', 'remainders', 'output', 'q', 'j', 'x', 'dividend', 'input', 'full_length', 'encoding', 'i']) | |
var.put('divisor', var.get('encoding').get('length')) | |
pass | |
var.put('dividend', var.get('Array')(var.get('Math').callprop('ceil', (var.get('input').get('length')/Js(2.0))))) | |
#for JS loop | |
var.put('i', Js(0.0)) | |
while (var.get('i')<var.get('dividend').get('length')): | |
try: | |
var.get('dividend').put(var.get('i'), ((var.get('input').callprop('charCodeAt', (var.get('i')*Js(2.0)))<<Js(8.0))|var.get('input').callprop('charCodeAt', ((var.get('i')*Js(2.0))+Js(1.0))))) | |
finally: | |
(var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1)) | |
var.put('full_length', var.get('Math').callprop('ceil', ((var.get('input').get('length')*Js(8.0))/(var.get('Math').callprop('log', var.get('encoding').get('length'))/var.get('Math').callprop('log', Js(2.0)))))) | |
var.put('remainders', var.get('Array')(var.get('full_length'))) | |
#for JS loop | |
var.put('j', Js(0.0)) | |
while (var.get('j')<var.get('full_length')): | |
try: | |
var.put('quotient', var.get('Array')()) | |
var.put('x', Js(0.0)) | |
#for JS loop | |
var.put('i', Js(0.0)) | |
while (var.get('i')<var.get('dividend').get('length')): | |
try: | |
var.put('x', ((var.get('x')<<Js(16.0))+var.get('dividend').get(var.get('i')))) | |
var.put('q', var.get('Math').callprop('floor', (var.get('x')/var.get('divisor')))) | |
var.put('x', (var.get('q')*var.get('divisor')), '-') | |
if ((var.get('quotient').get('length')>Js(0.0)) or (var.get('q')>Js(0.0))): | |
var.get('quotient').put(var.get('quotient').get('length'), var.get('q')) | |
finally: | |
(var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1)) | |
var.get('remainders').put(var.get('j'), var.get('x')) | |
var.put('dividend', var.get('quotient')) | |
finally: | |
(var.put('j',Js(var.get('j').to_number())+Js(1))-Js(1)) | |
var.put('output', Js('')) | |
#for JS loop | |
var.put('i', (var.get('remainders').get('length')-Js(1.0))) | |
while (var.get('i')>=Js(0.0)): | |
try: | |
var.put('output', var.get('encoding').callprop('charAt', var.get('remainders').get(var.get('i'))), '+') | |
finally: | |
(var.put('i',Js(var.get('i').to_number())-Js(1))+Js(1)) | |
return var.get('output') | |
PyJsHoisted_rstr2any_.func_name = 'rstr2any' | |
var.put('rstr2any', PyJsHoisted_rstr2any_) | |
@Js | |
def PyJsHoisted_str2rstr_utf8_(input, this, arguments, var=var): | |
var = Scope({'input':input, 'this':this, 'arguments':arguments}, var) | |
var.registers(['output', 'input', 'x', 'y', 'i']) | |
var.put('output', Js('')) | |
var.put('i', (-Js(1.0))) | |
pass | |
while (var.put('i',Js(var.get('i').to_number())+Js(1))<var.get('input').get('length')): | |
var.put('x', var.get('input').callprop('charCodeAt', var.get('i'))) | |
var.put('y', (var.get('input').callprop('charCodeAt', (var.get('i')+Js(1.0))) if ((var.get('i')+Js(1.0))<var.get('input').get('length')) else Js(0.0))) | |
if ((((Js(55296)<=var.get('x')) and (var.get('x')<=Js(56319))) and (Js(56320)<=var.get('y'))) and (var.get('y')<=Js(57343))): | |
var.put('x', ((Js(65536)+((var.get('x')&Js(1023))<<Js(10.0)))+(var.get('y')&Js(1023)))) | |
(var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1)) | |
if (var.get('x')<=Js(127)): | |
var.put('output', var.get('String').callprop('fromCharCode', var.get('x')), '+') | |
else: | |
if (var.get('x')<=Js(2047)): | |
var.put('output', var.get('String').callprop('fromCharCode', (Js(192)|(PyJsBshift(var.get('x'),Js(6.0))&Js(31))), (Js(128)|(var.get('x')&Js(63)))), '+') | |
else: | |
if (var.get('x')<=Js(65535)): | |
var.put('output', var.get('String').callprop('fromCharCode', (Js(224)|(PyJsBshift(var.get('x'),Js(12.0))&Js(15))), (Js(128)|(PyJsBshift(var.get('x'),Js(6.0))&Js(63))), (Js(128)|(var.get('x')&Js(63)))), '+') | |
else: | |
if (var.get('x')<=Js(2097151)): | |
var.put('output', var.get('String').callprop('fromCharCode', (Js(240)|(PyJsBshift(var.get('x'),Js(18.0))&Js(7))), (Js(128)|(PyJsBshift(var.get('x'),Js(12.0))&Js(63))), (Js(128)|(PyJsBshift(var.get('x'),Js(6.0))&Js(63))), (Js(128)|(var.get('x')&Js(63)))), '+') | |
return var.get('output') | |
PyJsHoisted_str2rstr_utf8_.func_name = 'str2rstr_utf8' | |
var.put('str2rstr_utf8', PyJsHoisted_str2rstr_utf8_) | |
@Js | |
def PyJsHoisted_str2rstr_utf16le_(input, this, arguments, var=var): | |
var = Scope({'input':input, 'this':this, 'arguments':arguments}, var) | |
var.registers(['output', 'input', 'i']) | |
var.put('output', Js('')) | |
#for JS loop | |
var.put('i', Js(0.0)) | |
while (var.get('i')<var.get('input').get('length')): | |
try: | |
var.put('output', var.get('String').callprop('fromCharCode', (var.get('input').callprop('charCodeAt', var.get('i'))&Js(255)), (PyJsBshift(var.get('input').callprop('charCodeAt', var.get('i')),Js(8.0))&Js(255))), '+') | |
finally: | |
(var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1)) | |
return var.get('output') | |
PyJsHoisted_str2rstr_utf16le_.func_name = 'str2rstr_utf16le' | |
var.put('str2rstr_utf16le', PyJsHoisted_str2rstr_utf16le_) | |
@Js | |
def PyJsHoisted_str2rstr_utf16be_(input, this, arguments, var=var): | |
var = Scope({'input':input, 'this':this, 'arguments':arguments}, var) | |
var.registers(['output', 'input', 'i']) | |
var.put('output', Js('')) | |
#for JS loop | |
var.put('i', Js(0.0)) | |
while (var.get('i')<var.get('input').get('length')): | |
try: | |
var.put('output', var.get('String').callprop('fromCharCode', (PyJsBshift(var.get('input').callprop('charCodeAt', var.get('i')),Js(8.0))&Js(255)), (var.get('input').callprop('charCodeAt', var.get('i'))&Js(255))), '+') | |
finally: | |
(var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1)) | |
return var.get('output') | |
PyJsHoisted_str2rstr_utf16be_.func_name = 'str2rstr_utf16be' | |
var.put('str2rstr_utf16be', PyJsHoisted_str2rstr_utf16be_) | |
@Js | |
def PyJsHoisted_rstr2binl_(input, this, arguments, var=var): | |
var = Scope({'input':input, 'this':this, 'arguments':arguments}, var) | |
var.registers(['output', 'input', 'i']) | |
var.put('output', var.get('Array')((var.get('input').get('length')>>Js(2.0)))) | |
#for JS loop | |
var.put('i', Js(0.0)) | |
while (var.get('i')<var.get('output').get('length')): | |
try: | |
var.get('output').put(var.get('i'), Js(0.0)) | |
finally: | |
(var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1)) | |
#for JS loop | |
var.put('i', Js(0.0)) | |
while (var.get('i')<(var.get('input').get('length')*Js(8.0))): | |
try: | |
var.get('output').put((var.get('i')>>Js(5.0)), ((var.get('input').callprop('charCodeAt', (var.get('i')/Js(8.0)))&Js(255))<<(var.get('i')%Js(32.0))), '|') | |
finally: | |
var.put('i', Js(8.0), '+') | |
return var.get('output') | |
PyJsHoisted_rstr2binl_.func_name = 'rstr2binl' | |
var.put('rstr2binl', PyJsHoisted_rstr2binl_) | |
@Js | |
def PyJsHoisted_binl2rstr_(input, this, arguments, var=var): | |
var = Scope({'input':input, 'this':this, 'arguments':arguments}, var) | |
var.registers(['output', 'input', 'i']) | |
var.put('output', Js('')) | |
#for JS loop | |
var.put('i', Js(0.0)) | |
while (var.get('i')<(var.get('input').get('length')*Js(32.0))): | |
try: | |
var.put('output', var.get('String').callprop('fromCharCode', (PyJsBshift(var.get('input').get((var.get('i')>>Js(5.0))),(var.get('i')%Js(32.0)))&Js(255))), '+') | |
finally: | |
var.put('i', Js(8.0), '+') | |
return var.get('output') | |
PyJsHoisted_binl2rstr_.func_name = 'binl2rstr' | |
var.put('binl2rstr', PyJsHoisted_binl2rstr_) | |
@Js | |
def PyJsHoisted_binl_md5_(x, len, this, arguments, var=var): | |
var = Scope({'x':x, 'len':len, 'this':this, 'arguments':arguments}, var) | |
var.registers(['a', 'oldc', 'd', 'len', 'oldd', 'oldb', 'c', 'x', 'b', 'olda', 'i']) | |
var.get('x').put((var.get('len')>>Js(5.0)), (Js(128)<<(var.get('len')%Js(32.0))), '|') | |
var.get('x').put(((PyJsBshift((var.get('len')+Js(64.0)),Js(9.0))<<Js(4.0))+Js(14.0)), var.get('len')) | |
var.put('a', Js(1732584193.0)) | |
var.put('b', (-Js(271733879.0))) | |
var.put('c', (-Js(1732584194.0))) | |
var.put('d', Js(271733878.0)) | |
#for JS loop | |
var.put('i', Js(0.0)) | |
while (var.get('i')<var.get('x').get('length')): | |
try: | |
var.put('olda', var.get('a')) | |
var.put('oldb', var.get('b')) | |
var.put('oldc', var.get('c')) | |
var.put('oldd', var.get('d')) | |
var.put('a', var.get('md5_ff')(var.get('a'), var.get('b'), var.get('c'), var.get('d'), var.get('x').get((var.get('i')+Js(0.0))), Js(7.0), (-Js(680876936.0)))) | |
var.put('d', var.get('md5_ff')(var.get('d'), var.get('a'), var.get('b'), var.get('c'), var.get('x').get((var.get('i')+Js(1.0))), Js(12.0), (-Js(389564586.0)))) | |
var.put('c', var.get('md5_ff')(var.get('c'), var.get('d'), var.get('a'), var.get('b'), var.get('x').get((var.get('i')+Js(2.0))), Js(17.0), Js(606105819.0))) | |
var.put('b', var.get('md5_ff')(var.get('b'), var.get('c'), var.get('d'), var.get('a'), var.get('x').get((var.get('i')+Js(3.0))), Js(22.0), (-Js(1044525330.0)))) | |
var.put('a', var.get('md5_ff')(var.get('a'), var.get('b'), var.get('c'), var.get('d'), var.get('x').get((var.get('i')+Js(4.0))), Js(7.0), (-Js(176418897.0)))) | |
var.put('d', var.get('md5_ff')(var.get('d'), var.get('a'), var.get('b'), var.get('c'), var.get('x').get((var.get('i')+Js(5.0))), Js(12.0), Js(1200080426.0))) | |
var.put('c', var.get('md5_ff')(var.get('c'), var.get('d'), var.get('a'), var.get('b'), var.get('x').get((var.get('i')+Js(6.0))), Js(17.0), (-Js(1473231341.0)))) | |
var.put('b', var.get('md5_ff')(var.get('b'), var.get('c'), var.get('d'), var.get('a'), var.get('x').get((var.get('i')+Js(7.0))), Js(22.0), (-Js(45705983.0)))) | |
var.put('a', var.get('md5_ff')(var.get('a'), var.get('b'), var.get('c'), var.get('d'), var.get('x').get((var.get('i')+Js(8.0))), Js(7.0), Js(1770035416.0))) | |
var.put('d', var.get('md5_ff')(var.get('d'), var.get('a'), var.get('b'), var.get('c'), var.get('x').get((var.get('i')+Js(9.0))), Js(12.0), (-Js(1958414417.0)))) | |
var.put('c', var.get('md5_ff')(var.get('c'), var.get('d'), var.get('a'), var.get('b'), var.get('x').get((var.get('i')+Js(10.0))), Js(17.0), (-Js(42063.0)))) | |
var.put('b', var.get('md5_ff')(var.get('b'), var.get('c'), var.get('d'), var.get('a'), var.get('x').get((var.get('i')+Js(11.0))), Js(22.0), (-Js(1990404162.0)))) | |
var.put('a', var.get('md5_ff')(var.get('a'), var.get('b'), var.get('c'), var.get('d'), var.get('x').get((var.get('i')+Js(12.0))), Js(7.0), Js(1804603682.0))) | |
var.put('d', var.get('md5_ff')(var.get('d'), var.get('a'), var.get('b'), var.get('c'), var.get('x').get((var.get('i')+Js(13.0))), Js(12.0), (-Js(40341101.0)))) | |
var.put('c', var.get('md5_ff')(var.get('c'), var.get('d'), var.get('a'), var.get('b'), var.get('x').get((var.get('i')+Js(14.0))), Js(17.0), (-Js(1502002290.0)))) | |
var.put('b', var.get('md5_ff')(var.get('b'), var.get('c'), var.get('d'), var.get('a'), var.get('x').get((var.get('i')+Js(15.0))), Js(22.0), Js(1236535329.0))) | |
var.put('a', var.get('md5_gg')(var.get('a'), var.get('b'), var.get('c'), var.get('d'), var.get('x').get((var.get('i')+Js(1.0))), Js(5.0), (-Js(165796510.0)))) | |
var.put('d', var.get('md5_gg')(var.get('d'), var.get('a'), var.get('b'), var.get('c'), var.get('x').get((var.get('i')+Js(6.0))), Js(9.0), (-Js(1069501632.0)))) | |
var.put('c', var.get('md5_gg')(var.get('c'), var.get('d'), var.get('a'), var.get('b'), var.get('x').get((var.get('i')+Js(11.0))), Js(14.0), Js(643717713.0))) | |
var.put('b', var.get('md5_gg')(var.get('b'), var.get('c'), var.get('d'), var.get('a'), var.get('x').get((var.get('i')+Js(0.0))), Js(20.0), (-Js(373897302.0)))) | |
var.put('a', var.get('md5_gg')(var.get('a'), var.get('b'), var.get('c'), var.get('d'), var.get('x').get((var.get('i')+Js(5.0))), Js(5.0), (-Js(701558691.0)))) | |
var.put('d', var.get('md5_gg')(var.get('d'), var.get('a'), var.get('b'), var.get('c'), var.get('x').get((var.get('i')+Js(10.0))), Js(9.0), Js(38016083.0))) | |
var.put('c', var.get('md5_gg')(var.get('c'), var.get('d'), var.get('a'), var.get('b'), var.get('x').get((var.get('i')+Js(15.0))), Js(14.0), (-Js(660478335.0)))) | |
var.put('b', var.get('md5_gg')(var.get('b'), var.get('c'), var.get('d'), var.get('a'), var.get('x').get((var.get('i')+Js(4.0))), Js(20.0), (-Js(405537848.0)))) | |
var.put('a', var.get('md5_gg')(var.get('a'), var.get('b'), var.get('c'), var.get('d'), var.get('x').get((var.get('i')+Js(9.0))), Js(5.0), Js(568446438.0))) | |
var.put('d', var.get('md5_gg')(var.get('d'), var.get('a'), var.get('b'), var.get('c'), var.get('x').get((var.get('i')+Js(14.0))), Js(9.0), (-Js(1019803690.0)))) | |
var.put('c', var.get('md5_gg')(var.get('c'), var.get('d'), var.get('a'), var.get('b'), var.get('x').get((var.get('i')+Js(3.0))), Js(14.0), (-Js(187363961.0)))) | |
var.put('b', var.get('md5_gg')(var.get('b'), var.get('c'), var.get('d'), var.get('a'), var.get('x').get((var.get('i')+Js(8.0))), Js(20.0), Js(1163531501.0))) | |
var.put('a', var.get('md5_gg')(var.get('a'), var.get('b'), var.get('c'), var.get('d'), var.get('x').get((var.get('i')+Js(13.0))), Js(5.0), (-Js(1444681467.0)))) | |
var.put('d', var.get('md5_gg')(var.get('d'), var.get('a'), var.get('b'), var.get('c'), var.get('x').get((var.get('i')+Js(2.0))), Js(9.0), (-Js(51403784.0)))) | |
var.put('c', var.get('md5_gg')(var.get('c'), var.get('d'), var.get('a'), var.get('b'), var.get('x').get((var.get('i')+Js(7.0))), Js(14.0), Js(1735328473.0))) | |
var.put('b', var.get('md5_gg')(var.get('b'), var.get('c'), var.get('d'), var.get('a'), var.get('x').get((var.get('i')+Js(12.0))), Js(20.0), (-Js(1926607734.0)))) | |
var.put('a', var.get('md5_hh')(var.get('a'), var.get('b'), var.get('c'), var.get('d'), var.get('x').get((var.get('i')+Js(5.0))), Js(4.0), (-Js(378558.0)))) | |
var.put('d', var.get('md5_hh')(var.get('d'), var.get('a'), var.get('b'), var.get('c'), var.get('x').get((var.get('i')+Js(8.0))), Js(11.0), (-Js(2022574463.0)))) | |
var.put('c', var.get('md5_hh')(var.get('c'), var.get('d'), var.get('a'), var.get('b'), var.get('x').get((var.get('i')+Js(11.0))), Js(16.0), Js(1839030562.0))) | |
var.put('b', var.get('md5_hh')(var.get('b'), var.get('c'), var.get('d'), var.get('a'), var.get('x').get((var.get('i')+Js(14.0))), Js(23.0), (-Js(35309556.0)))) | |
var.put('a', var.get('md5_hh')(var.get('a'), var.get('b'), var.get('c'), var.get('d'), var.get('x').get((var.get('i')+Js(1.0))), Js(4.0), (-Js(1530992060.0)))) | |
var.put('d', var.get('md5_hh')(var.get('d'), var.get('a'), var.get('b'), var.get('c'), var.get('x').get((var.get('i')+Js(4.0))), Js(11.0), Js(1272893353.0))) | |
var.put('c', var.get('md5_hh')(var.get('c'), var.get('d'), var.get('a'), var.get('b'), var.get('x').get((var.get('i')+Js(7.0))), Js(16.0), (-Js(155497632.0)))) | |
var.put('b', var.get('md5_hh')(var.get('b'), var.get('c'), var.get('d'), var.get('a'), var.get('x').get((var.get('i')+Js(10.0))), Js(23.0), (-Js(1094730640.0)))) | |
var.put('a', var.get('md5_hh')(var.get('a'), var.get('b'), var.get('c'), var.get('d'), var.get('x').get((var.get('i')+Js(13.0))), Js(4.0), Js(681279174.0))) | |
var.put('d', var.get('md5_hh')(var.get('d'), var.get('a'), var.get('b'), var.get('c'), var.get('x').get((var.get('i')+Js(0.0))), Js(11.0), (-Js(358537222.0)))) | |
var.put('c', var.get('md5_hh')(var.get('c'), var.get('d'), var.get('a'), var.get('b'), var.get('x').get((var.get('i')+Js(3.0))), Js(16.0), (-Js(722521979.0)))) | |
var.put('b', var.get('md5_hh')(var.get('b'), var.get('c'), var.get('d'), var.get('a'), var.get('x').get((var.get('i')+Js(6.0))), Js(23.0), Js(76029189.0))) | |
var.put('a', var.get('md5_hh')(var.get('a'), var.get('b'), var.get('c'), var.get('d'), var.get('x').get((var.get('i')+Js(9.0))), Js(4.0), (-Js(640364487.0)))) | |
var.put('d', var.get('md5_hh')(var.get('d'), var.get('a'), var.get('b'), var.get('c'), var.get('x').get((var.get('i')+Js(12.0))), Js(11.0), (-Js(421815835.0)))) | |
var.put('c', var.get('md5_hh')(var.get('c'), var.get('d'), var.get('a'), var.get('b'), var.get('x').get((var.get('i')+Js(15.0))), Js(16.0), Js(530742520.0))) | |
var.put('b', var.get('md5_hh')(var.get('b'), var.get('c'), var.get('d'), var.get('a'), var.get('x').get((var.get('i')+Js(2.0))), Js(23.0), (-Js(995338651.0)))) | |
var.put('a', var.get('md5_ii')(var.get('a'), var.get('b'), var.get('c'), var.get('d'), var.get('x').get((var.get('i')+Js(0.0))), Js(6.0), (-Js(198630844.0)))) | |
var.put('d', var.get('md5_ii')(var.get('d'), var.get('a'), var.get('b'), var.get('c'), var.get('x').get((var.get('i')+Js(7.0))), Js(10.0), Js(1126891415.0))) | |
var.put('c', var.get('md5_ii')(var.get('c'), var.get('d'), var.get('a'), var.get('b'), var.get('x').get((var.get('i')+Js(14.0))), Js(15.0), (-Js(1416354905.0)))) | |
var.put('b', var.get('md5_ii')(var.get('b'), var.get('c'), var.get('d'), var.get('a'), var.get('x').get((var.get('i')+Js(5.0))), Js(21.0), (-Js(57434055.0)))) | |
var.put('a', var.get('md5_ii')(var.get('a'), var.get('b'), var.get('c'), var.get('d'), var.get('x').get((var.get('i')+Js(12.0))), Js(6.0), Js(1700485571.0))) | |
var.put('d', var.get('md5_ii')(var.get('d'), var.get('a'), var.get('b'), var.get('c'), var.get('x').get((var.get('i')+Js(3.0))), Js(10.0), (-Js(1894986606.0)))) | |
var.put('c', var.get('md5_ii')(var.get('c'), var.get('d'), var.get('a'), var.get('b'), var.get('x').get((var.get('i')+Js(10.0))), Js(15.0), (-Js(1051523.0)))) | |
var.put('b', var.get('md5_ii')(var.get('b'), var.get('c'), var.get('d'), var.get('a'), var.get('x').get((var.get('i')+Js(1.0))), Js(21.0), (-Js(2054922799.0)))) | |
var.put('a', var.get('md5_ii')(var.get('a'), var.get('b'), var.get('c'), var.get('d'), var.get('x').get((var.get('i')+Js(8.0))), Js(6.0), Js(1873313359.0))) | |
var.put('d', var.get('md5_ii')(var.get('d'), var.get('a'), var.get('b'), var.get('c'), var.get('x').get((var.get('i')+Js(15.0))), Js(10.0), (-Js(30611744.0)))) | |
var.put('c', var.get('md5_ii')(var.get('c'), var.get('d'), var.get('a'), var.get('b'), var.get('x').get((var.get('i')+Js(6.0))), Js(15.0), (-Js(1560198380.0)))) | |
var.put('b', var.get('md5_ii')(var.get('b'), var.get('c'), var.get('d'), var.get('a'), var.get('x').get((var.get('i')+Js(13.0))), Js(21.0), Js(1309151649.0))) | |
var.put('a', var.get('md5_ii')(var.get('a'), var.get('b'), var.get('c'), var.get('d'), var.get('x').get((var.get('i')+Js(4.0))), Js(6.0), (-Js(145523070.0)))) | |
var.put('d', var.get('md5_ii')(var.get('d'), var.get('a'), var.get('b'), var.get('c'), var.get('x').get((var.get('i')+Js(11.0))), Js(10.0), (-Js(1120210379.0)))) | |
var.put('c', var.get('md5_ii')(var.get('c'), var.get('d'), var.get('a'), var.get('b'), var.get('x').get((var.get('i')+Js(2.0))), Js(15.0), Js(718787259.0))) | |
var.put('b', var.get('md5_ii')(var.get('b'), var.get('c'), var.get('d'), var.get('a'), var.get('x').get((var.get('i')+Js(9.0))), Js(21.0), (-Js(343485551.0)))) | |
var.put('a', var.get('safe_add')(var.get('a'), var.get('olda'))) | |
var.put('b', var.get('safe_add')(var.get('b'), var.get('oldb'))) | |
var.put('c', var.get('safe_add')(var.get('c'), var.get('oldc'))) | |
var.put('d', var.get('safe_add')(var.get('d'), var.get('oldd'))) | |
finally: | |
var.put('i', Js(16.0), '+') | |
return var.get('Array')(var.get('a'), var.get('b'), var.get('c'), var.get('d')) | |
PyJsHoisted_binl_md5_.func_name = 'binl_md5' | |
var.put('binl_md5', PyJsHoisted_binl_md5_) | |
@Js | |
def PyJsHoisted_md5_cmn_(q, a, b, x, s, t, this, arguments, var=var): | |
var = Scope({'q':q, 'a':a, 'b':b, 'x':x, 's':s, 't':t, 'this':this, 'arguments':arguments}, var) | |
var.registers(['a', 't', 's', 'q', 'x', 'b']) | |
return var.get('safe_add')(var.get('bit_rol')(var.get('safe_add')(var.get('safe_add')(var.get('a'), var.get('q')), var.get('safe_add')(var.get('x'), var.get('t'))), var.get('s')), var.get('b')) | |
PyJsHoisted_md5_cmn_.func_name = 'md5_cmn' | |
var.put('md5_cmn', PyJsHoisted_md5_cmn_) | |
@Js | |
def PyJsHoisted_md5_ff_(a, b, c, d, x, s, t, this, arguments, var=var): | |
var = Scope({'a':a, 'b':b, 'c':c, 'd':d, 'x':x, 's':s, 't':t, 'this':this, 'arguments':arguments}, var) | |
var.registers(['a', 'd', 't', 'c', 's', 'x', 'b']) | |
return var.get('md5_cmn')(((var.get('b')&var.get('c'))|((~var.get('b'))&var.get('d'))), var.get('a'), var.get('b'), var.get('x'), var.get('s'), var.get('t')) | |
PyJsHoisted_md5_ff_.func_name = 'md5_ff' | |
var.put('md5_ff', PyJsHoisted_md5_ff_) | |
@Js | |
def PyJsHoisted_md5_gg_(a, b, c, d, x, s, t, this, arguments, var=var): | |
var = Scope({'a':a, 'b':b, 'c':c, 'd':d, 'x':x, 's':s, 't':t, 'this':this, 'arguments':arguments}, var) | |
var.registers(['a', 'd', 't', 'c', 's', 'x', 'b']) | |
return var.get('md5_cmn')(((var.get('b')&var.get('d'))|(var.get('c')&(~var.get('d')))), var.get('a'), var.get('b'), var.get('x'), var.get('s'), var.get('t')) | |
PyJsHoisted_md5_gg_.func_name = 'md5_gg' | |
var.put('md5_gg', PyJsHoisted_md5_gg_) | |
@Js | |
def PyJsHoisted_md5_hh_(a, b, c, d, x, s, t, this, arguments, var=var): | |
var = Scope({'a':a, 'b':b, 'c':c, 'd':d, 'x':x, 's':s, 't':t, 'this':this, 'arguments':arguments}, var) | |
var.registers(['a', 'd', 't', 'c', 's', 'x', 'b']) | |
return var.get('md5_cmn')(((var.get('b')^var.get('c'))^var.get('d')), var.get('a'), var.get('b'), var.get('x'), var.get('s'), var.get('t')) | |
PyJsHoisted_md5_hh_.func_name = 'md5_hh' | |
var.put('md5_hh', PyJsHoisted_md5_hh_) | |
@Js | |
def PyJsHoisted_md5_ii_(a, b, c, d, x, s, t, this, arguments, var=var): | |
var = Scope({'a':a, 'b':b, 'c':c, 'd':d, 'x':x, 's':s, 't':t, 'this':this, 'arguments':arguments}, var) | |
var.registers(['a', 'd', 't', 'c', 's', 'x', 'b']) | |
return var.get('md5_cmn')((var.get('c')^(var.get('b')|(~var.get('d')))), var.get('a'), var.get('b'), var.get('x'), var.get('s'), var.get('t')) | |
PyJsHoisted_md5_ii_.func_name = 'md5_ii' | |
var.put('md5_ii', PyJsHoisted_md5_ii_) | |
@Js | |
def PyJsHoisted_safe_add_(x, y, this, arguments, var=var): | |
var = Scope({'x':x, 'y':y, 'this':this, 'arguments':arguments}, var) | |
var.registers(['y', 'lsw', 'msw', 'x']) | |
var.put('lsw', ((var.get('x')&Js(65535))+(var.get('y')&Js(65535)))) | |
var.put('msw', (((var.get('x')>>Js(16.0))+(var.get('y')>>Js(16.0)))+(var.get('lsw')>>Js(16.0)))) | |
return ((var.get('msw')<<Js(16.0))|(var.get('lsw')&Js(65535))) | |
PyJsHoisted_safe_add_.func_name = 'safe_add' | |
var.put('safe_add', PyJsHoisted_safe_add_) | |
@Js | |
def PyJsHoisted_bit_rol_(num, cnt, this, arguments, var=var): | |
var = Scope({'num':num, 'cnt':cnt, 'this':this, 'arguments':arguments}, var) | |
var.registers(['cnt', 'num']) | |
return ((var.get('num')<<var.get('cnt'))|PyJsBshift(var.get('num'),(Js(32.0)-var.get('cnt')))) | |
PyJsHoisted_bit_rol_.func_name = 'bit_rol' | |
var.put('bit_rol', PyJsHoisted_bit_rol_) | |
@Js | |
def PyJsHoisted_doAdminLogin_(form, this, arguments, var=var): | |
var = Scope({'form':form, 'this':this, 'arguments':arguments}, var) | |
var.registers(['pw', 'form', 'i', 'unHidden']) | |
var.put('pw', var.get('form').get('password').get('value')) | |
var.put('i', var.get('pw').callprop('indexOf', Js(';'))) | |
var.put('unHidden', (var.get('form').get('username').get('type')==Js('hidden'))) | |
if var.get('unHidden').neg(): | |
var.put('pw2', var.get('pw')) | |
var.put('pw', var.get('b64_md5')(var.get('pw'))) | |
var.get('form').get('password').put('value', var.get('hex_hmac_md5')(var.get('pskey'), var.get('pw'))) | |
if (var.get('form').get('ldappassword')!=var.get(u"null")): | |
var.get('form').get('ldappassword').put('value', var.get('pw2')) | |
else: | |
var.get('form').get('username').put('value', var.get('pw').callprop('substring', Js(0.0), var.get('i'))) | |
var.put('pw', var.get('pw').callprop('substring', (var.get('i')+Js(1.0)))) | |
var.put('pw2', var.get('pw')) | |
var.put('pw', var.get('b64_md5')(var.get('pw'))) | |
var.get('form').get('password').put('value', var.get('hex_hmac_md5')(var.get('pskey'), var.get('pw'))) | |
if (var.get('form').get('ldappassword')!=var.get(u"null")): | |
var.get('form').get('ldappassword').put('value', var.get('pw2')) | |
return Js(True) | |
PyJsHoisted_doAdminLogin_.func_name = 'doAdminLogin' | |
var.put('doAdminLogin', PyJsHoisted_doAdminLogin_) | |
@Js | |
def PyJsHoisted_doTeacherLogin_(form, this, arguments, var=var): | |
var = Scope({'form':form, 'this':this, 'arguments':arguments}, var) | |
var.registers(['pw2', 'form', 'translatorpw', 'pw', 'i']) | |
var.put('pw', var.get('form').get('password').get('value')) | |
var.put('pw2', var.get('pw')) | |
var.put('pw', var.get('b64_md5')(var.get('pw'))) | |
var.get('form').get('password').put('value', var.get('hex_hmac_md5')(var.get('pskey'), var.get('pw'))) | |
if (var.get('form').get('ldappassword')!=var.get(u"null")): | |
var.get('form').get('ldappassword').put('value', var.get('pw2')) | |
var.put('translatorpw', var.get('form').get('translatorpw').get('value')) | |
var.put('i', var.get('translatorpw').callprop('indexOf', Js(';'))) | |
if (var.get('i')<Js(0.0)): | |
var.get('form').get('translator_username').put('value', var.get('translatorpw')) | |
var.get('form').get('translator_password').put('value', Js('')) | |
else: | |
var.get('form').get('translator_username').put('value', var.get('translatorpw').callprop('substring', Js(0.0), var.get('i'))) | |
var.put('translatorpw', var.get('translatorpw').callprop('substring', (var.get('i')+Js(1.0)))) | |
var.put('translatorpw2', var.get('translatorpw')) | |
var.put('translatorpw', var.get('b64_md5')(var.get('translatorpw'))) | |
var.get('form').get('translator_password').put('value', var.get('hex_hmac_md5')(var.get('pskey'), var.get('translatorpw'))) | |
if (var.get('form').get('translator_ldappassword')!=var.get(u"null")): | |
var.get('form').get('translator_ldappassword').put('value', var.get('translatorpw2')) | |
return Js(True) | |
PyJsHoisted_doTeacherLogin_.func_name = 'doTeacherLogin' | |
var.put('doTeacherLogin', PyJsHoisted_doTeacherLogin_) | |
@Js | |
def PyJsHoisted_doPCASLogin_(form, this, arguments, var=var): | |
var = Scope({'form':form, 'this':this, 'arguments':arguments}, var) | |
var.registers(['form', 'translatorpw', 'hmac_md5pw', 'originalpw', 'b64pw', 'i']) | |
var.put('originalpw', var.get('form').get('pw').get('value')) | |
var.put('b64pw', var.get('b64_md5')(var.get('originalpw'))) | |
var.put('hmac_md5pw', var.get('hex_hmac_md5')(var.get('pskey'), var.get('b64pw'))) | |
var.get('form').get('pw').put('value', var.get('hmac_md5pw')) | |
var.get('form').get('dbpw').put('value', var.get('hex_hmac_md5')(var.get('pskey'), var.get('originalpw').callprop('toLowerCase'))) | |
if (var.get('form').get('ldappassword')!=var.get(u"null")): | |
var.get('form').get('ldappassword').put('value', var.get('originalpw')) | |
var.put('translatorpw', var.get('form').get('translatorpw').get('value')) | |
var.put('i', var.get('translatorpw').callprop('indexOf', Js(';'))) | |
if (var.get('i')<Js(0.0)): | |
var.get('form').get('translator_username').put('value', var.get('translatorpw')) | |
var.get('form').get('translator_password').put('value', Js('')) | |
else: | |
var.get('form').get('translator_username').put('value', var.get('translatorpw').callprop('substring', Js(0.0), var.get('i'))) | |
var.put('translatorpw', var.get('translatorpw').callprop('substring', (var.get('i')+Js(1.0)))) | |
var.put('translatorpw2', var.get('translatorpw')) | |
var.put('translatorpw', var.get('b64_md5')(var.get('translatorpw'))) | |
var.get('form').get('translator_password').put('value', var.get('hex_hmac_md5')(var.get('pskey'), var.get('translatorpw'))) | |
if (var.get('form').get('translator_ldappassword')!=var.get(u"null")): | |
var.get('form').get('translator_ldappassword').put('value', var.get('translatorpw2')) | |
return Js(True) | |
PyJsHoisted_doPCASLogin_.func_name = 'doPCASLogin' | |
var.put('doPCASLogin', PyJsHoisted_doPCASLogin_) | |
@Js | |
def PyJsHoisted_encryptMultipleStudentsAccesPasswords_(form, this, arguments, var=var): | |
var = Scope({'form':form, 'this':this, 'arguments':arguments}, var) | |
var.registers(['pw2', 'pw', 'unEncryptedPassword', 'i', 'form']) | |
var.get('form').get('pstoken').put('value', var.get('pstoken')) | |
var.get('encryptGuardianPassword')(var.get('form')) | |
var.put('i', Js(0.0)) | |
var.put('pw', var.get('document').callprop('getElementById', ((Js('studentInfo[')+var.get('i'))+Js('].accessPassword')))) | |
while (var.get('pw')!=var.get('undefined')): | |
var.put('pw', var.get('document').callprop('getElementById', ((Js('studentInfo[')+var.get('i'))+Js('].accessPassword')))) | |
if var.get('pw'): | |
if ((var.get('pw').get('value')!=var.get('undefined')) and (var.get('trim')(var.get('pw').get('value'))!=Js(''))): | |
var.put('unEncryptedPassword', var.get('pw').get('value')) | |
var.put('pw2', var.get('b64_md5')(var.get('pw').get('value'))) | |
var.get('pw').put('value', var.get('hex_hmac_md5')(var.get('pskey'), var.get('pw2'))) | |
(var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1)) | |
return Js(True) | |
PyJsHoisted_encryptMultipleStudentsAccesPasswords_.func_name = 'encryptMultipleStudentsAccesPasswords' | |
var.put('encryptMultipleStudentsAccesPasswords', PyJsHoisted_encryptMultipleStudentsAccesPasswords_) | |
@Js | |
def PyJsHoisted_encryptSingleStudentAccesPassword_(form, this, arguments, var=var): | |
var = Scope({'form':form, 'this':this, 'arguments':arguments}, var) | |
var.registers(['pw', 'pw2', 'form', 'unEncryptedPassword']) | |
var.put('pw', var.get('document').callprop('getElementById', Js('studentInfoToAdd.accessPassword'))) | |
if ((var.get('pw')!=var.get('undefined')) and (var.get('trim')(var.get('pw').get('value'))!=Js(''))): | |
var.put('unEncryptedPassword', var.get('pw').get('value')) | |
var.put('pw2', var.get('b64_md5')(var.get('pw').get('value'))) | |
var.get('pw').put('value', var.get('hex_hmac_md5')(var.get('form').get('pskey').get('value'), var.get('pw2'))) | |
var.get('form').get('pskey').put('value', Js('')) | |
return Js(True) | |
PyJsHoisted_encryptSingleStudentAccesPassword_.func_name = 'encryptSingleStudentAccesPassword' | |
var.put('encryptSingleStudentAccesPassword', PyJsHoisted_encryptSingleStudentAccesPassword_) | |
@Js | |
def PyJsHoisted_encryptGuardianPassword_(form, this, arguments, var=var): | |
var = Scope({'form':form, 'this':this, 'arguments':arguments}, var) | |
var.registers(['form']) | |
return var.get('encryptGuardianPasswords')(var.get('form'), Js('myForm_accountInfo_password'), Js('editedPassword'), Js('passwordConfirm')) | |
PyJsHoisted_encryptGuardianPassword_.func_name = 'encryptGuardianPassword' | |
var.put('encryptGuardianPassword', PyJsHoisted_encryptGuardianPassword_) | |
@Js | |
def PyJsHoisted_encryptGuardianPasswords_(form, origPasswordId, newPasswordId, newConfirmPasswordId, this, arguments, var=var): | |
var = Scope({'form':form, 'origPasswordId':origPasswordId, 'newPasswordId':newPasswordId, 'newConfirmPasswordId':newConfirmPasswordId, 'this':this, 'arguments':arguments}, var) | |
var.registers(['gpw3Value', 'formHasKey', 'origPasswordId', 'gpw2Value', 'newPasswordId', 'newConfirmPasswordId', 'encryptedArray1', 'gpw1Value', 'encryptedArray3', 'myPsKey', 'gpw3', 'gpw1', 'encryptedArray2', 'gpw2', 'form', 'pskeyArray']) | |
pass | |
var.put('formHasKey', Js(False)) | |
if ((var.get('pskey')==var.get('undefined')) or (var.get('pskey')==var.get(u"null"))): | |
if (((var.get('form')==var.get('undefined')) or (var.get('form').get('pskey')==var.get('undefined'))) or (var.get('form').get('pskey').get('value')==var.get('undefined'))): | |
return Js(False) | |
else: | |
var.put('myPsKey', var.get('form').get('pskey').get('value')) | |
var.put('formHasKey', Js(True)) | |
else: | |
var.put('myPsKey', var.get('pskey')) | |
if (var.get('myPsKey').get('length')<Js(32.0)): | |
return Js(False) | |
var.put('pskeyArray', var.get('hexToByteArray')(var.get('myPsKey').callprop('substring', Js(0.0), Js(32.0)))) | |
var.put('gpw1', var.get('document').callprop('getElementById', var.get('origPasswordId'))) | |
if (var.get('gpw1')!=var.get('undefined')): | |
var.put('gpw1Value', var.get('gpw1').get('value')) | |
if ((var.get('gpw1Value')!=var.get('undefined')) and (var.get('gpw1Value').get('length')>Js(0.0))): | |
var.put('encryptedArray1', var.get('rijndaelEncrypt')(var.get('str2rstr_utf8')(var.get('gpw1Value')), var.get('pskeyArray'), Js('ECB'))) | |
var.get('gpw1').put('value', var.get('byteArrayToHex')(var.get('encryptedArray1'))) | |
var.put('gpw2', var.get('document').callprop('getElementById', var.get('newPasswordId'))) | |
if (var.get('gpw2')!=var.get('undefined')): | |
var.put('gpw2Value', var.get('gpw2').get('value')) | |
if ((var.get('gpw2Value')!=var.get('undefined')) and (var.get('gpw2Value').get('length')>Js(0.0))): | |
var.put('encryptedArray2', var.get('rijndaelEncrypt')(var.get('str2rstr_utf8')(var.get('gpw2Value')), var.get('pskeyArray'), Js('ECB'))) | |
var.get('gpw2').put('value', var.get('byteArrayToHex')(var.get('encryptedArray2'))) | |
var.put('gpw3', var.get('document').callprop('getElementById', var.get('newConfirmPasswordId'))) | |
if (var.get('gpw3')!=var.get('undefined')): | |
var.put('gpw3Value', var.get('gpw3').get('value')) | |
if ((var.get('gpw3Value')!=var.get('undefined')) and (var.get('gpw3Value').get('length')>Js(0.0))): | |
var.put('encryptedArray3', var.get('rijndaelEncrypt')(var.get('str2rstr_utf8')(var.get('gpw3Value')), var.get('pskeyArray'), Js('ECB'))) | |
var.get('gpw3').put('value', var.get('byteArrayToHex')(var.get('encryptedArray3'))) | |
if var.get('formHasKey'): | |
var.get('form').get('pskey').put('value', Js('')) | |
return Js(True) | |
PyJsHoisted_encryptGuardianPasswords_.func_name = 'encryptGuardianPasswords' | |
var.put('encryptGuardianPasswords', PyJsHoisted_encryptGuardianPasswords_) | |
@Js | |
def PyJsHoisted_encryptRecoverPasswords_(form, newPasswordId, newConfirmPasswordId, this, arguments, var=var): | |
var = Scope({'form':form, 'newPasswordId':newPasswordId, 'newConfirmPasswordId':newConfirmPasswordId, 'this':this, 'arguments':arguments}, var) | |
var.registers(['newConfirmPasswordId', 'encryptSuccess', 'newPasswordId', 'form']) | |
var.put('encryptSuccess', var.get('encryptGuardianPasswords')(var.get('form'), Js(''), var.get('newPasswordId'), var.get('newConfirmPasswordId'))) | |
if var.get('encryptSuccess'): | |
if (((var.get('form')!=var.get('undefined')) or (var.get('form').get('pstoken')!=var.get('undefined'))) or (var.get('form').get('pstoken').get('value')!=var.get('undefined'))): | |
var.get('form').get('pstoken').put('value', var.get('pstoken')) | |
return var.get('encryptSuccess') | |
PyJsHoisted_encryptRecoverPasswords_.func_name = 'encryptRecoverPasswords' | |
var.put('encryptRecoverPasswords', PyJsHoisted_encryptRecoverPasswords_) | |
@Js | |
def PyJsHoisted_doChangePassword_(form, this, arguments, var=var): | |
var = Scope({'form':form, 'this':this, 'arguments':arguments}, var) | |
var.registers(['form']) | |
if (var.get('form').get('ldappassword')!=var.get(u"null")): | |
var.get('form').get('ldappassword').put('value', var.get('pw2')) | |
return Js(True) | |
PyJsHoisted_doChangePassword_.func_name = 'doChangePassword' | |
var.put('doChangePassword', PyJsHoisted_doChangePassword_) | |
@Js | |
def PyJsHoisted_getCookie_(name, this, arguments, var=var): | |
var = Scope({'name':name, 'this':this, 'arguments':arguments}, var) | |
var.registers(['end', 'begin', 'dc', 'retval', 'name', 'prefix']) | |
var.put('dc', var.get('document').get('cookie')) | |
var.put('prefix', (var.get('name')+Js('='))) | |
var.put('begin', var.get('dc').callprop('indexOf', (Js('; ')+var.get('prefix')))) | |
if (var.get('begin')==(-Js(1.0))): | |
var.put('begin', var.get('dc').callprop('indexOf', var.get('prefix'))) | |
if (var.get('begin')!=Js(0.0)): | |
return var.get(u"null") | |
else: | |
var.put('begin', Js(2.0), '+') | |
var.put('end', var.get('document').get('cookie').callprop('indexOf', Js(';'), var.get('begin'))) | |
if (var.get('end')==(-Js(1.0))): | |
var.put('end', var.get('dc').get('length')) | |
var.put('retval', var.get('unescape')(var.get('dc').callprop('substring', (var.get('begin')+var.get('prefix').get('length')), var.get('end')))) | |
return var.get('retval') | |
PyJsHoisted_getCookie_.func_name = 'getCookie' | |
var.put('getCookie', PyJsHoisted_getCookie_) | |
@Js | |
def PyJsHoisted_deleteCookie_(name, this, arguments, var=var): | |
var = Scope({'name':name, 'this':this, 'arguments':arguments}, var) | |
var.registers(['name']) | |
if var.get('getCookie')(var.get('name')): | |
var.get('document').put('cookie', Js('psaid=<-A-><-E->; expires=Thu, 01-Jan-70 00:00:00 GMT')) | |
PyJsHoisted_deleteCookie_.func_name = 'deleteCookie' | |
var.put('deleteCookie', PyJsHoisted_deleteCookie_) | |
@Js | |
def PyJsHoisted_trim_(stringToTrim, this, arguments, var=var): | |
var = Scope({'stringToTrim':stringToTrim, 'this':this, 'arguments':arguments}, var) | |
var.registers(['stringToTrim']) | |
return var.get('stringToTrim').callprop('replace', JsRegExp('/^\\s+|\\s+$/g'), Js('')) | |
PyJsHoisted_trim_.func_name = 'trim' | |
var.put('trim', PyJsHoisted_trim_) | |
var.put('pskey', var.get(u"null")) | |
var.put('hexcase', Js(0.0)) | |
var.put('b64pad', Js('')) | |
pass | |
pass | |
pass | |
pass | |
pass | |
pass | |
pass | |
pass | |
pass | |
pass | |
pass | |
pass | |
pass | |
pass | |
pass | |
pass | |
pass | |
pass | |
pass | |
pass | |
pass | |
pass | |
pass | |
pass | |
pass | |
pass | |
pass | |
pass | |
pass | |
pass | |
pass | |
pass | |
pass | |
pass | |
pass | |
pass | |
pass | |
pass | |
# Add lib to the module scope | |
code = var.to_python() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import requests | |
from bs4 import BeautifulSoup as bs | |
r = requests.post("https://portal.mcpsmd.org/public/") | |
soup = bs(r.text, "html.parser") | |
from code import code | |
import json | |
pstoken = soup.findAll(attrs={"name":"pstoken"})[0]["value"] | |
contextData = soup.findAll(attrs={"name":"contextData"})[0]["value"] | |
data = { | |
"pstoken":pstoken, | |
"contextData":contextData, | |
"dbpw":"", | |
"translator_username":"", | |
"translator_password":"", | |
"translator_ldappassword":"", | |
"translator_pw":"", | |
"returnUrl":"", | |
"serviceName":"PS Parent Portal", | |
"serviceTicket":"", | |
"pcasServerUrl":"/", | |
"credentialType":"User Id and Password Credential", | |
"ldappassword":"", | |
"account":"", | |
"pw":"" | |
} | |
account = input("MCPS ID: ") | |
originalpw = input("Password: ") | |
b64pw = code.b64_md5(originalpw) | |
hmac_md5pw = code.hex_hmac_md5(contextData, b64pw) | |
data["account"] = account | |
data["pw"] = hmac_md5pw | |
data["dbpw"] = code.hex_hmac_md5(contextData, originalpw.lower()) | |
data["ldappassword"] = originalpw | |
session = requests.session() | |
thing = session.post("https://portal.mcpsmd.org/guardian/home.html", data=data) | |
p = session.get("https://portal.mcpsmd.org/guardian/home.html") | |
code = p.text.split("nId = ")[1].split()[0][1:-2] | |
schedule = session.get("https://portal.mcpsmd.org/ws/xte/student/{}/enrollments?status=A,I,P&year_id=29".format(code)) | |
name = " ".join(json.loads(schedule.text)["lastfirst"].split(", ")[::-1]) | |
a = json.loads(schedule.text) | |
b = [i["_coursesectioninfo"] for i in a["_enrollments"] if i['_coursesectioninfo']["termabbreviation"] == "S2"] | |
for a in b: | |
print("{0: <10}{1: <20}{2: <20}".format(a["expression"], a["coursename"], a["teachername"])) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
requests | |
beautifulsoup4 | |
Js2Py |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment