// Interface addNetwork = function(slug){ g_active_networks.push(slug) updateNetwork(slug) } readNetwork = function(network_slug){ var network = g_network_list[network_slug] network['click']() } addListener = function(network_slug){ if(g_used_probes != maxProbes()){ var network = g_network_list[network_slug] network['listeners'] ++ g_used_probes ++ updateNetworks() write("You add a listener. "+remainingProbesString()+" remaining.") updateNetworkProbe() } } removeListener = function(network_slug){ var x_network = g_network_list[network_slug] var listeners = x_network['listeners'] if(listeners != 0){ var network = g_network_list[network_slug] network['listeners'] -- g_used_probes -- updateNetworks() write("You remove a listener. "+remainingProbesString()+" remaining.") updateNetworkProbe() } } addScanner = function(network_slug){ if(g_used_probes != maxProbes()){ var x_network = g_network_list[network_slug] if(!x_network['scannable']){ write(""+x_network['title']+" - You are unable to scan this network.") }else{ x_network['scanners'] ++ g_used_probes ++ updateNetworks() write("You add a scanner. "+remainingProbesString()+" remaining.") updateNetworkProbe() } } } removeScanner = function(network_slug){ var x_network = g_network_list[network_slug] var scanners = x_network['scanners'] if(scanners != 0){ var network = g_network_list[network_slug] network['scanners'] -- g_used_probes -- updateNetworks() write("You remove a scanner. "+remainingProbesString()+" remaining.") updateNetworkProbe() } } tickListeners = function(){ if(!g_can_disk) return; $.each(g_active_networks,function(i,network_slug){ var network = g_network_list[network_slug] var listeners = network['listeners'] var traffic = network['traffic'] for(var i=0; i< listeners; i++){ if(traffic > 0){ if(Math.random() < traffic){ addFileFromSlug(network_slug+'_packets',1); } } } }) } tickScanners = function(){ if(!g_can_scan) return; $.each(g_active_networks,function(i,network_slug){ var x_network = g_network_list[network_slug] var scanners = x_network['scanners'] var scanned = x_network['scanned'] var scansize = x_network['scansize'] if(scanners > 0 && scanned < scansize){ x_network['scanned'] += scanners if(x_network['scanned'] > scansize){ x_network['scanned'] = scansize } checkNetworkScanEvents(x_network) updateNetworkScanned(x_network) } }) } checkNetworkScanEvents = function(x_network){ var scanevents = x_network['scanevents'] var scanned = x_network['scanned'] if(scanevents){ // Loop through scanevents, execute if scanned > threshold Object.keys(scanevents).forEach(function (scanthreshold) { if(scanned >= scanthreshold){ scanevents[scanthreshold]() delete scanevents[scanthreshold] } }) } } updateNetworkProbe = function(){ $('#probes').html(remainingProbesString()+" available") } // Vars // INITCALL var g_network_list, g_active_networks initCallNetworks = function(){ g_active_networks = [] g_used_probes = 0 g_network_list = { "sandbox": {slug: "sandbox", title:"sandbox", scanners:0, scanned:0, scansize:200000, listeners:0, traffic: .33, scannable:true, click: function(){ switch(g_level_netsec){ case -1: write("sandbox - There is no way to interact with this Network.") break; case 0: write("sandbox - There is data flowing from this Network, streaming into the IO device of the environment in the form of packets. It might be possible to capture and analyze these packets.") break; default: write("sandbox - This is an open Network using the http protocol. There appears to be multiple environments interacting with each other via unencrypted messages.

Data is flowing from this Network, but would require 10mB of data to properly analyze.") } }, scanevents: { 100:function(){ write("You have discovered an unmounted drive on the Sandbox Network.") addAvailableProcessBySlug('sandbox100') }, 200:function(){ write("You have discovered a remote host on the Sandbox Network.") addAvailableProcessBySlug('sandbox200') addHostFromSlug('star') }, 500:function(){ write("You have discovered a remote host on the Sandbox Network.") addHostFromSlug('nova') }, 3000:function(){ write("You have discovered a remote host on the Sandbox Network.") addHostFromSlug('sun') }, 4000:function(){ write("You have discovered a remote host on the Sandbox Network.") addHostFromSlug('eris') }, 6000:function(){ write("You have discovered a remote host on the Sandbox Network.") addHostFromSlug('juno') }, 8000:function(){ write("You have discovered a remote host on the Sandbox Network.") addHostFromSlug('sony') }, 20000:function(){ write("You have discovered a remote host on the Sandbox Network.") addHostFromSlug('solar') }, 50000:function(){ write("You have discovered a remote host on the Sandbox Network.") addHostFromSlug('eons') }, 100000:function(){ write("You have discovered a remote host on the Sandbox Network.") addHostFromSlug('luna') }, 200000:function(){ write("You have discovered a remote host on the Sandbox Network.") addHostFromSlug('cypher') } } }, "securedev": {slug:'securedev', title:"securedev", scanners:0, scanned:0, scansize:100, listeners:0, traffic: 0, scannable:false, click: function(){ if(g_network_list['securedev'].glitched){ write("securedev - Data is flowing from this Network. It is of an inconsistent nature. You must capture and analyze it.") }else{ if(g_level_netsec == -1) write("securedev - There is no way to interact with this Network.") else write("securedev - This network is silent, and is using an unknown application protocol. There is no way to interact with it.") } } } } } // Frontend loadScanInterface = function(){ $("#networkholder").removeClass('hidescanners') } loadNetworksHolder = function(){ $("#networkholder").fadeIn({duration:g_fadespeed,queue:true}) } loadListeners = function(){ $("#networkholder").removeClass('hidelisteners') } updateNetworks = function(){ $.each(g_active_networks,function(i,network_slug){ updateNetwork(network_slug) }) } updateNetworkScanned = function(x_network){ var network_slug = x_network['slug'] $('#networkholder').find('.row[network_slug='+network_slug+']').find('.scanned').html(scannedPercentage(x_network)) } scannedPercentage = function(x_network){ var scanned = x_network['scanned'] var scansize = x_network['scansize'] var output = ((scanned / scansize)*100).toFixed(1)+'%' return output } updateNetwork = function(network_slug){ var $holder = $('#networkholdersub') var $row = $holder.find('.row[network_slug='+network_slug+']') var x_network = g_network_list[network_slug] var title = x_network['title'] var listeners = x_network['listeners'] var scanners = x_network['scanners'] var scanned = x_network['scanned'] var rowclass = "row network " if(g_used_probes == maxProbes()){ rowclass = rowclass+" noplus " } if(listeners == 0){ rowclass = rowclass+" nominuslisten " } if(scanners == 0){ rowclass = rowclass+" nominusscan " } if($row.length){ $row.attr('class', rowclass) $row.find('.listeners').html(listeners) $row.find('.scanners').html(scanners) }else{ $holder.append("
"+ "
"+title+"
"+ "
-"+listeners+"+
"+ "
-"+scanners+"+
"+ "
"+scannedPercentage(x_network)+"
"+ "
") var $row = $holder.find('.row[network_slug='+network_slug+']') $row.find('.listen .plus').click(function(){ addListener(network_slug) }) $row.find('.listen .minus').click(function(){ removeListener(network_slug) }) $row.find('.scan .plus').click(function(){ addScanner(network_slug) }) $row.find('.scan .minus').click(function(){ removeScanner(network_slug) }) $row.find('.name').click(function(){ readNetwork(network_slug) }) } updateNetworkScanned(x_network) } wipeNetworks = function(){ g_active_networks = [] $('#networkholdersub').html("") $('#networkholder').hide() }