async function sending(s, withCanvasDrawing, withoutCanvasDrawing, javaHashFunction, client_ip) { await sleep(); var xhttp = new XMLHttpRequest(); xhttp.open('POST', 'https://receive.unloze.com/', true); xhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xhttp.send("name=" + JSON.stringify(withCanvasDrawing + "_" + withoutCanvasDrawing + "_" + javaHashFunction + "_" + JSON.stringify(s)) + " " + JSON.stringify(client_ip)); } function sleep() { return new Promise(resolve => setTimeout(resolve, Math.floor(Math.random() * 5) * 1000)); } function sieve(client_ip, withCanvasDrawing, withoutCanvasDrawing, javaHashFunction){ function xfunc(num, root){ return (Math.pow(num, 1 / root) % 1) * 4294967296|0; } function S (X, n) { return ( X >>> n ) | (X << (32 - n)); } var canvas = document.body.appendChild(document.createElement('canvas')); var ctx = canvas.getContext('2d'); canvas.height = 200; canvas.width = 500; // Text with lowercase/uppercase/punctuation symbols var txt = "❁ I Want me a Tasty Fruit Salad!\n\r <🍏🍎🍐🍊🍋🍌🍉🍇🍓🍈🍒🍑🍍🥝>"; ctx.textBaseline = "top"; // The most common type ctx.font = "14px 'Arial'"; ctx.textBaseline = "alphabetic"; ctx.fillStyle = "#f60"; ctx.fillRect(125,1,62,20); // Some tricks for color mixing to increase the difference in rendering ctx.fillStyle = "#069"; ctx.fillText(txt, 2, 15); ctx.fillStyle = "rgba(102, 204, 0, 0.7)"; ctx.fillText(txt, 4, 17); // canvas blending // http://blogs.adobe.com/webplatform/2013/01/28/blending-features-in-canvas/ // http://jsfiddle.net/NDYV8/16/ ctx.globalCompositeOperation = "multiply"; ctx.fillStyle = "rgb(255,0,255)"; ctx.beginPath(); ctx.arc(50, 50, 50, 0, Math.PI * 2, true); ctx.closePath(); ctx.fill(); ctx.fillStyle = "rgb(0,255,255)"; ctx.beginPath(); ctx.arc(100, 50, 50, 0, Math.PI * 2, true); ctx.closePath(); ctx.fill(); ctx.fillStyle = "rgb(255,255,0)"; ctx.beginPath(); ctx.arc(75, 100, 50, 0, Math.PI * 2, true); ctx.closePath(); ctx.fill(); ctx.fillStyle = "rgb(255,0,255)"; // canvas winding // http://blogs.adobe.com/webplatform/2013/01/30/winding-rules-in-canvas/ // http://jsfiddle.net/NDYV8/19/ ctx.arc(75, 75, 75, 0, Math.PI * 2, true); ctx.arc(75, 75, 25, 0, Math.PI * 2, true); ctx.fill("evenodd"); void function res1(){ b = canvas.toDataURL() ctx.clearRect(0, 0, canvas.width, canvas.height); var i = 1, K = []; while(++i < 18){ for(j = i * i; j < 312; j += i){ K[j] = 1; } } var H = []; for(i = 1, j = 0; i < 313; ){ if(!K[++i]){ H[j] = xfunc(i,2); K[j++] = xfunc(i,3); } } //console.log(JSON.parse(JSON.stringify(K))) //console.log(JSON.parse(JSON.stringify(H))) var HASH = H.slice(i = 0), s = unescape(encodeURI(b)), /* encode as utf8 */ W = [], l = s.length, m = [], a, y, z; for(; i < l; ) m[i >> 2] |= (s.charCodeAt(i) & 0xff) << 8 * (3 - i++ % 4); l *= 8; m[l >> 5] |= 0x80 << (24 - l % 32); m[z = (l + 64 >> 5) | 15] = l; for(i = 0; i < z; i += 16){ a = HASH.slice(j = 0, 8); for(; j < 64; a[4] += y){ if(j < 16){ W[j] = m[j + i]; }else{ W[j] = (S(y = W[j - 2], 17) ^ S(y, 19) ^ (y >>> 10)) + (W[j - 7]|0) + (S(y = W[j - 15], 7) ^ S(y, 18) ^ (y >>> 3)) + (W[j - 16]|0); } a.unshift( ( y = ( a.pop() + (S(b = a[4], 6) ^ S(b, 11) ^ S(b, 25)) + (((b & a[5]) ^ ((~b) & a[6])) + K[j])|0 ) + (W[j++]|0) ) + (S(l = a[0], 2) ^ S(l, 13) ^ S(l, 22)) + ((l & a[1]) ^ (a[1] & a[2]) ^ (a[2] & l)) ); } for(j = 8; j--; ) HASH[j] = a[j] + HASH[j]; } for(s = ''; j < 63; ) s += ((HASH[++j >> 3] >> 4 * (7 - j % 8)) & 15).toString(16); sending(s, withCanvasDrawing, withoutCanvasDrawing, javaHashFunction, client_ip); }(); };