Esempio n. 1
0
    def list_interface(req, loader_uuid, ipaddress):
        """loader 对外接口"""
        empty_lazyloader = {
            "uuid": None,
            "ipaddress": "127.0.0.1",
            "last_check": 0,
            "interval": 60,
            "payload": None,
            "send_payload": False,  # 是否向loader发送了payload
            "exit_loop": False,
        }
        sleep_cmd = "S"
        run_cmd = "R"
        exit_cmd = "E"
        null_cmd = "N"
        if loader_uuid is None:  # 首次请求
            if req == "u":
                loader_uuid = str(uuid.uuid1()).replace('-', "")[0:16]
                context = f"{loader_uuid}"
            else:
                context = f"{null_cmd}"
            return context
        else:
            if len(loader_uuid) != 16:  # 检查uuid
                context = f"{null_cmd}"
                return context
            if req == "h":  # 心跳请求
                lazyloader = Xcache.get_lazyloader_by_uuid(loader_uuid)
                if lazyloader is None:  # 初始化数据
                    empty_lazyloader["uuid"] = loader_uuid
                    empty_lazyloader["ipaddress"] = ipaddress
                    empty_lazyloader["last_check"] = int(time.time())
                    Xcache.set_lazyloader_by_uuid(loader_uuid,
                                                  empty_lazyloader)
                    context = f"{sleep_cmd}"
                    return context
                else:
                    if lazyloader.get("exit_loop") is True:  # 退出循环
                        Xcache.del_lazyloader_by_uuid(loader_uuid)
                        context = f"{exit_cmd}"
                        return context

                    new_interval = int(time.time()) - lazyloader.get(
                        "last_check")  # 获取新间隔
                    if new_interval < lazyloader["interval"]:
                        lazyloader["interval"] = new_interval

                    lazyloader["last_check"] = int(time.time())  # 更新最后心跳
                    lazyloader["ipaddress"] = ipaddress  # 更新对端地址

                    if lazyloader["payload"] is not None and lazyloader[
                            "send_payload"] is False:  # 发送payload
                        # 获取payload配置
                        payload = lazyloader.get("payload")
                        lhost = payload.get("LHOST")
                        lport = payload.get("LPORT")
                        luri = payload.get("LURI")

                        lazyloader["send_payload"] = True

                        context = f"{run_cmd}-{lhost}-{lport}-{luri}"
                    else:
                        context = f"{sleep_cmd}"
                    Xcache.set_lazyloader_by_uuid(loader_uuid, lazyloader)
                    return context
            else:
                context = f"{null_cmd}"
                return context
Esempio n. 2
0
 def destory(loader_uuid):
     data = Xcache.del_lazyloader_by_uuid(loader_uuid)
     context = data_return(202, LazyLoader_MSG.get(202), data)
     return context