Esempio n. 1
0
def startVm(ctx, mach, type, f, sha):
    """
    Start a virtual machien and run the analysis process
    
    """
    mgr = ctx['mgr']
    vb = ctx['vb']
    session = mgr.perf = ctx['perf']
    session = mgr.getSessionObject(vb)
    uuid = mach.id
    from datetime import datetime
    start_time = datetime.now()
    end_time = datetime.now()
    try:
        snap = mach.currentSnapshot
        if snap.name != "testing":
            raise Exception
        progress = vb.openRemoteSession(session, uuid, type, "")
        with open('/home/zozanh/sharedmal/target.exe', 'wb+') as destination:
            for chunk in f.chunks():
                destination.write(chunk)
        clean_log()
        if progressBar(ctx, progress, 100) and int(progress.resultCode) == 0:

            execInGuest(ctx, session,
                        ["C:\\WINDOWS\\system32\\PrototypeI.exe"], None,
                        "zozanh", "12345", -1)
            pauseGuest(ctx, session)
            end_time = datetime.now()
            time.sleep(1)
            getlog(
                {
                    "SHA1": sha,
                    "End Time": end_time,
                    "Start Time": start_time,
                    "File Name": f.name,
                    "File Size": f.size
                }, sha)
            do_job(sha)
            file = open(
                "/home/zozanh/env/djcode/thesis/static/data/" + sha +
                '/fin.log', "wr+")
            file.close()
            restoreSnapshot(ctx, session, uuid, "testing")
            time.sleep(1)
            session.close()
        else:
            pass
    except Exception:
        return False
    return True
Esempio n. 2
0
def startVm(ctx, mach, type, f, sha):
    mgr = ctx['mgr']
    vb = ctx['vb']
    session = mgr.perf = ctx['perf']
    session = mgr.getSessionObject(vb)
    uuid = mach.id
    from datetime import datetime
    start_time = datetime.now()
    end_time = datetime.now()
    try:
        snap = mach.currentSnapshot
        if snap.name != "testing":
            raise Exception        
        progress = vb.openRemoteSession(session, uuid, type, "")
        with open('/home/zozanh/sharedmal/target.exe', 'wb+') as destination:
            for chunk in f.chunks():
                destination.write(chunk)
        clean_log()
        if progressBar(ctx, progress, 100) and int(progress.resultCode) == 0:

                execInGuest(ctx, session, ["C:\\WINDOWS\\system32\\PrototypeI.exe"], None, "zozanh", "12345", -1)
                pauseGuest(ctx, session)
                end_time = datetime.now()
                time.sleep(1)
                getlog({"SHA1": sha, "End Time": end_time, "Start Time": start_time, "File Name": f.name, "File Size": f.size}, sha)
                do_job(sha)
                file = open("/home/zozanh/env/djcode/thesis/static/data/" + sha + '/fin.log', "wr+")
                file.close()
                restoreSnapshot(ctx, session, uuid, "testing")
                time.sleep(1)
                # we ignore exceptions to allow starting VM even if
                # perf collector cannot be started
    #            if perf:
    #                try:
    #                    perf.setup(['*'], [mach], 10, 15)
    #                except Exception, e:
    #                    printErr(ctx, e)
    #                    if g_verbose:
    #                        traceback.print_exc()
                # if session not opened, close doesn't make sense
                session.close()
        else:
            pass
#            reportError(ctx, progress)
    except Exception:
        return False
    return True
Esempio n. 3
0
def startVm(ctx, mach, type, f, sha):
    """
    Start a virtual machien and run the analysis process
    
    """
    mgr = ctx['mgr']
    vb = ctx['vb']
    session = mgr.perf = ctx['perf']
    session = mgr.getSessionObject(vb)
    uuid = mach.id
    from datetime import datetime
    start_time = datetime.now()
    end_time = datetime.now()
    try:
        snap = mach.currentSnapshot
        if snap.name != "testing":
            raise Exception        
        progress = vb.openRemoteSession(session, uuid, type, "")
        with open('/home/zozanh/sharedmal/target.exe', 'wb+') as destination:
            for chunk in f.chunks():
                destination.write(chunk)
        clean_log()
        if progressBar(ctx, progress, 100) and int(progress.resultCode) == 0:

                execInGuest(ctx, session, ["C:\\WINDOWS\\system32\\PrototypeI.exe"], None, "zozanh", "12345", -1)
                pauseGuest(ctx, session)
                end_time = datetime.now()
                time.sleep(1)
                getlog({"SHA1": sha, "End Time": end_time, "Start Time": start_time, "File Name": f.name, "File Size": f.size}, sha)
                do_job(sha)
                file = open("/home/zozanh/env/djcode/thesis/static/data/" + sha + '/fin.log', "wr+")
                file.close()
                restoreSnapshot(ctx, session, uuid, "testing")
                time.sleep(1)
                session.close()
        else:
            pass
    except Exception:
        return False
    return True
Esempio n. 4
0
 def __init__(self):
     self.__info={}
     self.path=os.path.join('.',"pic")
     if not os.path.exists(self.path):
       os.mkdir(self.path)
     self.__info['logfile']="err.log"
     self.__info['loglevel']='info'
     self.logger = getlog(self.__info)
     self.db=dbhand(self.logger)
     dbfile='mm131.db'
     self.db.dbconnect(dbfile)
     self.db.init()
     pass
Esempio n. 5
0
# -*- coding: utf-8 -*-

import os
import json
import codecs
import re

from logger import getlog
log = getlog()

from appdata import Shortcut, ApplicationConfig
from constants import DIR_CONTENT_GENERATED, VALID_OS_NAMES, OS_WINDOWS, OS_MAC


class IntermediateShortcutData(object):
    """Intermediate shortcut data format for applications.

    This can be used as output from various shortcut document parsers and can be merged together at the end.

    A serialized IntermediateShortcutData document can then be hand-edited to ensure the data going exported
    to the web application is clean and clear.

    The data format for intermediate data (JSON) is as follows:
    {
        "name": "Application Name",
        "version": "v1.2.3",
        "default_context": "Global Context",
        "os": ["windows", "mac"],
        "contexts": {
            "CONTEXT NAME": {
                "SHORTCUT NAME": ["WINDOWS SHORTCUT KEYS", "MAC SHORTCUT KEYS"],
Esempio n. 6
0
# -*- coding: utf-8 -*-
import os.path
from selenium import webdriver
from logger import getlog

logger = getlog("browser")


def open_browser(browser, url):
    dir = os.path.split(os.path.realpath(__file__))[0]
    driver_path = dir + '/driver'

    logger.info("You had select %s browser." % browser)
    logger.info("The test server url is: %s" % url)
    if browser == "Firefox":  # 判断浏览器类型
        driver = webdriver.Firefox()
        logger.info("Starting firefox browser.")
    elif browser == "Chrome":
        driver = webdriver.Chrome()
        logger.info("Starting Chrome browser.")
    elif browser == "IE":
        driver = webdriver.Ie()
        logger.info("Starting IE browser.")

    driver.get(url)  # 打开浏览器,输入URL
    logger.info("Open url: %s" % url)
    driver.maximize_window()  # 窗口最大化
    logger.info("Maximize the current window.")
    driver.implicitly_wait(10)  # 隐式等待10秒
    logger.info("Set implicitly wait 10 seconds.")
    return driver
Esempio n. 7
0
# -*- coding: utf-8 -*-

# makes all strings here unicode by default (u'')
from __future__ import unicode_literals

from logger import getlog
log = getlog()

class DataContainer(object):
    VALID_NAME_LOOKUP = {
        u'§' : ['SECTION'],
        u'!' : ['EXCLAMATION'],
        u'@' : ['AT'],
        u'£' : ['POUND'],
        u'$' : ['DOLLAR'],
        u'%' : ['PERCENT'],
        u'^' : ['CARET'],
        u'&' : ['AMPERSAND'],
        u'(' : ['LEFT_PARENTHESIS'],
        u')' : ['RIGHT_PARENTHESIS'],
        u'_' : ['UNDERSCORE'],
        u'[' : ['LEFT_BRACKET'],
        u']' : ['RIGHT_BRACKET'],
        u'{' : ['LEFT_BRACE'],
        u'}' : ['RIGHT_BRACE'],
        u';' : ['SEMICOLON'],
        u':' : ['COLON'],
        u'\'': ['SINGLE_QUOTE'],
        u'‘' : ['SINGLE_QUOTE'],
        u'"' : ['DOUBLE_QUOTE'],
        u'\\': ['BACKSLASH'],
Esempio n. 8
0
# -*- coding: utf-8 -*-
from login import *
from browser import *
import time
from logger import getlog
import argparse

# create a logger
logger = getlog("auto_click")


# 等待页面加载
def loading(selector, driver):
    print(find_element(selector, driver).text)
    try:
        WebDriverWait(driver, 10).until(
            ec.visibility_of_element_located(locator(selector, driver)))
        logger.info("The loading begins")
        WebDriverWait(driver, 10).until(
            ec.invisibility_of_element_located(locator(selector, driver)))
    except Exception as e:
        logger.error("Failed to wait the element with %s" % e)


#  强制等待
def sleep(seconds):
    time.sleep(seconds)
    logger.info("Sleep for %d seconds" % seconds)


def auto_click(browser, url, username_selector, password_selector,
Esempio n. 9
0
# -*- coding:utf-8 -*-
import time
from selenium.common.exceptions import NoSuchElementException
import os.path
from logger import getlog
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.common import exceptions as ex
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec

# create a logger
logger = getlog("login")


# 定位元素方法
def find_element(selector, driver):
    """
        这个地方为什么是根据=>来切割字符串,请看页面里定位元素的方法
        submit_btn = "id=>su"
        login_lnk = "xpath => //*[@id='u1']/a[7]"  # 百度首页登录链接定位
        如果采用等号,结果很多xpath表达式中包含一个=,这样会造成切割不准确,影响元素定位
    :param selector:
    :return: element
    """
    element = ''
    if '=>' not in selector:
        return driver.find_element_by_id(selector)
    selector_by = selector.split('=>')[0]
    selector_value = selector.split('=>')[1]