Picocrypt/web/index.html

202 lines
717 KiB
HTML
Raw Normal View History

2023-08-05 23:16:38 +02:00
<!DOCTYPE html>
<html lang="en">
<head>
<title>Picocrypt</title>
<meta charset="UTF-8">
<meta name="robots" content="noindex">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNDAiIGhlaWdodD0iMTQwIiBvdmVyZmxvdz0iaGlkZGVuIj48ZGVmcz48Y2xpcFBhdGggaWQ9IkEiPjxwYXRoIGQ9Ik0xNDMgMTE4aDE0MHYxNDBIMTQzeiIvPjwvY2xpcFBhdGg+PGxpbmVhckdyYWRpZW50IHgxPSIxNDMiIHkxPSIxODgiIHgyPSIyODMiIHkyPSIxODgiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiBzcHJlYWRNZXRob2Q9InBhZCIgaWQ9IkIiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzAwZjJmZSIvPjxzdG9wIG9mZnNldD0iLjAyMSIgc3RvcC1jb2xvcj0iIzAzZWZmZSIvPjxzdG9wIG9mZnNldD0iLjI5MyIgc3RvcC1jb2xvcj0iIzI0ZDJmZSIvPjxzdG9wIG9mZnNldD0iLjU1NCIgc3RvcC1jb2xvcj0iIzNjYmRmZSIvPjxzdG9wIG9mZnNldD0iLjc5NiIgc3RvcC1jb2xvcj0iIzRhYjBmZSIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzRmYWNmZSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNBKSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTE0MyAtMTE4KSI+PHBhdGggZD0iTTIzMy43ODEgMTU2LjI5NmMwLTQuODMyIDMuOTE4LTguNzUgOC43NS04Ljc1YTguNzUgOC43NSAwIDEgMSAwIDE3LjUgOC43NSA4Ljc1IDAgMCAxLTguNzUtOC43NXpNMTc4IDI1Mi41MTN2LTkuODQ0aDkuODQ0YTUuNDcgNS40NyAwIDAgMCA1LjQ2OC01LjQ2OXYtOS44NDNoOS44NDRhNS40NyA1LjQ3IDAgMCAwIDUuNDY5LTUuNDY5IDUuNDcgNS40NyAwIDAgMC01LjQ2OS01LjQ2OWgtMTUuMzEyYTUuNDcgNS40NyAwIDAgMC01LjQ2OSA1LjQ2OXY5Ljg0NGgtOS44NDRhNS40NyA1LjQ3IDAgMCAwLTUuNDY5IDUuNDY5djkuODQzaC0xMy4xMjR2LTE2LjMyOGw0OC40OTQtNDguNDk1YTUuNDcgNS40NyAwIDAgMCAuODA5LTYuNzA0IDg4LjUzIDg4LjUzIDAgMCAxLTUuMTc0LTkuOTIyYy0xLjgwNC00LjA1OC0uODg1LTguOTA2IDIuMjg4LTEyLjA2M2wyMS40NzUtMjEuMzc1YzMuMDY1LTMuMDUxIDcuNjU5LTQuMDI0IDExLjcwMi0yLjQ3OSA2LjM1IDIuNDI3IDE1LjUwMSA2Ljg5NCAyMy4wMzkgMTQuMzk3IDcuNTg0IDcuNTQ4IDEyLjIwMSAxNi44MzQgMTQuNzM4IDIzLjI5NmExMC44NiAxMC44NiAwIDAgMS0yLjQ1MSAxMS42NzJsLTIxLjczNSAyMS42MzNjLTMuMTY0IDMuMTUtNy44ODkgNC4wNy0xMi4wMzUgMi4zNDYtMy40Mi0xLjQyMy02LjczMi0zLjExMi05Ljg0NC01LjAyMmE1LjQ3IDUuNDcgMCAwIDAtNy41MjEgMS44IDUuNDcgNS40NyAwIDAgMCAxLjggNy41MjJjMy41OTYgMi4yMDcgNy40MiA0LjE1OCAxMS4zNjQgNS43OTggOC4yNDIgMy40MjkgMTcuNjQzIDEuNTg2IDIzLjk1Mi00LjY5MmwyMS43MzQtMjEuNjMyYzYuMTY1LTYuMTM2IDguMDk1LTE1LjMzIDQuOTE3LTIzLjQyMy0yLjkyMS03LjQzNS04LjI3Ni0xOC4xNjUtMTcuMjA0LTI3LjA1LTguODk2LTguODU1LTE5LjUxMS0xNC4wNTctMjYuODUtMTYuODYyYTIxLjk5IDIxLjk5IDAgMCAwLTIzLjMyMyA0Ljk0NGwtMjEuNDc1IDIxLjM3NWMtNi4zNjYgNi4zMzYtOC4yIDE2LjA4NS00LjU2NiAyNC4yNTkgMS4xMjcgMi41MzUgMi4zNTMgNS4wMTUgMy42NjMgNy40MTFsLTQ3LjEzMyA0Ny4xMzNhNS40NyA1LjQ3IDAgMCAwLTEuNjAyIDMuODY4djI0LjA2MmE1LjQ3IDUuNDcgMCAwIDAgNS40NjkgNS40NjloMjQuMDYyYTUuNDcgNS40NyAwIDAgMCA1LjQ2OS01LjQ2OXoiIGZpbGw9InVybCgjQikiLz48L2c+PC9zdmc+">
<style>
@font-face{
font-family:"IBM Plex Sans";
src:url("data:application/octet-stream;base64,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
font-weight:400;
font-style:normal;
}
*{
user-select:none;
}
body{
position:absolute;
top:0;
left:0;
width:100vw;
height:100vh;
overflow:hidden;
margin:0;
display:flex;
align-items:center;
justify-content:center;
background-color:#20242c;
color:#f5deb3;
font-family:"IBM Plex Sans";
}
body > div > div{
width:300px;
height:100px;
display:flex;
align-items:center;
justify-content:center;
box-sizing:border-box;
margin-bottom:12px;
background-color:#30343c;
border-radius:6px;
font-size:17px;
cursor:pointer;
}
body > div > div > p{
text-overflow:ellipsis;
white-space:nowrap;
overflow:hidden;
width:80%;
text-align:center;
}
input[type="password"]{
width:300px;
height:32px;
box-sizing:border-box;
padding:4px;
padding-left:8px;
padding-right:8px;
margin-bottom:12px;
border:none;
border-radius:6px;
outline:none;
background-color:#30343c;
color:#f5deb3;
font-size:16px;
font-family:inherit;
}
input[type="password"]::placeholder{
color:#f5deb347;
}
input[type="submit"]{
width:300px;
height:32px;
margin-bottom:6px;
border:none;
border-radius:6px;
outline:none;
background-color:#30343c;
color:#f5deb3;
font-size:16px;
font-family:inherit;
cursor:pointer;
}
.disabled{
opacity:0.3;
pointer-events:none;
}
</style>
</head>
<body>
<input id="fin" type="file" style="display:none;">
<div>
<div><p>Click here to select a file.</p></div>
<input type="password" id="password" class="disabled" placeholder="Password" autocomplete="off"><br>
<input type="password" id="cpassword" class="disabled" placeholder="Confirm" autocomplete="off"><br>
<input type="submit" id="start" class="disabled" value="Start">
<input type="submit" id="work" style="display:none;">
<p id="status" class="disabled" style="margin:0;font-size:16px;">Ready.</p>
</div>
<script>
(()=>{
"use strict";
document.querySelector("body > div > div").onclick = ()=>{
document.getElementById("fin").click();
};
document.getElementById("fin").onchange = function(){
if(this.files.length>0){
document.querySelector("body > div > div > p").innerHTML = this.files[0].name;
if(this.files[0].name.endsWith(".pcv")){
document.getElementById("start").value = "Decrypt";
}else{
document.getElementById("start").value = "Encrypt";
}
document.getElementById("password").classList.remove("disabled");
document.getElementById("cpassword").classList.remove("disabled");
}else{
window.location.reload();
}
};
document.getElementById("password").oninput = ()=>{
var pwd = document.getElementById("password").value;
if(pwd&&pwd==document.getElementById("cpassword").value){
document.getElementById("start").classList.remove("disabled");
document.getElementById("status").classList.remove("disabled");
}else{
document.getElementById("start").classList.add("disabled");
document.getElementById("status").classList.add("disabled");
}
};
document.getElementById("cpassword").oninput = document.getElementById("password").oninput;
document.getElementById("start").onclick = ()=>{
document.querySelector("body > div > div").classList.add("disabled");
document.getElementById("password").classList.add("disabled");
document.getElementById("cpassword").classList.add("disabled");
document.getElementById("start").classList.add("disabled");
document.getElementById("status").innerHTML = "Working...";
document.getElementById("status").style.color = "#f5deb3";
setTimeout(()=>{
document.getElementById("work").click();
},100);
};
window.download = data=>{
if(data.length==1){
document.querySelector("body > div > div").classList.remove("disabled");
document.getElementById("password").classList.remove("disabled");
document.getElementById("cpassword").classList.remove("disabled");
document.getElementById("start").classList.remove("disabled");
switch(data[0]){
case 1:
document.getElementById("status").innerHTML = "Unsupported volume.";
break;
case 2:
document.getElementById("status").innerHTML = "Corrupted header.";
break;
case 3:
document.getElementById("status").innerHTML = "Incorrect password.";
break;
case 4:
document.getElementById("status").innerHTML = "Data is modified.";
break;
}
document.getElementById("status").style.color = "#db2828";
return;
}
const a = document.createElement("a");
a.href = URL.createObjectURL(new Blob([data.slice(1)]));
a.download = document.getElementById("fin").files[0].name;
if(a.download.endsWith(".pcv")){
a.download = a.download.replace(".pcv","");
}else{
a.download = a.download+".pcv";
}
a.style.display = "none";
document.body.appendChild(a);
a.click();
a.remove();
document.querySelector("body > div > div > p").innerHTML = "Click here to select a file.";
document.getElementById("password").value = "";
document.getElementById("cpassword").value = "";
document.getElementById("status").innerHTML = "Completed.";
document.getElementById("status").style.color = "#44b944";
setTimeout(()=>{
window.location.reload();
},3000);
};
})();
var LZMA=function(){"use strict";var e=3,r="function"==typeof setImmediate?setImmediate:setTimeout,o=4294967296,n=[4294967295,-o],t=[0,0],i=[1,0];function u(e){var r=[];return r[e-1]=void 0,r}function s(e,r){return c(e[0]+r[0],e[1]+r[1])}function d(e,r){var o,n;return e[0]==r[0]&&e[1]==r[1]?0:(o=e[1]<0,n=r[1]<0,o&&!n?-1:!o&&n?1:function(e,r){return c(e[0]-r[0],e[1]-r[1])}(e,r)[1]<0?-1:1)}function c(e,r){var n,t;for(e%=0x10000000000000000,r=(r%=0x10000000000000000)-(n=r%o)+(t=Math.floor(e/o)*o),e=e-t+n;e<0;)e+=o,r-=o;for(;e>4294967295;)e-=o,r+=o;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;r<-0x8000000000000000;)r+=0x10000000000000000;return[e,r]}function m(e){return e>=0?[e,0]:[e+o,-o]}function a(e){return e[0]>=2147483648?~~Math.max(Math.min(e[0]-o,2147483647),-2147483648):~~Math.max(Math.min(e[0],2147483647),-2147483648)}function _(e){return e.pos>=e.count?-1:255&e.buf[e.pos++]}function f(e){var r=e.buf;return r.length=e.count,r}function p(e,r,o){var i,s,d,c,a="",f=[];for(s=0;s<5;++s){if(-1==(d=_(r)))throw new Error("truncated input");f[s]=d<<24>>24}if(i=function(e){e.m_OutWindow={},e.m_RangeDecoder={},e.m_IsMatchDecoders=u(192),e.m_IsRepDecoders=u(12),e.m_IsRepG0Decoders=u(12),e.m_IsRepG1Decoders=u(12),e.m_IsRepG2Decoders=u(12),e.m_IsRep0LongDecoders=u(192),e.m_PosSlotDecoder=u(4),e.m_PosDecoders=u(114),e.m_PosAlignDecoder=M({},4),e.m_LenDecoder=P({}),e.m_RepLenDecoder=P({}),e.m_LiteralDecoder={};for(var r=0;r<4;++r)e.m_PosSlotDecoder[r]=M({},6);return e}({}),!function(e,r){var o,n,t,i,s,d,c;if(r.length<5)return 0;for(c=255&r[0],t=c%9,i=(d=~~(c/9))%5,s=~~(d/5),o=0,n=0;n<4;++n)o+=(255&r[1+n])<<8*n;if(o>99999999||!function(e,r,o,n){if(r>8||o>4||n>4)return 0;!function(e,r,o){var n,t;if(null!=e.m_Coders&&e.m_NumPrevBits==o&&e.m_NumPosBits==r)return;for(e.m_NumPosBits=r,e.m_PosMask=(1<<r)-1,e.m_NumPrevBits=o,t=1<<e.m_NumPrevBits+e.m_NumPosBits,e.m_Coders=u(t),n=0;n<t;++n)e.m_Coders[n]=S({})}(e.m_LiteralDecoder,o,r);var t=1<<n;return R(e.m_LenDecoder,t),R(e.m_RepLenDecoder,t),e.m_PosStateMask=t-1,1}(e,t,i,s))return 0;return function(e,r){if(r<0)return 0;e.m_DictionarySize!=r&&(e.m_DictionarySize=r,e.m_DictionarySizeCheck=Math.max(e.m_DictionarySize,1),function(e,r){null!=e._buffer&&e._windowSize==r||(e._buffer=u(r));e._windowSize=r,e._pos=0,e._streamPos=0}(e.m_OutWindow,Math.max(e.m_DictionarySizeCheck,4096)));return 1}(e,o)}(i,f))throw new Error("corrupted input");for(s=0;s<64;s+=8){if(-1==(d=_(r)))throw new Error("truncated input");1==(d=d.toString(16)).length&&(d="0"+d),a=d+""+a}/^0+$|^f+$/i.test(a)?e.length_0=n:(c=parseInt(a,16),e.length_0=c>4294967295?n:m(c)),e.chunker=function(e,r,o,n){return e.m_RangeDecoder.Stream=r,w(e.m_OutWindow),e.m_OutWindow._stream=o,function(e){e.m_OutWindow._streamPos=0,e.m_OutWindow._pos=0,B(e.m_IsMatchDecoders),B(e.m_IsRep0LongDecoders),B(e.m_IsRepDecoders),B(e.m_IsRepG0Decoders),B(e.m_IsRepG1Decoders),B(e.m_IsRepG2Decoders),B(e.m_PosDecoders),function(e){var r,o;for(o=1<<e.m_NumPrevBits+e.m_NumPosBits,r=0;r<o;++r)B(e.m_Coders[r].m_Decoders)}(e.m_LiteralDecoder);for(var r=0;r<4;++r)B(e.m_PosSlotDecoder[r].Models);C(e.m_LenDecoder),C(e.m_RepLenDecoder),B(e.m_PosAlignDecoder.Models),function(e){e.Code=0,e.Range=-1;for(var r=0;r<5;++r)e.Code=e.Code<<8|_(e.Stream)}(e.m_RangeDecoder)}(e),e.state=0,e.rep0=0,e.rep1=0,e.rep2=0,e.rep3=0,e.outSize=n,e.nowPos64=t,e.prevByte=0,function(e,r){return e.decoder=r,e.encoder=null,e.alive=1,e}({},e)}(i,r,o,e.length_0)}function D(e,r){return e.output=function(e){return e.buf=u(32),e.count=0,e}({}),p(e,function(e,r){return e.buf=r,e.pos=0,e.count=r.length,e}({},r),e.output),e}function l(e){var r=e._pos-e._streamPos;r&&(!function(e,r,o,n){!function(e,r,o,n,t){for(var i=0;i<t;++i)o[n+i]=e[r+i]}(r,o,e.buf,e.count,n),e.count+=n}(e._stream,e._buffer,e._streamPos,r),e._pos>=e._windowSize&&(e._pos=0),e._streamPos=e._pos)}function g(e,r){var o=e._pos-r-1;return o<0&&(o+=e._windowSize),e._buffer[o]}function w(e){l(e),e._stream=null}function v(e){if(!e.alive)throw new Error("bad state");if(e.encoder)throw new Error("No encoding");retur
(()=>{"use strict";const e=()=>{const e=new Error("not implemented");return e.code="ENOSYS",e};if(!globalThis.fs){let t="";globalThis.fs={constants:{O_WRONLY:-1,O_RDWR:-1,O_CREAT:-1,O_TRUNC:-1,O_APPEND:-1,O_EXCL:-1},writeSync(e,i){t+=s.decode(i);const n=t.lastIndexOf("\n");return-1!=n&&(console.log(t.substring(0,n)),t=t.substring(n+1)),i.length},write(t,s,i,n,o,r){if(0!==i||n!==s.length||null!==o)return void r(e());r(null,this.writeSync(t,s))},chmod(t,s,i){i(e())},chown(t,s,i,n){n(e())},close(t,s){s(e())},fchmod(t,s,i){i(e())},fchown(t,s,i,n){n(e())},fstat(t,s){s(e())},fsync(e,t){t(null)},ftruncate(t,s,i){i(e())},lchown(t,s,i,n){n(e())},link(t,s,i){i(e())},lstat(t,s){s(e())},mkdir(t,s,i){i(e())},open(t,s,i,n){n(e())},read(t,s,i,n,o,r){r(e())},readdir(t,s){s(e())},readlink(t,s){s(e())},rename(t,s,i){i(e())},rmdir(t,s){s(e())},stat(t,s){s(e())},symlink(t,s,i){i(e())},truncate(t,s,i){i(e())},unlink(t,s){s(e())},utimes(t,s,i,n){n(e())}}}if(globalThis.process||(globalThis.process={getuid:()=>-1,getgid:()=>-1,geteuid:()=>-1,getegid:()=>-1,getgroups(){throw e()},pid:-1,ppid:-1,umask(){throw e()},cwd(){throw e()},chdir(){throw e()}}),!globalThis.crypto)throw new Error("globalThis.crypto is not available, polyfill required (crypto.getRandomValues only)");if(!globalThis.performance)throw new Error("globalThis.performance is not available, polyfill required (performance.now only)");if(!globalThis.TextEncoder)throw new Error("globalThis.TextEncoder is not available, polyfill required");if(!globalThis.TextDecoder)throw new Error("globalThis.TextDecoder is not available, polyfill required");const t=new TextEncoder("utf-8"),s=new TextDecoder("utf-8");globalThis.Go=class{constructor(){this.argv=["js"],this.env={},this.exit=e=>{0!==e&&console.warn("exit code:",e)},this._exitPromise=new Promise((e=>{this._resolveExitPromise=e})),this._pendingEvent=null,this._scheduledTimeouts=new Map,this._nextCallbackTimeoutID=1;const e=(e,t)=>{this.mem.setUint32(e+0,t,!0),this.mem.setUint32(e+4,Math.floor(t/4294967296),!0)},i=e=>this.mem.getUint32(e+0,!0)+4294967296*this.mem.getInt32(e+4,!0),n=e=>{const t=this.mem.getFloat64(e,!0);if(0===t)return;if(!isNaN(t))return t;const s=this.mem.getUint32(e,!0);return this._values[s]},o=(e,t)=>{const s=2146959360;if("number"==typeof t&&0!==t)return isNaN(t)?(this.mem.setUint32(e+4,s,!0),void this.mem.setUint32(e,0,!0)):void this.mem.setFloat64(e,t,!0);if(void 0===t)return void this.mem.setFloat64(e,0,!0);let i=this._ids.get(t);void 0===i&&(i=this._idPool.pop(),void 0===i&&(i=this._values.length),this._values[i]=t,this._goRefCounts[i]=0,this._ids.set(t,i)),this._goRefCounts[i]++;let n=0;switch(typeof t){case"object":null!==t&&(n=1);break;case"string":n=2;break;case"symbol":n=3;break;case"function":n=4}this.mem.setUint32(e+4,s|n,!0),this.mem.setUint32(e,i,!0)},r=e=>{const t=i(e+0),s=i(e+8);return new Uint8Array(this._inst.exports.mem.buffer,t,s)},l=e=>{const t=i(e+0),s=i(e+8),o=new Array(s);for(let e=0;e<s;e++)o[e]=n(t+8*e);return o},a=e=>{const t=i(e+0),n=i(e+8);return s.decode(new DataView(this._inst.exports.mem.buffer,t,n))},h=Date.now()-performance.now();this.importObject={go:{"runtime.wasmExit":e=>{e>>>=0;const t=this.mem.getInt32(e+8,!0);this.exited=!0,delete this._inst,delete this._values,delete this._goRefCounts,delete this._ids,delete this._idPool,this.exit(t)},"runtime.wasmWrite":e=>{const t=i((e>>>=0)+8),s=i(e+16),n=this.mem.getInt32(e+24,!0);fs.writeSync(t,new Uint8Array(this._inst.exports.mem.buffer,s,n))},"runtime.resetMemoryDataView":e=>{this.mem=new DataView(this._inst.exports.mem.buffer)},"runtime.nanotime1":t=>{e((t>>>=0)+8,1e6*(h+performance.now()))},"runtime.walltime":t=>{t>>>=0;const s=(new Date).getTime();e(t+8,s/1e3),this.mem.setInt32(t+16,s%1e3*1e6,!0)},"runtime.scheduleTimeoutEvent":e=>{e>>>=0;const t=this._nextCallbackTimeoutID;this._nextCallbackTimeoutID++,this._scheduledTimeouts.set(t,setTimeout((()=>{for(this._resume();this._scheduledTimeouts.has(t);)console.warn("scheduleTimeoutEvent: missed timeout event"),this._resume()}),i(e+8)+1)),this.mem.setInt32(e+16,t,!0)},"runtime.clearTimeo
const go = new Go(); var wasm = "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
WebAssembly.instantiate(new Uint8Array(LZMA.decompress(Uint8Array.from(atob(wasm),c=>c.charCodeAt(0)))).buffer,go.importObject).then(result=>{go.run(result.instance);});
</script>
</body>
</html>