<html><body><div style="color:#000; background-color:#fff; font-family:times new roman, new york, times, serif;font-size:12pt"><div><span>Hi again Willi, All,</span></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: 'times new roman', 'new york', times, serif; font-style: normal; background-color: transparent;"><br></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: 'times new roman', 'new york', times, serif; font-style: normal; background-color: transparent;">Another question: could someone tell me what this program does?</div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: 'times new roman', 'new york', times, serif; font-style: normal; background-color: transparent;"><br></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: 'times new roman', 'new york', times, serif; font-style: normal; background-color:
transparent;">Thanks </div><div></div><div> </div><div>Nathalie<br>_____________________________________</div><div style="font-family: 'times new roman', 'new york', times, serif; font-size: 12pt;"><div style="font-family: 'times new roman', 'new york', times, serif; font-size: 12pt;"><div class="y_msg_container"><html><br><head><br><title>DHT480 Tool</title><br><script type="text/javascript"><br><br>const XOR_BASE32 = 0x13; // VRH2T 10011 for IPv4<br>const LOCAL_TOP_LEVEL_DOMAIN = ".&REG; MARS";<br>const PLASTIC_CARD_STRING1 = "6060572447574848";<br>const PLASTIC_CARD_NUMBER1 = Number(PLASTIC_CARD_STRING1);<br>const PLASTIC_CARD_STRING2 = "1603961-10bb";<br>const PLASTIC_CARD_NUMBER2 = Number(PLASTIC_CARD_STRING2);<br><br>function InsertSoftWay(){<br> document.write("\<br> <font face=arial size=5>\<br> <center>\<br>
<br/>\<br> <b><font color=blue>Z</font><font color=red>O</font><font<br>color=green>O</font><font color=blue>M</font></b>://Soft.WAY.&reg;\<br> <br/>\<br> <font size=-2><span<br>onclick='Dedication(\".MARS\");'>Copyright 1981-2014<br>The.UNIR.Project.&trade;</span></font>\<br> </center>\<br> </font>\<br> ");<br> document.write("<center><font face=arial<br>size=3><b>"+PLASTIC_CARD_STRING1+"</b> "+Date()+"<br><b>"+PLASTIC_CARD_STRING2+"</b></font></center>");<br>}<br><br>//<br>// Dedication<br>//<br><br>function Dedication(planet){<br> alert("<a
ymailto="mailto:C@T" href="mailto:C@T">C@T</a> is Alive on "+planet+"\nNZ N=14 Z=26\n01110<br>11010\nDedicated to an Angel, D & JD\nVisit "+planet+"\n<br>TC.2014");<br>}<br><br>var LargeInteger = 4000000000000000000 + Number(new Date()); // Spice<br>things up a bit<br>var Multiplier=1;<br>var CurrentPI = LargeInteger;<br>var CurrentI = 1;<br>var CurrentSign = 1;<br>var SpigotCount=0;<br>var DHTlimit = 15; // 256*15=3840 3840/480=8 3840/256=15<br>var LastSaved = -1;<br>var MatrixCard = "1234567890123456";<br><br>/////////////////////////////(C).Soft.WAY.(R) Sun Feb 23 2014 03:43:11<br>GMT-0600 (Central Standard Time)<br>//<br>// class TimeByte<br>//<br>// Generate CamelCase String for 8-bit TimeByte - could be "" for 0x00<br>//<br>// DYMWDSHM - Decade.Year.Month.Week.Day.SHIFT.Hour.Minute<br>// DYMWDSHM - Decade.Year.Month.Week.Day.SHIFT.Hour.Moment<br>//<br><br>function ZOOM_TimeByte_toString(aTimeByte){<br> var _ =
"";<br><br> if(aTimeByte & 0x80){<br> _ += "Decade";<br> }<br> if(aTimeByte & 0x40){<br> _ += "Year";<br> }<br> if(aTimeByte & 0x20){<br> _ += "Month";<br> }<br> if(aTimeByte & 0x10){<br> _ += "Week";<br> }<br> if(aTimeByte & 0x08){<br> _ += "Day";<br> }<br> if(aTimeByte & 0x04){<br> _ += "Shift";<br> }<br> if(aTimeByte & 0x02){<br> _ += "Hour";<br> }<br> if(aTimeByte & 0x01){<br> _ += "Moment";<br> }<br> return _;<br>}<br><br>/////////////////////////////(C).Soft.WAY.(R) Sun Feb 23 2014
03:43:11<br>GMT-0600 (Central Standard Time)<br>//<br>// class Date<br>//<br>// Date.add_aTimeByte(aByte);<br>//<br>// DYMWDSHM - Decade.Year.Month.Week.Day.SHIFT.Hour.Minute<br>// DYMWDSHM - Decade.Year.Month.Week.Day.SHIFT.Hour.Moment<br>//<br>// 10011011 - Decade..Week.Day..Hour.Moment<br>// 00011011 - ...Week.Day..Hour.Moment<br>//<br>// SHIFT - Random value from 8 to 12 hours - Discrete Random Shifts ~<br>8 9 10 11 12 hours<br>// MOMENT - Random value from 60 to 480 Seconds depending on .NET Load<br>when the PUT() is done<br>//<br><br>function ZOOM_Date_add_aTimeByte(aDate,aTimeByte){<br><br> // typeOf aDate and aTimeByte should be checked - just in case -<br><a ymailto="mailto:C@T" href="mailto:C@T">C@T</a> just checks number of arguments<br><br> var _ = new Date(aDate.getTime()); // make a separate new object to return<br><br> if(aTimeByte & 0x01){<br> var randomMoment =
(Math.random()*420)+60; // Random value<br>from 60 to 480 Seconds<br> _.setUTCSeconds(_.getUTCSeconds()+randomMoment);<br> }<br> if(aTimeByte & 0x02){<br> _.setUTCHours(_.getUTCHours()+1);<br> }<br> if(aTimeByte & 0x04){<br> var randomShift = Math.floor(Math.random()*5)+8; // Discrete<br>Random Shifts ~ 8 9 10 11 12 hours<br> _.setUTCHours(_.getUTCHours()+randomShift);<br> }<br> if(aTimeByte & 0x08){<br> _.setUTCHours(_.getUTCHours()+24);<br> }<br> if(aTimeByte & 0x10){<br> _.setUTCHours(_.getUTCHours()+168);<br> }<br> if(aTimeByte & 0x20){<br> _.setUTCMonth(_.getUTCMonth()+1);<br> }<br>
if(aTimeByte & 0x40){<br> _.setUTCFullYear(_.getUTCFullYear()+1);<br> }<br> if(aTimeByte & 0x80){<br> _.setUTCFullYear(_.getUTCFullYear()+10);<br> }<br> // Returns a Date Object NOT a DateTime48<br><br> return _;<br>}<br><br>//////////////////////////////////////////////////////////////////////////////<br><br>// Binary class methods<br>var Binary = {<br><br> // Convert a string to a byte array<br>stringToBytes: function (str) {<br> for (var bytes = [], i = 0; i < str.length; i++)<br> bytes.push(str.charCodeAt(i));<br> return bytes;<br> },<br><br> // Convert a byte array to a string<br>bytesToString: function (bytes) {<br> for (var str = [], i = 0; i < bytes.length; i++)<br>
str.push(String.fromCharCode(bytes[i]));<br> return str.join("");<br> },<br><br> // Convert a HEX string to a byte array<br>hexToBytes: function (str) {<br> for (var bytes = [], i = 0; i < str.length; i+=2){<br> bytes.push(((str.charCodeAt(i)-48)<<4)+(str.charCodeAt(i+1)-48));<br> }<br> return bytes;<br> }<br>}<br><br>function Base32String_fromString (s) {<br> return ZOOM_Base32Array_fromString(s).join("");<br>}<br><br>function ZOOM_Base32String_fromBytes(bytes){<br> var _ = "";<br><br> _ = ZOOM_String_fromBytes(bytes);<br><br> return ZOOM_Base32_fromString(_);<br>}<br><br>function ZOOM_Base32Array_fromString (s) {<br><br> var base32bits = 5; // 2^5=32 log2(32)=5<br> var alphabet = "0ABCDEFGHIJKLMNOPQRSTUVWXYZ12389"; // 32 Symbols<br><br>
// pad with 0 to be multiple of 40 bits<br> while( ((s.length*8) % 40) != 0){<br> s += '\x00';<br> }<br><br> var n40bit = (s.length*8)/40;<br><br> var parts = [];<br><br> // process 40-bits at a time<br> for (i = 0; i < n40bit; i++) {<br> parts.push(alphabet.charAt(s.charCodeAt(i*5) >> 3));<br> parts.push(alphabet.charAt( ((s.charCodeAt(i*5) & 0x07) << 2)<br> | (s.charCodeAt(i*5+1) >> 6)));<br> parts.push(alphabet.charAt( ((s.charCodeAt(i*5+1) & 0x3F) >> 1) ));<br> parts.push(alphabet.charAt( ((s.charCodeAt(i*5+1) & 0x01) << 4)<br>
| (s.charCodeAt(i*5+2) >> 4)));<br> parts.push(alphabet.charAt( ((s.charCodeAt(i*5+2) & 0x0F) << 1)<br> | (s.charCodeAt(i*5+3) >> 7)));<br> parts.push(alphabet.charAt( ((s.charCodeAt(i*5+3) & 0x7F) >> 2)));<br> parts.push(alphabet.charAt( ((s.charCodeAt(i*5+3) & 0x03) << 3)<br> | (s.charCodeAt(i*5+4) >> 5)));<br> parts.push(alphabet.charAt( ((s.charCodeAt(i*5+4) & 0x1F) )));<br> }<br><br> return parts;<br>}<br><br>//<br>// class Date48<br>//<br>//
Loc3+Century5+Year7+Month4+Date5+Hour5+Min6+Sec6+Msec7=48<br>// lllCCCCC.YYYYYYYM.MMMDDDDD.HHHHHMMM.MMMSSSSS.Smmmmmmm<br>//<br>// a 6-byte class commonly used in a 160-bit MatrixWord160<br>//<br>// MatrixWord160 Fixed160 = [class16+key32+locDateTime48+random32]~checksum32<br>//<br>// return the 48-bit ZOOM.Date used in 160-bit DHT480<br>//<br>//<br><br>function ZOOM_Date48_asBytes(location){<br> //<a ymailto="mailto:C@T" href="mailto:C@T">C@T</a> today=Date.new();<br> var today = new Date();<br> var msec = Math.floor((today.getUTCMilliseconds()/1000)*127)&0x7F;<br><br> var _ = [];<br><br> if(typeof location == "undefined"){<br> location = 0;<br> }<br> _.push(location & 0x07); // [0] Loc3 0-7 EARTH=0 MARS=7<br> _.push(Math.floor(today.getUTCFullYear()/100)); // [1] CCCCC 0-31<br>
_.push(today.getUTCFullYear()%100); // [2] YYYYYYY7 0-99<br> _.push(today.getUTCMonth()); // [3] MMMM4 0-11 Jan-Dec<br> _.push(today.getUTCDate()); // [4] DDDDD5 1-31<br> _.push(today.getUTCHours()); // [5] HHHHH5 1-23<br> _.push(today.getUTCMinutes()); // [6] MMMMMM6 1-60<br> _.push(today.getUTCSeconds()); // [7] SSSSSS6 1-60<br> _.push(msec); // [8] mmmmmmm7 0-127 mapped & rounded (above)<br><br> return _;<br>}<br><br>function ZOOM_Date48_asBits(aDate48){<br> var _ = "";<br><br> for(var i=0; i<6; i++){<br> _ = _ + ZOOM_Byte_toBitString(aDate48[i]);<br> }<br> return _;<br>}<br><br>// Loc3+Century5+Year7+Month4+Date5+Hour5+Min6+Sec6+msec5=48<br>// lllCCCCC.YYYYYYYM.MMMDDDDD.HHHHHMMM.MMMSSSSS.Smmmmmmm<br><br>function ZOOM_Date48(){<br> var today =
ZOOM_Date48_asBytes(0); // [0] Loc3 0-7 EARTH=0 MARS=7<br><br> return ZOOM_Date48_encodeFromBytes(today);<br>}<br><br>function ZOOM_Date48_encodeFromBytes(bytes){<br> var _ = [];<br><br> _.push(((bytes[0]<<5)&0xE0)|((bytes[1]>>0)&0x1F)); // [0] lllCCCCC<br> _.push(((bytes[2]<<1)&0xFE)|((bytes[3]>>3)&0x01)); // [1] YYYYYYYM<br> _.push(((bytes[3]<<5)&0xE0)|((bytes[4]>>0)&0x1F)); // [2] MMMDDDDD<br> _.push(((bytes[5]<<3)&0xF8)|((bytes[6]>>3)&0x07)); // [3] HHHHHMMM<br> _.push(((bytes[6]<<5)&0xE0)|((bytes[7]>>1)&0x1F)); // [4] MMMSSSSS<br> _.push(((bytes[7]<<7)&0x80)|((bytes[8]>>0)&0x7F)); // [5] Smmmmmmm<br><br> return _;<br>}<br><br>//<br>// class Class160<br>//<br>// ZOOM 160 bit Header - Version16 + Key32 +
DateTime48 + Random32<br>+ Checksum32<br><br>function ZOOM_Bytes_160(class16Bytes,key32Bytes){<br> var pi32 = 3141592653;<br> var random32 = Math.floor(Math.random()*pi32); // PI based 3.14159...<br> //TEST var random32 = Math.floor(.99999999999999*pi32); // PI<br>based 3.14159...<br><br> var _ = [];<br><br> //_.push((class16>>8)&0xFF); _.push(class16&0xFF);<br> _.push(class16Bytes[0]); _.push(class16Bytes[1]);<br><br> //_.push((key32>>24)&0xFF); _.push((key32>>16)&0xFF);<br>_.push((key32>>8)&0xFF); _.push((key32)&0xFF);<br> _.push(key32Bytes[0]); _.push(key32Bytes[1]);<br>_.push(key32Bytes[2]); _.push(key32Bytes[3]);<br>//48<br> // BUG found in Bytes to Hex - a single push shows in alert but is<br>missing in for loop<br> var zoomDate = ZOOM_Date48();<br> for(var
i=0; i<6; i++){<br> _.push(zoomDate[i]);<br> }<br>//96<br> _.push((random32>>24)&0xFF); _.push((random32>>16)&0xFF);<br>_.push((random32>>8)&0xFF); _.push((random32)&0xFF);<br>//128<br> var checksum = Crypto.SHA256(Crypto.SHA256(_, { asBytes: true }),<br>{ asBytes: true });<br> _.push(checksum[0]); _.push(checksum[1]); _.push(checksum[2]);<br>_.push(checksum[3]);<br>//160<br> return _;<br>}<br><br>// pack single bytes into string one per uni-code 16-bit doubleByte<br><br>function ZOOM_String_fromBytes(bytes){<br> var _String = "";<br><br> for(var i = 0; i < bytes.length; i++) {<br> _String += String.fromCharCode(bytes[i]);<br> }<br> return _String;<br>}<br><br>// Pull 40 bits from 8 Symbols and store in 5 bytes<br>//<br>// Example<br>//NZDZ
M8NA<br>//<br>// 0 1 2 3 4 5 6 7<br>//<br>//01110 11010 00100 11010 01101 11110 01110 00001<br>//<br>//01110 110|10 00100 1|1010 0110|1 11110 01|110 00001<br><br>function ZOOM_Bytes5_fromString8(input){<br> var alphabet = "0ABCDEFGHIJKLMNOPQRSTUVWXYZ12389"; // Base32 Symbols<br><br> var _value = 0;<br> var parts = [];<br><br> parts.push(((alphabet.indexOf(input[0])&0x1F)<<3)|((alphabet.indexOf(input[1])&0x1C)>>2));<br> parts.push(((alphabet.indexOf(input[1])&0x03)<<6)|((alphabet.indexOf(input[2])&0x1F)<<1)|((alphabet.indexOf(input[3])&0x10)>>4));<br> parts.push(((alphabet.indexOf(input[3])&0x0F)<<4)|((alphabet.indexOf(input[4])&0x1E)>>1));<br>
parts.push(((alphabet.indexOf(input[4])&0x01)<<7)|((alphabet.indexOf(input[5])&0x1F)<<2)|((alphabet.indexOf(input[6])&0x18)>>3));<br> parts.push(((alphabet.indexOf(input[6])&0x07)<<5)|(alphabet.indexOf(input[7])&0x1F));<br><br> return parts;<br>}<br><br>// Extract bytes from Base32 String of 200-bit Account<br>// Type8 + Hash160 + Checksum32<br>// Example: "NZDZM8NAYHSL9NQF1X0ZD8SGGX3AS9CCTVBILHHH"<br>// returns 118,137,166,249,193,202,38,207,186,38,222,1,162,122,103,62,58,25,252,99,165,132,150,33,8<br>//<br><br>function ZOOM_Bytes_fromBase32Account(input){<br> var parts = [];<br><br> for(var i = 0; i<5; i++){<br> parts.push(ZOOM_Bytes5_fromString8(input.substr(i*8,8)));<br> }<br> return parts;<br>}<br><br>// ZOOM_PrintableBase32_fromString<br>//<br>// Encode a string using custom Base32 (5-bits
per Symbol)<br>// Operates on 40 bits at a time (40=5*8)<br>// Pads with 0x00 to ensure 40-bit boundaries<br>// 200-bit eWallet - 25 bytes - 40 Symbols Base32<br>// 160-bit IPv3 Header - 20 bytes - 32 Symbols Base32<br>//<br>// Steal 2+3=5 bits from 160-bit hash - 10+155+35 - Type10+Hash155+CheckSum35<br>// makes it appear as if Type10 is two symbols and Checksum is 35 bits<br>// Type10 is really only 8 bits and CheckSum35 is really 32 bits<br><br>function ZOOM_PrintableBase32_fromString (s) {<br><br> var parts = ZOOM_Base32Array_fromString(s);<br><br> return ZOOM_PrintableBase32_fromArray(parts);<br>}<br><br>function ZOOM_PrintableBase32_fromArray (parts) {<br><br> return "<b><font size=+2>"+parts[0]+parts[1]+"</font>.</b>"+<br> parts[2]+parts[3]+parts[4]+parts[5]+parts[6]+parts[7]+parts[8]+parts[9]+<br>
parts[10]+parts[11]+parts[12]+parts[13]+parts[14]+parts[15]+parts[16]+parts[17]+<br> parts[18]+parts[19]+parts[20]+parts[21]+parts[22]+parts[23]+parts[24]+parts[25]+<br> parts[26]+parts[27]+parts[28]+parts[29]+parts[30]+parts[31]+parts[32]+<br> "<b>."+parts[33]+parts[34]+parts[35]+parts[36]+parts[37]+parts[38]+parts[39]+"</b>";<br>}<br><br>function ZOOM_Base32_fromString (s) {<br><br> var parts = ZOOM_Base32Array_fromString(s);<br><br> return parts.join("");<br>}<br><br>// Just the base32 symbols - works for various sizes<br><br>function ZOOM_BasicPrintableBase32_fromString (s) {<br><br> var parts = ZOOM_Base32Array_fromString(s);<br><br> return parts.join("");<br>}<br><br>// DNSD BASE64 [0-9,A-Z,a-z,-.]<br>//<br>// Note [-.] do not show up when only digits are used in the original key<br><br>function
Base64String_fromString (s) {<br> return ZOOM_Base64Array_fromString(s).join("");<br>}<br><br>function ZOOM_Base64Array_fromString (s) {<br><br> var base64bits = 6; // 2^6=64 log2(64)=6<br> var alphabet =<br>"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-."; //<br>64 Symbols<br><br> // pad with 0 to be multiple of 24 bits<br> while( ((s.length*8) % 24) != 0){<br> s += '\x00';<br> }<br><br> var n24bit = (s.length*8)/24;<br><br> var parts = [];<br><br> // process 24-bits at a time<br> for (var i = 0; i < n24bit; i++) {<br> parts.push(alphabet.charAt(s.charCodeAt(i*3) >> 2)); //6<br> parts.push(alphabet.charAt( ((s.charCodeAt(i*3) & 0x03) << 4) //2<br>
| ((s.charCodeAt(i*3+1) & 0xF0) >> 4))); //4<br> parts.push(alphabet.charAt( ((s.charCodeAt(i*3+1) & 0x0F) << 2) //4<br> | ((s.charCodeAt(i*3+2) & 0xC0) >> 6))); //2<br> parts.push(alphabet.charAt( (s.charCodeAt(i*3+2) & 0x3F)));<br> }<br><br> return parts;<br>}<br><br>function ZOOM_MD160(messageBytes){<br> return Crypto.RIPEMD160(messageBytes, { asBytes: true });<br>}<br><br>function ZOOM_SHA256(messageBytes){<br> return Crypto.SHA256(messageBytes, { asBytes: true });<br>}<br><br>///////////////////////////////////// END ZOOM<br>///////////////////////////////////////<br></script><br><br><script
type="text/javascript"><br><br>////////////////////////////////// CRYPTO<br>//////////////////////////////////////////<br><br>/*!<br>* Crypto-JS v2.0.0<br>* <a href="http://code.google.com/p/crypto-js/" target="_blank">http://code.google.com/p/crypto-js/</a><br>* Copyright (c) 2009, Jeff Mott. All rights reserved.<br>* <a href="http://code.google.com/p/crypto-js/wiki/License" target="_blank">http://code.google.com/p/crypto-js/wiki/License</a><br>*/<br><br>(function () {<br><br>// map is likely unused because builtin browser functions are used<br>// [A-Z,a-z,0-9,+/] "=" used for padding<br>var base64map =<br>"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";<br>//var base64map =<br>"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-.";<br><br><br>// Global Crypto object<br><br>var Crypto = window.Crypto = {};<br><br>// Crypto utilities<br><br>var util = Crypto.util = {<br><br> // Bit-wise
rotate left<br> rotl: function (n, b) {<br> return (n << b) | (n >>> (32 - b));<br> },<br><br> // Bit-wise rotate right<br> rotr: function (n, b) {<br> return (n << (32 - b)) | (n >>> b);<br> },<br><br> // Swap big-endian to little-endian and vice versa<br> endian: function (n) {<br><br> // If number given, swap endian<br> if(n.constructor == Number) {<br> return util.rotl(n, 8) & 0x00FF00FF | util.rotl(n, 24) & 0xFF00FF00;<br> }<br><br> // Else, assume array and swap all items<br> for(var i = 0; i < n.length; i++)<br> n[i] =
util.endian(n[i]);<br> return n;<br> },<br><br> // Generate an array of any length of random bytes<br> randomBytes: function (n) {<br> for (var bytes = []; n > 0; n--)<br> bytes.push(Math.floor(Math.random() * 256));<br> return bytes;<br> },<br><br> // Convert a byte array to big-endian 32-bit words<br> bytesToWords: function (bytes) {<br> for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8)<br> words[b >>> 5] |= bytes[i] << (24 - b % 32);<br> return words;<br> },<br><br> // Convert big-endian 32-bit words to a byte array<br> wordsToBytes: function
(words) {<br> for(var bytes = [], b = 0; b < words.length * 32; b += 8)<br> bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF);<br> return bytes;<br> },<br><br> // Convert a byte array to a hex string<br> bytesToHex: function (bytes) {<br> //BUG bytes with single push do not have proper length<br>(missing interior values)<br> for(var hex = [], i = 0; i < bytes.length; i++) {<br> hex.push((bytes[i] >>> 4).toString(16));<br> hex.push((bytes[i] & 0xF).toString(16));<br> }<br> return hex.join("");<br> },<br><br> // Convert a hex string to a
byte array<br> hexToBytes: function (hex) {<br> for(var bytes = [], c = 0; c < hex.length; c += 2)<br> bytes.push(parseInt(hex.substr(c, 2), 16));<br> return bytes;<br> },<br><br> // Convert a byte array to a base-64 string - "=" as pad<br> bytesToBase64: function (bytes) {<br> // Use browser-native function if it exists<br> if(typeof btoa == "function"){<br> //alert("Using builtin btoa for base64");<br> return btoa(Binary.bytesToString(bytes));<br> }<br>// likely not used - see above<br> for(var base64 = [], i = 0; i < bytes.length; i += 3) {<br> var triplet =
(bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2];<br> for(var j = 0; j < 4; j++){<br> if(i * 8 + j * 6 <= bytes.length * 8)<br> base64.push(base64map.charAt((triplet >>> 6 * (3 -<br>j)) & 0x3F));<br> else base64.push("=");<br> }<br> }<br> return base64.join("");<br> },<br><br> // Convert a base-64 string to a byte array<br> base64ToBytes: function (base64) {<br> // Use browser-native function if it exists<br> if (typeof atob == "function") {<br> //alert("using
builtin atob");<br> return Binary.stringToBytes(atob(base64));<br> }<br>// below likely not used - see above<br><br> // Remove non-base-64 characters<br>//BUG???? what about a-z ?<br> //base64 = base64.replace(/[^A-Z0-9+\/]/ig, "");<br><br> //Assume input has proper characters<br><br> for (var bytes = [], i = 0, imod4 = 0; i < base64.length;<br>imod4 = ++i % 4) {<br> if (imod4 == 0) continue;<br> bytes.push(((base64map.indexOf(base64.charAt(i - 1)) &<br>(Math.pow(2, -2 * imod4 + 8) - 1)) << (imod4 * 2)) |<br> (base64map.indexOf(base64.charAt(i)) >>> (6 - imod4 * 2)));<br> }<br><br>
return bytes;<br><br> }<br>};<br><br>/////////////////////////////////////////////////////////////<br><br> // Crypto mode namespace<br> Crypto.mode = {};<br><br> // Crypto character encodings<br> var charenc = Crypto.charenc = {};<br><br>//////////////////////// UTF-8 ///////////////////////////////<br><br> // UTF-8 encoding<br> var UTF8 = charenc.UTF8 = {<br><br> // Convert a string to a byte array<br> stringToBytes: function (str) {<br> return Binary.stringToBytes(unescape(encodeURIComponent(str)));<br> },<br><br> // Convert a byte array to a string<br>
bytesToString: function (bytes) {<br> return decodeURIComponent(escape(Binary.bytesToString(bytes)));<br> }<br><br> };<br><br>//////////////////////// Binary ///////////////////////////////<br><br> // Binary encoding<br> var Binary = charenc.Binary = {<br><br> // Convert a string to a byte array<br> stringToBytes: function (str) {<br> for (var bytes = [], i = 0; i < str.length; i++)<br> bytes.push(str.charCodeAt(i));<br> return bytes;<br>
},<br><br> // Convert a byte array to a string<br> bytesToString: function (bytes) {<br> for (var str = [], i = 0; i < bytes.length; i++)<br> str.push(String.fromCharCode(bytes[i]));<br> return str.join("");<br> }<br><br> };<br><br> })();<br><br><br>////////////////////////////////// SHA256<br>//////////////////////////////////////////<br><br>/*!<br>* Crypto-JS v2.0.0<br>* <a href="http://code.google.com/p/crypto-js/" target="_blank">http://code.google.com/p/crypto-js/</a><br>* Copyright (c) 2009, Jeff Mott. All rights reserved.<br>* <a href="http://code.google.com/p/crypto-js/wiki/License"
target="_blank">http://code.google.com/p/crypto-js/wiki/License</a><br>*/<br>(function () {<br><br>// Shortcuts<br>var C = Crypto,<br>util = C.util,<br>charenc = C.charenc,<br>UTF8 = charenc.UTF8,<br>Binary = charenc.Binary;<br><br>// Constants<br>var K = [0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,<br> 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,<br> 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,<br> 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,<br> 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,<br> 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,<br> 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,<br> 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,<br> 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,<br> 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,<br> 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,<br>
0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,<br> 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,<br> 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,<br> 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,<br> 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2];<br><br> // Public API<br> var SHA256 = C.SHA256 = function (message, options) {<br> var digestbytes = util.wordsToBytes(SHA256._sha256(message));<br> return options && options.asBytes ? digestbytes :<br> options && options.asString ? Binary.bytesToString(digestbytes) :<br> util.bytesToHex(digestbytes);<br> };<br><br> // The core<br> SHA256._sha256 = function (message)
{<br> // Convert to byte array<br> if (message.constructor == String) message =<br>UTF8.stringToBytes(message);<br> /* else, assume byte array already */<br><br> var m = util.bytesToWords(message),<br> l = message.length * 8,<br> H = [0x6A09E667, 0xBB67AE85, 0x3C6EF372, 0xA54FF53A,<br> 0x510E527F, 0x9B05688C, 0x1F83D9AB, 0x5BE0CD19],<br> w = [],<br> a, b, c, d, e, f, g, h, i, j,<br> t1, t2;<br><br> // Padding<br> m[l >> 5] |= 0x80 << (24 - l % 32);<br>
m[((l + 64 >> 9) << 4) + 15] = l;<br><br> for (var i = 0; i < m.length; i += 16) {<br><br> a = H[0];<br> b = H[1];<br> c = H[2];<br> d = H[3];<br> e = H[4];<br> f = H[5];<br> g = H[6];<br> h = H[7];<br><br> for (var j = 0; j < 64;
j++) {<br><br> if (j < 16) w[j] = m[j + i];<br> else {<br><br> var gamma0x = w[j - 15],<br> gamma1x = w[j - 2],<br> gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^<br> ((gamma0x << 14) | (gamma0x >>> 18)) ^<br> (gamma0x >>> 3),<br> gamma1 =
((gamma1x << 15) | (gamma1x >>> 17)) ^<br> ((gamma1x << 13) | (gamma1x >>> 19)) ^<br> (gamma1x >>> 10);<br><br> w[j] = gamma0 + (w[j - 7] >>> 0) +<br> gamma1 + (w[j - 16] >>> 0);<br><br> }<br><br> var ch = e & f ^ ~e & g,<br> maj = a & b ^ a & c ^ b & c,<br>
sigma0 = ((a << 30) | (a >>> 2)) ^<br> ((a << 19) | (a >>> 13)) ^<br> ((a << 10) | (a >>> 22)),<br> sigma1 = ((e << 26) | (e >>> 6)) ^<br> ((e << 21) | (e >>> 11)) ^<br> ((e << 7) | (e >>> 25));<br><br><br> t1 = (h >>> 0) + sigma1 + ch + (K[j]) + (w[j] >>> 0);<br> t2 =
sigma0 + maj;<br><br> h = g;<br> g = f;<br> f = e;<br> e = d + t1;<br> d = c;<br> c = b;<br> b = a;<br> a = t1 + t2;<br><br> }<br><br> H[0] += a;<br>
H[1] += b;<br> H[2] += c;<br> H[3] += d;<br> H[4] += e;<br> H[5] += f;<br> H[6] += g;<br> H[7] += h;<br><br> }<br><br> return H;<br><br> };<br><br> // Package private blocksize<br> SHA256._blocksize = 16;<br><br>
})();<br><br>////////////////// RIPEMD-160 ////////////////////////////////////////<br><br> /*!<br> * Crypto-JS v2.0.0<br> * <a href="http://code.google.com/p/crypto-js/" target="_blank">http://code.google.com/p/crypto-js/</a><br> * Copyright (c) 2009, Jeff Mott. All rights reserved.<br> * <a href="http://code.google.com/p/crypto-js/wiki/License" target="_blank">http://code.google.com/p/crypto-js/wiki/License</a><br> *<br> * A JavaScript implementation of the RIPEMD-160 Algorithm<br> * Version 2.2 Copyright Jeremy Lin, Paul Johnston 2000 - 2009.<br> * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet<br> * Distributed under the BSD License<br>
* See <a href="http://pajhome.org.uk/crypt/md5" target="_blank">http://pajhome.org.uk/crypt/md5 </a>for details.<br> * Also <a href="http://www.ocf.berkeley.edu/~jjlin/jsotp/" target="_blank">http://www.ocf.berkeley.edu/~jjlin/jsotp/</a><br> * Ported to Crypto-JS by Stefan Thomas.<br> */<br><br> (function () {<br> // Shortcuts<br> var C = Crypto,<br> util = C.util,<br> charenc = C.charenc,<br> UTF8 = charenc.UTF8,<br> Binary = charenc.Binary;<br><br> // Convert a byte array to little-endian 32-bit
words<br> util.bytesToLWords = function (bytes) {<br> var output = Array(bytes.length >> 2);<br> for (var i = 0; i < output.length; i++)<br> output[i] = 0;<br> for (var i = 0; i < bytes.length * 8; i += 8)<br> output[i >> 5] |= (bytes[i / 8] & 0xFF) << (i % 32);<br> return output;<br> };<br><br> // Convert little-endian 32-bit words to a byte array<br> util.lWordsToBytes = function (words) {<br>
var output = [];<br> for (var i = 0; i < words.length * 32; i += 8)<br> output.push((words[i >> 5] >>> (i % 32)) & 0xff);<br> return output;<br> };<br><br> // Public API<br> var RIPEMD160 = C.RIPEMD160 = function (message, options) {<br> var digestbytes =<br>util.lWordsToBytes(RIPEMD160._rmd160(message));<br> return options && options.asBytes ? digestbytes :<br> options && options.asString ? Binary.bytesToString(digestbytes)
:<br> util.bytesToHex(digestbytes);<br> };<br><br> // The core<br> RIPEMD160._rmd160 = function (message) {<br> // Convert to byte array<br> if (message.constructor == String) message =<br>UTF8.stringToBytes(message);<br><br> var x = util.bytesToLWords(message),<br> len = message.length * 8;<br><br> /* append padding */<br> x[len >> 5] |= 0x80 << (len % 32);<br> x[(((len + 64) >>> 9) <<
4) + 14] = len;<br><br> var h0 = 0x67452301;<br> var h1 = 0xefcdab89;<br> var h2 = 0x98badcfe;<br> var h3 = 0x10325476;<br> var h4 = 0xc3d2e1f0;<br><br> for (var i = 0; i < x.length; i += 16) {<br> var T;<br> var A1 = h0, B1 = h1, C1 = h2, D1 = h3, E1 = h4;<br> var A2 = h0, B2 = h1, C2 = h2, D2 = h3, E2 = h4;<br> for (var j = 0; j <= 79; ++j)
{<br> T = safe_add(A1, rmd160_f(j, B1, C1, D1));<br> T = safe_add(T, x[i + rmd160_r1[j]]);<br> T = safe_add(T, rmd160_K1(j));<br> T = safe_add(bit_rol(T, rmd160_s1[j]), E1);<br> A1 = E1; E1 = D1; D1 = bit_rol(C1, 10); C1 = B1; B1 = T;<br> T = safe_add(A2, rmd160_f(79 - j, B2, C2, D2));<br> T = safe_add(T, x[i + rmd160_r2[j]]);<br>
T = safe_add(T, rmd160_K2(j));<br> T = safe_add(bit_rol(T, rmd160_s2[j]), E2);<br> A2 = E2; E2 = D2; D2 = bit_rol(C2, 10); C2 = B2; B2 = T;<br> }<br> T = safe_add(h1, safe_add(C1, D2));<br> h1 = safe_add(h2, safe_add(D1, E2));<br> h2 = safe_add(h3, safe_add(E1, A2));<br> h3 = safe_add(h4, safe_add(A1, B2));<br> h4 = safe_add(h0, safe_add(B1,
C2));<br> h0 = T;<br> }<br> return [h0, h1, h2, h3, h4];<br> }<br><br> function rmd160_f(j, x, y, z) {<br> return (0 <= j && j <= 15) ? (x ^ y ^ z) :<br> (16 <= j && j <= 31) ? (x & y) | (~x & z) :<br> (32 <= j && j <= 47) ? (x | ~y) ^ z :<br> (48 <= j && j <= 63) ? (x & z) | (y & ~z) :<br> (64 <= j && j <= 79) ? x ^ (y | ~z) :<br> "rmd160_f: j out of
range";<br> }<br> function rmd160_K1(j) {<br> return (0 <= j && j <= 15) ? 0x00000000 :<br> (16 <= j && j <= 31) ? 0x5a827999 :<br> (32 <= j && j <= 47) ? 0x6ed9eba1 :<br> (48 <= j && j <= 63) ? 0x8f1bbcdc :<br> (64 <= j && j <= 79) ? 0xa953fd4e :<br> "rmd160_K1: j out of range";<br> }<br> function rmd160_K2(j) {<br> return (0 <= j && j <= 15) ? 0x50a28be6 :<br>
(16 <= j && j <= 31) ? 0x5c4dd124 :<br> (32 <= j && j <= 47) ? 0x6d703ef3 :<br> (48 <= j && j <= 63) ? 0x7a6d76e9 :<br> (64 <= j && j <= 79) ? 0x00000000 :<br> "rmd160_K2: j out of range";<br> }<br> var rmd160_r1 = [<br> 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,<br> 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,<br> 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,<br> 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,<br> 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13<br>
];<br> var rmd160_r2 = [<br> 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,<br> 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,<br> 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,<br> 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,<br> 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11<br> ];<br> var rmd160_s1 = [<br> 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,<br> 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,<br> 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,<br> 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,<br> 9, 15, 5, 11,
6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6<br> ];<br> var rmd160_s2 = [<br> 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,<br> 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,<br> 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,<br> 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,<br> 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11<br> ];<br><br> /*<br> * Add integers, wrapping at 2^32. This uses 16-bit<br>operations internally<br> * to work around bugs in some JS interpreters.<br> */<br> function safe_add(x, y)
{<br> var lsw = (x & 0xFFFF) + (y & 0xFFFF);<br> var msw = (x >> 16) + (y >> 16) + (lsw >> 16);<br> return (msw << 16) | (lsw & 0xFFFF);<br> }<br><br> /*<br> * Bitwise rotate a 32-bit number to the left.<br> */<br> function bit_rol(num, cnt) {<br> return (num << cnt) | (num >>> (32 - cnt));<br> }<br> })();<br>///////////////////////////END RIPEMD160/////////////////////////////////////<br><br>function
ImportCard1(matrix){<br><br> if(typeof matrix != 'string'){<br> alert("MatrixCard #1 is not a string");<br> return;<br> }<br> if(matrix.length > 16){<br> alert("Spaces removed");<br> matrix = matrix.replace(/[ \n\r]/g,''); // for some reason<br>spaces (32) get inserted<br> }<br> if(!(/^[0123456789]{16}$/.test(matrix))){<br> alert("Entry is not MATRIX Card format");<br> return;<br> }<br><br> MatrixCard1 = matrix;<br> LargeInteger = 4000000000000000000 + Number(new Date()) + Number(matrix);<br> document.getElementById("LargeInteger").innerHTML = LargeInteger;<br>}<br><br>function ImportCard2(matrix){<br><br> if(typeof matrix != 'string'){<br>
alert("MatrixCard #2 is not a string");<br> return;<br> }<br> if(matrix.length > 16){<br> alert("Spaces removed");<br> matrix = matrix.replace(/[ \n\r]/g,''); // for some reason<br>spaces (32) get inserted<br> }<br> if(!(/^[0123456789]{16}$/.test(matrix))){<br> alert("Entry is not MATRIX Card format");<br> return;<br> }<br><br> MatrixCard2 = matrix;<br> LargeInteger = 4000000000000000000 + Number(new Date()) + Number(matrix);<br> document.getElementById("LargeInteger").innerHTML = LargeInteger;<br>}<br><br>function ImportMatrix(matrix){<br><br>//DHT480_EXPIRE_aKey(DHT480_TEST_KEY);<br><br> if(typeof matrix != 'string'){<br> alert("Matrix is not a string");<br>
return;<br> }<br> if(matrix.length > 960){<br> //alert("Spaces removed");<br> matrix = matrix.replace(/[ \n\r]/g,''); // for some reason<br>spaces (32) get inserted<br> }<br> if(!(/^[123456789\n]{960}$/.test(matrix))){<br> alert("Entry is not DHT480 MATRIX format");<br> return;<br> }<br><br> var bytes = Binary.stringToBytes(matrix);<br> var index=0;<br> for(var i=0; i<8; i++){<br> var key = [];<br> for(var j=0; j<120; j++){<br> key.push(bytes[index++]-48); // ASCII "0" (48) not used<br>but the offset is there<br> }<br> document.getElementById("SPIGOT").innerHTML
=<br>document.getElementById("SPIGOT").innerHTML+key.join("")+"\n";<br> }<br>}<br><br><br>function ComputePI(event){<br> if(!LargeInteger){<br> alert("LargeInteger is not set yet...");<br> return;<br> }<br> var iterations = (event.clientX+event.clientY)*Multiplier;<br> for(var i=1; i<iterations; i+=2){<br> ComputePIonce();<br> }<br>}<br><br>function ComputePIonce(){<br> //document.getElementById("LargeInteger").innerHTML = LargeInteger;<br><br> CurrentI += 2;<br> document.getElementById("CurrentI").innerHTML = CurrentI;<br><br> document.getElementById("LargeCurrent").innerHTML = LargeInteger/CurrentI;<br><br> if(CurrentSign == 0){<br> CurrentPI += LargeInteger/CurrentI;<br>
CurrentSign = 1;<br> }<br> else{<br> CurrentPI -= LargeInteger/CurrentI;<br> CurrentSign = 0;<br> }<br><br> document.getElementById("CurrentPI").innerHTML = CurrentPI;<br><br> if(CurrentI <10){<br> CapturePI(); // Clipboard has Limit<br> }<br><br>/*<br>* Add your captures here<br>*<br> if(CurrentI == 12345){<br> CapturePI();<br> }<br> if(CurrentI == 9999){<br> CapturePI();<br> }<br> if(CurrentI <128){<br> CapturePI();<br> }<br> if((CurrentI%10000) == 9999){<br> CapturePI();<br> }<br>*<br>*/<br><br>}<br><br>function CapturePI(){<br> // replace all the 0s with
[1 to 9] because 0 is Disabled in the<br>IPv3 PIDEX Protocol<br> // random replacement values are NOT used because we want the<br>process to be repeatable (deterministic)<br><br> // Don't allow PI Indexes with any 0 digits - this can confuse the<br>user who clicks expecting a capture<br> //if(String(CurrentI).indexOf("0") != -1){<br> // return;<br> //}<br><br> if(SpigotCount >= DHTlimit){<br> return;<br> }<br> if(LastSaved == CurrentI){<br> alert("Click Slower OR Move Mouse to Upper Left");<br> return;<br> }<br> LastSaved = CurrentI;<br><br> var noZeroes = ReplaceRandom(String(CurrentPI));<br><br> var dateTime = Number(new Date());<br> //var dateTime = "112233445566778899";<br><br>
document.getElementById("SPIGOT").innerHTML =<br>document.getElementById("SPIGOT").innerHTML+LargeInteger+MatrixCard1+MatrixCard2+CurrentI+CurrentPI+","+noZeroes+dateTime+","+(Math.floor(Math.random()<br>* 1000000000000))+"00000<br>";<br> SpigotCount++;<br>}<br><br>function ReplaceRandom(aString){<br> var _ = aString;<br><br> //var start=0;<br> const start = Math.floor(Math.random() * 10); // Start random but<br>use in sequence - not as random as all random replacement<br><br> for(var i=start; (_.indexOf('0') != -1); i++){<br> _ = _.replace(/0/,(i%9)+1); // Don't replace 0 with 0 - use 1<br>to 9 over and over<br> }<br><br> return _;<br>}<br><br>function ClearSpigot(){<br> document.getElementById("CLIPBOARD").innerHTML =<br>document.getElementById("SPIGOT").innerHTML;<br>
document.getElementById("SPIGOT").innerHTML = "";<br> SpigotCount=0;<br>}<br><br>function InitPI(){<br> LargeInteger = 4000000000000000000 + Number(new Date()); // Spice<br>things up a bit<br> //LargeInteger = 4000000000000000000; // 0x3782DACE9D900000<br> document.getElementById("LargeInteger").innerHTML = LargeInteger;<br> Multiplier=1;<br> CurrentPI = LargeInteger;<br> CurrentI = 1;<br> CurrentSign = 1;<br> SpigotCount=0;<br> DHTlimit = 15; // 256*15=3840 3840/480=8 3840/256=15<br> LastSaved = -1;<br> MatrixCard1 = "6060572447574848";<br> MatrixCard2 = "6060572447574848";<br>}<br><br>function Accelerate(){<br> if(Multiplier > 4){<br> alert("You may need a faster computer...");<br> Multiplier = .5;<br>
return;<br> }<br> Multiplier=Multiplier*2;<br>}<br><br>function MakeKeys(){<br><br> // Get rid of commas and zeroes<br> var clipboard =<br>ReplaceRandom((document.getElementById("CLIPBOARD").innerHTML).replace(/,/g,""));<br> // no commas or zeroes at this point<br><br> // where do these come from?<br> clipboard = clipboard.replace(/<font>/g,"");<br> clipboard = clipboard.replace(/<\/font>/g,"");<br><br> // UNIX was built on the single byte newline vs CR-LF etc<br> clipboard = clipboard.replace(/<br>/g,"\n");<br><br> var keys = "";<br> var endofline;<br><br> // Zeroes will be gone at this point<br> if(!/[123456789\n]/.test(clipboard)){<br> alert("CLIPBOARD has bad format - Did you CAPTURE anything?");<br>
return;<br> }<br><br> while((endofline=clipboard.indexOf('\n')) != -1){<br> keys += clipboard.substr(0,120) + '\n';<br> var common =<br>Binary.bytesToString(Binary.hexToBytes(clipboard.substr(0,120)));<br> keys += Base32String_fromString(common) + '\n';<br><br>//DHT480_PUT_aKeyDataTime(Base32String_fromString(common),random_TestArray(),random_TimeByte());<br>DHT480_PUT_aKeyDataTime(Base32String_fromString(common),random_TestArray(),1);<br><br> keys += Base64String_fromString(common) + '\n\n';<br> clipboard = clipboard.replace(/^.*\n/,"");<br> }<br><br> document.getElementById("KEYS").innerHTML = "<pre>"+keys+"</pre>";<br>}<br><br>function OneSecond(){<br> setTimeout(function () { OneSecond(); }, 1000);<br>
ComputePIonce();<br> DHT480_EXPIRE_ALL();<br> //CapturePI();<br>}<br><br>function RESET(){<br> InitPI();<br> ClearSpigot();<br>}<br><br></script><br></head><br><br><!--<br> CSS STYLE<br>--><br><style type="text/css"><br>.details { background-color: #DDDDDD; font-family: Arial; font-size:<br>100%; clear: both; width: 400px; padding: 10px 0 10px 0; margin: 50px<br>auto auto auto; }<br>.footer { background-color: #DDDDDD; font-family: Arial; font-size:<br>50%; clear: both; width: 696px; padding: 10px 0 10px 0; margin: 50px<br>auto auto auto; }<br></style><br><br><!--<br> BODY<br>--><br><br><body onclick="CapturePI();" onkeypress="" onmousemove="ComputePI(event);"><br><br><!--<br> VIEW<br>--><br><span><input type="button" value="RESET" onclick="RESET();" /></span><br><center><br><font
face=arial><br><div id="tagline"><br><font size=5><b><a ymailto="mailto:Techno.C@T" href="mailto:Techno.C@T">Techno.C@T</a>'s</b></font><br><br/><br><b>Stand-Alone</b> [OFFLINE] <i>JavaScript</i> DNSD eWALLET DHT480 PI Workbench<br><br><br><h4>Did you know that PI = 2.222222222222222... ? [Hint: Not BASE10]</h4><br></div><br><br/><br><div id="commands"><br><br/><br><span><b>Enter MATRIX Card #1:</b><input type="text" id="MatrixCard1"<br>size=16 maxLength=16 value="1234567890123456"<br>onfocus="this.select();" onkeypress="if (event.keyCode == 13)<br>ImportCard1(document.getElementById('MatrixCard1').value);"> [0-9<br>ONLY]<br><br/><br><span><br><input type="button" id="cardimport" value="Enter Plastic Card #1"<br>onclick="ImportCard1(document.getElementById('MatrixCard1').value);"<br>/><br><b><font
size=2>...NUMERIC ONLY entry...16 Digits...</font></b><br></span><br><br/><br><br/><br><span><b>Enter MATRIX Card #2:</b><input type="text" id="MatrixCard2"<br>size=16 maxLength=16 value="1234567890123456"<br>onfocus="this.select();" onkeypress="if (event.keyCode == 13)<br>ImportCard1(document.getElementById('MatrixCard2').value);"> [0-9<br>ONLY]<br><br/><br><span><br><input type="button" id="cardimport" value="Enter Plastic Card #2"<br>onclick="ImportCard2(document.getElementById('MatrixCard2').value);"<br>/><br><b><font size=2>...NUMERIC ONLY entry...16 Digits...</font></b><br></span><br><br/><br></div><br><br/><br><h3>...Move Mouse near RESET to Iterate FASTER...Click CLEAR and<br>CAPTURE of SPIGOT...</h3><br><div class="details">LargeInteger:<div id="LargeInteger">[]</div><br>CurrentI:<div
id="CurrentI">[]</div> LargeInteger/CurrentI:<div<br>id="LargeCurrent">[]</div></div><br><br><br><i>Are WE There YET ?</i>....4/1-4/3+4/5-4/7+4/9-4/11+...<br><span><input type="button" value="ACCELERATE" onclick="Accelerate();" /></span><br><h3>31415926535897932384626433832795</h3><br><font face=arial size=12><div id="CurrentPI">[]</div></font><br><br><br>Copy and Paste from DHT480 MATRIX...<br><br/><br><span><b>Enter MATRIX:</b><input type="text" id="dhtMatrix" size=64<br>maxLength=974 value="PASTE MATRIX HERE"<br>onfocus="this.select();" onkeypress="if (event.keyCode == 13)<br>ImportMatrix(document.getElementById('dhtMatrix').value);"> [1-9 ONLY]<br><br/><br><span><br><input type="button" id="dnsdimport" value="IMPORT"<br>onclick="ImportMatrix(document.getElementById('dhtMatrix').value);"
/><br><b><font size=2>...NUMERIC ONLY entry...SPACES will be removed...</font></b><br></span><br><br/><br><script type="text/javascript"> InsertSoftWay(); </script><br><h1>ZOOM://Soft.WAY.&trade;</h1><br><span><input type="button" value="CLEAR and CAPTURE to CLIPBOARD"<br>onclick="ClearSpigot();" /></span><br><br/><br><b>SPIGOT</b><div id="SPIGOT"></div><br><br/><br><b>CLIPBOARD (CSV)</b><div id="CLIPBOARD" onclick=""></div><br><br/><br><span><input type="button" value="reMAKE KEYS from CLIPBOARD"<br>onclick="MakeKeys();" /></span><br><br/><br><b>480-bit DHT KEYS<br>1to9HEX (120 Symbols) - Base32 (96 Symbols)<br>Base64 (80 Symbols ~ KeyPunchCard)</b><div id="KEYS" onclick=""></div><br></div><br><!--<br> SAMPLE
MATRIX<br>--><br><pre><br>SAMPLE MATRIX - CUT AND PASTE to IMPORT
above...<br>819412345139691696237891434567139891696239123139491696236656789123326666675939446415456726666675939446415678913919169623<br>672345678593466667872128134234563466667872128134234781399916962614123456778289523919199713923456289523916199773989178139<br>991696261412345679833396837919878132345633396837919878132347813999169626151234567294598314152585732732891234314152585732<br>732834556139791697399489533689631416531178387256912331416531118327256344513969169746927843659153141539689238917789123141<br>539389238917456341395916975552673398694314164395966778739123314164395966778739145139691697617378443171531415474196747467<br>789131415474196747417232313949169768625624482133141638366974456678913141638366974126345231394916977364562448213314163836<br>697445667891314163836697423645623139491697784256246463331415547519213614678931415597119213614231213939169783284514646323<br>14155374192136145678314155273192136144591139291697882734946465131416367882528133234531
4163678825281339167139891697941691<br></pre><br><i>...THIS is NOT an <a ymailto="mailto:RFC...C@T" href="mailto:RFC...C@T">RFC...C@T</a></i><br><br/><br><pre><div id="TESTAREA"></div></pre><br><script type="text/javascript"><br><br>var isArray = Function.isArray || function(o) {<br>return typeof o === "object" &&<br>Object.prototype.toString.call(o) === "[object Array]";<br>};<br><br>const Date_Today = new Date();<br>const Date_Time = Date_Today.getTime();<br>document.write(Date_Today);<br>document.write(Date_Time+" ::
");<br>document.write(<br>((Date_Time>>56)&0xFF)+'.'+((Date_Time>>48)&0xFF)+'.'+((Date_Time>>40)&0xFF)+'.'+((Date_Time>>32)&0xFF)+'.'+((Date_Time>>24)&0xFF)+'.'+((Date_Time>>16)&0xFF)+'.'+((Date_Time>>8)&0xFF)+'.'+((Date_Time>>0)&0xFF));<br><br>//////////////////////////////////////////////////////////////////////////////<br>//<br>// DHT480 has TWO methods PUT(KEY480,DATA8192,TIME8) and GET(KEY480)<br>//<br><br>// Create a test Array with KEY480,DATA8192 the TIME8 {TimeByte} is<br>not tested here...see below<br><br>// BASE32 96*5=480 ~ One Symbol short appended below<br>const testKEY =<br>"0ABCDEFGHIJKLMNOPQRSTUVWXYZ123890ABCDEFGHIJKLMNOPQRSTUVWXYZ123890ABCDEFGHIJKLMNOPQRSTUVWXYZ1238";<br>// Leave the 9 off<br><br>// in BASE32 the 0 Symbol is 00000 0x00 therefore 96 0 Symbols is<br>96*5=480 bits of ALL 0s 00000...00000<br><br>const DHT480_ZERO_KEY
=<br>"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000";<br><br>const DHT480_ONES_KEY =<br>"999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999";<br><br>const DHT480_TEST_KEY =<br>"HDQTJD2UN3IFF8DQDM0RFQKGQEHRFQKFOBHRFHSTOEBSBPJXIEKXHPXXL8AQHELDRU2DHLLDJZHRBNJWPX1QBYQRDRHWMAXV";<br><br>// in BASE32 the 9 Symbol is 11111 0x1F therefore 96 9 Symbols is<br>96*5=480 bits of ALL 1s 11111...11111<br><br>// 96 Symbol RULERs<br>// "012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345"<br>// "0ABCDEFGHIJKLMNOPQRSTUVWXYZ123890ABCDEFGHIJKLMNOPQRSTUVWXYZ123890ABCDEFGHIJKLMNOPQRSTUVWXYZ12389"<br>// "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"<br>// "999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999"<br>//<br>// 96 digits from a
PI_SPIGOT - NOT #BASE32 note the digits other than {012389}<br>// "819412345139691696237891434567139891696239123139491696236656789123326666675939446415456726666675"<br>//<br>//<br>// "000P00HB0LJAXWIQICAQP1J9ER88BLA8S3GMIJ8NZTDSZNVOU0QR33DQFZWCNH0FJ1B8P23QHDGWKB8JMZQCCFPSBA1CV98U"<br>//<br><br>const DHT480_base32_alphabet = "0ABCDEFGHIJKLMNOPQRSTUVWXYZ12389";<br><br>var DHT480_table = new Array(32); // 32 rows of the test key table<br><br>//<br>// STORE an entry in the DHT480<br>//<br>// aKey - aString of 96 #BASE32 Symbols (96x5=480)<br>// anArray - 1024 Bytes of Data<br>// aTimeByte - DYMWDSHM - Decade.Year.Month.Week.Day.SHIFT.Hour.Moment<br><br>function DHT480_PUT_aKeyDataTime(aKey,anArray,aTimeByte){<br><br> if(aKey in DHT480_table){<br> alert(aKey+" exists");<br> return DHT480_ZERO_KEY;<br> }<br> if(aKey.length != 96){<br> return
DHT480_ONES_KEY;<br> }<br> if(anArray.length != 1024){<br> return DHT480_ONES_KEY;<br> }<br> for(var i=0; i<1024; i++){<br> if( ! ((anArray[i] >= 0) && (anArray[i] <= 255)) ){<br> return DHT480_ONES_KEY;<br> }<br> }<br> if( ! ((aTimeByte >= 0) && (aTimeByte <= 255)) ){<br> return DHT480_ONES_KEY;<br> }<br><br> DHT480_table[aKey] = new Array(1025);<br><br> DHT480_table[aKey][0] = (ZOOM_Date_add_aTimeByte((new<br>Date()),aTimeByte)).getTime();<br> for(var i=1; i<=1024; i++){<br> DHT480_table[aKey][i] = anArray[i-1];<br> }<br><br> return aKey;<br>}<br><br>//<br>// GET an entry from the
DHT480<br>//<br><br>function DHT480_GET_aKey(aKey){<br><br> if(aKey.length != 96){<br> return undefined;<br> }<br><br> var _ = new Array(1024);<br><br> for(var i=1; i<=1024; i++){<br> _[i-1] = DHT480_table[aKey][i];<br> }<br><br> return _;<br>}<br><br>//<br>// EXPIRE an entry from the DHT480<br>//<br><br>function DHT480_EXPIRE_aKey(aKey){<br><br> //if(DHT480_table[aKey] == undefined){<br> //alert(aKey+" does not exist");<br> // return;<br> //}<br> if(!(aKey in DHT480_table)){<br> return aKey;<br> }<br> if(aKey.length != 96){<br> return aKey;<br> }<br><br> var now = new Date().getTime();<br><br>
if(DHT480_table[aKey][0] < now){<br> console.log("Expired:"+aKey+":"+new Date);<br> delete DHT480_table[aKey];<br> }<br> else{<br> //alert(aKey+" expires at "+DHT480_table[aKey][0]+":::"+new<br>Date(DHT480_table[aKey][0]));<br> }<br><br> return aKey;<br>}<br><br>function DHT480_EXPIRE_ALL(){<br> var p;<br><br> for(p in DHT480_table){ // Loop through the properties<br> //console.log(p);<br> DHT480_EXPIRE_aKey(p);<br> }<br>}<br><br>// Fill the ZERO_KEY DATA8192 with 0s 00000...00000<br><br>DHT480_table[DHT480_ZERO_KEY] = new Array(1025);<br> for(var col = 1; col <= 1024; col++) {<br> DHT480_table[DHT480_ZERO_KEY][col] = 0;<br> }<br>
DHT480_table[DHT480_ZERO_KEY][0] = (new Date()).getTime();<br><br>// Fill the ONES_KEY DATA8192 with 1s 11111...11111<br><br>DHT480_table[DHT480_ONES_KEY] = new Array(1025);<br> for(var col = 1; col <= 1024; col++) {<br> DHT480_table[DHT480_ONES_KEY][col] = 255; // 0xFF<br> }<br> DHT480_table[DHT480_ONES_KEY][0] = (new Date()).getTime();<br><br>// Dump the properties to a TESTAREA<br><br>function dumpDHT480(){<br> document.getElementById("TESTAREA").innerHTML = "";<br> for(p in DHT480_table){ // Loop through the properties<br> //console.log(p);<br> document.getElementById("TESTAREA").innerHTML += p + '<br/>';<br> var limit = 0;<br> for(q in DHT480_table[p]){<br>
document.getElementById("TESTAREA").innerHTML += q + ":" +<br>DHT480_table[p][q] + ",";<br> if(limit++ > 10) break;<br> }<br> document.getElementById("TESTAREA").innerHTML += '<br/>';<br> }<br>}<br><br>function random_TestArray(){<br> var _ = [];<br><br> for(var i = 0; i<1024; i++){<br> _[i] = Math.floor(Math.random() * 256);<br> }<br> return _;<br>}<br><br>function random_TestROM(){<br> var _ = new Array(522240);<br><br> for(var i = 0; i<522240; i++){<br> _[i] = Math.floor(Math.random() * 256);<br> }<br> return _;<br>}<br><br>function random_TimeByte(){<br><br> return Math.floor(Math.random() *
256);<br>}<br><br>//DHT480_PUT_aKeyDataTime(DHT480_TEST_KEY,random_TestArray(),random_TimeByte());<br>//DHT480_PUT_aKeyDataTime(DHT480_TEST_KEY,random_TestArray(),random_TimeByte());<br><br>DHT480_PUT_aKeyDataTime(DHT480_TEST_KEY,random_TestArray(),1); // the<br>smallest TimeByte = aMoment up to 8 minutes<br><br>//alert(DHT480_TEST_KEY);<br><br>DHT480_EXPIRE_aKey(DHT480_TEST_KEY);<br><br>///////////////////////////////////////////////////////////////////////////////////////////////////////////////////<br><br></script><br><!--<br> FOOTER<br>--><br><div class="footer" onclick="Dedication('MARS 128n 128e');"><br><center><span>Copyright &copy; 1981-2014 The UNIR&trade;<br>Project</span></center><br><br><span>Comments & JavaScript Copyrights are included in the Source</span><br><br/><br><span>No Warranty - FREEly pass this around the IPv3 IPv16 ZOOM
#COMNET</span><br><br/><br><span>THIS IS NOT an RFC or Property of <b>THE.XXX.ORGy</b> aka<br>The.Big.Lie.Society*</span><br><br/><br>...<br><br/><br><span>#COMNET only uses .COM and .NET Legacy DNS ~ .NET derives from<br>.COM ~ #NETCOM</span><br><br/><br></div><br></font><br></center><br><br><!--<br> CONTROLLER<br>--><br><br><script type="text/javascript"><br><br>//<br>// GlobalROM BLOBsize is 522240 Bytes<br>//<br>// 272 x 480 x 32bits - based on SONY PSP Screen Size<br>//<br><br>var GlobalROM = random_TestROM();<br><br>var GlobalROM_BTC160 = ZOOM_MD160(ZOOM_SHA256(GlobalROM));<br>var GlobalROM_MD160 = ZOOM_MD160(GlobalROM);<br><br>// DHT480 Handle for GlobalROM<br>// Class160 zoomBytes160<br>// BTC160 GlobalROM_BTC160<br>// RIPE160<br><br>// Class160<br>var
version16=[];<br>version16.push(255);version16.push(255);<br>//_.push((key32>>24)&0xFF); _.push((key32>>16)&0xFF);<br>_.push((key32>>8)&0xFF); _.push((key32)&0xFF);<br>var key32=[255,255,255,255];<br>var zoomBytes160 = ZOOM_Bytes_160(version16,key32); // Class160<br><br>// Key480<br>var zoomGlobalROM_key480 = [];<br>// Assemble the three objects Class160 BTC160 MD160<br>zoomGlobalROM_key480 =<br>zoomGlobalROM_key480.concat(zoomBytes160,GlobalROM_BTC160,GlobalROM_MD160);<br><br>var ZOOMstring96 = ZOOM_Base32String_fromBytes(zoomGlobalROM_key480);<br><br>// Time = DYMWDSHM - Decade.Year.Month.Week.Day.SHIFT.Hour.Moment<br><br>DHT480_PUT_aKeyDataTime(ZOOMstring96,random_TestArray(),3);<br><br><br>RESET();<br>setInterval("dumpDHT480()",10000);<br>CapturePI();<br>OneSecond();<br><br>for(var i=0; i<100000; i++){<br> for(p in DHT480_table){ // Loop through the properties<br>
//console.log(p);<br> DHT480_EXPIRE_aKey(p);<br> }<br>}<br></script><br><script type="text/javascript"> InsertSoftWay(); </script><br></body><br></html><br><br>--<br><br><br>____________________________________________________________<br><br><br></div> </div> </div> </div></body></html>