Exemple #1
0
class Vmmaster(Flask):
    def __init__(self, *args, **kwargs):
        from core.db import Database
        from core.sessions import Sessions
        from vmpool.virtual_machines_pool import VirtualMachinesPool

        super(Vmmaster, self).__init__(*args, **kwargs)
        self.running = True
        self.uuid = str(uuid1())
        self.database = Database()
        self.pool = VirtualMachinesPool(self)
        self.sessions = Sessions(self)
        self.json_encoder = JSONEncoder
        self.register()

    def register(self):
        self.database.register_platforms(self.uuid, self.pool.platforms.info())

    def unregister(self):
        self.database.unregister_platforms(self.uuid)

    def cleanup(self):
        log.info("Shutting down...")
        self.pool.stop_workers()
        self.sessions.worker.stop()
        self.pool.free()
        self.unregister()
        self.pool.platforms.cleanup()
        log.info("Server gracefully shut down.")
Exemple #2
0
    def __init__(self, *args, **kwargs):
        from core.db import Database
        from core.sessions import Sessions
        from vmpool.virtual_machines_pool import VirtualMachinesPool

        super(Vmmaster, self).__init__(*args, **kwargs)
        self.running = True
        self.uuid = str(uuid1())
        self.database = Database()
        self.pool = VirtualMachinesPool(self)
        self.sessions = Sessions(self)
        self.json_encoder = JSONEncoder
        self.register()
Exemple #3
0
def getHostsAlive(ip, vId):
    hDB = Database()
    try:
        hDB.sentences_victim('delete_hostalive', vId, 2)
        split_ip = ip.split('.')
        net = split_ip[0] + '.' + split_ip[1] + '.' + split_ip[2] + '.'
        if ip != '127.0.0.1':
            if (platform.system()=='Windows'):
                ping = 'ping -n 1 -w 5'
            else:
                ping = 'ping -c 1 -t 3'
            for sub_net in range(1, 255):
                address = net + str(sub_net)
                response = os.popen(ping + ' ' + address)
                for line in response.readlines():
                    if ('time=' in line.lower()):
                        lPos = line.find('time=')
                        tmpLine = line[lPos+5:lPos+15]
                        lPos = tmpLine.find('ms')
                        tmpLine = tmpLine[0:lPos+2]
                        
                        hDB.sentences_victim('register_hostalive', [vId, address, tmpLine, time.strftime("%Y-%m-%d - %H:%M:%S")], 2)
                        break
        else:
            hDB.sentences_victim('register_hostalive', [vId, 'OWN HOST', 0, time.strftime("%Y-%m-%d - %H:%M:%S")], 2)
    except ValueError:
        pass
Exemple #4
0
    def setUpClass(cls):
        setup_config('data/config.py')
        cls.db = Database(config.DATABASE)
        Base.metadata.drop_all(cls.db.engine)
        Base.metadata.create_all(cls.db.engine)

        cls.size = 20
Exemple #5
0
    def __init__(self, *args, **kwargs):
        from core.db import Database, DatabaseQueueWorker
        from core.sessions import Sessions

        super(Vmmaster, self).__init__(*args, **kwargs)
        self.running = True
        self.json_encoder = JSONEncoder

        self.database = Database()
        self.database_task_queue = deque()
        self.database_task_worker = DatabaseQueueWorker(
            self.database_task_queue)
        self.database_task_worker.start()

        self.sessions = Sessions(self.database, self.app_context)
        self.sessions.start_workers()
Exemple #6
0
def getHostsAlive(ip, vId):
    hDB = Database()
    try:
        hDB.sentences_victim('delete_hostalive', vId, 2)
        split_ip = ip.split('.')
        net = split_ip[0] + '.' + split_ip[1] + '.' + split_ip[2] + '.'
        if ip != '127.0.0.1':
            if (platform.system()=='Windows'):
                ping = 'ping -n 1 -w 5'
            else:
                ping = 'ping -c 1 -t 3'
            for sub_net in range(1, 255):
                address = net + str(sub_net)
                response = os.popen(ping + ' ' + address)
                for line in response.readlines():
                    if ('time=' in line.lower()):
                        lPos = line.find('time=')
                        tmpLine = line[lPos+5:lPos+15]
                        lPos = tmpLine.find('ms')
                        tmpLine = tmpLine[0:lPos+2]
                        
                        hDB.sentences_victim('register_hostalive', [vId, address, tmpLine, time.strftime("%Y-%m-%d - %H:%M:%S")], 2)
                        break
        else:
            hDB.sentences_victim('register_hostalive', [vId, 'OWN HOST', 0, time.strftime("%Y-%m-%d - %H:%M:%S")], 2)
    except ValueError:
        pass
Exemple #7
0
    def __init__(self, *args, **kwargs):
        from core.db import Database
        from core.sessions import Sessions
        from vmpool.virtual_machines_pool import VirtualMachinesPool

        super(Provider, self).__init__(*args, **kwargs)
        self.running = True
        self.json_encoder = JSONEncoder
        self.database = Database()
        self.sessions = Sessions(self.database, self.app_context)
        self.pool = VirtualMachinesPool(app=self, name=config.PROVIDER_NAME)
        self.pool.start_workers()
Exemple #8
0
    def setUp(self):
        from core.db import Database
        setup_config('data/config.py')
        self.platform_name = "origin_1"
        self.app = Flask(__name__)

        self.ctx = self.app.app_context()
        self.ctx.push()
        self.app.database = Database()
        self.app.sessions = Mock()

        self.mocked_image = Mock(
            id=1,
            status='active',
            get=Mock(return_value='snapshot'),
            min_disk=20,
            min_ram=2,
            instance_type_flavorid=1,
        )
        type(self.mocked_image).name = PropertyMock(
            return_value='test_origin_1')

        with patch.multiple(
                'vmpool.platforms.OpenstackPlatforms',
                images=Mock(return_value=[self.mocked_image]),
                flavor_params=Mock(return_value={
                    'vcpus': 1,
                    'ram': 2
                }),
                limits=Mock(
                    return_value={
                        'maxTotalCores': 10,
                        'maxTotalInstances': 10,
                        'maxTotalRAMSize': 100,
                        'totalCoresUsed': 0,
                        'totalInstancesUsed': 0,
                        'totalRAMUsed': 0
                    }),
        ):
            from vmpool.virtual_machines_pool import VirtualMachinesPool
            self.pool = VirtualMachinesPool(self.app,
                                            preloader_class=Mock(),
                                            artifact_collector_class=Mock(),
                                            endpoint_preparer_class=Mock())
            self.ctx = self.app.app_context()
            self.ctx.push()
            self.pool.register()
Exemple #9
0
if getattr(sys, 'frozen', False):
    template_folder = os.path.join(sys._MEIPASS, 'templates')
    static_folder = os.path.join(sys._MEIPASS, 'static')
    app = Flask(__name__,
                template_folder=template_folder,
                static_folder=static_folder)
else:
    app = Flask(__name__,
                template_folder='../templates',
                static_folder='../static')

cors = CORS(app)

# call database
db = Database()

# preview header tool in console
trape.header()

#print db.firstTime


@app.route("/" + trape.stats_path)
def index():
    return trape.injectCSS_Paths(
        render_template("/login.html").replace(
            '[LOGIN_SRC]',
            trape.JSFiles[2]['src']).replace('[LIBS_SRC]',
                                             trape.JSFiles[1]['src']))
Exemple #10
0
from socket import gethostname, gethostbyname 
from threading import Lock
from flask import Flask, render_template, session, request, json
from flask_socketio import SocketIO, emit, join_room, rooms, disconnect
import core.stats 
import core.victim
from victim_objects import attacks_hook_message
from core.utils import utils
from core.db import Database

# Main parts, to generate relationships among others
trape = core.stats.trape
app = core.stats.app

# call database
db = Database()

async_mode = None
socketio = SocketIO(app, async_mode=async_mode)
thread = None
thread_lock = Lock()

db.sentences_victim('clean_online', None, 2)

def background_thread():
    count = 0

@socketio.on("join", namespace="/trape")
def join(message):
    try:
        join_room(message['room'])
Exemple #11
0
from core.geospy import GeoSpy                 
from core.db import Database                   
from time import sleep                                      
try:                                           
    import flask                               
    import flask_socketio                                                
except:                                        
    utils.Go(utils.Color['whiteBold'] + "[" + utils.Color['redBold'] + "x" + utils.Color['whiteBold'] + "]" + utils.Color['redBold'] + " " + "ERROR: " + utils.Color['white'] + "Missing some necessary dependencies!")
    import sys
    sys.exit()

# We generalize the main class of <GeoSpy>
trackPeople = GeoSpy()

# call class database
generateData = Database()
if generateData.firstTime:
    utils.Go("\033[H\033[J")         
    utils.Go("\t" + utils.Color['white'] + "--" + " " + "v" + utils.Color['redBold'] + "2.0" + utils.Color['white'] + " " + "--" + "\n" + utils.Color['white'])
    utils.Go(utils.Color['whiteBold'] + "Welcome " + utils.Color['greenBold'] + os.uname()[1].upper() + utils.Color['whiteBold'] + " to GeoSpy" + utils.Color['white'])
    utils.Go("------")
    utils.Go("This is an exclusive version for researchers, or professionals \nwho are dedicated to research, we hope you enjoy." + "\n")
    utils.Go(utils.Color['whiteBold'] + "DISCLAIMER" + utils.Color['white'])
    utils.Go("------")
    utils.Go("This is a monitoring and research tool " + utils.Color['whiteBold'] + "OSINT" + utils.Color['white'] + ", which is distributed \nfor educational and investigative purposes, the person who has bought \nor uses this tool is responsible for its proper use or actions committed, \n" + utils.Color['whiteBold'] + "Entynetproject" + utils.Color['white'] + " is not responsible for the use or the scope that \npeople can have through this software." + "\n")
    utils.Go(utils.Color['whiteBold']+ "CREATOR" + utils.Color['white'])
    utils.Go("------")
    utils.Go(utils.Color["white"] + "- " + utils.Color["greenBold"] + "Developer: " + utils.Color['white'] + "Entynetproject" + utils.Color['white'])
    utils.Go(utils.Color["white"] + "- " + utils.Color["greenBold"] + "Twitter: " + utils.Color['white'] + "https://twitter.com/entynetproject/")
    utils.Go(utils.Color["white"] + "- " + utils.Color["greenBold"] + "Site: " + utils.Color['white'] + "http://entynetproject.simplesite.com/" + utils.Color['white'] + "\n")
    sleep(3)
Exemple #12
0
from threading import Lock
from flask import Flask, render_template, session, request, json
from flask_socketio import SocketIO, emit, join_room, rooms, disconnect
import core.stats
import core.user
from user_objects import attacks_hook_message
from core.utils import utils
from core.db import Database
import sys

# Main parts, to generate relationships among others
trape = core.stats.trape
app = core.stats.app

# call database
db = Database()

async_mode = None
socketio = SocketIO(app, async_mode=async_mode)
thread = None
thread_lock = Lock()

db.sentences_victim('clean_online', None, 2)


def background_thread():
    count = 0


@socketio.on("join", namespace="/trape")
def join(message):
Exemple #13
0
from core.db import Database                  #
from time import sleep                        #                  
try:                                          #
    import flask                              #
    import flask_socketio                     #
    import os                                 #
except:                                       ############################################
    utils.Go("\t\nPlease install requirements.txt libraries, you can do it executing:")  #
    utils.Go("\t\npip install -r requirements.txt")  #####################################
######################################################

# We generalize the main class of <trape>
trackPeople = Trape()

# call class database
generateData = Database()
if generateData.firstTime:
    utils.Go("\033[H\033[J")        
    utils.Go(utils.Color['whiteBold'] + "  @@@@@@@@@@@@@@@@@@@@@@  ")     
    utils.Go(utils.Color['whiteBold'] + " @@@@@@@@@@@@@@@@@@@@@@@@ ")                                            
    utils.Go(utils.Color['whiteBold'] + " @@@@@   @@@@@@@@@@@@@@@@ ")
    utils.Go(utils.Color['whiteBold'] + " @@@@@   @@@@@@@@@@@@@@@@ ")
    utils.Go(utils.Color['whiteBold'] + " @@@@@       @@     @@@@@ ")
    utils.Go(utils.Color['whiteBold'] + " @@@@@       @@     @@@@@ ")
    utils.Go(utils.Color['whiteBold'] + " @@@@@    @@@@@@@@@@@@@@@ ")
    utils.Go(utils.Color['whiteBold'] + " @@@@@    @@@@@     @@@@@ ")
    utils.Go(utils.Color['whiteBold'] + " @@@@@       @@     @@@@@ ")
    utils.Go(utils.Color['whiteBold'] + " @@@@@@@@@@@@@@@@@@@@@@@@ ")
    utils.Go(utils.Color['whiteBold'] + " @@@@@@@@@@@@@@@@@@@@@@@@  ") 
    utils.Go(utils.Color['whiteBold'] + "  @@@@@@@@@@@@@@@@@@@@@@  ") 
    utils.Go("\t" + utils.Color['white'] + "--" + " " + "v" + utils.Color['redBold'] + "2.0" + utils.Color['white'] + " " + "--" + "\n" + utils.Color['white'])
Exemple #14
0
class Vmmaster(Flask):
    balance_lock = threading.Lock()

    def __init__(self, *args, **kwargs):
        from core.db import Database, DatabaseQueueWorker
        from core.sessions import Sessions

        super(Vmmaster, self).__init__(*args, **kwargs)
        self.running = True
        self.json_encoder = JSONEncoder

        self.database = Database()
        self.database_task_queue = deque()
        self.database_task_worker = DatabaseQueueWorker(
            self.database_task_queue)
        self.database_task_worker.start()

        self.sessions = Sessions(self.database, self.app_context)
        self.sessions.start_workers()

    def cleanup(self):
        log.info("Cleanup...")
        try:
            self.database_task_worker.stop()
            self.sessions.stop_workers()
            log.info("Cleanup done")
        except:
            log.exception("Cleanup was finished with errors")

    @property
    def providers(self):
        return self.database.get_active_providers()

    def stop(self):
        self.running = False

    def get_matched_platforms(self, dc):
        from vmmaster.matcher import SeleniumMatcher, PlatformsBasedMatcher
        providers_platforms, limits = {}, {}

        with self.balance_lock:
            for provider in self.providers:
                platforms = self.database.get_platforms(provider.id)
                matcher = SeleniumMatcher(
                    platforms=provider.config,
                    fallback_matcher=PlatformsBasedMatcher(platforms))
                matched_platforms = matcher.get_matched_platforms(dc)
                if matched_platforms and provider.max_limit:
                    providers_platforms[provider.id] = matched_platforms
                    limits[provider.id] = provider.max_limit

            if not providers_platforms:
                return None, None

            provider_id = self.get_provider_id(limits)
            if provider_id:
                return providers_platforms[provider_id][0], provider_id

        return None, None

    def get_provider_id(self, limits):
        availables = {}

        for provider_id, limit in limits.items():
            sessions = self.sessions.active(provider_id=provider_id)
            availables[provider_id] = limit - len(sessions)

        if availables:
            max_value = max(availables.values())
            return availables.keys()[availables.values().index(max_value)]