NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// SlaveHack Utilities // version 0.31 // Copyright (c) 2007-2010 Philip & (c) 2009 Satori // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see <http://www.gnu.org/licenses/>. //// // Bad idea to ban me on #slavehack, I was retiring anyway, and just wanted to // give this out to one person. They'd have retired in turn and the script // would have completely disappeared. Now it's going to be completely public. //// // CHANGELOG: // 0.1 - 2007-07-23 // * Started // * Get our IP address from the page, rather than hard coding like certain other utilities // * Shrunk the foreign logfile textarea, so you don't have to scroll down to hit "edit" // * Remove our IP from foreign logs, and put a warning that we need to submit under the log textarea. // * Sort slaves in slave list by clicking on headers, and added headers for individual virus types // * Reverse sort on the second click // 0.2 - 2007-07-24 // * Added numbering to the slave list // * Password and task are now not HTML stripped before sorting, so null entries will show up first (or last) // * Process list is sorted by IP // * "Internet" links on processes list // * fixed bug: page=internet alone sometimes has the logfile, and it isn't modified. // * Always show textbox to enter password // * Never * out the password (change input type=password to type=text). // 0.3 - 2007-07-25 // * Show space used by visible programs in software list // * Keep track of which programs we already have // * Remove download links for active viruses, and for software we already have. // * Remove delete links for active viruses // * Parse time from top of screen // * Display time since modified instead of modification date in external host file list // * Display time since modified instead of modification date in software list // * Autosubmit log change if we automatically removed our IP // * Display time since last captcha // * Upload files is on file list on external hosts instead of a seperate page // * Upload files doesn't display files that are already on the host (can't upload anyway). // * Fixed bug: 'page=software' is similar to 'page=softwareext' (software & external HDD) // * Sort slave list by IP if the primary sort item is the same, so sort is deterministic // * Remember last sort in slave list // * Remove "Options" from menu // * Added "change password" and "change layout' options to "My Computer" // * Hide hide link if we can't hide it any further on external computers. // * Turn captcha timer in header red if 19 or more minutes since last captcha // * Only show files on upload menu if there is room to upload them. // * Automatically resubmit failed password cracking // 0.4 - 2007-07-27 // * Change process list to h:m:s format // * Change auto-submit on process list to refresh process list instead. // * On process list, show "Continue" button with time remaining displayed on it // * Select last selected account in collect income on slave list // * Fixed bug on upload menu where x.0 versions didn't show up on upload menu // * Fixed bug on upload menu where Photo collection(ZZZ).rip didn't show up on upload menu // 0.5 - 2007-07-28 // * Every page now gets "seconds remaining" replaced with h:m:s remaining on the continue button, not just process list // * Changes h:m:s to h:mm:ss (leading 0 in seconds and minutes if less than 10) // * Hilight current IP on process list // * Lowlight (anti-hilight) files on external computer if player doesn't have a high enough seeker to see it. // * Don't display 0.0 in level 0.0 hidden // * Added "View Upload Page" option to upload menu on external file menu // * Clicking on "Options" now displays our automation menu instead of the donation page. // * Brute Force Scan IPs - At 10 IPs per second, it would take 13.6 years to cover the entire IP range, and we take 4 seconds per IP (40 times longer). // 0.5 - 2007-07-29 // * Add numbering to process list // * Remove unnecessary whitespace from process list // * Completed tasks bubble up to the front of a particular IP's tasks // * Slightly optimized their JS on the process list. // * Trim unnecessary text in slaves list // * MySlaves import list link added to slave list. // * Process list has extra spacing processes with between different IPs // 0.6 - 2007-10-10 // * Updates for new code // * Disabled: Change javascript to hh:mm:ss format on every page // * Disabled: Show "Continue" button with time remaining displayed on it // * Temp Disabled: Autosubmit if we removed our IP // 0.7 - 2007-10-29 // * Logfile auto-cleaner fixed (they intentionally broke it.) // 0.8 - 2007-12-5 // * Self log camper // * Mark NPCs in slaves list. // 0.8.1 - 2007-12-6 // * Fixed a bug in NPC marking code // * NPCs now get ratings too. (displayed in password field) // 0.9 - 2007-12-9 // * NPCs go italic when passsword is unknown // * Provide "crack" link in <font color=red>The slave 7.5.7.89 was removed from your list because you no longer have the admin password anymore and no virus is active.</font> // * Mark NPCs in ...was removed from your list... // 0.10 - 2008-07-07 // * Fixed bug where double newlines were completely removed instead of turning into single newlines in logfile. // * Added NPC/VPC notification // 0.11 - 2008-07-12 // * Added automatic connection speed analysis // ******************************************* // ********** Continued by satori ************ // ******************************************* // This script may only work with the Theme: Black small Layout // ******************************************* // 0.12 - 2009-02-06 // * Moddified to work with the Theme: Black small Layout // * Link to Slave files next to Internet link in the menu // * Show ones own highest app version beside slaves app version // * Added file images to the upload form on the files page // 0.13 - 2009-02-08 // * Added previous + next NPC link on Internet screen // * Hilight own IP on process list (white) // * Added IP logging/parsing of logfiles -> checks if known/slave/npc -> otherwise the IP will be saved into GM PotentialSlaves list // * Added link to Internet screen which lets you go to next entry of PotentialSlaves and removes the IP from the list once visited // * Added time needed to upload files on slave (~95% accurate) // * Hide hide link on own Software page for files that can't hide any further // 0.14 - 2009-02-10 // * Replace Textarea on Slaves with a DIV and added ip color highlighting // * Fixed SlaveSort function, asc/desc is now safed and displayed correctly // * Added: Display installed/active Virus(es) on Internet screen // * Always select highest non deleteable(AV) spam virus in files/upload list // * Automatically select highest spam virus that can't be deleted by the slaves AV // * Highlight spam viruses in upload form in red if they can be deleted by the slaves AV // 0.15 - 2009-02-13 // * Added: Save Slaves Connection/Apps/Viruses into GM AllSlaveApps and display it at the Internet screen // * Save euros/h into GM AllSlaveApps and display it on Internet and Slaves screen // * Connection (MBit) and Money (euros/h) now displayed on Slave page // * Added highlighting of warez and ddos in upload form which can be deleted by the slaves AV // * Fixed autoselection of highest not deletable virus on upload page, works now properly // * Fixed MBit & money/h sort function on slave page // 0.16 - 2009-02-16 // * Added GS detection, save GS name and show it on Slaves page // * Highlight last connected slave on slaves page // * Added: Show Slaves Apps and Viruses in a Tooltip on the Slaves page // 0.17 - 2009-02-17 // * Switched to Base64 encoded images so they don't get loaded from the server all the time // * Fixed Slave Info Virus display issue: Move Virus from apps to activ viruses in GM AllSlaveApps if it got activated // * Added highlighting of highest app version on slave/files // * Display € per (Mbit|Gb|Mhz) on hardware screen // * Fixed a bug where viruses with .0 level werent highlighted as active on slaves/info tooltip // * Fixed Own IP detection since the html code was changed // * Fixed Bug that screwed up the slaves page // 0.18 - 2009-02-19 // * Fixed: HDD format, IP/PW reset now showing up in process list // * Fixed DDoS image display on slave page // * Added Settings menu to turn on/off Autosubmit // 0.19 - 2009-02-20 // * Fixed: Hopefully everything that was broken through the html change // * Fixed: IP-link problem on process page // * Fixed: Logfile on Internet page is now parsed properly // 0.20- 2009-02-21 // * Added Auto Continue since this feature was disabled by the SH devs // * Fixed another bunch of things caused by the html changes // * Added: Remove annoying text over Logfile on Internet page // * Added: Move ip's with a too high Firewall to crack to the end of the potential slave list // * Fixed: Last Captcha displayed correctly // * Fixed: Autorety on failed PW crack working again // 0.21- 2009-02-22 // * Fixed: Timestamps in Logfiles shown correctly again // * Fixed: Update of slave income working again // Small changes (Anonymous) // 0.22 - 2009-04-15 // * Added the new NPC IPs // * Added the WHOIS/Buy a GS Links // More anonymous changes // 0.23 - 2009-04-22 // * Added the Launch DDoS and Collect All Links // * Changed the direct slaves link to "Slaves List" // * Added External HDD Link // * Added Clear Log Link // ******************************************* // ********** Continued by anonymous ************ // ******************************************* // 0.24 - 2009-10-24 // * Fixed some anti-SHU behaviour // 0.25 - 2009-11-09 // * Fixed last captcha // * Made last captcha timer more accurate // * Last captcha timer updates in real time. // * Added a few more NPC IPs from http://spreadsheets.google.com/pub?key=pHMQr9KOU6e0DY0G-c8Q_KA&gid=0 // * Fixed Clear Home Logs // 0.26 - 2009-11-10 // * Made Clear Home Logs cleaner // * Added reset PW link // * Keep track of how many times we've been run, and some related items. // 0.27 - 2010-06-09 // * Not detected again. // 0.271 - 2010-06-09 // * added new NPC // 0.28 - 2010-06-09 // * Read the code! // 0.29 - 2010-06-17 // * Workaround for an SH bug // 0.30 - 2010-06-20 // * Show real filetimes on hover // ******************************************* // ********** Continued by acien ************ // ******************************************* // 0.31 - 2011-04-20 (well idk when i last edited it but this is the date i made the edits public) // * Fully updated the npc list to the 5.7 fwl (last npc i think) with a dummy 0.0.0.0 npc to fix a bug of it skiping the first one in the list //////////////////////////////////////// // Ideas: // BUG: 0.29 GB free space on external file list is treated as 0.029GB // Show outstanding processes for this IP & their status in page=internet ? // Display Process timers on every page (ie. log edit timer) // Check a list of IPs to see which are still valid. // Add Income of all Slaves /h /day and display it somewhere // Remove GM Slafe/Files if pressed DELETE on slave page // Parse logfiles for bank transfers / account numbers and bank ip // NPC on dropdown menus by type? (fwl, wwl, whois, banks, vspam) // // Automated hack&slave (checkbox to start and stop?) //////////////////////////////////////// // Rejected Ideas: // Display in-line finances? - What if someone hacks your bank account? Effort not worth the return. // Simplify Uploads? - it's a POST form, so hard to do, and we simplified it enough having it be one page and removing unnecessary items // Highlight self on hiscore list - No good way to get our username // Preload log edit? - Often we care about CPU speed, so we don't always want to do this. // BUG: We don't handle captchas on IP scanner (IP Scanner is totally useless) -> I will probably rewrite the function to check if PotentialSlaves are available // Keep track of our GS? Why? For collecting software, consider software on GS part of the collection? -> with the possibility to view slave apps/viruses this is already possible //////////////////////////////////////// // ==UserScript== // @name SlaveHack Utilities // @namespace http://slavehack.com // @include http://*.slavehack.com/index2.php* // @include http://slavehack.com/index2.php* // ==/UserScript== (function () { // function wrapper var MyIP; var SHTime = (new Date()).getTime(); // Default value, gets overwritten by value in the HTML later on. var StartTime = (new Date()).getTime(); var isCaptcha = false; var numPotSlaves = GM_getValue('PotentialSlaves', '').split('|').length; var aSettings = new Array(); if (GM_getValue('MenuSettings', '') != '') { var aSet = GM_getValue('MenuSettings', '').split('|'); for (var j=0; j < aSet.length; j++ ) { var aTemp = aSet[j].split('#'); aSettings[aTemp[0]] = aTemp[1]; } } GM_setValue('RunTimes',GM_getValue('RunTimes',0)+1); // Keep track of how many times we've been executed. var NPC_IP = ["0.0.0.0", "1.1.1.1", "127.0.0.1", "2.2.2.2", "243.12.1.213", "129.94.140.59", "246.185.15.208", "255.0.255.0", "124.191.123.222", "136.208.245.59", "56.195.92.143", "251.153.56.29", "57.195.92.143", "135.132.154.124", "184.182.224.6", "121.142.212.124", "19.84.229.163", "237.139.128.181", "244.2.133.183", "102.244.136.190", "254.151.123.253", "13.232.147.158", "94.87.45.87", "0.156.244.201", "242.133.164.81", "33.53.184.126", "162.51.129.169", "109.198.68.77", "71.136.63.190", "132.21.163.202", "96.128.231.240", "7.5.7.89", "16.1.233.10", "42.7.239.13", "234.86.95.202", "48.121.47.116", "142.229.199.91", "249.11.136.34", "120.92.153.170", "214.172.152.188", "119.209.47.58", "63.203.160.21", "222.65.67.51", "3.131.143.254", "17.18.111.145", "149.201.199.233", "229.31.45.38", "129.141.138.119", "91.126.151.61", "9.195.12.154", "112.43.79.120", "101.133.111.159", "206.146.24.93", "203.103.59.47", "189.23.124.7", "19.188.239.174", "255.33.234.33", "193.198.230.16", "105.133.13.108", "152.158.115.148", "81.73.86.255", "138.76.73.28", "159.229.197.164", "243.100.166.15", "66.241.98.226", "252.81.175.188", "83.230.105.121", "247.163.249.66", "29.132.103.224", "91.112.13.12", "73.137.85.78", "227.62.179.117", "173.122.175.88", "94.192.98.31", "106.71.208.142", "61.169.234.43", "144.92.41.3", "14.233.123.137", "208.193.85.97", "207.118.73.177", "160.88.2.49", "114.198.119.21", "2.158.124.111", "12.69.38.5", "118.41.15.227", "96.154.255.246", "80.77.237.134", "15.35.62.224", "238.176.102.3", "101.52.91.79", "215.119.128.38", "250.3.107.51", "49.218.89.175", "250.117.216.18", "187.161.10.38", "225.99.248.46", "69.144.46.76", "104.248.113.147", "85.148.218.87", "68.152.119.206", "220.204.61.152", "113.113.217.204", "64.223.252.221", "247.140.133.168", "67.247.218.237", "121.15.223.76", "34.170.166.53", "58.231.184.217", "140.243.173.181", "189.63.250.247", "82.82.41.237", "172.0.47.201", "236.155.42.129", "241.105.225.118", "200.60.183.92", "51.176.101.166", "239.152.83.74", "110.38.135.166", "127.115.164.138", "213.104.0.229", "171.3.251.17", "26.223.183.134", "137.0.218.12", "254.206.104.178", "103.13.127.196", "209.222.239.129", "249.85.70.54", "96.37.77.96", "160.7.44.55", "188.40.32.42", "21.26.30.22", "115.253.239.244", "21.18.35.25", "144.25.116.39", "120.101.174.253", "173.22.203.196", "11.125.146.145", "170.4.54.69", "45.68.137.16", "135.99.182.134", "9.224.178.70", "152.11.194.106", "81.58.195.224", "168.153.111.194", "165.57.86.101", "141.56.234.45", "5.81.186.49", "56.105.200.131", "54.27.17.137", "165.92.38.152", "160.204.113.34", "58.145.5.177", "6.155.226.111", "177.240.29.129", "6.100.142.172", "232.82.137.4", "164.221.47.125", "160.125.181.166", "85.71.100.215", "222.29.243.43", "135.154.119.144", "148.90.86.220", "174.58.255.90", "169.244.20.135", "34.72.193.206", "252.115.199.40", "221.83.199.24", "132.195.23.9", "35.200.115.198", "254.201.59.25", "214.192.44.89", "19.39.19.45", "67.81.5.102", "86.91.172.8", "78.95.108.51", "25.23.182.61", "64.48.99.10", "165.111.158.1"]; //////////////////////////////////////////////////////////////////////////////// // Base64 Encoded Images //////////////////////////////////////////////////////////////////////////////// var aImages = new Array(); aImages['vspam'] = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAYEBAQFBAYFBQYJBgUGCQsIBgYICwwKCgsKCgwQDAwMDAwMEAwODxAPDgwTExQUExMcGxsbHCAgICAgICAgICD/2wBDAQcHBw0MDRgQEBgaFREVGiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICD/wAARCAAQABADAREAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAABQP/xAAmEAACAgEEAAUFAAAAAAAAAAABAgMEEQUGBxIACBMUQhYhIzEy/8QAFgEBAQEAAAAAAAAAAAAAAAAAAAEC/8QAFhEBAQEAAAAAAAAAAAAAAAAAABEx/9oADAMBAAIRAxEAPwBviHhnj/Tdgw7tuUBrtoVzMxokX5JJ68pIlpuvQo/wCKFI+RJGRqonynwzxtqG2ItxRVfpyxqrZhiudatuOzalaxM7rI/55AowtfP8g9CP34lAPGnmHl0+pajaw+rVq0cUy15xVo+3o1Hb3EVanDlpLHoH1MhipAyeuG8WAjk/zJ6hq4U0IVrvplp4HoO8csE3bLxTGOWJbCSwFOjlGxkkBsH7sNf/2Q%3D%3D'; aImages['fc'] = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAYEBAQFBAYFBQYJBgUGCQsIBgYICwwKCgsKCgwQDAwMDAwMEAwODxAPDgwTExQUExMcGxsbHCAgICAgICAgICD/2wBDAQcHBw0MDRgQEBgaFREVGiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICD/wAARCAAPAA8DAREAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAwUGB//EACgQAAEDAwQBAgcAAAAAAAAAAAECAwQFBhEAEhMhBxQVIjEyM1Fhgf/EABgBAAMBAQAAAAAAAAAAAAAAAAECBQME/8QAIhEAAAYBAwUAAAAAAAAAAAAAAAECAwQSESEiMTJBYXGh/9oADAMBAAIRAxEAPwDYPIdzXKzUEUa2nUe4qbBUgfdSVdhz4hxlISPluH7GMa45Dm6t0oP7gSJzz1yba57+gW3vIrkO20zLyAhPR+qhKb2qS1lexvnabKltLVlIwEkZPXWtDmNKXVB5IVUEsklfqxqGN5UiqJmRK9b1PEuvxgqKCdm30zmSoOcj8bICvpwSQT+M6EiMTng+ASbRe+Nwj3LAve9qkmRd7KKNHYiGMqG0ORqRvdS7hwsTio8am0lO5OP7pI0JLRY5DqVkf//Z'; aImages['rddos'] = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAYEBAQFBAYFBQYJBgUGCQsIBgYICwwKCgsKCgwQDAwMDAwMEAwODxAPDgwTExQUExMcGxsbHCAgICAgICAgICD/2wBDAQcHBw0MDRgQEBgaFREVGiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICD/wAARCAAPAA8DAREAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAABgEC/8QAJBAAAQQBAwUBAQEAAAAAAAAAAwECBAUGBxESABMUISJBJDH/xAAUAQEAAAAAAAAAAAAAAAAAAAAA/8QAFREBAQAAAAAAAAAAAAAAAAAAABH/2gAMAwEAAhEDEQA/AEmrsrVLD6ONR45d+SJXTbMs05GCnLFYqEWIxxFcpHciKjOH1tsn50G9Oq7VDOMUk47leRPhLXHDISyrjNfOII4eYgEKJWo3gq/e6cl/zpQgzSomamyLKqWq8EmJWAViWCSGtlkJ6e7xyNa5Aoo13+kX3t66C4lGk6Wx6bHA0bJT78ks0iSKQ3vocSKX+gj0b3l7eyck/fzboP/Z'; //////////////////////////////////////////////////////////////////////////////// // Helper Functions //////////////////////////////////////////////////////////////////////////////// //// // Let the script pause for x ms function SleepTimer(ms){ var zeit=(new Date()).getTime(); var stoppZeit=zeit+ms; while((new Date()).getTime()<stoppZeit){}; } //// // Check if IP is a NPC function checkIsNPC (sIp) { for (var o = 0; o < NPC_IP.length; o++ ) { if ( NPC_IP[o] == sIp ) { return true; } } return false; } //// // Parse IPs from string and sort out npcs, own ip, double ips and already known slaves // Added highlighting of IP's // Added highlighting of Date/Time function ParseLog(sInput, type) { var aTemp = new Array(); var aTemp2 = new Array(); var aTemp3 = new Array(); var check; // Transform Date/Time into elapsed Time if ( type=='highlight' ) { var regExp = /(\d+)-(\d+)-(\d+) (\d+):(\d+)/gm; var m = sInput.match(regExp); if (m != null) { for ( var k = 0; k <= 1; k++) { if (k == 0) { // sort out double times aTemp = m; aTemp2 = new Array(); aTemp3 = new Array(); } else if (k == 1) { // highlight times aTemp = aTemp3; aTemp2 = new Array(); aTemp3 = new Array(); } for ( var j = 0; j < aTemp.length; j++) { check = 0; for (i = 0; i < aTemp2.length; i++) { if ( aTemp2[i] == aTemp[j] ) { check = 1; } } if ( check == 0 ) { if ( k == 0) { aTemp3[aTemp3.length] = aTemp[j]; aTemp2[aTemp2.length] = aTemp[j]; } else if ( k == 1 ) { // ' + aTemp[j] + ' sInput = sInput.replace(new RegExp(aTemp[j], "gm" ) ,' <b>(' + DisplayTimeDiff(Math.floor(SHTime/60000)*60000-ParseTime(aTemp[j])) + ')</b> ago'); } } } } } } var regExp = /(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/gm; var m = sInput.match(regExp); if (m != null) { for (var k = 0; k <= 3; k++) { if (k == 0) { // sort out double ips aTemp = m; aTemp2 = new Array(); aTemp3 = new Array(); } else if (k == 1) { // sort out npcs and own ip aTemp = aTemp3; aTemp2 = NPC_IP; aTemp2[aTemp2.length] = MyIP; aTemp3 = new Array(); } else if (k == 2) { // sort out already known potential slaves aTemp = aTemp3; aTemp2 = GM_getValue('PotentialSlaves', '').split('|'); aTemp3 = new Array(); } else if (k == 3) { // sort out own slaves aTemp = aTemp3; aTemp2 = GM_getValue('AllSlaves', '').split('|'); aTemp3 = new Array(); } for ( var j = 0; j < aTemp.length; j++) { check = 0; for ( var i = 0; i < aTemp2.length; i++) { aTemp2[i] = ((k==3) ? aTemp2[i].split('#')[0] : aTemp2[i]); if ( aTemp2[i] == aTemp[j] ) { check = 1; } } if ( type=='highlight' && k>0 && check==1 ) { if ( k == 1 ) { var hlc = ((aTemp[j] == MyIP) ? 'green' : '#FF33FF'); } else if ( k == 2 ) { var hlc = 'red'; } else if ( k == 3 ) { var hlc = 'blue'; } sInput = sInput.replace(new RegExp(aTemp[j], "gm" ) ,' <a href="index2.php?page=internet&var2=' + aTemp[j] + '"><font style="color: ' + hlc + '; font-weight: bold;">' + aTemp[j] + '</font></a> '); } if ( check==0 ) { aTemp3[aTemp3.length] = aTemp[j]; if (k == 0) { aTemp2[aTemp2.length] = aTemp[j]; } } } } } if ( type=='highlight' ) { return sInput; } else if (type=='collect' && m != null) { GM_setValue('PotentialSlaves', GM_getValue('PotentialSlaves', '') + ((GM_getValue('PotentialSlaves', '') == '' || aTemp3.length == 0) ? '' : '|') + aTemp3.join('|')); if ( aTemp3.length > 0 ) { GM_log('New Pot. Slaves: ' + aTemp3.join('|')); } } } //// // Function to keep track of our Slaves function manageSlaves(sIp, aData, sAction, sTyp) { if ( sTyp == 'slave' ) { var aAllSlaves = GM_getValue('AllSlaves', '').split('|'); } else if ( sTyp == 'files' ) { var aAllSlaves = GM_getValue('AllSlaveApps', '').split('|'); } var aOut = new Array(); var found = false; var delIP = ''; // check if ip is in list for ( var j = 0; j < aAllSlaves.length; j++) { var aTemp = aAllSlaves[j].split('#'); if ( aTemp[0] == sIp && (sAction == 'update' || sAction == 'get') ) { found = j; break; } if ( (aTemp[0] != sIp && sAction == 'delete' && aData == '') || (aTemp[6] != sIp && sAction == 'delete' && aData == 'id') ) { aOut[aOut.length] = aAllSlaves[j]; } else if ( sAction == 'delete' ) { GM_log('deleted: ' + aAllSlaves[j]); // debug show deleted entry delIP = aTemp[0]; } } if ( sAction == 'update' ) { if ( sTyp == 'slave' ) { // 0: IP, 1: PW, 2: V1, 3: V2, 4: V3, 5: Typ var regExp = / \d{1}\.\d{1}/; if ( aData != '' ) { aOut[0] = sIp; aOut[1] = ((aData[2] == '<i>No Spam virus</i>' ) ? '0' : ((aData[2].match(regExp) != null) ? aData[2].match(regExp)[0].replace(' ', '') : '0')); aOut[2] = ((aData[3] == '<i>No DDoS virus</i>' ) ? '0' : ((aData[3].match(regExp) != null) ? aData[3].match(regExp)[0].replace(' ', '') : '0')); aOut[3] = ((aData[4] == '<i>No sharewarez virus</i>' ) ? '0' : ((aData[4].match(regExp) != null) ? aData[4].match(regExp)[0].replace(' ', '') : '0')); aOut[4] = ((aData[5] == 'Spam relay ' ) ? 'S' : ((aData[5] == 'DDoS bot' ) ? 'D' : ((aData[5] == 'File Share' ) ? 'W' : 'N'))); aOut[5] = ((found == false) ? SHTime : ((aAllSlaves[j].split('#')[5] != 'undefined') ? aAllSlaves[j].split('#')[5] : SHTime)); aOut[6] = ((aData[7] != '' ) ? (aData[7].match(/DELETE=\d+/gm)[0].split('=')[1]) : (aAllSlaves[j].split('#')[6])); } else { aOut = new Array(sIp, '', '', '', '', SHTime, ''); //GM_log('updated: ' + aOut.join('#')); } //GM_log(aOut.join('#')); if ( found != false) { aAllSlaves[found] = aOut.join('#'); } else { aAllSlaves[aAllSlaves.length] = aOut.join('#'); } GM_setValue('AllSlaves', aAllSlaves.join('|')); } else if ( sTyp == 'files' ) { // 0: IP, 1: MBIT, 2: Money/h, 3: apps, 4: viruses, 5: last update, 6: GSname // Move Virus app to Active Viruses if activated if ( aData[0] == 'app2vir' ) { //manageSlaves(ConnectedToIP, new Array('app2vir', aTemp[0], aTemp[1]), 'update', 'files'); if ( found != false ) { var aTemp = aAllSlaves[found].split('#'); var aApp = ((aTemp[3] != '') ? aTemp[3].split('@') : '' ); var aVir = ((aTemp[4] != '') ? aTemp[4].split('@') : '' ); if ( aApp != '' ) { if ( aTemp[3] != (aData[1] + ' ' + aData[2]) ) { var aNew = new Array(); for (var j=0; j<aApp.length; j++) { var aApps = aApp[j].split(' '); if ( aApps[0] == aData[1] && aApps[1] == aData[2] ) {} else { aNew[aNew.length] = aApp[j]; } } aTemp[3] = ''; aTemp[3] = aNew.join('@'); } else { aTemp[3] = ''; } if ( aVir != '' ) { aTemp[4][aTemp[4].length] = aData[1] + ' ' + aData[2]; var aNew = new Array(); aNew['vspam'] = new Array(); aNew['vshare'] = new Array(); aNew['vddos'] = new Array(); var added = false; for (var j=0; j<aVir.length; j++) { var aVirs = aVir[j].split(' '); aNew[aVirs[0]][aNew[aVirs[0]].length] = aVir[j]; } aNew[aData[1]][aNew[aData[1]].length] = aData[1] + ' ' + aData[2]; aNew[aData[1]].sort(); aNew[aData[1]].reverse(); aTemp[4] = aNew['vspam'].join('@'); if ( aTemp[4] == '' ) { aTemp[4] = aNew['vshare'].join('@'); } else if ( aNew['vshare'].join('@') != '' ) { aTemp[4] = aTemp[4] + '@' + aNew['vshare'].join('@'); } if ( aTemp[4] == '' ) { aTemp[4] = aNew['vddos'].join('@'); } else if ( aNew['vddos'].join('@') != '' ) { aTemp[4] = aTemp[4] + '@' + aNew['vddos'].join('@'); } } else { aTemp[4] = aData[1] + ' ' + aData[2]; } aAllSlaves[found] = aTemp.join('#'); GM_setValue('AllSlaveApps', aAllSlaves.join('|')); } } return ''; } else { aOut[0] = sIp; for ( var i = 1; i <= 6; i++) { aOut[i] = ((aData[i] != '') ? aData[i] : ((found != false) ? (aAllSlaves[found].split('#')[i]) : '' )); } if ( found != false) { aAllSlaves[found] = aOut.join('#'); } else { aAllSlaves[aAllSlaves.length] = aOut.join('#'); } GM_setValue('AllSlaveApps', aAllSlaves.join('|')); } } } if ( sAction == 'get' ) { if ( found != false) { return aAllSlaves[found]; } else { return ''; } } if ( sAction == 'delete' ) { if ( sTyp == 'slave' ) { GM_setValue('AllSlaves', aOut.join('|')); if ( aData == 'id' ) { manageSlaves(delIP, '', 'delete', 'files'); } } else if ( sTyp == 'files' ) { GM_setValue('AllSlaveApps', aOut.join('|')); } } } //// // Calculate Up/Download time // Accuracy ~95% function getUpDownloadTime(iSize, iSpeed, sOutput) { var iSec = parseInt(iSize.replace(/(0\.00|0\.0|0\.|\.)/gm, '')*(1000/iSpeed)*1.045+3); if ( sOutput == 'sec' ) { return iSec; } var iMin = 0; var iHou = 0; while ( iSec >= 60 ) { iMin = iMin +1; iSec = iSec - 60; } while ( iMin >= 60 ) { iHou = iHou + 1; iMin = iMin - 60; } return ((iHou>0) ? (iHou + 'h') : '') + ((iMin>0) ? (((iHou>0) ? ' ' : '') + iMin + 'm') : '') + ((iSec>0) ? (((iHou>0 || iMin>0) ? ' ' : '') + iSec + 's') : ''); } //// // Parse human readable time into javascript format. function ParseTime(str) { // Time as shown is UTC+2, but since we're using the same ParseTime function, // it shouldn't matter as we're just doing time differences // As a side effect, returns current time if we can't parse the time. // This is intentional, as it's the best "sane" value to default to. (but still not "good") if ( str != '' && typeof str != 'undefined' ) { var retval = new Date(); var reTime = /(\d+)-(\d+)-(\d+) (\d+):(\d+):(\d+)\.(\d+)/; if (str.match(reTime)) { var match = reTime.exec(str); retval.setMilliseconds(match[7]); retval.setSeconds(match[6]); retval.setMinutes(match[5]); retval.setHours(match[4]); retval.setDate(match[1]); retval.setMonth(match[2]); retval.setFullYear(match[3]); return retval.getTime(); } reTime = /(\d+)-(\d+)-(\d+) (\d+):(\d+):(\d+).(\d+)/; if (str.match(reTime)) { var match = reTime.exec(str); retval.setMilliseconds(0); retval.setSeconds(match[6]); retval.setMinutes(match[5]); retval.setHours(match[4]); retval.setDate(match[1]); retval.setMonth(match[2]); retval.setFullYear(match[3]); return retval.getTime(); } reTime = /(\d+)-(\d+)-(\d+) (\d+):(\d+)/; if (str.match(reTime)) { var match = reTime.exec(str); retval.setMilliseconds(0); retval.setSeconds(0); retval.setMinutes(match[5]); retval.setHours(match[4]); retval.setDate(match[1]); retval.setMonth(match[2]); retval.setFullYear(match[3]); return retval.getTime(); } return retval.getTime(); } else { return ''; } } //// // Display Time diff in a human readable form function DisplayTimeDiff(diff) { var ret = ''; diff = Math.abs(diff); // Milliseconds, if applicable if (diff%1000 > 0) { if (diff%1000 < 10) { ret = '.00'+diff%1000; } else if (diff%1000 < 100) { ret = '.0'+diff%1000; } else { ret = '.'+diff%1000; } } diff=Math.floor(diff/1000); // Seconds if ((diff%60 == 0) && (ret=='')) { // Do nothing } else if (diff%60 < 10) { ret = ':0' + (diff%60) + ret; } else { ret = ':' + (diff%60) + ret; } diff=Math.floor(diff/60); // Minutes if (diff%60 < 10) { ret = '0' + (diff%60) + ret; } else { ret = '' + (diff%60) + ret; } diff=Math.floor(diff/60); // Hours if (diff%24 < 10) { ret = '0' + (diff%24) + ':' + ret; } else { ret = '' + (diff%24) + ':' + ret; } diff=Math.floor(diff/24); // Days if applicable if (diff == 1) { ret = ''+diff+' day ' + ret; } else if (diff > 1) { ret = ''+diff+' days ' + ret; } return ret; } //////////////////////////////////////////////////////////////////////////////// // The Code //////////////////////////////////////////////////////////////////////////////// //// // Place a Table beside slavehack logo to manage the settings { var regExp = /layout2_logo\.jpg/gm; var allImg = document.getElementsByTagName('img'); var doOnce = 0; for (var i = 0; i < allImg.length; i++) { var m = allImg[i].src.match(regExp); if (m != null) { if ( doOnce == 0 ) { var sTableRow1 = '<td width="50" align="center"><b>-SHU-</b></td><td width="20"></td><td>Auto Submit</td><td width="20"></td><td>Auto Continue</td>'; var sTableRow2 = '<td><b>Menu</b></td><td></td><td><div id="submit" style="font-weight:bold; color:' + ((aSettings['submit']==1) ? '#00FF00' : '#FF0000') + '">' + ((aSettings['submit']==1) ? 'On' : 'Off') + '</div><td></td><td><div id="continue" style="font-weight:bold; color:' + ((aSettings['continue']==1) ? '#00FF00' : '#FF0000') + '">' + ((aSettings['continue']==1) ? 'On' : 'Off') + '</div></td>'; var sTableRow = '<table cellpadding="0" border="0" cellspacing="0"><tr align="center"><td rowspan="2" valign="top"><img src="templates/layout2_logo.jpg"></td><td width=40></td>' + sTableRow1 + '</tr><tr align=center><td></td>' + sTableRow2 + '</tr></table>'; newElement = document.createElement('div'); newElement.innerHTML = sTableRow; doOnce = 1; allImg[i].parentNode.insertBefore(newElement, allImg[i]); } else if ( doOnce == 1 ) { doOnce = 2; allImg[i].style.display = 'none'; } } } } //// // Switch settings on/off function changeSettings(sTyp) { var sSettings = GM_getValue('MenuSettings', ''); if ( sSettings.match(sTyp) ) { var aSet = sSettings.split('|'); for (var i = 0; i < aSet.length; i++) { var aTemp = aSet[i].split('#'); if ( aTemp[0] == sTyp ) { aSet[i] = sTyp + '#' + ((aTemp[1] == 1) ? 0 : 1); } } sSettings = aSet.join('|'); } else { sSettings = sSettings + ((sSettings != '' ) ? '|' : '') + sTyp + '#1'; } document.getElementById(sTyp).innerHTML = ((document.getElementById(sTyp).innerHTML == 'On') ? 'Off' : 'On'); document.getElementById(sTyp).style.color = ((document.getElementById(sTyp).innerHTML == 'On') ? '#00FF00' : '#FF0000'); aSettings[sTyp] = ((document.getElementById(sTyp).innerHTML == 'On') ? '1' : '0'); GM_setValue('MenuSettings', sSettings); } //// // Settings Eventlistener document.addEventListener('click', function(event) { target = event.target; //GM_log(target.nodeName); if (target.nodeName == 'DIV') { if (target.id == 'submit' || target.id == 'continue') { changeSettings(target.id); } } }, true); //// // Get our IP and put it on the MyIP var { var allSmall = document.getElementsByTagName('small'); // For each <small> tag for (var i = 0; i < allSmall.length; i++) { // If it contains Computer time: ..., retrieve and set data for later use var thisSmall = allSmall[i]; var re = /Computer\s(time|time\sformat):\s(\d+)\sStandard\s(time|time\sformat):\s(.*)\s\[(.*?)(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})(.*?)\]/gm; var thisMatch = re.exec(thisSmall.innerHTML); if (thisSmall.innerHTML.match(re)) { MyIP = thisMatch[6]; SHTime = Math.floor(ParseTime(thisMatch[4])/1000+(thisMatch[2]%60))*1000; // Add last Captcha time var TimeDiff = Math.abs((Math.floor(SHTime/1000)-GM_getValue("LastCaptcha", SHTime)))*1000; if (TimeDiff >= 19*60*1000) { // If more than 19 minutes since last captcha, turn red thisSmall.innerHTML = thisSmall.innerHTML + " <span id=\"LastCaptcha\" style=\"color: red;\">Last captcha: " + (DisplayTimeDiff(TimeDiff))+"</span>"; } else { thisSmall.innerHTML = thisSmall.innerHTML + " <span id=\"LastCaptcha\">Last captcha: " + (DisplayTimeDiff(TimeDiff))+"</span>"; } function CaptchaClock() { var TimeDiff = Math.abs((Math.floor((SHTime+((new Date()).getTime()-StartTime))/1000)-GM_getValue("LastCaptcha", SHTime)))*1000; document.getElementById("LastCaptcha").innerHTML="Last captcha: " + (DisplayTimeDiff(TimeDiff)); if (TimeDiff >= 19*60*1000) { // If more than 19 minutes since last captcha, turn red document.getElementById("LastCaptcha").style.color = "red"; } else { document.getElementById("LastCaptcha").style.color = "white"; } } window.setInterval(CaptchaClock, 1000); // Tick once per second // Theoretically, there is a good chance of an unsmooth update every so often, but not worth the cpu cost to fix by ticking 10 times per second instead of once. } } } //// // Some generic countermeasures, only runs for dedicated users or people who look here if (GM_getValue('RunTimes',0) > 1000) { var allScript = document.getElementsByTagName('script'); // For each <script> tag for (var i = 0; i < allScript.length; i++) { var thisScript = allScript[i]; var re = /function (.+)\(\) \{ if\(document\.body\.innerHTML\.indexOf/; var thisMatch = re.exec(thisScript.innerHTML); if (thisScript.innerHTML.match(re)) { unsafeWindow[thisMatch[1]] = function() {}; } } clicked = false; document.addEventListener('click', function(event) { clicked = true; }, true); if (Math.abs(GM_getValue('LastRunTime',0)-parseInt(StartTime/1000))>3600) { document.addEventListener('onbeforeunload', function(event) { if (!clicked) { return 'Document is trying to navigate away without user interaction. This may be due to anti-shu measures. It is recommended that you disable SHU, report this, and check for updates. Pressing cancel will avoid detection.'; } }, true); } } //// // Check if we've been captcha'ed { var allImg = document.getElementsByTagName('img'); for (var i = 0; i < allImg.length; i++) { if (allImg[i].src.match(/workimage.php\?(rand|random)=/gm)) { isCaptcha = true; } } } //// // Save last Captcha time if (isCaptcha || document.body.innerHTML.match('<script type="text/javascript" src="http://api.recaptcha.net/challenge?')) { GM_setValue("LastCaptcha", Math.floor(SHTime/1000)); GM_setValue("CaptchaSolved",0); // Set the captcha timer to unload time rather than load time. If this event doesn't fire, we still have load time set. window.addEventListener("unload", function(event) { if (GM_getValue("CaptchaSolved",0)==0) // Catch race conditions if multiple copies of the captcha are opened, only count from the first solution. { GM_setValue("LastCaptcha", Math.floor((SHTime+((new Date()).getTime()-StartTime))/1000)); GM_setValue("CaptchaSolved",1); } }, false); } else { // no chaptcha - start //// // Always display "collect income" on slaves list // Automatically resubmit failed password cracking { var allA = document.getElementsByTagName('a'); // For each <a> tag for (var i = 0; i < allA.length; i++) { if (allA[i].href.substr(allA[i].href.indexOf('/index2.php?page=software'))=='/index2.php?page=software') { allA[i].innerHTML='Main HDD'; } if (allA[i].href.substr(allA[i].href.indexOf('/index2.php?page=slaves'))=='/index2.php?page=slaves') { allA[i].href='/index2.php?page=slaves'; allA[i].innerHTML='Slaves List'; } //http://www.slavehack.com/index2.php?page=internet&var2=174.58.255.90&var3=crack&var4= if ( allA[i].innerHTML.match('Try again') ) { window.location.href = allA[i].href; } /*if ( allA[i].href.match(/\?page=internet&var2(.*?)&action=crack$/) ) { // (OLD VERSION) allA[i].href = allA[i].href + '&crack=true'; }*/ } } //// // Auto-Continue if ( aSettings['continue'] == 1 ) { var continueScript = document.createElement('script'); continueScript.type = 'text/javascript'; var sContScript = '' + 'if ( document.getElementsByTagName("script").length > 0 ) {\n' + ' function continueFunction() {\n' + ' var allForm = document.getElementsByTagName("form");\n' + ' var sFound = 0;' + ' for (var i = 0; i < allForm.length; i++) {\n' + ' if ( allForm[i].innerHTML.match("Continue") ) {\n' + ' allForm[i].submit();\n' + ' sFound = 1;\n' + ' }\n' + ' }\n' + ' if ( sFound == 0 ) {\n' + ' window.setTimeout("continueFunction()", 100);\n' + ' }\n' + ' }\n' + ' window.setTimeout("continueFunction()", 100);' + '}\n'; continueScript.innerHTML = sContScript; document.getElementsByTagName('head')[0].appendChild(continueScript); } //// // Check if current ip is in potential slave list and if yes delete it from the list // http://www.slavehack.com/index2.php?gow=74.198.141.249&page=internet var regExp = /(\?page=internet\&var2=(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}))/gm; if ((window.location.href.match(regExp))) { var aTemp = GM_getValue('PotentialSlaves', '').split('|'); var aTemp2 = new Array(); var regExp = /(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/; var m = window.location.href.match(regExp); if (m != null) { for (var i = 0; i < aTemp.length; i++) { if ( aTemp[i] != m[0] ) { aTemp2[aTemp2.length] = aTemp[i]; } } GM_setValue('PotentialSlaves', aTemp2.join('|')); } } //// // Move IP tp potential slaves list if wwl is too low if ( document.body.innerHTML.match('You cannot crack this system, a firewall is active and you haven\'t got a firewall bypasser which is good enough for this firewall.') ) { var thisIP = window.location.href.match(/(\d+\.\d+\.\d+\.\d+)/); if ( thisIP != null ) { if ( checkIsNPC(thisIP[0]) == false ) { var sTemp = GM_getValue('PotentialSlaves', ''); sTemp = sTemp + ((sTemp == '') ? '' : '|') + thisIP[0]; GM_setValue('PotentialSlaves', sTemp); } } } //// // Create new link to slave Files, next to Internet link var allTD = document.getElementsByTagName('A'); // For each <td> tag for (var i = 0; i < allTD.length; i++) { if (allTD[i].innerHTML==('Internet')) { //GM_log(allTD[i].parentNode.innerHTML); /////////////////////////////////////////// // WHOIS LIST /////////////////////////////////////////// extra = "<strong>WHOIS Servers</strong>"; extra += "<li> <a href='index2.php?var2=1.1.1.1&page=internet'>WHOIS 1 [Louis]</a></li>"; extra += "<li> <a href='index2.php?var2=132.21.163.202&page=internet'>WHOIS 2 [Fav]</a></li>"; extra += "<li> <a href='index2.php?var2=152.158.115.148&page=internet'>WHOIS 3 [Alex]</a></li>"; // BANKS extra += "<br /><strong>Banks</strong>"; // banks! extra += "<li> <a href='index2.php?var2=135.132.154.124&page=internet'>Ypesteiner [135]</a></li>"; extra += "<li> <a href='index2.php?var2=33.53.184.126&page=internet'>Ratepel [33]</a></li>"; extra += "<li> <a href='index2.php?var2=71.136.63.190&page=internet'>Mounstar [71]</a></li>"; extra += "<li> <a href='index2.php?var2=63.203.160.21&page=internet'>Cenmyr [63]</a></li>"; extra += "<li> <a href='index2.php?var2=207.118.73.177&page=internet'>Esmob [207]</a></li>"; extra += "<li> <a href='index2.php?var2=121.15.223.76&page=internet'>Schiedam [121]</a></li>"; /////////////////////////////////////////// // EXTRA LINKS extra += "<br />"; // extra += "<li> <a href='index2.php?var2=&page=internet'>Link Name</a></li>"; extra += "<strong>Misc Links</strong>"; extra += "<li> <a href='index2.php?var2=152.11.194.106&page=internet'>Buy a GS</a></li>"; extra += "<li> <a href='index2.php?page=mycomputer&var2=changepass&var3=&var4='>Reset PW</a></li>"; // No user editable sections below extra += "<br /><br />"; ////////////////////////////////////////// END allTD[i].parentNode.innerHTML = allTD[i].parentNode.innerHTML.replace('<br>', '').replace('<br>', '') + '- <a href="http://www.slavehack.com/index2.php?page=internet&var3=files">Files</a><br /><br />'+extra; } if (allTD[i].innerHTML==('Slaves List')){ // Slaves options... ext = ""; ext += "<li> <a href='index2.php?page=slaves&collect=1&slave=all'>Collect all</a></li>"; ext += "<li> <a href='index2.php?page=slaves&ddos=1'>Launch DDoS</a></li>"; ext += "<br />"; allTD[i].parentNode.innerHTML = allTD[i].parentNode.innerHTML.replace('<br>', '').replace('<br>', '') +ext; } if (allTD[i].innerHTML==('Main HDD')){ ext2 = ""; ext2 += "<li> <a href='index2.php?page=softwareext'>External HDD</a></li>"; ext2 += "<li> <a href='index2.php?page=logs&var3=&aktie=&var2=&editlog=%20'>Clear Home Logs</a></li>"; allTD[i].parentNode.innerHTML = allTD[i].parentNode.innerHTML.replace('<br>', '').replace('<br>', '') +ext2; } } //// // Calculate €/(Mhz|Gb|Mbit) for every Hardware if (window.location.href.match('page=hardware&var5=')) { var allTR = document.getElementsByTagName('tr'); var found = false; if ( window.location.href.match('var5=HD') || window.location.href.match('var5=extgb') ) { var sTyp = 'Gb'; } else if ( window.location.href.match('var5=cpu') ) { var sTyp = 'Mhz'; } else if ( window.location.href.match('var5=connection') ) { var sTyp = 'Mbit'; } for (var i = 0; i < allTR.length; i++) { if ( found == true ) { var sTemp = allTR[i].innerHTML; regExp = /((\d+)|(\d+)\s(\d+))\.(\d+)\s(Gb|Mbit|Mhz)/gm; var iSize = parseFloat(sTemp.match(regExp)[0].replace(' ', '').replace(' ', '').replace(sTyp, '')); regExp = /((\d+)|(\d+)\s(\d+))\s(\d+)\seuros/gm; var iPrice = parseFloat(sTemp.match(regExp)[0].replace(' ', '').replace(' ', '').replace('euros', '')); var iPricePerSize = (iPrice/iSize).toFixed(2); allTR[i].innerHTML = allTR[i].innerHTML + '<td></td><td>' + iPricePerSize + '</td>'; } if ( allTR[i].innerHTML == '<td><b>Name</b></td><td><b>Stock</b></td><td><b>Capacity</b></td><td width="10"></td><td align="right"><b>Price</b></td>' || allTR[i].innerHTML == '<td><b>Name</b></td><td><b>Stock</b></td><td><b>Speed</b></td><td width="10"></td><td align="right"><b>Price</b></td>' ) { allTR[i].innerHTML = allTR[i].innerHTML + '<td></td><td width="30"></td><td><b>€ / ' + sTyp + '</b></td>'; found = true; } } } //// // Let us know if this is a VPC or NPC // Added links to next and previous npc // Added link to Next PotentialSlaves IP if (window.location.href.match(/page=internet/)) { var allInput = document.getElementsByTagName('input'); var npcNum = ''; var aPotTemp = GM_getValue('PotentialSlaves', '').split('|'); var sPotTemp = '<font color="#000000" size="-2">PS: '; if ( aPotTemp.length >= 1 && aPotTemp[0] != '' ) { sPotTemp = sPotTemp + '<a href="http://www.slavehack.com/index2.php?page=internet&var2=' + ((aPotTemp.length > 0) ? aPotTemp[0] : '') + '">Next</a> ['+aPotTemp.length+']' + ((aPotTemp.length-numPotSlaves > 0) ? ' (+' + (aPotTemp.length-numPotSlaves) + ')' : '') + '</font>'; } else { sPotTemp = sPotTemp + 'No more left :(</font>'; } for (var i = 0; i < allInput.length; i++) { if (allInput[i].name == 'var2') { var isNPC = false; for (var j = 0; j < NPC_IP.length; j++) { isNPC = isNPC || (allInput[i].value == NPC_IP[j]); if ( isNPC && npcNum == '' ) { npcNum = j; } var ConnectedToIP = allInput[i].value; } // Remove entry form AllSlaveApps if there is no VPC running any more var regExp = /There is no webservice running at \<u\>(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/gm; if ( document.body.innerHTML.match(regExp) != null ) { manageSlaves(ConnectedToIP, '', 'delete', 'files'); } // Check if PW has been Cracked, if yes add ip to GM AllSlaves if ( document.body.innerHTML.match('You cracked and decrypted the password.') != null ) { manageSlaves(ConnectedToIP, '', 'update', 'slave'); } // Check if Virus has been activated, if yes update GM AllSlaves if ( document.body.innerHTML.match('Virus install finished !') != null ) { var regExp = /(vspam|vddos|vshare)\s(\d{1}\.\d{1})/gm; var m = document.body.innerHTML.match(regExp); if ( m != null ) { var thisSlave = manageSlaves(ConnectedToIP, '', 'get', 'slave').split('#'); var aTemp = m[0].split(' '); thisSlave[0] = ConnectedToIP; thisSlave[2] = ((aTemp[0] == 'vspam') ? m[0] : '<i>No Spam virus</i>'); thisSlave[3] = ((aTemp[0] == 'vddos') ? m[0] : '<i>No DDoS virus</i>'); thisSlave[4] = ((aTemp[0] == 'vshare') ? m[0] : '<i>No sharewarez virus</i>'); thisSlave[5] = ''; thisSlave[6] = ''; thisSlave[7] = ''; //thisSlave[5] = ((aTemp[0] == 'vspam' ) ? 'Spam relay ' : ((aTemp[0] == 'vddos' ) ? 'DDoS bot' : ((aTemp[0] == 'vshare' ) ? 'File Share' : 'N'))); manageSlaves(ConnectedToIP, thisSlave, 'update', 'slave'); //Move Virus App to Virus active manageSlaves(ConnectedToIP, new Array('app2vir', aTemp[0], aTemp[1]), 'update', 'files'); } } var allh1 = document.getElementsByTagName('h1'); var regExp = /\<img src=.?layout\/theinternet\.jpg.?\>/gm for (var i = 0; i < allh1.length; i++) { //if(allh1[i].innerHTML.search(regExp) >= 0 && allh1[i].innerHTML.search(regExp) < 50) { if(allh1[i].innerHTML == 'Internet') { var sVpcNpc = ''; if (isNPC) { var nextNPC = ''; var prevNPC = ''; if (npcNum > 1) { prevNPC = ' - <a href="http://www.slavehack.com/index2.php?page=internet&var2='+NPC_IP[(npcNum-1)]+'"><<</a>'; } if (npcNum < NPC_IP.length-1) { nextNPC = ' - <a href="http://www.slavehack.com/index2.php?page=internet&var2='+NPC_IP[(npcNum+1)]+'">>></a>'; } sVpcNpc = "<font color=\"#000080\" size=\"-2\"><b>NPC " + npcNum + prevNPC + nextNPC + "</b></font>"; } else { sVpcNpc = "<font color=\"#008000\" size=\"-2\"><b>VPC</b></font>"; } // Display slave status in right Internet corner var isSlave = manageSlaves(ConnectedToIP, '', 'get', 'slave'); sStatus = '<table cellspacing="0" cellpadding="0" border="0" align="right" style="font-family: Verdana; font-size: 10px; color: #000000;"><tr align="center">'; if ( isSlave != '' ) { var aTemp = isSlave.split('#'); //GM_log('is slave: ' + isSlave); if ( aTemp[1] > 0 ) { aTemp[1] = ((aTemp[4]=='S') ? ('<font style="background-color:#B5FFB3; font-weight: bold;">' + aTemp[1] + '</font>') : aTemp[1]); sStatus = sStatus + '<td width="30" style="border-right: 2px solid #333333;"><img border="0" src="' + aImages['vspam'] + '"><br>' + aTemp[1] + '</td>'; } if ( aTemp[2] > 0 ) { aTemp[2] = ((aTemp[4]=='D') ? ('<font style="background-color:#B5FFB3; font-weight: bold;">' + aTemp[2] + '</font>') : aTemp[2]); sStatus = sStatus + '<td width="30" style="border-right: 2px solid #333333;"><img border="0" src="' + aImages['rddos'] + '"><br>' + aTemp[2] + '</td>'; } if ( aTemp[3] > 0 ) { aTemp[3] = ((aTemp[4]=='W') ? ('<font style="background-color:#B5FFB3; font-weight: bold;">' + aTemp[3] + '</font>') : aTemp[3]); sStatus = sStatus + '<td width="30" style="border-right: 2px solid #333333;"><img border="0" src="' + aImages['fc'] + '"><br>' + aTemp[3] + '</td>'; } // 0: IP, 1: MBIT, 2: Money/h, 3: apps, 4: viruses, 5: last update var SlaveApps = manageSlaves(ConnectedToIP, '', 'get', 'files'); if ( SlaveApps != '' ) { var aTemp2 = SlaveApps.split('#'); if ( aTemp2[1] != '' ) { sStatus = sStatus + '<td width="40" style="border-right: 2px solid #333333;"><b>MBit</b><br>' + aTemp2[1] + '</td>'; } if ( aTemp2[2] != '' ) { sStatus = sStatus + '<td width="55" style="border-right: 2px solid #333333;"><b>euros/h</b><br>' + aTemp2[2] + '</td>'; } } sStatus = sStatus + '<td width="90"><b>Slaved:</b><br>' + DisplayTimeDiff(SHTime-aTemp[5]) + '</td>'; } sStatus = sStatus + '</tr></table>'; var sTable = '<table cellspacing="0" cellpadding="3" border="0" width="600" style="background-color:#FFFFFF; color: #000000;"><tr><td width="5" rowspan="2"></td><td width="200">'; sTable = sTable + sVpcNpc + '</td><td align="right" rowspan="2">' + sStatus + '</td></tr><tr><td>' + sPotTemp + '</td></table>'; var thisTable = document.createElement('div'); thisTable.innerHTML = sTable; allh1[i].parentNode.insertBefore(thisTable, allh1[i].nextSibling); break; } } } } } //// // LOGFILE // Remove any line with our IP from foreign log files. // Autosubmit if we removed our IP // Scan for unknown IPs in the logfile // Buggy: Remove text over log file <form> disappear mysteriously // Replace Textarea with a DIV for better Highlighting // Added Clear logfile button if ((window.location.href.indexOf('var3=log') >= 0) || (window.location.href.indexOf('page=logs') >= 0) || (window.location.href.match(/page=internet$/))) { var MyIPInLog = false; // Remove text over logfile var allDIV = document.getElementsByTagName('div'); for (var i = 0; i < allDIV.length; i++) { //GM_log(allDIV[i].innerHTML); if ( allDIV[i].innerHTML.match('<h1>Log file</h1>') ) { allDIV[i].innerHTML = allDIV[i].innerHTML.replace(/\<h1\>Log\sfile\<\/h1\>(.*?)The\slogfile\scan\snot\sexceed\s1\sGb\.\<br\>/gm, '<h1>Log file</h1>'); } } // Search Textarea var allTextareas = document.getElementsByTagName('textarea'); for (var i = 0; i < allTextareas.length; i++) { var thisTextarea = allTextareas[i]; if (thisTextarea.rows > 1) { thisTextarea.rows = 15; var sTemp = thisTextarea.value; MyIPInLog = MyIPInLog || (thisTextarea.value.indexOf(MyIP) >= 0); thisTextarea.value = thisTextarea.value.replace(new RegExp( "^.*"+MyIP+".*(\n|$)", "gm" ) ,""); // This fixes the bug where \ becomes \\ and counts against you in edit time. thisTextarea.value.replace(/\\\\/g, "\\"); // Check for unknown IPs ParseLog(thisTextarea.value, 'collect'); // Add Clear Log beside Edit Log var allInput = document.getElementsByTagName('input'); for (var j = 0; j < allInput.length; j++) { if ( allInput[j].type == 'submit' && allInput[j].value == ' Edit logfile ' ) { //GM_log(allInput[j].type); var clearLog = document.createElement('input'); clearLog.type = 'button'; clearLog.value = ' Clear logfile '; clearLog.addEventListener('click', function(event) { thisTextarea.value = ''; var allForms = document.getElementsByTagName('form'); for (var i = 0; i < allForms.length; i++) { if ((allForms[i].method=='post') && (allForms[i].style[0]!="visibility")) { allForms[i].submit(); } } }, true); allInput[j].parentNode.insertBefore(clearLog, allInput[j].nextSibling); } } if (MyIPInLog) { var Message = document.createElement('div'); Message.innerHTML = '<div style="font-size: large; color: #ff0000;">Own IP removed, submit changes.</div>'; thisTextarea.parentNode.insertBefore(Message, thisTextarea.nextSibling); if ( aSettings['submit'] == 1 ) { var allForms = document.getElementsByTagName('form'); for (var i = 0; i < allForms.length; i++) { if ((allForms[i].method=='post') && (allForms[i].style[0]!="visibility")) { allForms[i].submit(); } } } } if (!MyIPInLog || (MyIPInLog && aSettings['submit'] == 0) || (MyIPInLog && aSettings['submit'] == 0) ) { // Replace Textarea with a DIV and add color highlighting var replaceDiv = document.createElement('div'); var regExp = /-*?\n/gm; var regExp2 = /\s{2}/gm; var aText = ParseLog(sTemp.replace(regExp, '<br>'), 'highlight').replace(regExp2, '<br>').split('<br>'); thisTextarea.id = thisTextarea.name; var sStyle = '<style type="text/css">#dl { border-right: 2px solid #333333; padding-left: 3px; width: 20px; font-weight: bold; } #dr { padding-left: 3px; } #tr { text-align:left; vertical-align:top; }</style>'; var sTable = sStyle + '<table align="left" cellpadding="0" border="0" cellspacing="0" style="color: #000000; font-size: 11px; font-family: Courier New, Andale Mono, Courier; width: 704;"><tr><td colspan="2"><div style="background-color: #FFFFFF; position: absolute; border-bottom: 2px solid #333333; width: 704;"><table width="100%" cellpadding="0" border="0" cellspacing="0" style="color: #000000; font-size: 11px; font-family: Courier New, Andale Mono, Courier; width: 704;"><tr><td id="dl">Nr</td><td id="dr" width="80" height="20"><b>Text</b></td><td align="right"><a href="javascript:switchDisplay();" style="font-weight:bold;">Switch to write mode</a></td></tr></table></div></td></tr><tr><td colspan="2" height="22"> </td></tr>'; for (var j = 0; j < aText.length; j++) { if ( aText[j].indexOf(MyIP) >= 0 ) { aText[j] = '<font style="background-color: purple;" color="#FFFFFF"><i>' + aText[j] + '</i></font>'; } sTable = sTable + '<tr id="tr"><td id="dl">' + (j+1) + '</td><td id="dr">' + aText[j] + '</td>'; } sTable = sTable + '<tr><td id="dl" height="100%"></td><td></td></tr></table>'; replaceDiv.innerHTML = sTable; replaceDiv.id = 'logedt_div'; replaceDiv.style.width = 720; replaceDiv.style.height = 234; replaceDiv.style.background = '#FFFFFF'; replaceDiv.style.overflow = 'auto'; thisTextarea.style.display = 'none'; thisTextarea.parentNode.insertBefore(replaceDiv, thisTextarea.nextSibling); var script = document.createElement('script'); script.type="text/javascript"; script.innerHTML = 'function switchDisplay() { document.getElementsByName("editlog")[0].style.display="block"; document.getElementById("logedt_div").style.display="none"; }'; document.getElementsByTagName("head")[0].appendChild(script); } } } } //// // Sort slave list // Save and restore last selected account // Mark NPCs. // http://www.slavehack.com/index2.php?page=slaves&slave=all&collect=1 if (window.location.href.match('page=slaves') && !window.location.href.match('ddos=1')) { // Calculate Money per hour if ( document.body.innerHTML.match('Collecting from all slaves....') ) { sSlaveIncome = document.body.innerHTML; var allTD = sSlaveIncome.split('<td>'); for (var j = 0; j < allTD.length; j++) { if ( allTD[j].match('Collecting from all slaves') ) { var aSlaves = allTD[j].split('<hr>'); for (var i = 1; i < (aSlaves.length-1); i++) { var thisSlave = aSlaves[i]; var sTime = thisSlave.match(/\d+:\d{1,2}/gm)[0]; if ( sTime != '0:0' ) { var aTime = sTime.split(':'); var sIp = thisSlave.match(/(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/gm)[0]; if ( thisSlave.indexOf('times sold') >= 0 ) { var sMoney = thisSlave.match(/Income:\s(\d+\.\d{1,2}|\d+)/gm)[0].split(' ')[1]; } else { var sMoney = thisSlave.match(/(\d+\.\d{1,2}|\d+)\seuros/gm)[0].split(' ')[0]; } var sMin = parseInt(aTime[1]); var sHour = parseInt(aTime[0]); while (sHour > 0) { sMin = sMin + 60; sHour = sHour - 1; } //var sMoneyPerHour = Math.floor((sMoney*60)/sMin); var sMoneyPerHour = Math.round((sMoney*60)/sMin); //var sMoneyPerHour = ((sMoney*60)/sMin).toFixed(2); //GM_log('>> ip: ' + sIp + ' | time: ' + aTime.join(':') + ' | money: ' + sMoney + ' | mph: ' + sMoneyPerHour); // 0: IP, 1: MBIT, 2: Money/h, 3: apps, 4: viruses, 5: last update , 6: GS-Name manageSlaves(sIp, new Array(sIp, '', sMoneyPerHour, '', '', '', ''), 'update', 'files'); } } } } } else { // Remove entrys from GM AllSlaves and AllSlaveApps if deleted from slave list // Provide "crack" link in <font color=red>The slave 7.5.7.89 was removed from your list because you no longer have the admin password anymore and no virus is active.</font> // Mark NPCs in the same line var LastConnectedIP = GM_getValue('LastConnectedIP', ''); var aAllSlaves = GM_getValue('AllSlaves', '').split('|'); var allFont = document.getElementsByTagName('font'); var sTemp = ''; var aDeleted = new Array(); for (var i = 0; i < allFont.length; i++) { if (allFont[i].innerHTML.indexOf('was removed from your list') >= 0) { var isNPC = false; var numNpc = ''; for (var j = 0; j < NPC_IP.length; j++) { isNPC = isNPC || (allFont[i].innerHTML.indexOf(NPC_IP[j]) >= 0); if ( isNPC && numNpc == '' ) { numNpc = j; } } // Remove Slave from GM AllSlaves var regExp = /(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/gm; var delIP = allFont[i].innerHTML.match(regExp)[0]; aDeleted[aDeleted.length] = delIP; manageSlaves(delIP, '', 'delete', 'slave'); var sSlaveApps = manageSlaves(delIP, '', 'get', 'files'); var sStats = ''; if ( sSlaveApps != '' ) { var aSlaveApps = sSlaveApps.split('#'); sStats = sStats + ((aSlaveApps[1] != '') ? ('MBit: ' + aSlaveApps[1]) : ''); sStats = sStats + ((sStats != '' && aSlaveApps[2] != '') ? ' | ' : ''); sStats = sStats + ((aSlaveApps[2] != '') ? ('€/h: ' + aSlaveApps[2]) : ''); if ( sStats != '' ) { sStats = ' [' + sStats + ']'; } } var re = / (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/gm; allFont[i].innerHTML = allFont[i].innerHTML.replace(re, " <a href=\"http://www.slavehack.com/index2.php?page=internet&var2=$1&var3=crack&var4=\">$1" + ((isNPC) ? ' [NPC '+numNpc+']' : '') + sStats + "</a>"); if (isNPC) { allFont[i].innerHTML = "<font color='#FF33FF'>"+allFont[i].innerHTML+"</font>"; } else { // If VPC is removed from our slave list, readd the ip to the potential slaves list var regExp = /(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/gm; var m = allFont[i].innerHTML.match(regExp); if ( m != null ) { if (sTemp != '') { sTemp = sTemp + ' - '; } sTemp = sTemp + m[0]; } } } } if (sTemp != '') { // The above readd is actually here ParseLog(sTemp, 'collect'); } if (window.location.href.indexOf('collect=1') >= 0) { // Restore last selected account var allSelect = document.getElementsByTagName('select'); for (var i = 0; i < allSelect.length; i++) { if (allSelect[i].name=='account') { allSelect[i].selectedIndex = GM_getValue("LastCollectAccount", 1); } } // Save last selected account function SaveAccount() { var allSelect = document.getElementsByTagName('select'); for (var i = 0; i < allSelect.length; i++) { if (allSelect[i].name=='account') { GM_setValue("LastCollectAccount", allSelect[i].selectedIndex); GM_setValue("LastCollectTime", SHTime); } } } window.addEventListener('submit', SaveAccount, true); } // Sort slave list var allTR = document.getElementsByTagName('tr'); var MySlaves = new Array(); // [row#][0=IP, 1=Password, 2=SpamVir, 3=DDoSVir, 4=WarezVir, 5=Task, 6=TimeWorked] var SlaveTable; var LastSort = '<b>IP</b>'; var aGSnames = new Array(); for (var i = 0; i < allTR.length; i++) { var thisTR = allTR[i]; // Rewrite slave list header to show individual virus types if (thisTR.innerHTML == '<td><b>IP</b></td><td><b>Password</b></td><td><b>Virusses</b></td><td></td><td></td><td><b>Task</b></td><td><b>Time worked</b></td>') { thisTR.innerHTML = '<td><b>IP</b></td><td><b>Password</b></td><td><b>Spam Virus</b></td><td><b>DDoS Virus</b></td><td><b>Warez Virus</b></td><td><b>Task</b></td><td><b>Time worked</b></td>'; } // Parse slave table into an array // Trim unnecessary text // Also, parse IPs into a string for the data URI if ( (thisTR.innerHTML.indexOf('delete') >= 0) && (thisTR.innerHTML.indexOf('Time worked') < 0) ) { var ThisSlave = new Array(); ThisSlave[0] = thisTR.childNodes[0].innerHTML; ThisSlave[1] = thisTR.childNodes[1].innerHTML; ThisSlave[2] = thisTR.childNodes[2].innerHTML; ThisSlave[3] = thisTR.childNodes[3].innerHTML; ThisSlave[4] = thisTR.childNodes[4].innerHTML; ThisSlave[5] = thisTR.childNodes[5].innerHTML; ThisSlave[6] = thisTR.childNodes[6].innerHTML; ThisSlave[7] = thisTR.childNodes[7].innerHTML; // Update GM AllSlaves var regExp = /(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/gm; var thisIP = ThisSlave[0].match(regExp)[0] var check = 0; for ( var k=0; k < aDeleted.length; k++ ) { // To make sure these slaves stay deleted if ( thisIP == aDeleted[k] ) { check = 1; } } if ( check == 0 ) { manageSlaves(thisIP, ThisSlave, 'update', 'slave'); } // Add €/h and MBit var sSlaveApps = manageSlaves(thisIP, '', 'get', 'files'); if ( sSlaveApps != '' ) { //GM_log(sSlaveApps); var aSlaveApps = sSlaveApps.split('#'); ThisSlave[8] = ((aSlaveApps[1] != '') ? aSlaveApps[1] : ' '); ThisSlave[9] = ((aSlaveApps[2] != '') ? aSlaveApps[2] : ' '); // If the server is a GS save the name for later use into aGSnames array if ( typeof aSlaveApps[6] != 'undefined' && aSlaveApps[6] != '' ) { aGSnames[aSlaveApps[0]] = aSlaveApps[6]; } } else { ThisSlave[8] = ' '; ThisSlave[9] = ' '; } // Mark NPCs. for (var j = 0; j < NPC_IP.length; j++) { if (ThisSlave[0].indexOf(NPC_IP[j]) >= 0) { //ThisSlave[0] = "<i><b>"+ThisSlave[0]+"</b></i>"; ThisSlave[0] = "<a href='index2.php?page=internet&var2="+NPC_IP[j]+"'><font color='#FF33FF'>"+NPC_IP[j]+"</font></a>"; ThisSlave[1] = "NPC " + j; if (j < 100) { ThisSlave[1] = "NPC 0" + j; } if (j < 10) { ThisSlave[1] = "NPC 00" + j;} } } if (thisTR.childNodes[1].innerHTML == "<i>Password unknown</i>") { ThisSlave[1] = "<i>Unknown</i>"; } // Remove " virus" from virus names link. ThisSlave[2]=ThisSlave[2].replace(' virus', ''); ThisSlave[3]=ThisSlave[3].replace(' virus', ''); ThisSlave[4]=ThisSlave[4].replace(' virus', ''); // Remove " profit" from "Collect profit" link. ThisSlave[6]=ThisSlave[6].replace(' profit', ''); MySlaves[MySlaves.length] = ThisSlave; //GM_log(MySlaves[MySlaves.length-1].join('-')); // Only need this once, but no harm resetting it each time. SlaveTable = thisTR.parentNode; } } function sortSlaves(str) { var disp = false; var aStr = GM_getValue("LastSort", "<b>IP</b>|asc").split('|'); var inc = 0; if (str == '') { str = aStr[0]; inc = 1; } function stripHTMLcompare(a,b) { var re = /(<([^>]+)>)/ig; var a1 = a.replace(re,""); var b1 = b.replace(re,""); return ((a1 < b1) ? -1 : ((a1 > b1) ? 1 : 0)); } function stripINTcompare(a,b) { var a1 = parseInt(a); var b1 = parseInt(b); if (isNaN(a1)) { a1 = 0; }; if (isNaN(b1)) { b1 = 0; }; return ((a1 < b1) ? -1 : ((a1 > b1) ? 1 : 0)); } // If one of the table headers was clicked, sort by it. if (str == '<b>IP</b>') { MySlaves.sort(function(a,b) { return stripHTMLcompare(a[0], b[0]); }); disp = true; } if (str == '<b>Password</b>') { // No idea why anyone would, but for completeness MySlaves.sort(function(a,b) { return ((a[1] < b[1]) ? -1 : ((a[1] > b[1]) ? 1 : stripHTMLcompare(a[0], b[0]))); }); disp = true; } if (str == '<b>Spam</b>') { MySlaves.sort(function(a,b) { return (stripHTMLcompare(a[2], b[2])==0)?stripHTMLcompare(a[0], b[0]):stripHTMLcompare(a[2], b[2]); }); disp = true; } if (str == '<b>DDoS</b>') { MySlaves.sort(function(a,b) { return (stripHTMLcompare(a[3], b[3])==0)?stripHTMLcompare(a[0], b[0]):stripHTMLcompare(a[3], b[3]); }); disp = true; } if (str == '<b>Warez</b>') { MySlaves.sort(function(a,b) { return (stripHTMLcompare(a[4], b[4])==0)?stripHTMLcompare(a[0], b[0]):stripHTMLcompare(a[4], b[4]); }); disp = true; } if (str == '<b>Task</b>') { MySlaves.sort(function(a,b) { return ((a[5] < b[5]) ? -1 : ((a[5] > b[5]) ? 1 : stripHTMLcompare(a[0], b[0]))); }); disp = true; } if (str == '<b>Time worked</b>') { MySlaves.sort(function(a,b) { return (stripHTMLcompare(a[6], b[6])==0)?stripINTcompare(b[8], a[8]):stripHTMLcompare(a[6], b[6]); }); disp = true; } if (str == '<b>MBit</b>') { MySlaves.sort(function(a,b) { return stripINTcompare(a[8], b[8]); }); disp = true; } if (str == '<b>euros/h</b>') { MySlaves.sort(function(a,b) { return stripINTcompare(a[9], b[9]); }); disp = true; } // Output the sorted table if (disp) { // Clicking the same sort column twice reverses the sort order. //GM_log(str + ' | ' + aStr[0] + ' - ' + aStr[1]); if ( (inc == 1 && aStr[1] == 'asc') || (inc == 0 && str == aStr[0] && aStr[1] == 'desc') || (inc == 0 && str != aStr[0]) ) { aStr[1] = 'asc'; if ( str != '<b>Time worked</b>' ) { MySlaves.reverse(); } } else { aStr[1] = 'desc'; if ( str == '<b>Time worked</b>' ) { MySlaves.reverse(); } } if ( inc == 0 ) { GM_setValue("LastSort", str + '|' + aStr[1]); // Save sort method for when we return. } // Actual creation of the new table. // Added 2 new Collums -> MBit and €/h var newTable = '<tr><td><b>#</b></td><td><b>IP</b></td><td><b>Password</b></td><td align="center"><b>Spam</b></td><td><b align="center">DDoS</b></td><td align="center"><b>Warez</b></td><td align="center"><b>Task</b></td><td align="center"><b>Time worked</b></td><td> </td><td align="center"><b>MBit</b></td><td align="center"><b>euros/h</b></td><td align="center"><b>Info (A/V)</b></td></tr>'; var regExp = /(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/gm; for (var i=0; i<MySlaves.length; i++) { var bgColor = '#444444'; if (i%2) { bgColor = '#222222'; } if ( MySlaves[i][0].match(LastConnectedIP) ) { bgColor = '#BBC4FF'; } newTable = newTable + '<tr bgcolor=' + bgColor + '>'; newTable = newTable + '<td><b>' + (i+1) + '.</b></td>'; var GSname = ''; var thisIP = ''; for (var j=0; j<(MySlaves[i].length+1); j++) { //aGSnames['143.12.245.243'] if ( j == 0 ) { var aIp = MySlaves[i][0].match(regExp); if ( aIp != null) { thisIP = aIp[0]; if ( typeof aGSnames[aIp[0]] != 'undefined' ) { GSname = '<b>' + aGSnames[aIp[0]] + '</b>'; } } } if ( j == 0 && GSname != '' ) { newTable = newTable + '<td>' + MySlaves[i][j] + ' ' + GSname + '</td>'; } else if ( j == 2 ) { if ( MySlaves[i][j] == '<i>No spam</i>' ) { newTable = newTable + '<td align="center">' + MySlaves[i][j].replace('No spam', '<i><small>None</small></i>') + '</td>'; } else { newTable = newTable + '<td align="center">' + MySlaves[i][j].replace('Spam', '<img border="0" src="' + aImages['vspam'] + '">') + '</td>'; } } else if ( j == 3 ) { if ( MySlaves[i][j] == '<i>No DDoS</i>' ) { newTable = newTable + '<td align="center">' + MySlaves[i][j].replace('No DDoS', '<i><small>None</small></i>') + '</td>'; } else { newTable = newTable + '<td align="center">' + MySlaves[i][j].replace('DDoS', '<img border="0" src="' + aImages['rddos'] + '">') + '</td>'; } } else if ( j == 4 ) { if ( MySlaves[i][j] == '<i>No sharewarez</i>' ) { newTable = newTable + '<td align="center">' + MySlaves[i][j].replace('No sharewarez', '<i><small>None</small></i>') + '</td>'; } else { newTable = newTable + '<td align="center">' + MySlaves[i][j].replace('ShareWarez', '<img border="0" src="' + aImages['fc'] + '">') + '</td>'; } } else if ( j == 5 ) { if ( MySlaves[i][j] == 'Spam relay ' ) { newTable = newTable + '<td align="center">' + MySlaves[i][j].replace('Spam relay ', '<img border="0" src="' + aImages['vspam'] + '">') + '</td>'; } else if ( MySlaves[i][j] == 'File Share' ) { newTable = newTable + '<td align="center">' + MySlaves[i][j].replace('File Share', '<img border="0" src="' + aImages['fc'] + '">') + '</td>'; } else if ( MySlaves[i][j] == 'DDoS bot' ) { newTable = newTable + '<td align="center">' + MySlaves[i][j].replace('DDoS bot', '<img border="0" src="' + aImages['rddos'] + '">') + '</td>'; } else { newTable = newTable + '<td align="center">' + MySlaves[i][j].replace('No task assigned', 'None') + '</td>'; } } else if ( j == 6 || j == 8 || j == 9 ) { newTable = newTable + '<td align="center">' + MySlaves[i][j] + '</td>'; } else if ( j == 10 ) { if ( MySlaves[i][8] != ' ' ) { var sThisSlaveApps = manageSlaves(thisIP, '', 'get', 'files'); var sThisSlave = manageSlaves(thisIP, '', 'get', 'slave'); if ( sThisSlaveApps != '' ) { var aThisSlaveApps = sThisSlaveApps.split('#'); if ( aThisSlaveApps[5] != '' && typeof aThisSlaveApps[5] != 'undefined' ) { aThisSlaveApps[5] = DisplayTimeDiff(SHTime-aThisSlaveApps[5]) + ' ago'; } newTable = newTable + '<td align="center"><font onMouseOver="Tip(generateTooltip(\'' + sThisSlave + '\', \'' + aThisSlaveApps.join('#') + '\'));" onMouseOut="UnTip()"><b>Show</b> <small>(' + ((aThisSlaveApps[3] != '') ? aThisSlaveApps[3].split('@').length : '0') + '/' + ((aThisSlaveApps[4] != '') ? aThisSlaveApps[4].split('@').length : '0') + ')</small></font></td>'; } else { newTable = newTable + '<td> </td>'; } } else { newTable = newTable + '<td> </td>'; } } else { newTable = newTable + '<td>' + MySlaves[i][j] + '</td>'; } } newTable = newTable + '</tr>\n'; } SlaveTable.innerHTML = newTable; } } // Sort by last sort, (and add #) sortSlaves(''); // Catch clicks, to allow user to sort. document.addEventListener('click', function(event) { sortSlaves(event.target.parentNode.innerHTML) }, true); } } //// // PROZESS // Sort process list by IP // Make IPs in process list clickable // Change auto-submit to refresh process list instead. // Hilight processes for current IP on process list // Add count to process list if (window.location.href.indexOf('page=processes') >= 0) { var allTR = document.getElementsByTagName('tr'); var MyProcs = new Array(); var ProcHeaders = new Array(); var ProcHeader = 0; var ProcTable; var reFindCurrIP = /Currently connected to (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\./; var CurrIP = '0.0.0.0'; if (document.body.innerHTML.match(reFindCurrIP)) { CurrIP = reFindCurrIP.exec(document.body.innerHTML)[1]; } // Parse process list into an array for (var i = 0; i < allTR.length; i++) { var thisTR = allTR[i]; // Rewrite slave list header to show individual virus types if (thisTR.innerHTML.match(/^<td><img src\=\"layout\/processicon\.jpg\"> <b>.* processes<\/b><\/td>/)) { ProcHeader += 1; ProcHeaders[ProcHeader] = thisTR.innerHTML; MyProcs[ProcHeader] = new Array(); ProcTable = thisTR.parentNode; // Only need it once, but no harm setting it repeatedly if more than one process type. } else if (ProcHeader > 0) { //var re = /(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/m; var re = /Kill\sprocess/m; if (thisTR.innerHTML.match(re)) { MyProcs[ProcHeader][MyProcs[ProcHeader].length] = thisTR.innerHTML; } } } // Sort process lists for ( var i = 1; i < MyProcs.length; i++) { function FindAndCompareIPs(a,b) { var re = /(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/m; if (a.match(re)) { var match = re.exec(a); a1 = match[0]; } else { a1=a; } if (b.match(re)) { var match = re.exec(b); b1 = match[0]; } else { b1=b; } if ((a1 == b1) && (a.indexOf('has been finished') >= 0)) { return -1; } if ((a1 == b1) && (b.indexOf('has been finished') >= 0)) { return 1; } return ((a1 < b1) ? -1 : ((a1 > b1) ? 1 : 0)); } MyProcs[i].sort(FindAndCompareIPs); } // Output process list var outHTML = ''; ct = 0; for ( var i = 1; i < MyProcs.length; i++) { outHTML = outHTML + '<tr height=2><td></td><td><img src="layout/pixel.gif"></td></tr>'; outHTML = outHTML + "<tr bgcolor=#333333 valign=middle>" + ProcHeaders[i] + "</tr>\n"; var LastIP = ''; for ( var j = 0; j < MyProcs[i].length; j++) { if (j>0) { outHTML = outHTML + '<tr height=2><td></td><td><img src="layout/pixel.gif"></td></tr>'; } ct = ct+1; var re = /(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/m; if (MyProcs[i][j].match(re)) { var matches = re.exec(MyProcs[i][j]); if (!(matches[0] == LastIP)) { if (!(LastIP == '')) { outHTML = outHTML + "<tr><td></td></tr>\n"; } LastIP = matches[0]; } } MyProcs[i][j] = MyProcs[i][j].replace("<td><small>", "<td>"+ct+".<br><small>"); MyProcs[i][j] = MyProcs[i][j].replace("<br><br>", ""); outHTML = outHTML + "<tr bgcolor=#222222 valign=top>" + MyProcs[i][j] + "</tr>\n"; } } // http://www.slavehack.com/index2.php?gow=58.37.107.87&page=internet // Convert IPs into links var re = / (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/gm; outHTML = outHTML.replace(re, " <a href=\"http://www.slavehack.com/index2.php?page=internet&var2=$1\">$1</a>"); // Highlight current IP with yellow background var prevHTML = ''; while (!(prevHTML == outHTML)) { prevHTML = outHTML; outHTML = outHTML.replace('?page=internet&var2='+CurrIP+'\">'+CurrIP+'</a>', '?page=internet&var2='+CurrIP+'\" style=\"background-color:yellow\"><b>'+CurrIP+'</b></a>'); } // Highlight own IP with white background var prevHTML = ''; while (!(prevHTML == outHTML)) { prevHTML = outHTML; outHTML = outHTML.replace('?page=internet&var2='+MyIP+'\">'+MyIP+'</a>', '?page=internet&var2='+MyIP+'\" style=\"background-color:white\"><b>'+MyIP+'</b></a>'); } if (ProcHeader > 0) { ProcTable.innerHTML = outHTML; } } //// // Always show password textbox, and never * it out. if (window.location.href.match('var3=login')) { var allForm = document.getElementsByTagName('form'); for (var i = 0; i < allForm.length; i++) { var thisForm = allForm[i]; // <td>Username</td><td>Admin</td></tr><tr><td>Password</td><td> ???</td> if (thisForm.innerHTML.match('<td>Username</td><td>Admin</td>')) { thisForm.innerHTML = thisForm.innerHTML.replace("???", "<input name=loginpass type=text><tr><td><td><input type=submit value=login>"); } } allForm = document.getElementsByTagName('input'); for ( var i = 0; i < allForm.length; i++) { var thisForm = allForm[i]; if (thisForm.type=="password") { thisForm.type="text"; } } } //// // OWN FILES/SOFTWRE // Add up file sizes // Change actual time to time diff // Hide hide link for files we can't hide further if ( window.location.href.match(/page=software$/) ) { var allTR = document.getElementsByTagName('tr'); var MySoft = new Array(); var SpaceUsed = 0; var AllSoft = ''; // Find our hider level var allSmall = document.getElementsByTagName('small'); var HiderLevel = 0; var maxUploadSpeed = 0; for (var i = 0; i < allSmall.length; i++) { if (allSmall[i].innerHTML.substr(0,43) == "Your hide software can hide files to level ") { HiderLevel = allSmall[i].innerHTML.substr(43); HiderLevel = parseFloat(HiderLevel.substr(0,HiderLevel.length-1)); } } // Find highest seeker. var HighSeeker = 0; for (var i = 0; i < allTR.length; i++) { if (allTR[i].innerHTML.substr(0,22) == "<td bgcolor=\"#000000\">") { var allTD = allTR[i].innerHTML.split('</td>'); if (allTD[1].indexOf('.skr') >= 0) { HighSeeker = (HighSeeker > parseFloat(allTD[2].substr(4)))?HighSeeker:parseFloat(allTD[2].substr(4)); } } } // Parse software list into an array for (var i = 0; i < allTR.length; i++) { var thisTR = allTR[i]; if (thisTR.innerHTML.substr(0,22) == "<td bgcolor=\"#000000\">") { var allTD = thisTR.innerHTML.split("</td>"); // Active viruses are not actually available if (!(allTD[0] == "<td bgcolor=\"#000000\"><img src=\"layout/activevspam.jpg\" border=\"0\">")) { // Keep track of all software if (AllSoft == '') { AllSoft = AllSoft + allTD[1].replace("<td> ","") + " " + allTD[2].replace("<td>",""); } else { AllSoft = AllSoft + "|" + allTD[1].replace("<td> ","") + " " + allTD[2].replace("<td>",""); } } // Display time diff instead of time allTD[4] = '<td><a title="'+allTD[4].substr(4)+'">' + DisplayTimeDiff(SHTime-ParseTime(allTD[4])) + ' ago</a>'; // Calc size var ThisSize = allTD[3].replace("<td>",""); var reGB = /GB/i; ThisSize=ThisSize.replace(" ",""); if (ThisSize.match(reGB)) { // GB ThisSize = parseFloat(ThisSize); ThisSize = ThisSize * 1024; // 1GB = 1024MB } else { // MB ThisSize = parseFloat(ThisSize); } SpaceUsed = SpaceUsed + ThisSize; SpaceUsed = Math.round(SpaceUsed*1000000)/1000000; // Hide hide link if applicable if (parseFloat(allTD[6].substr(40)) >= HiderLevel ) { allTD[6] = allTD[6].replace("<img src=\"layout/hide.jpg\" border=\"0\">",''); } // Remove hide level 0.0 allTD[6] = allTD[6].replace('0.0',' '); // Replace file line allTR[i].innerHTML = allTD.join('</td>'); } } GM_setValue("AllSoft", AllSoft); // Add Visible Space Used if (SpaceUsed < 1024) { SpaceUsed = SpaceUsed + " mb"; } else { SpaceUsed = (SpaceUsed/1024) + " gb"; } textnodes = document.evaluate( "//text()", document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null); for (var i = 0; i < textnodes.snapshotLength; i++) { node = textnodes.snapshotItem(i); if (node.data.indexOf("Total space:") >= 0) { TotalSpace = node.data.substr((node.data.indexOf("Total space: ")+13), (node.data.indexOf(" gb.") - (node.data.indexOf("Total space:")+13))); // GM_log(node.data + " :: (" + TotalSpace+")"); // TODO: convert total space to # DDOSes required to 555 } if (node.data.indexOf("Free:") >= 0) { newElement = document.createElement('div'); newElement.innerHTML = "\t\tVisible Used: " + SpaceUsed + ".<br>\n"; node.parentNode.insertBefore(newElement, node); } } } // SLAVE FILES/SOFTWRE // Remove download links for active viruses, and for software we already have. // Remove delete links for active viruses // Display time diff since edit instead of time // Add upload file box // Hide hide link for files we can't hide further // Show Uploadtime for every file in upload Form if (window.location.href.indexOf('var3=files') >= 0) { // Set LastConnectedIP GM_setValue('LastConnectedIP', ConnectedToIP); //// // Get highest app version, compared to slaves one function getHighestAppVersion(toCheck) { var MySoft = GM_getValue("AllSoft", "").split('|'); var version = 'NA'; var aTyp = toCheck.split('.'); //GM_log(toCheck); if (aTyp[1] == 'img' || aTyp[1] == 'txt' || aTyp[1] == 'exe' || toCheck.substr(0,6) == '<td><a') { return ''; } else { for (var j = 0; j < MySoft.length; j++) { var aTemp = MySoft[j].split(' '); if ( MySoft[j] != '' ) { var ver = aTemp[(aTemp.length)-1] //GM_log(MySoft[j]); var aMyTyp = aTemp[(aTemp.length)-2].split('.'); if (aTyp[1] == aMyTyp[1] && (version == 'NA' || ver > version) ) { version = ver; } } } // Trim X.0 Versions to X if ( version.length > 1 ) { aTemp = version.split('.'); if ( aTemp[1] == 0 ) { version = aTemp[0]; } } return version; } } // Find our hider level var allSmall = document.getElementsByTagName('small'); var HiderLevel = 0; var maxUploadSpeed = 0; var aApps = ''; var aViruses = ''; var GSname = ''; for (var i = 0; i < allSmall.length; i++) { if (allSmall[i].innerHTML.substr(0,43) == "Your hide software can hide files to level ") { HiderLevel = allSmall[i].innerHTML.substr(43); HiderLevel = parseFloat(HiderLevel.substr(0,HiderLevel.length-1)); } // Get max file upload speed searchString = 'You can upload files with a speed of '; var pos = allSmall[i].innerHTML.indexOf(searchString); if (pos >= 0) { maxUploadSpeed = allSmall[i].innerHTML.substr(searchString.length, 20).split(' ')[0]; } var pos = allSmall[i].innerHTML.indexOf("(Target computer download speed: "); if (pos >= 0) { Upspeed = allSmall[i].innerHTML.substr(pos+33,((allSmall[i].innerHTML.indexOf(" Kb/s", pos+33))-(pos+33))); Upspeed = Math.round(Upspeed / 113.7); // Upspeed is now the mbit speed of the overall connection newElement = document.createElement('div'); newElement.innerHTML = "<small>" + Upspeed + " Mbit connection.</small>"; allSmall[i].parentNode.insertBefore(newElement, allSmall[i].nextSibling); } } var FreeSpace = document.body.innerHTML.substr(document.body.innerHTML.indexOf("Free: ")+6, 10); FreeSpace = FreeSpace.substr(0,FreeSpace.indexOf(' ')); FreeSpace = 1000*FreeSpace; var allTR = document.getElementsByTagName('tr'); var MySoft = GM_getValue("AllSoft", "").split('|'); var SoftHere = new Array(); //GM_log(GM_getValue("AllSoft", "")); // Find highest seeker. var HighSeeker = 0; for (var i = 0; i < allTR.length; i++) { if (allTR[i].innerHTML.substr(0,22) == "<td bgcolor=\"#000000\">") { var allTD = allTR[i].innerHTML.split('</td>'); if (allTD[1].indexOf('.skr') >= 0) { HighSeeker = (HighSeeker > parseFloat(allTD[2].substr(4)))?HighSeeker:parseFloat(allTD[2].substr(4)); } } } // Parse software list on external host // Get highest AV version var highestAV = '0.1'; for (var i = 0; i < allTR.length; i++) { // Check if Slave is a GS, if yes get Name var regExp = /Property of \<b\>\[.*]\<\/b\>/gm; if ( allTR[i].innerHTML.match(regExp) ) { m = allTR[i].innerHTML.match(regExp); if ( m != null ) { GSname = m[0].split('Property of ')[1].replace('<b>', '').replace('</b>', ''); } } if (allTR[i].innerHTML.substr(0,22) == "<td bgcolor=\"#000000\">") { var allTD = allTR[i].innerHTML.split('</td>'); var ThisSoft = allTD[1].replace("<td> ","") + " " + allTD[2].replace("<td>",""); // Remove download and delete links for active viruses if ( (allTD[0] == "<td bgcolor=\"#000000\"><img src=\"layout/activevspam.jpg\" border=\"0\">") || (allTD[0] == "<td bgcolor=\"#000000\"><img src=\"layout/activevshare.jpg\" border=\"0\">") || (allTD[0] == "<td bgcolor=\"#000000\"><img src=\"layout/activevddos.jpg\" border=\"0\">") ) { allTD[5] = '<td bgcolor="#000000">'; allTD[8] = '<td bgcolor="#000000">'; if ( allTD[2].replace("<td>","") != '' ) { if ( aViruses != '' ) { aViruses = aViruses + '@'; } aViruses = aViruses + allTD[1].split('.')[1] + " " + allTD[2].replace("<td>",""); } } else { // Make a list of all software on this system SoftHere[SoftHere.length] = allTD[1].replace("<td> ","") + " " + allTD[2].replace("<td>",""); if ( allTD[2].replace("<td>","") != '' ) { if ( aApps != '' ) { aApps = aApps + '@'; } aApps = aApps + allTD[1].split('.')[1] + " " + allTD[2].replace("<td>",""); } // Get highest AV version if ( allTD[1].indexOf('.av') >= 0 ) { var vers = allTD[2].replace("<td>",""); if ( vers > highestAV ) { highestAV = vers; } } // Display own File Versione beside Server version and make the higher one bold var myFileVersion = getHighestAppVersion(allTD[1].replace("<td> ","")); myFileVersion = ((myFileVersion == 'NA') ? '0.1' : myFileVersion); var iCompareSlave = parseInt(allTD[2].replace('<td>', '').replace('.', '')); var iCompareOwn = (myFileVersion.length == 1) ? parseInt(myFileVersion + '0') : parseInt(myFileVersion.replace('.', '')); allTD[2] = ((iCompareSlave > 0) ? (( iCompareSlave > iCompareOwn ) ? ('<td><b>' + allTD[2].replace('<td>', '') + '</b> (' + ((myFileVersion == '0.1') ? 'NA' : myFileVersion) + ')') : (allTD[2] + ' <b>(' + myFileVersion + ')</b>')) : '<td>'); } // Remove download links for software we already have for (var j = 0; j < MySoft.length; j++) { if (MySoft[j] == ThisSoft) { allTD[8] = '<td bgcolor="#000000">'; break; } } // Display time diff instead of actual time allTD[4] = '<td><a title="'+allTD[4].substr(4)+'">' + DisplayTimeDiff(SHTime-ParseTime(allTD[4])) + ' ago</a>'; // Hide hide link if applicable if (parseFloat(allTD[6].substr(40)) >= HiderLevel ) { allTD[6] = allTD[6].replace("<img src=\"layout/hide.jpg\" border=\"0\">",''); } // Remove hide level 0.0 allTD[6] = allTD[6].replace('0.0',' '); // Lowlight (!hilight) if player can't see it. if (parseFloat(allTD[6].substr(40)) > HighSeeker) { allTD[1] = allTD[1].replace('<td>','<td><i><font color=tan>'); allTD[1] = allTD[1]+'</font></i>'; allTD[2] = allTD[2].replace('<td>','<td><i><font color=tan>'); allTD[2] = allTD[2]+'</font></i>'; allTD[3] = allTD[3].replace('<td>','<td><i><font color=tan>'); allTD[3] = allTD[3]+'</font></i>'; allTD[4] = allTD[4].replace('<td>','<td><i><font color=tan>'); allTD[4] = allTD[4]+'</font></i>'; } // Replace file line allTR[i].innerHTML = allTD.join('</td>'); } } // 0: IP, 1: MBIT, 2: Money/h, 3: apps, 4: viruses, 5: last update, 6: GS-Name manageSlaves(ConnectedToIP, new Array(ConnectedToIP, Upspeed, '', aApps, aViruses, SHTime, GSname), 'update', 'files'); // Add upload form to file menu (instead of it being a seperate page) var allA = document.getElementsByTagName('a'); var replaceMe; for (var i = 0; i < allA.length; i++) { //if (allA[i].innerHTML == '<small>Upload a file</small>') { if (0) { // Disabled for now replaceMe = allA[i]; GM_xmlhttpRequest({ method: 'GET', url: allA[i].href, onload: function(responseDetails) { var newForm = document.createElement('form'); var reSelect = /(<select name=upload>.*?<\/select>)/; var sFileStyle = ''; var sFileImage = ''; var aFiles = new Array("wwl", "crc", "fwl", "vspam", "mailer","av", "ana", "vshare", "fc", "skr", "hdr", "enc", "dec", "rip", "vddos", "rddos", "txt", "img", "exe"); var mySelect = 'no'; var aNewOptions = new Array(); newForm.method = 'post'; newForm.action = replaceMe.href; if (responseDetails.responseText.match(reSelect)) { var selectOptions = (reSelect.exec(responseDetails.responseText))[1].split('<option'); var newHTML = '<select name=upload>'; // Only allow uploads of files that don't already exist here. for(var j=1;j < selectOptions.length; j++) { var OnThisPage = false; var reOption = / (\d+\.?\d*) \[(.*?) *\]/; if (selectOptions[j].match(reOption)) { var SelectMatch = reOption.exec(selectOptions[j]); for(var k = 0; k < SoftHere.length; k++) { OnThisPage = OnThisPage || ((SelectMatch[2]+' '+SelectMatch[1]) == SoftHere[k]); } } var FileSize = selectOptions[j].substr(selectOptions[j].indexOf("]")+3); FileSize = FileSize.substr(0,FileSize.indexOf(' '))*1000; selectOptions[j]=selectOptions[j].replace("</select>",""); if (!OnThisPage && (FileSize <= FreeSpace)) { aNewOptions[aNewOptions.length] = selectOptions[j]; } } for(var j=0;j < aNewOptions.length; j++) { var fileSize = aNewOptions[j].match(/\d{1}\.\d{3}/gm)[0]; var selected = ''; var deleteable = ''; for(var k=0; k < aFiles.length; k++) { if (aNewOptions[j].indexOf(aFiles[k]) > 0) { sFileImage = aFiles[k]; // Red out deletable virus if ( aFiles[k] == 'vshare' || aFiles[k] == 'vddos' || aFiles[k] == 'vspam') { var regExp = /(vshare|vddos|vspam)\s((\d{1}\.\d{1})|(\d{1}))/gm; var m = aNewOptions[j].match(regExp); if ( m != null ) { if ( m[0].split(' ')[1] <= highestAV ) { deleteable = ' background-color: #FFD5D5;'; } } } if (aFiles[k] == 'rip') { sFileImage = 'warez'; } else if (aFiles[k] == 'vshare') { sFileImage = 'fc'; } else if (aFiles[k] == 'vspam') { //GM_log('-' + highestAV + '-'); if ( mySelect == 'no' ) { selected = 'selected '; mySelect = 'ok'; if ( getUpDownloadTime(fileSize, maxUploadSpeed, 'sec') > 120 ) { if ( aNewOptions.length > (j+1) ) { var m2 = aNewOptions[(j+1)].match(/vspam\s((\d{1}\.\d{1})|(\d{1}))/gm); if ( m2 != null ) { if ( m2[0].split(' ')[0] == 'vspam' ) { if ( m2[0].split(' ')[1] > highestAV ) { selected = ''; mySelect = 'no'; } } } } } } } sFileStyle = 'style="padding-left: 20;' + deleteable + ' background-image: url(\'./layout/' + sFileImage + '.jpg\'); background-repeat: no-repeat;" '; } } // Calculate upload time for each file var uploadTime = getUpDownloadTime(fileSize, maxUploadSpeed, ''); newHTML = newHTML + "<option " + selected + sFileStyle + aNewOptions[j].replace(' ]', ']') + ' [' + uploadTime + "]\n"; } newHTML = newHTML + '<option value=\'\'>View Upload Page'; newHTML = newHTML + '</select>'; newHTML = newHTML + "<input type=submit value=\"Upload File\" class=form>"; newForm.innerHTML = newHTML; replaceMe.parentNode.insertBefore(newForm, replaceMe); replaceMe.parentNode.removeChild(replaceMe); } } }); } } } if ( window.location.href.match('page=slaves') ) { ////////////////////////////////////////////////////// //////////// ADD AND CONFIGURE TOOLTIP /////////////// ////////////////////////////////////////////////////// // BASE64 Encoded Images // URL to encoder: http://www.greywyvern.com/code/php/binary2base64 var sImages = "var bas64Images = new Array();\n" + "bas64Images['wwl'] = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAYEBAQFBAYFBQYJBgUGCQsIBgYICwwKCgsKCgwQDAwMDAwMEAwODxAPDgwTExQUExMcGxsbHCAgICAgICAgICD/2wBDAQcHBw0MDRgQEBgaFREVGiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICD/wAARCAAPAA8DAREAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAABgQI/8QAJBAAAgEDAwQDAQAAAAAAAAAAAQIEAxESAAUhBhQxQSJRcYH/xAAXAQADAQAAAAAAAAAAAAAAAAACAwUE/8QAKBEAAQMDAgMJAAAAAAAAAAAAAgABEQMEIQUSEzHRFSJBQoGhseHw/9oADAMBAAIRAxEAPwDPu29Czmpd3upMOGtiygZViDbjEXxuDbnkH1omFSaurBO2n3i9vv8AZTXpijtsfcJMOJt6xFVAzEMTXa5Hlzd8DiDiGtf1rUduVON3mUTUuJwxIj3PPp0nPOJVm7dzJgPGjLhWqOqgki3DjEW/R96S6RaCLVWnOPlC5vXgoyasuCq1NwroqVJGJWkALNwrfI+WB8f3T7q9Ks7O/NmhX+ymMWEsAPh1X//Z';\n" + "bas64Images['crc'] = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAYEBAQFBAYFBQYJBgUGCQsIBgYICwwKCgsKCgwQDAwMDAwMEAwODxAPDgwTExQUExMcGxsbHCAgICAgICAgICD/2wBDAQcHBw0MDRgQEBgaFREVGiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICD/wAARCAAPAA8DAREAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAABgf/xAAlEAABBAEEAgEFAAAAAAAAAAACAQMEBQYHERIhCBMiABQjMUH/xAAUAQEAAAAAAAAAAAAAAAAAAAAA/8QAFBEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEQMRAD8AX4RQ6dRtPcVcmYfRTJUimiSpD8xiMMiWZN7mEZCYcKTI+PY8kXcg7+XQR3ycwt2lu2Z64/Hp4X4YVfLiGCtTAZaLkZMJ22QB6g24jsqL2acVQKhQ5ZS2mlunsepycKO0pQbN6eUN+UrRBWyYBIDJN+twkdf/AKvHZFVF/SKBjy7zPG8hoceap5f3JMSnycT1ut7IrY7bewR+g//Z';\n" + "bas64Images['fwl'] = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAYEBAQFBAYFBQYJBgUGCQsIBgYICwwKCgsKCgwQDAwMDAwMEAwODxAPDgwTExQUExMcGxsbHCAgICAgICAgICD/2wBDAQcHBw0MDRgQEBgaFREVGiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICD/wAARCAAPAA8DAREAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAwQGCP/EACUQAAIBAwIGAwEAAAAAAAAAAAECAwQRIQASBQYTFDGRFVGB4f/EABcBAQEBAQAAAAAAAAAAAAAAAAMFBAb/xAAoEQABAwMCAwkAAAAAAAAAAAACAAERAwQhEjEFE9EVIkFRgaGx4fD/2gAMAwEAAhEDEQA/AM1UnAZmXq1R6MIyVGXIx68/zRvU8t1XpcJONVTuj7/X7Cq/gpODiDdTrTd3EZo13XlMe6wLN52ta4AOsg3A1Jh50q3wzl8whENLR69YxtMIMymVRBCu6WRlVb4BJOAPr3pmT3ZG9J2bGfhK8y8+zcVmhmKR9zDTpTLJEGVNiWYXD3LHLA4H7oraxGizs2zvK5/tVwJyDJl49F//2Q%3D%3D';\n" + "bas64Images['vspam'] = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAYEBAQFBAYFBQYJBgUGCQsIBgYICwwKCgsKCgwQDAwMDAwMEAwODxAPDgwTExQUExMcGxsbHCAgICAgICAgICD/2wBDAQcHBw0MDRgQEBgaFREVGiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICD/wAARCAAQABADAREAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAABQP/xAAmEAACAgEEAAUFAAAAAAAAAAABAgMEEQUGBxIACBMUQhYhIzEy/8QAFgEBAQEAAAAAAAAAAAAAAAAAAAEC/8QAFhEBAQEAAAAAAAAAAAAAAAAAABEx/9oADAMBAAIRAxEAPwBviHhnj/Tdgw7tuUBrtoVzMxokX5JJ68pIlpuvQo/wCKFI+RJGRqonynwzxtqG2ItxRVfpyxqrZhiudatuOzalaxM7rI/55AowtfP8g9CP34lAPGnmHl0+pajaw+rVq0cUy15xVo+3o1Hb3EVanDlpLHoH1MhipAyeuG8WAjk/zJ6hq4U0IVrvplp4HoO8csE3bLxTGOWJbCSwFOjlGxkkBsH7sNf/2Q%3D%3D';\n" + "bas64Images['mailer'] = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAYEBAQFBAYFBQYJBgUGCQsIBgYICwwKCgsKCgwQDAwMDAwMEAwODxAPDgwTExQUExMcGxsbHCAgICAgICAgICD/2wBDAQcHBw0MDRgQEBgaFREVGiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICD/wAARCAAPAA8DAREAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAABgQH/8QAJhAAAQMCBgICAwAAAAAAAAAAAgEDEQQFAAYHEhMxCCEiUSMyYf/EABgBAAMBAQAAAAAAAAAAAAAAAAECBAMG/8QAHhEAAgICAgMAAAAAAAAAAAAAAQIABAMRBRJRYbH/2gAMAwEAAhEDEQA/AElp8c9HKoQaqLS43W8QvcY1lQQm2SJDgKh9T+6L7Ff4oljn2u5fPyU9BM21s0q09y9k5+65ZtjjQtuA21cHH3nUdXkEDUBU1HYkxuVPkvSJE4qqWXdtExHUASyo8ocpVVE1SVeXHKkGvYk4iKUxHsubdEIiRPUfWAePb1CMghrVbXqyZ2yq7Z6e2O0LxE2TfxFGvxmK9I4ULsGJRPpOsb16hRtxGfc//9k%3D';\n" + "bas64Images['av'] = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAYEBAQFBAYFBQYJBgUGCQsIBgYICwwKCgsKCgwQDAwMDAwMEAwODxAPDgwTExQUExMcGxsbHCAgICAgICAgICD/2wBDAQcHBw0MDRgQEBgaFREVGiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICD/wAARCAAPAA8DAREAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAABQQG/8QAIhAAAgICAQQDAQAAAAAAAAAAAQMCBAUSBgcREyEAFCIW/8QAGQEAAgMBAAAAAAAAAAAAAAAAAAMBAgQF/8QAIBEAAgIBBAMBAAAAAAAAAAAAAQMAAgQRITFBEiIyUf/aAAwDAQACEQMRAD8AN4jib9bjyW5bLNViv5tNiwtUG2zCrdrxrq1S6H1GEyOpgZegfitwdZ2g1TU1VUAN/ZF1nx+WhiOVPZk52KhXUsRQz7CyVXLKGIl45wgoS7R7yhE/g/Cotrr1FZGSopFAPccmCdBebZS/naXHZZmziry6dpGPyA8loawTOUT4GSkvZKwREeo6AAdpRG9zXeZa5ACSsjnuZvrLzu5kuR5rEKtvsVhdmLDWTZESK5/pYTt4wCwbSHYjaI19DvIAkPyPOtQB8if/2Q%3D%3D';\n" + "bas64Images['ana'] = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAYEBAQFBAYFBQYJBgUGCQsIBgYICwwKCgsKCgwQDAwMDAwMEAwODxAPDgwTExQUExMcGxsbHCAgICAgICAgICD/2wBDAQcHBw0MDRgQEBgaFREVGiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICD/wAARCAAPAA8DAREAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAABAUG/8QAIhAAAwABBAICAwAAAAAAAAAAAQIDBAUGERIAEyEiFDFB/8QAFwEAAwEAAAAAAAAAAAAAAAAAAQIEAP/EACERAAEEAQQDAQAAAAAAAAAAAAEAAgMRIQQSImFBkeGx/9oADAMBAAIRAxEAPwDAbm3brcdw58VzkVUVGAf0duThCpLF4UYkv9iSx58Dz+pZDXsJmy90a5bUbc5o7JGzTaXqV14uiAq04xYfUkfB8KZU9b2uq6xarHvkBhPMgcqkkXrD8d+AkKfZODxw3Un58klZKbotAxWM4+qCaOZxNOa0YrFnH1N0La/fPWWn2fIyaQeMoUqW7H2CxILJNQeoP7P882nZMDz210m0sc4dz211flf/2Q%3D%3D';\n" + "bas64Images['vshare'] = bas64Images['vspam'];\n" + "bas64Images['fc'] = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAYEBAQFBAYFBQYJBgUGCQsIBgYICwwKCgsKCgwQDAwMDAwMEAwODxAPDgwTExQUExMcGxsbHCAgICAgICAgICD/2wBDAQcHBw0MDRgQEBgaFREVGiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICD/wAARCAAPAA8DAREAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAwUGB//EACgQAAEDAwQBAgcAAAAAAAAAAAECAwQFBhEAEhMhBxQVIjEyM1Fhgf/EABgBAAMBAQAAAAAAAAAAAAAAAAECBQME/8QAIhEAAAYBAwUAAAAAAAAAAAAAAAECAwQSESEiMTJBYXGh/9oADAMBAAIRAxEAPwDYPIdzXKzUEUa2nUe4qbBUgfdSVdhz4hxlISPluH7GMa45Dm6t0oP7gSJzz1yba57+gW3vIrkO20zLyAhPR+qhKb2qS1lexvnabKltLVlIwEkZPXWtDmNKXVB5IVUEsklfqxqGN5UiqJmRK9b1PEuvxgqKCdm30zmSoOcj8bICvpwSQT+M6EiMTng+ASbRe+Nwj3LAve9qkmRd7KKNHYiGMqG0ORqRvdS7hwsTio8am0lO5OP7pI0JLRY5DqVkf//Z';\n" + "bas64Images['skr'] = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAYEBAQFBAYFBQYJBgUGCQsIBgYICwwKCgsKCgwQDAwMDAwMEAwODxAPDgwTExQUExMcGxsbHCAgICAgICAgICD/2wBDAQcHBw0MDRgQEBgaFREVGiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICD/wAARCAAPAA8DAREAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAABAUGB//EACUQAAEDAgUEAwAAAAAAAAAAAAIBAwQGEQAFBxIhCBMVMTJBUf/EABUBAQEAAAAAAAAAAAAAAAAAAAAB/8QAFhEBAQEAAAAAAAAAAAAAAAAAAAER/9oADAMBAAIRAxEAPwDPqj0bpHJ2kkD5yTEIlEHtsZq+0hHgSTcvLg+vV0vbFkS0DC0ppCe0TkadOacQEdGJJ7YOEClt3AogYkl/zEqw0q7qdk1Q0ITqYigo2sQPEvI+lsQEnF8DEo7rBIezLyD+Xq4720ZRvvijSAPxQWxaQRt9WwH/2Q%3D%3D';\n" + "bas64Images['hdr'] = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAYEBAQFBAYFBQYJBgUGCQsIBgYICwwKCgsKCgwQDAwMDAwMEAwODxAPDgwTExQUExMcGxsbHCAgICAgICAgICD/2wBDAQcHBw0MDRgQEBgaFREVGiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICD/wAARCAAPAA8DAREAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAABQMG/8QAJBAAAQMEAQQDAQAAAAAAAAAAAQIDBAUGBxEAEhMUMSEiQSP/xAAVAQEBAAAAAAAAAAAAAAAAAAAAAf/EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAMAwEAAhEDEQA/AJYzwrRY8GPGdpcCrXE9BjVCa7VS840PNClsRorLBHpCNuPKJ0fzgH5dxJZ1Tx/Dve0acmhVD6+dTErKo6wXewspJ2AUOeiPhQ4COPMw46ua2KbTbwjLYuKixRE8tHfSl+KgaH9I2l61raFfH6OBjMj5Jt+iUCbZ1nzZUuNIlJdSJKSGoMdBCxGY6/u5tY31KHrlH//Z';\n" + "bas64Images['enc'] = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAYEBAQFBAYFBQYJBgUGCQsIBgYICwwKCgsKCgwQDAwMDAwMEAwODxAPDgwTExQUExMcGxsbHCAgICAgICAgICD/2wBDAQcHBw0MDRgQEBgaFREVGiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICD/wAARCAAPAA8DAREAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAABgQH/8QAJBAAAQQABQQDAAAAAAAAAAAAAgEDBAUABgcREhMUITEiUqH/xAAYAQACAwAAAAAAAAAAAAAAAAACAwEEBf/EACARAAEEAgMAAwAAAAAAAAAAAAEAAgQRA0EFElETMfH/2gAMAwEAAhEDEQA/AMj0ryAxc5eubyTQu3/bkkeDCaeJjd1EQjXmBCvgTH3jPm5y0hod0vf6m427q1BqrlWupxp5sCodo+9aMJda64T6Nvsqm/F0lJS5IW+CgyfksWHdd+qcuPrqrSTRbXGoyDluxqJ0CRJcmSFfbeY4bIhAAKioSj66X7ihy/FvkkdSBXqOPla37tGtVdRK/OL0Q4bL7QsK4RddBRfnx8JxI/rguF4t0RpDiDfifOljLVaX/9k%3D';\n" + "bas64Images['dec'] = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAYEBAQFBAYFBQYJBgUGCQsIBgYICwwKCgsKCgwQDAwMDAwMEAwODxAPDgwTExQUExMcGxsbHCAgICAgICAgICD/2wBDAQcHBw0MDRgQEBgaFREVGiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICD/wAARCAAPAA8DAREAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAABwj/xAAmEAABBAAFAwUBAAAAAAAAAAABAgMEBQAGBxESEyIxFCEjUWGB/8QAGAEAAgMAAAAAAAAAAAAAAAAABAYBAgP/xAAjEQACAgEEAAcAAAAAAAAAAAABAgADMQQFEiERIjJCYYHh/9oADAMBAAIRAxEAPwCaq/K99NejBuvkdGQUcX+kvp8FnbnzI48f3fbFGcCSBES4gaSJtLTLZrTUvxW2jFvvVuupWsFBX8SlFHelR+/5gCprun8eQb29dfc1bjjESMsa9adQtO6WlflONWcOGyxICo7itltNJbPclKgRun2/ML26bTqrbWKDyn5/YdpLq19RgFqJexLzNkuxhuF2O4G0ocIKd+CAnwoAjxhl22hqqFVsiCaywPYSMT//2Q%3D%3D';\n" + "bas64Images['rip'] = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAYEBAQFBAYFBQYJBgUGCQsIBgYICwwKCgsKCgwQDAwMDAwMEAwODxAPDgwTExQUExMcGxsbHCAgICAgICAgICD/2wBDAQcHBw0MDRgQEBgaFREVGiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICD/wAARCAAPAA8DAREAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAABQL/xAAjEAACAQMEAwEBAQAAAAAAAAACAwEEBQYHERITABQiIUJS/8QAGAEAAgMAAAAAAAAAAAAAAAAAAgMAAQT/xAAkEQABAwIFBQEAAAAAAAAAAAABAAIRAwQSITFBYRMUIiNCUf/aAAwDAQACEQMRAD8AP0wxDT/FsRpbxlVnpL7cbyqW05FwcS1En2euU3CaSlXAJVLCfy/kxg/0PFtuKb8vsbLO26puMNMvGvCJ1twjDa2xlleJWtFjilbKblSb7NawWDTMH1kdtIrqcMj8kAlsUxz+Z8HvKc4PvfhWLukIDj5u0CvSvWDATxlNj1BfUpZbI2tlUgGISAiIgs+y29dV7HVyDf8AzExJ/ZeMp29JmYEOOvKcGtbECDuULrBq1jNys8YzhneNplknW94cgKeQN3S6o51XI2fTpLjyMZL95z4BtKGLqFvs/VAwEAOE4dF//9k%3D';\n" + "bas64Images['warez'] = bas64Images['rip'];\n" + "bas64Images['vddos'] = bas64Images['vspam'];\n" + "bas64Images['rddos'] = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAYEBAQFBAYFBQYJBgUGCQsIBgYICwwKCgsKCgwQDAwMDAwMEAwODxAPDgwTExQUExMcGxsbHCAgICAgICAgICD/2wBDAQcHBw0MDRgQEBgaFREVGiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICD/wAARCAAPAA8DAREAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAABgEC/8QAJBAAAQQBAwUBAQEAAAAAAAAAAwECBAUGBxESABMUISJBJDH/xAAUAQEAAAAAAAAAAAAAAAAAAAAA/8QAFREBAQAAAAAAAAAAAAAAAAAAABH/2gAMAwEAAhEDEQA/AEmrsrVLD6ONR45d+SJXTbMs05GCnLFYqEWIxxFcpHciKjOH1tsn50G9Oq7VDOMUk47leRPhLXHDISyrjNfOII4eYgEKJWo3gq/e6cl/zpQgzSomamyLKqWq8EmJWAViWCSGtlkJ6e7xyNa5Aoo13+kX3t66C4lGk6Wx6bHA0bJT78ks0iSKQ3vocSKX+gj0b3l7eyck/fzboP/Z';\n" + "bas64Images['txt'] = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAYEBAQFBAYFBQYJBgUGCQsIBgYICwwKCgsKCgwQDAwMDAwMEAwODxAPDgwTExQUExMcGxsbHCAgICAgICAgICD/2wBDAQcHBw0MDRgQEBgaFREVGiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICD/wAARCAAQABADAREAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAABAb/xAAhEAABBAMAAwADAAAAAAAAAAACAQMEBQYSEwcRFAghIv/EABYBAQEBAAAAAAAAAAAAAAAAAAIDBP/EAB0RAAIDAAIDAAAAAAAAAAAAAAABAgMRBBIhcfD/2gAMAwEAAhEDEQA/ABeP8HoBxzGOuKxpQXNa7ZOWAONS5JJE1GWYRZFfNMnhJ5owYE1AlbRE16Og5sq40J1uXbGgAvyOw7BarA4FpjdacInrX51+iuKtdEUZdPUBONEdMNSbDY9kXmi++iukeNxwZQ4bnNaHjvG6sMlp24oVCxLGon2USOPV7s2Smy9VWREog4K+uuiqnogVNt61KOb5X3smiO85WGHt+No9NQ21XOJu/OSLdc5C3KOUbmDzjUGHWtCRaf0mh6/pOip6RDZLsUP/2Q%3D%3D';\n" + "bas64Images['img'] = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAYEBAQFBAYFBQYJBgUGCQsIBgYICwwKCgsKCgwQDAwMDAwMEAwODxAPDgwTExQUExMcGxsbHCAgICAgICAgICD/2wBDAQcHBw0MDRgQEBgaFREVGiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICD/wAARCAAPAA8DAREAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAEFB//EACcQAAICAQIFAwUAAAAAAAAAAAECAwQFABEGEhMxQQchI0JDUXGR/8QAFgEBAQEAAAAAAAAAAAAAAAAABAMB/8QAHxEAAgEEAwEBAAAAAAAAAAAAAQIAAwQRIRIxkRVR/9oADAMBAAIRAxEAPwDBsBwCuYxcWRindOnzG7VKfL0l+9B4kQfUO6/r30atchcgbMXQtC++l/Y83geGaZYRGQVQQI7Dt8rD8soLJufIGo21w79xVa0pJS5bDZg3qNMK8Ar1OhPXAETxyFVUjsQAPGtWywSc55e+yf0DwCY0JM4izVTNVq9xgle/Gqwy14upyvt3m2beNN+3Kv8ANMC4gHct3P/Z';\n" + "bas64Images['exe'] = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAYEBAQFBAYFBQYJBgUGCQsIBgYICwwKCgsKCgwQDAwMDAwMEAwODxAPDgwTExQUExMcGxsbHCAgICAgICAgICD/2wBDAQcHBw0MDRgQEBgaFREVGiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICD/wAARCAAQABADAREAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAABQP/xAAmEAACAgEEAAUFAAAAAAAAAAABAgMEEQUGBxIACBMUQhYhIzEy/8QAFgEBAQEAAAAAAAAAAAAAAAAAAAEC/8QAFhEBAQEAAAAAAAAAAAAAAAAAABEx/9oADAMBAAIRAxEAPwBviHhnj/Tdgw7tuUBrtoVzMxokX5JJ68pIlpuvQo/wCKFI+RJGRqonynwzxtqG2ItxRVfpyxqrZhiudatuOzalaxM7rI/55AowtfP8g9CP34lAPGnmHl0+pajaw+rVq0cUy15xVo+3o1Hb3EVanDlpLHoH1MhipAyeuG8WAjk/zJ6hq4U0IVrvplp4HoO8csE3bLxTGOWJbCSwFOjlGxkkBsH7sNf/2Q%3D%3D';\n" + "bas64Images['activespam'] = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAYEBAQFBAYFBQYJBgUGCQsIBgYICwwKCgsKCgwQDAwMDAwMEAwODxAPDgwTExQUExMcGxsbHCAgICAgICAgICD/2wBDAQcHBw0MDRgQEBgaFREVGiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICD/wAARCAAQABADAREAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAb/xAAkEAACAwAABAcBAAAAAAAAAAACAwEEBQAREhMGFBYhIiMyFf/EABcBAAMBAAAAAAAAAAAAAAAAAAABBQb/xAAhEQACAQUAAgMBAAAAAAAAAAABAhEAAwQFEhNBFDFhIv/aAAwDAQACEQMRAD8AiMIbOq/0FhWM/cVtWYuaOoupaXsZK19grKfMugEgoDEljK5OCjq/MnEcTSqJZDcgmB6rUbDaZIzLq+a4FFxoHbfXR/abgW8l/oLesZ2KrFseezdY6lpuvrqb3yrK80jrSajJgrKTkIH4/romODm21ktyAYPqlr9pktmWl81wg3Fn+2+uh+1WYnjgcvGuap6Do1F1FUa9mFRZtBCfqQlNUumOwjn1comIKeZzMlPPiq74vwlAZS/IkSJqbstVnPsbx8N0objweGiOj7imv45HTwaepF9/9QqjqNh8rCtbIXfU5Tao9Ydh3sUj7wM/MZiRieBGxvhMCyhwpgSKet1Wcmxsnw3QguJJKNEdD3Ff/9k%3D';\n"; // Function to generate Apps/Viruses Info for Slaves var sAppsTable = 'function generateTooltip(sSlave, sFiles) {\n' + sImages + ' var aFiles = new Array();\n' + ' aFiles["wwl"] = "Waterwall";\n' + ' aFiles["crc"] = "Password";\n' + ' aFiles["fwl"] = "Firewall";\n' + ' aFiles["vspam"] = "SpamVirus";\n' + ' aFiles["mailer"] = "MarketingMailer";\n' + ' aFiles["av"] = "AntiVirus";\n' + ' aFiles["ana"] = "Analyse";\n' + ' aFiles["vshare"] = "ShareWarez";\n' + ' aFiles["fc"] = "FtpCash";\n' + ' aFiles["skr"] = "Seeker";\n' + ' aFiles["hdr"] = "Hider";\n' + ' aFiles["enc"] = "Encryptor";\n' + ' aFiles["dec"] = "Decrypter";\n' + ' aFiles["rip"] = "Warez";\n' + ' aFiles["vddos"] = "DDoSVirus";\n' + ' aFiles["rddos"] = "RemoteDestruction";\n' + ' aFiles["txt"] = "TextFile";\n' + ' aFiles["img"] = "ImageFile";\n' + ' aFiles["exe"] = "Forum";\n' + ' aSlave = sSlave.split("#");\n' + ' aFile = sFiles.split("#");\n' + ' var aMark = new Array();\n' + ' aMark["vspam"] = "";\n' + ' aMark["vddos"] = "";\n' + ' aMark["vshare"] = "";\n' + ' var sTable = "<table><tr><td colspan=\\\"2\\\"><table><tr><td>Last Updated: </td><td>" + aFile[5] + "</td></tr></table></td></tr><tr><td valign=\\\"top\\\"><table><tr bgcolor=\\\"#222222\\\"><td width=\\\"16\\\"></td><td><b>Files</b></td><td width=\\\"10\\\"><b>Level</b></td></tr>";\n' + ' for (var i=0; i<=1; i++) {\n' + ' if ( i == 1 ) {\n' + ' sTable = sTable + "</table></td>";\n' + ' sTable = sTable + "<td valign=\\\"top\\\"><table><tr bgcolor=\\\"#222222\\\"><td width=\\\"16\\\"></td><td><b>Viruses</b></td><td width=\\\"10\\\"><b>Level</b></td></tr>";\n' + ' }\n' + ' if ( (aFile[3] != "" && i == 0) || (aFile[4] != "" && i == 1) ) {\n' + ' var aApps = aFile[((i==0) ? 3 : 4)].split("@");\n' + ' for (var j=0; j < aApps.length; j++) {\n' + ' var aApp = aApps[j].split(" ");\n' + ' //alert(aApp[0] + " == vddos && " + aMark["vspam"] + " == && " + aApp[1].replace(".0", "") + " == " + aSlave[2].replace(".0", "") );\n' + ' var color = "#000000";\n' + ' if ( i == 1 && aApp[0] == "vspam" && aMark["vspam"] == "" && aApp[1].replace(".0", "") == aSlave[1].replace(".0", "") ) {\n' + ' aMark["vspam"] = "found"\n' + ' var bgColor = ((aSlave[4] == "S") ? "#B5FFB3" : "#FFD5D5");\n' + ' } else if ( i == 1 && aApp[0] == "vddos" && aMark["vddos"] == "" && aApp[1].replace(".0", "") == aSlave[2].replace(".0", "") ) {\n' + ' aMark["vddos"] = "found"\n' + ' var bgColor = ((aSlave[4] == "D") ? "#B5FFB3" : "#FFD5D5");\n' + ' } else if ( i == 1 && aApp[0] == "vshare" && aMark["vshare"] == "" && aApp[1].replace(".0", "") == aSlave[3].replace(".0", "") ) {\n' + ' aMark["vshare"] = "found"\n' + ' var bgColor = ((aSlave[4] == "W") ? "#B5FFB3" : "#FFD5D5");\n' + ' } else {\n' + ' var bgColor = "#444444";\n' + ' var color = "#FFFFFF";\n' + ' if (j%2) {\n' + ' bgColor = "#222222";\n' + ' }\n' + ' }\n' + ' if ( i == 0 ) {\n' + ' sTable = sTable + "<tr bgcolor=\\\"" + bgColor + "\\\"><td bgcolor=\\\"#000000\\\"><img border=\\\"0\\\" src=\\\"" + bas64Images[((aApp[0] == \'rip\') ? \'warez\' : aApp[0])] + "\\\"></td><td>" + aFiles[aApp[0]] + "." + aApp[0] + "</td><td><b>" + aApp[1] + "</b></td></tr>";\n' + ' } else if ( i == 1 ) {\n' + ' sTable = sTable + "<tr bgcolor=\\\"" + bgColor + "\\\"><td bgcolor=\\\"#000000\\\"><img border=\\\"0\\\" src=\\\"" + bas64Images["activespam"] + "\\\"></td><td><font color=\\\"" + color + "\\\">" + aFiles[aApp[0]] + "." + aApp[0] + "</font></td><td><font color=\\\"" + color + "\\\"><b>" + aApp[1] + "</b></font></td></tr>";\n' + ' }\n' + ' }\n' + ' }\n' + ' }\n' + ' sTable = sTable + "</table></td></tr></table>";\n' + ' return sTable;\n' + '}'; var sTooltip = 'var config = new Object(); var tt_Debug = true; var tt_Enabled = true; var TagsToTip = true; config. Above = false; config. BgColor = "#E2E7FF"; config. BgImg = ""; config. BorderColor = "#003099"; config. BorderStyle = "solid"; config. BorderWidth = 1; config. CenterMouse = false; config. ClickClose = false; config. ClickSticky = false; config. CloseBtn = false; config. CloseBtnColors = ["#990000", "#FFFFFF", "#DD3333", "#FFFFFF"]; config. CloseBtnText = " X "; config. CopyContent = true; config. Delay = 0; config. Duration = 0; config. Exclusive = false; config. FadeIn = 100; config. FadeOut = 100; config. FadeInterval = 30; config. Fix = null; config. FollowMouse = true; config. FontColor = "#000044"; config. FontFace = "Verdana,Geneva,sans-serif"; config. FontSize = "8pt"; config. FontWeight = "normal"; config. Height = 0; config. JumpHorz = false; config. JumpVert = true; config. Left = false; config. OffsetX = 14; config. OffsetY = 8; config. Opacity = 100; config. Padding = 3; config. Shadow = false; config. ShadowColor = "#C0C0C0"; config. ShadowWidth = 5; config. Sticky = false; config. TextAlign = "left"; config. Title = ""; config. TitleAlign = "left"; config. TitleBgColor = ""; config. TitleFontColor = "#FFFFFF"; config. TitleFontFace = ""; config. TitleFontSize = ""; config. TitlePadding = 2; config. Width = 0;\n' + 'function Tip() { tt_Tip(arguments, null); }\n' + 'function TagToTip() { var t2t = tt_GetElt(arguments[0]); if(t2t) { tt_Tip(arguments, t2t); } }\n' + 'function UnTip() { tt_OpReHref(); if(tt_aV[DURATION] < 0 && (tt_iState & 0x2)) { tt_tDurt.Timer("tt_HideInit()", -tt_aV[DURATION], true); } else if(!(tt_aV[STICKY] && (tt_iState & 0x2))) { tt_HideInit(); } }\n' + 'var tt_aElt = new Array(10); var tt_aV = new Array(); var tt_sContent; var tt_t2t; var tt_t2tDad; var tt_musX; var tt_musY; var tt_over; var tt_x; var tt_y; var tt_w; var tt_h;\n' + 'function tt_Extension() { tt_ExtCmdEnum(); tt_aExt[tt_aExt.length] = this; return this; }\n' + 'function tt_SetTipPos(x, y) { var css = tt_aElt[0].style; tt_x = x; tt_y = y; css.left = x + "px"; css.top = y + "px"; if(tt_ie56) { var ifrm = tt_aElt[tt_aElt.length - 1]; if(ifrm) { ifrm.style.left = css.left; ifrm.style.top = css.top; } } }\n' + 'function tt_HideInit() { if(tt_iState) { tt_ExtCallFncs(0, "HideInit"); tt_iState &= ~(0x4 | 0x8); if(tt_flagOpa && tt_aV[FADEOUT]) { tt_tFade.EndTimer(); if(tt_opa) { var n = Math.round(tt_aV[FADEOUT] / (tt_aV[FADEINTERVAL] * (tt_aV[OPACITY] / tt_opa))); tt_Fade(tt_opa, tt_opa, 0, n); return; } } tt_tHide.Timer("tt_Hide();", 1, false); } }\n' + 'function tt_Hide() { if(tt_db && tt_iState) { tt_OpReHref(); if(tt_iState & 0x2) { tt_aElt[0].style.visibility = "hidden"; tt_ExtCallFncs(0, "Hide"); } tt_tShow.EndTimer(); tt_tHide.EndTimer(); tt_tDurt.EndTimer(); tt_tFade.EndTimer(); if(!tt_op && !tt_ie) { tt_tWaitMov.EndTimer(); tt_bWait = false; } if(tt_aV[CLICKCLOSE] || tt_aV[CLICKSTICKY]) { tt_RemEvtFnc(document, "mouseup", tt_OnLClick); } tt_ExtCallFncs(0, "Kill"); if(tt_t2t && !tt_aV[COPYCONTENT]) { tt_UnEl2Tip(); } tt_iState = 0; tt_over = null; tt_ResetMainDiv(); if(tt_aElt[tt_aElt.length - 1]) { tt_aElt[tt_aElt.length - 1].style.display = "none"; } } }\n' + 'function tt_GetElt(id) { return(document.getElementById ? document.getElementById(id) : document.all ? document.all[id] : null); }\n' + 'function tt_GetDivW(el) { return(el ? (el.offsetWidth || el.style.pixelWidth || 0) : 0); }\n' + 'function tt_GetDivH(el) { return(el ? (el.offsetHeight || el.style.pixelHeight || 0) : 0); }\n' + 'function tt_GetScrollX() { return(window.pageXOffset || (tt_db ? (tt_db.scrollLeft || 0) : 0)); }\n' + 'function tt_GetScrollY() { return(window.pageYOffset || (tt_db ? (tt_db.scrollTop || 0) : 0)); }\n' + 'function tt_GetClientW() { return tt_GetWndCliSiz("Width"); }\n' + 'function tt_GetClientH() { return tt_GetWndCliSiz("Height"); }\n' + 'function tt_GetEvtX(e) { return (e ? ((typeof(e.pageX) != tt_u) ? e.pageX : (e.clientX + tt_GetScrollX())) : 0); }\n' + 'function tt_GetEvtY(e) { return (e ? ((typeof(e.pageY) != tt_u) ? e.pageY : (e.clientY + tt_GetScrollY())) : 0); }\n' + 'function tt_AddEvtFnc(el, sEvt, PFnc) { if(el) { if(el.addEventListener) { el.addEventListener(sEvt, PFnc, false); } else { el.attachEvent("on" + sEvt, PFnc); } } }\n' + 'function tt_RemEvtFnc(el, sEvt, PFnc) { if(el) { if(el.removeEventListener) { el.removeEventListener(sEvt, PFnc, false); } else { el.detachEvent("on" + sEvt, PFnc); } } }\n' + 'function tt_GetDad(el) { return(el.parentNode || el.parentElement || el.offsetParent); }\n' + 'function tt_MovDomNode(el, dadFrom, dadTo) { if(dadFrom) { dadFrom.removeChild(el); } if(dadTo) { dadTo.appendChild(el); } }\n' + 'var tt_aExt = new Array(); var tt_db; var tt_op; var tt_ie; var tt_ie56; var tt_bBoxOld; var tt_body; var tt_ovr_; var tt_flagOpa; var tt_maxPosX; var tt_maxPosY; var tt_iState = 0; var tt_opa; var tt_bJmpVert; var tt_bJmpHorz; var tt_elDeHref; var tt_tShow = new Number(0); var tt_tHide = new Number(0); var tt_tDurt = new Number(0); var tt_tFade = new Number(0); var tt_tWaitMov = new Number(0); var tt_bWait = false; var tt_u = "undefined";\n' + 'function tt_Init() { tt_MkCmdEnum(); if(!tt_Browser() || !tt_MkMainDiv()) { return; } tt_IsW3cBox(); tt_OpaSupport(); tt_AddEvtFnc(document, "mousemove", tt_Move); if(TagsToTip || tt_Debug) { tt_SetOnloadFnc(); } tt_AddEvtFnc(window, "unload", tt_Hide); }\n' + 'function tt_MkCmdEnum() { var n = 0; for(var i in config) { eval("window." + i.toString().toUpperCase() + " = " + n++); } tt_aV.length = n; }\n' + 'function tt_Browser() { var n; var nv; var n6; var w3c; n = navigator.userAgent.toLowerCase(); nv = navigator.appVersion; tt_op = (document.defaultView && typeof(eval("w" + "indow" + "." + "o" + "p" + "er" + "a")) != tt_u); tt_ie = n.indexOf("msie") != -1 && document.all && !tt_op; if(tt_ie) { var ieOld = (!document.compatMode || document.compatMode == "BackCompat"); tt_db = !ieOld ? document.documentElement : (document.body || null); if(tt_db) { tt_ie56 = parseFloat(nv.substring(nv.indexOf("MSIE") + 5)) >= 5.5 && typeof document.body.style.maxHeight == tt_u; } } else { tt_db = document.documentElement || document.body || (document.getElementsByTagName ? document.getElementsByTagName("body")[0] : null); if(!tt_op) { n6 = document.defaultView && typeof document.defaultView.getComputedStyle != tt_u; w3c = !n6 && document.getElementById; } } tt_body = (document.getElementsByTagName ? document.getElementsByTagName("body")[0] : (document.body || null)); if(tt_ie || n6 || tt_op || w3c) { if(tt_body && tt_db) { if(document.attachEvent || document.addEventListener) { return true; } } else { tt_Err("wz_tooltip.js must be included INSIDE the body section, immediately after the opening <body> tag.", false); } } tt_db = null; return false; }\n' + 'function tt_MkMainDiv() { if(tt_body.insertAdjacentHTML) { tt_body.insertAdjacentHTML("afterBegin", tt_MkMainDivHtm()); } else if(typeof tt_body.innerHTML != tt_u && document.createElement && tt_body.appendChild) { tt_body.appendChild(tt_MkMainDivDom()); } if(window.tt_GetMainDivRefs && tt_GetMainDivRefs()) { return true; } tt_db = null; return false; }\n' + 'function tt_MkMainDivHtm() { return( \'<div id="WzTtDiV"></div>\' + (tt_ie56 ? (\'<iframe id="WzTtIfRm" src="javascript:false" scrolling="no" frameborder="0" style="filter:Alpha(opacity=0);position:absolute;top:0px;left:0px;display:none;"></iframe>\') : "") ); }\n' + 'function tt_MkMainDivDom() { var el = document.createElement("div"); if(el) { el.id = "WzTtDiV"; } return el; }\n' + 'function tt_GetMainDivRefs() { tt_aElt[0] = tt_GetElt("WzTtDiV"); if(tt_ie56 && tt_aElt[0]) { tt_aElt[tt_aElt.length - 1] = tt_GetElt("WzTtIfRm"); if(!tt_aElt[tt_aElt.length - 1]) { tt_aElt[0] = null; } } if(tt_aElt[0]) { var css = tt_aElt[0].style; css.visibility = "hidden"; css.position = "absolute"; css.overflow = "hidden"; return true; } return false; }\n' + 'function tt_ResetMainDiv() { tt_SetTipPos(0, 0); tt_aElt[0].innerHTML = ""; tt_aElt[0].style.width = "0px"; tt_h = 0; }\n' + 'function tt_IsW3cBox() { var css = tt_aElt[0].style; css.padding = "10px"; css.width = "40px"; tt_bBoxOld = (tt_GetDivW(tt_aElt[0]) == 40); css.padding = "0px"; tt_ResetMainDiv(); }\n' + 'function tt_OpaSupport() { var css = tt_body.style; tt_flagOpa = (typeof(css.KhtmlOpacity) != tt_u) ? 2 : (typeof(css.KHTMLOpacity) != tt_u) ? 3 : (typeof(css.MozOpacity) != tt_u) ? 4 : (typeof(css.opacity) != tt_u) ? 5 : (typeof(css.filter) != tt_u) ? 1 : 0; }\n' + 'function tt_SetOnloadFnc() { tt_AddEvtFnc(document, "DOMContentLoaded", tt_HideSrcTags); tt_AddEvtFnc(window, "load", tt_HideSrcTags); if(tt_body.attachEvent) { tt_body.attachEvent("onreadystatechange", function() { if(tt_body.readyState == "complete") { tt_HideSrcTags(); } } ); } if(/WebKit|KHTML/i.test(navigator.userAgent)) { var t = setInterval(function() { if(/loaded|complete/.test(document.readyState)) { clearInterval(t); tt_HideSrcTags(); } }, 10); } }\n' + 'function tt_HideSrcTags() { if(!window.tt_HideSrcTags || window.tt_HideSrcTags.done) { return; } window.tt_HideSrcTags.done = true; if(!tt_HideSrcTagsRecurs(tt_body)) { tt_Err("There are HTML elements to be converted to tooltips. If you want these HTML elements to be automatically hidden, you must edit wz_tooltip.js, and set TagsToTip in the global tooltip configuration to true.", true); } }\n' + 'function tt_HideSrcTagsRecurs(dad) { var ovr; var asT2t; var a = dad.childNodes || dad.children || null; for(var i = a ? a.length : 0; i;) { --i; if(!tt_HideSrcTagsRecurs(a[i])) { return false; } ovr = a[i].getAttribute ? (a[i].getAttribute("onmouseover") || a[i].getAttribute("onclick")) : (typeof a[i].onmouseover == "function") ? (a[i].onmouseover || a[i].onclick) : null; if(ovr) { asT2t = ovr.toString().match(/TagToTip\\\s*\\\(\\\s*\\\'[^\\\'.]+\'\\\s*[\\\),]/); if(asT2t && asT2t.length) { if(!tt_HideSrcTag(asT2t[0])) { return false; } } } } return true; }\n' + 'function tt_HideSrcTag(sT2t) { var id; var el; id = sT2t.replace(/.+\'([^\'.]+)\'.+/, "$1"); el = tt_GetElt(id); if(el) { if(tt_Debug && !TagsToTip) { return false; } else { el.style.display = "none"; } } else { tt_Err("Invalid ID" + id + "passed to TagToTip(). There exists no HTML element with that ID.", true); } return true; }\n' + 'function tt_Tip(arg, t2t) { if(!tt_db || (tt_iState & 0x8)) { return; } if(tt_iState) { tt_Hide(); } if(!tt_Enabled) { return; } tt_t2t = t2t; if(!tt_ReadCmds(arg)) { return; } tt_iState = 0x1 | 0x4; tt_AdaptConfig1(); tt_MkTipContent(arg); tt_MkTipSubDivs(); tt_FormatTip(); tt_bJmpVert = false; tt_bJmpHorz = false; tt_maxPosX = tt_GetClientW() + tt_GetScrollX() - tt_w - 1; tt_maxPosY = tt_GetClientH() + tt_GetScrollY() - tt_h - 1; tt_AdaptConfig2(); tt_OverInit(); tt_ShowInit(); tt_Move(); }\n' + 'function tt_ReadCmds(a) { var i; i = 0; for(var j in config) { tt_aV[i++] = config[j]; } if(a.length & 1) { for(i = a.length - 1; i > 0; i -= 2) { tt_aV[a[i - 1]] = a[i]; } return true; } tt_Err("Incorrect call of Tip() or TagToTip(). Each command must be followed by a value.", true); return false; }\n' + 'function tt_AdaptConfig1() { tt_ExtCallFncs(0, "LoadConfig"); if(!tt_aV[TITLEBGCOLOR].length) { tt_aV[TITLEBGCOLOR] = tt_aV[BORDERCOLOR]; } if(!tt_aV[TITLEFONTCOLOR].length) { tt_aV[TITLEFONTCOLOR] = tt_aV[BGCOLOR]; } if(!tt_aV[TITLEFONTFACE].length) { tt_aV[TITLEFONTFACE] = tt_aV[FONTFACE]; } if(!tt_aV[TITLEFONTSIZE].length) { tt_aV[TITLEFONTSIZE] = tt_aV[FONTSIZE]; } if(tt_aV[CLOSEBTN]) { if(!tt_aV[CLOSEBTNCOLORS]) { tt_aV[CLOSEBTNCOLORS] = new Array("", "", "", ""); } for(var i = 4; i;) {--i; if(!tt_aV[CLOSEBTNCOLORS][i].length) { tt_aV[CLOSEBTNCOLORS][i] = (i & 1) ? tt_aV[TITLEFONTCOLOR] : tt_aV[TITLEBGCOLOR]; }} if(!tt_aV[TITLE].length) { tt_aV[TITLE] = " "; } } if(tt_aV[OPACITY] == 100 && typeof tt_aElt[0].style.MozOpacity != tt_u && !Array.every) { tt_aV[OPACITY] = 99; } if(tt_aV[FADEIN] && tt_flagOpa && tt_aV[DELAY] > 100) { tt_aV[DELAY] = Math.max(tt_aV[DELAY] - tt_aV[FADEIN], 100); } }\n' + 'function tt_AdaptConfig2() { if(tt_aV[CENTERMOUSE]) { tt_aV[OFFSETX] -= ((tt_w - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0)) >> 1); tt_aV[JUMPHORZ] = false; } }\n' + 'function tt_MkTipContent(a) { if(tt_t2t) { if(tt_aV[COPYCONTENT]) { tt_sContent = tt_t2t.innerHTML; } else { tt_sContent = ""; } } else { tt_sContent = a[0]; } tt_ExtCallFncs(0, "CreateContentString"); }\n' + 'function tt_MkTipSubDivs() { var sCss = "position:relative;margin:0px;padding:0px;border-width:0px;left:0px;top:0px;line-height:normal;width:auto;"; var sTbTrTd = \' cellspacing="0" cellpadding="0" border="0" style="\' + sCss + \'"><tbody style="\' + sCss + \'"><tr><td \'; tt_aElt[0].style.width = tt_GetClientW() + "px"; tt_aElt[0].innerHTML = ("" + (tt_aV[TITLE].length ? (\'<div id="WzTiTl" style="position:relative;z-index:1;">\' + \'<table id="WzTiTlTb"\' + sTbTrTd + \'id="WzTiTlI" style="\' + sCss + \'">\' + tt_aV[TITLE] + "</td>" + (tt_aV[CLOSEBTN] ? (\'<td align="right" style="\' + sCss + \'text-align:right;">\' + \'<span id="WzClOsE" style="position:relative;left:2px;padding-left:2px;padding-right:2px;\' + \'cursor:\' + (tt_ie ? \'hand\' : \'pointer\') + \';" onmouseover="tt_OnCloseBtnOver(1)" onmouseout="tt_OnCloseBtnOver(0)" onclick="tt_HideInit()">\' + tt_aV[CLOSEBTNTEXT] + \'</span></td>\') : "") + "</tr></tbody></table></div>") : "") + \'<div id="WzBoDy" style="position:relative;z-index:0;">\' + "<table" + sTbTrTd + \'id="WzBoDyI" style="\' + sCss + \'">\' + tt_sContent + "</td></tr></tbody></table></div>" + (tt_aV[SHADOW] ? (\'<div id="WzTtShDwR" style="position:absolute;overflow:hidden;"></div><div id="WzTtShDwB" style="position:relative;overflow:hidden;"></div>\') : "") ); tt_GetSubDivRefs(); if(tt_t2t && !tt_aV[COPYCONTENT]) { tt_El2Tip(); } tt_ExtCallFncs(0, "SubDivsCreated"); }\n' + 'function tt_GetSubDivRefs() { var aId = new Array("WzTiTl", "WzTiTlTb", "WzTiTlI", "WzClOsE", "WzBoDy", "WzBoDyI", "WzTtShDwB", "WzTtShDwR"); for(var i = aId.length; i; --i) { tt_aElt[i] = tt_GetElt(aId[i - 1]); } }\n' + 'function tt_FormatTip() { var css; var w; var h; var pad = tt_aV[PADDING]; var padT; var wBrd = tt_aV[BORDERWIDTH]; var iOffY; var iOffSh; var iAdd = (pad + wBrd) << 1; if(tt_aV[TITLE].length) { padT = tt_aV[TITLEPADDING]; css = tt_aElt[1].style; css.background = tt_aV[TITLEBGCOLOR]; css.paddingTop = css.paddingBottom = padT + "px"; css.paddingLeft = css.paddingRight = (padT + 2) + "px"; css = tt_aElt[3].style; css.color = tt_aV[TITLEFONTCOLOR]; if(tt_aV[WIDTH] == -1) { css.whiteSpace = "nowrap"; } css.fontFamily = tt_aV[TITLEFONTFACE]; css.fontSize = tt_aV[TITLEFONTSIZE]; css.fontWeight = "bold"; css.textAlign = tt_aV[TITLEALIGN]; if(tt_aElt[4]) { css = tt_aElt[4].style; css.background = tt_aV[CLOSEBTNCOLORS][0]; css.color = tt_aV[CLOSEBTNCOLORS][1]; css.fontFamily = tt_aV[TITLEFONTFACE]; css.fontSize = tt_aV[TITLEFONTSIZE]; css.fontWeight = "bold"; } if(tt_aV[WIDTH] > 0) { tt_w = tt_aV[WIDTH]; } else { tt_w = tt_GetDivW(tt_aElt[3]) + tt_GetDivW(tt_aElt[4]); if(tt_aElt[4]) { tt_w += pad; } if(tt_aV[WIDTH] < -1 && tt_w > -tt_aV[WIDTH]) { tt_w = -tt_aV[WIDTH]; } } iOffY = -wBrd; } else { tt_w = 0; iOffY = 0; } css = tt_aElt[5].style; css.top = iOffY + "px"; if(wBrd) { css.borderColor = tt_aV[BORDERCOLOR]; css.borderStyle = tt_aV[BORDERSTYLE]; css.borderWidth = wBrd + "px"; } if(tt_aV[BGCOLOR].length) { css.background = tt_aV[BGCOLOR]; } if(tt_aV[BGIMG].length) { css.backgroundImage = "url(" + tt_aV[BGIMG] + ")"; } css.padding = pad + "px"; css.textAlign = tt_aV[TEXTALIGN]; if(tt_aV[HEIGHT]) { css.overflow = "auto"; if(tt_aV[HEIGHT] > 0) { css.height = (tt_aV[HEIGHT] + iAdd) + "px"; } else { tt_h = iAdd - tt_aV[HEIGHT]; } } css = tt_aElt[6].style; css.color = tt_aV[FONTCOLOR]; css.fontFamily = tt_aV[FONTFACE]; css.fontSize = tt_aV[FONTSIZE]; css.fontWeight = tt_aV[FONTWEIGHT]; css.textAlign = tt_aV[TEXTALIGN]; if(tt_aV[WIDTH] > 0) { w = tt_aV[WIDTH]; } else if(tt_aV[WIDTH] == -1 && tt_w) { w = tt_w; } else { w = tt_GetDivW(tt_aElt[6]); if(tt_aV[WIDTH] < -1 && w > -tt_aV[WIDTH]) { w = -tt_aV[WIDTH]; } } if(w > tt_w) { tt_w = w; } tt_w += iAdd; if(tt_aV[SHADOW]) { tt_w += tt_aV[SHADOWWIDTH]; iOffSh = Math.floor((tt_aV[SHADOWWIDTH] * 4) / 3); css = tt_aElt[7].style; css.top = iOffY + "px"; css.left = iOffSh + "px"; css.width = (tt_w - iOffSh - tt_aV[SHADOWWIDTH]) + "px"; css.height = tt_aV[SHADOWWIDTH] + "px"; css.background = tt_aV[SHADOWCOLOR]; css = tt_aElt[8].style; css.top = iOffSh + "px"; css.left = (tt_w - tt_aV[SHADOWWIDTH]) + "px"; css.width = tt_aV[SHADOWWIDTH] + "px"; css.background = tt_aV[SHADOWCOLOR]; } else { iOffSh = 0; } tt_SetTipOpa(tt_aV[FADEIN] ? 0 : tt_aV[OPACITY]); tt_FixSize(iOffY, iOffSh); }\n' + 'function tt_FixSize(iOffY, iOffSh) { var wIn; var wOut; var h; var add; var pad = tt_aV[PADDING]; var wBrd = tt_aV[BORDERWIDTH]; var i; tt_aElt[0].style.width = tt_w + "px"; tt_aElt[0].style.pixelWidth = tt_w; wOut = tt_w - ((tt_aV[SHADOW]) ? tt_aV[SHADOWWIDTH] : 0); wIn = wOut; if(!tt_bBoxOld) { wIn -= (pad + wBrd) << 1; } tt_aElt[5].style.width = wIn + "px"; if(tt_aElt[1]) { wIn = wOut - ((tt_aV[TITLEPADDING] + 2) << 1); if(!tt_bBoxOld) { wOut = wIn; } tt_aElt[1].style.width = wOut + "px"; tt_aElt[2].style.width = wIn + "px"; } if(tt_h) { h = tt_GetDivH(tt_aElt[5]); if(h > tt_h) { if(!tt_bBoxOld) { tt_h -= (pad + wBrd) << 1; } tt_aElt[5].style.height = tt_h + "px"; } } tt_h = tt_GetDivH(tt_aElt[0]) + iOffY; if(tt_aElt[8]) { tt_aElt[8].style.height = (tt_h - iOffSh) + "px"; } i = tt_aElt.length - 1; if(tt_aElt[i]) { tt_aElt[i].style.width = tt_w + "px"; tt_aElt[i].style.height = tt_h + "px"; } }\n' + 'function tt_DeAlt(el) { var aKid; if(el) { if(el.alt) { el.alt = ""; } if(el.title) { el.title = ""; } aKid = el.childNodes || el.children || null; if(aKid) { for(var i = aKid.length; i;) { tt_DeAlt(aKid[--i]); } } } }\n' + 'function tt_OpDeHref(el) { if(!tt_op) { return; } if(tt_elDeHref) { tt_OpReHref(); } while(el) { if(el.hasAttribute && el.hasAttribute("href")) { el.t_href = el.getAttribute("href"); el.t_stats = window.status; el.removeAttribute("href"); el.style.cursor = "hand"; tt_AddEvtFnc(el, "mousedown", tt_OpReHref); window.status = el.t_href; tt_elDeHref = el; break; } el = tt_GetDad(el); } }\n' + 'function tt_OpReHref() { if(tt_elDeHref) { tt_elDeHref.setAttribute("href", tt_elDeHref.t_href); tt_RemEvtFnc(tt_elDeHref, "mousedown", tt_OpReHref); window.status = tt_elDeHref.t_stats; tt_elDeHref = null; } }\n' + 'function tt_El2Tip() { var css = tt_t2t.style; tt_t2t.t_cp = css.position; tt_t2t.t_cl = css.left; tt_t2t.t_ct = css.top; tt_t2t.t_cd = css.display; tt_t2tDad = tt_GetDad(tt_t2t); tt_MovDomNode(tt_t2t, tt_t2tDad, tt_aElt[6]); css.display = "block"; css.position = "static"; css.left = css.top = css.marginLeft = css.marginTop = "0px"; }\n' + 'function tt_UnEl2Tip() { var css = tt_t2t.style; css.display = tt_t2t.t_cd; tt_MovDomNode(tt_t2t, tt_GetDad(tt_t2t), tt_t2tDad); css.position = tt_t2t.t_cp; css.left = tt_t2t.t_cl; css.top = tt_t2t.t_ct; tt_t2tDad = null; }\n' + 'function tt_OverInit() { if(window.event) { tt_over = window.event.target || window.event.srcElement; } else { tt_over = tt_ovr_; } tt_DeAlt(tt_over); tt_OpDeHref(tt_over); }\n' + 'function tt_ShowInit() { tt_tShow.Timer("tt_Show()", tt_aV[DELAY], true); if(tt_aV[CLICKCLOSE] || tt_aV[CLICKSTICKY]) { tt_AddEvtFnc(document, "mouseup", tt_OnLClick); } }\n' + 'function tt_Show() { var css = tt_aElt[0].style; css.zIndex = Math.max((window.dd && dd.z) ? (dd.z + 2) : 0, 1010); if(tt_aV[STICKY] || !tt_aV[FOLLOWMOUSE]) { tt_iState &= ~0x4; } if(tt_aV[EXCLUSIVE]) { tt_iState |= 0x8; } if(tt_aV[DURATION] > 0) { tt_tDurt.Timer("tt_HideInit()", tt_aV[DURATION], true); } tt_ExtCallFncs(0, "Show"); css.visibility = "visible"; tt_iState |= 0x2; if(tt_aV[FADEIN]) { tt_Fade(0, 0, tt_aV[OPACITY], Math.round(tt_aV[FADEIN] / tt_aV[FADEINTERVAL])); } tt_ShowIfrm(); }\n' + 'function tt_ShowIfrm() { if(tt_ie56) { var ifrm = tt_aElt[tt_aElt.length - 1]; if(ifrm) { var css = ifrm.style; css.zIndex = tt_aElt[0].style.zIndex - 1; css.display = "block"; } } }\n' + 'function tt_Move(e) { if(e) { tt_ovr_ = e.target || e.srcElement; } e = e || window.event; if(e) { tt_musX = tt_GetEvtX(e); tt_musY = tt_GetEvtY(e); } if(tt_iState & 0x4) { if(!tt_op && !tt_ie) { if(tt_bWait) { return; } tt_bWait = true; tt_tWaitMov.Timer("tt_bWait = false;", 1, true); } if(tt_aV[FIX]) { tt_iState &= ~0x4; tt_PosFix(); } else if(!tt_ExtCallFncs(e, "MoveBefore")) { tt_SetTipPos(tt_Pos(0), tt_Pos(1)); } tt_ExtCallFncs([tt_musX, tt_musY], "MoveAfter") } }\n' + 'function tt_Pos(iDim) { var iX; var bJmpMod; var cmdAlt; var cmdOff; var cx; var iMax; var iScrl; var iMus; var bJmp; if(iDim) { bJmpMod = tt_aV[JUMPVERT]; cmdAlt = ABOVE; cmdOff = OFFSETY; cx = tt_h; iMax = tt_maxPosY; iScrl = tt_GetScrollY(); iMus = tt_musY; bJmp = tt_bJmpVert; } else { bJmpMod = tt_aV[JUMPHORZ]; cmdAlt = LEFT; cmdOff = OFFSETX; cx = tt_w; iMax = tt_maxPosX; iScrl = tt_GetScrollX(); iMus = tt_musX; bJmp = tt_bJmpHorz; } if(bJmpMod) { if(tt_aV[cmdAlt] && (!bJmp || tt_CalcPosAlt(iDim) >= iScrl + 16)) { iX = tt_PosAlt(iDim); } else if(!tt_aV[cmdAlt] && bJmp && tt_CalcPosDef(iDim) > iMax - 16) { iX = tt_PosAlt(iDim); } else { iX = tt_PosDef(iDim); } } else { iX = iMus; if(tt_aV[cmdAlt]) { iX -= cx + tt_aV[cmdOff] - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0); } else { iX += tt_aV[cmdOff]; } } if(iX > iMax) { iX = bJmpMod ? tt_PosAlt(iDim) : iMax; } if(iX < iScrl) { iX = bJmpMod ? tt_PosDef(iDim) : iScrl; } return iX; }\n' + 'function tt_PosDef(iDim) { if(iDim) { tt_bJmpVert = tt_aV[ABOVE]; } else { tt_bJmpHorz = tt_aV[LEFT]; } return tt_CalcPosDef(iDim); }\n' + 'function tt_PosAlt(iDim) { if(iDim) { tt_bJmpVert = !tt_aV[ABOVE]; } else { tt_bJmpHorz = !tt_aV[LEFT]; } return tt_CalcPosAlt(iDim); } function tt_CalcPosDef(iDim) { return iDim ? (tt_musY + tt_aV[OFFSETY]) : (tt_musX + tt_aV[OFFSETX]); } function tt_CalcPosAlt(iDim) { var cmdOff = iDim ? OFFSETY : OFFSETX; var dx = tt_aV[cmdOff] - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0); if(tt_aV[cmdOff] > 0 && dx <= 0) { dx = 1; } return((iDim ? (tt_musY - tt_h) : (tt_musX - tt_w)) - dx); }\n' + 'function tt_PosFix() { var iX; var iY; if(typeof(tt_aV[FIX][0]) == "number") { iX = tt_aV[FIX][0]; iY = tt_aV[FIX][1]; } else { if(typeof(tt_aV[FIX][0]) == "string") { el = tt_GetElt(tt_aV[FIX][0]); } else { el = tt_aV[FIX][0]; } iX = tt_aV[FIX][1]; iY = tt_aV[FIX][2]; if(!tt_aV[ABOVE] && el) { iY += tt_GetDivH(el); } for(; el; el = el.offsetParent) { iX += el.offsetLeft || 0; iY += el.offsetTop || 0; } } if(tt_aV[ABOVE]) { iY -= tt_h; } tt_SetTipPos(iX, iY); }\n' + 'function tt_Fade(a, now, z, n) { if(n) { now += Math.round((z - now) / n); if((z > a) ? (now >= z) : (now <= z)) { now = z; } else { tt_tFade.Timer( "tt_Fade(" + a + "," + now + "," + z + "," + (n - 1) + ")", tt_aV[FADEINTERVAL], true ); } } now ? tt_SetTipOpa(now) : tt_Hide(); }\n' + 'function tt_SetTipOpa(opa) { tt_SetOpa(tt_aElt[5], opa); if(tt_aElt[1]) { tt_SetOpa(tt_aElt[1], opa); } if(tt_aV[SHADOW]) { opa = Math.round(opa * 0.8); tt_SetOpa(tt_aElt[7], opa); tt_SetOpa(tt_aElt[8], opa); } }\n' + 'function tt_OnCloseBtnOver(iOver) { var css = tt_aElt[4].style; iOver <<= 1; css.background = tt_aV[CLOSEBTNCOLORS][iOver]; css.color = tt_aV[CLOSEBTNCOLORS][iOver + 1]; }\n' + 'function tt_OnLClick(e) { e = e || window.event; if(!((e.button && e.button & 2) || (e.which && e.which == 3))) { if(tt_aV[CLICKSTICKY] && (tt_iState & 0x4)) { tt_aV[STICKY] = true; tt_iState &= ~0x4; } else if(tt_aV[CLICKCLOSE]) tt_HideInit(); } }\n' + 'function tt_Int(x) { var y; return(isNaN(y = parseInt(x)) ? 0 : y); }\n' + 'Number.prototype.Timer = function(s, iT, bUrge) { if(!this.value || bUrge) { this.value = window.setTimeout(s, iT); } }\n' + 'Number.prototype.EndTimer = function() { if(this.value) { window.clearTimeout(this.value); this.value = 0; } }\n' + 'function tt_GetWndCliSiz(s) { var db; var y = window["inner" + s]; var sC = "client" + s; var sN = "number"; if(typeof y == sN) { var y2; return( ((db = document.body) && typeof(y2 = db[sC]) == sN && y2 && y2 <= y) ? y2 : ((db = document.documentElement) && typeof(y2 = db[sC]) == sN && y2 && y2 <= y) ? y2 : y ); } return( ((db = document.documentElement) && (y = db[sC])) ? y : document.body[sC] ); } function tt_SetOpa(el, opa) { var css = el.style; tt_opa = opa; if(tt_flagOpa == 1) { if(opa < 100) { if(typeof(el.filtNo) == tt_u) { el.filtNo = css.filter; } var bVis = css.visibility != "hidden"; css.zoom = "100%"; if(!bVis) { css.visibility = "visible"; } css.filter = "alpha(opacity=" + opa + ")"; if(!bVis) css.visibility = "hidden"; } else if(typeof(el.filtNo) != tt_u) css.filter = el.filtNo; } else { opa /= 100.0; switch(tt_flagOpa) { case 2: css.KhtmlOpacity = opa; break; case 3: css.KHTMLOpacity = opa; break; case 4: css.MozOpacity = opa; break; case 5: css.opacity = opa; break; } } } function tt_Err(sErr, bIfDebug) { if(tt_Debug || !bIfDebug) alert("Tooltip Script Error Message:" + sErr); } function tt_ExtCmdEnum() { var s; for(var i in config) { s = "window." + i.toString().toUpperCase(); if(eval("typeof(" + s + ") == tt_u")) { eval(s + " = " + tt_aV.length); tt_aV[tt_aV.length] = null; } } } function tt_ExtCallFncs(arg, sFnc) { var b = false; for(var i = tt_aExt.length; i;) {--i; var fnc = tt_aExt[i]["On" + sFnc]; if(fnc && fnc(arg)) { b = true; } } return b; } tt_Init();\n'; var script = document.createElement('script'); script.type="text/javascript"; script.innerHTML = sTooltip; document.getElementsByTagName('head')[0].appendChild(script); var script = document.createElement('script'); script.type="text/javascript"; script.innerHTML = '\nconfig. Delay = 0;\nconfig. Left = true;\nconfig. ShadowWidth = 1;\nconfig. ShadowColor = "#FFFFFF";\nconfig. BgColor = "#000000";\nconfig. BorderWidth = 2;\nconfig. BorderColor = "#FFFFFF";\n' + sAppsTable; document.getElementsByTagName('head')[0].appendChild(script); } } // no chaptcha - end GM_setValue('LastRunTime',parseInt(StartTime/1000)); })(); // function wrapper