Skip to content

Instantly share code, notes, and snippets.

@joshdabosh
Created February 14, 2020 22:53
Show Gist options
  • Save joshdabosh/e29c07a839c5fb1d5f7b57686f445444 to your computer and use it in GitHub Desktop.
Save joshdabosh/e29c07a839c5fb1d5f7b57686f445444 to your computer and use it in GitHub Desktop.
MCPS Schedules
__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()
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"]))
requests
beautifulsoup4
Js2Py
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment