使用Python开发的POC多线程批量执行小框架
因为代码量非常少,所以就叫“小框架”吧。
接口非常简陋,但是好处是适配POC脚本的时候很灵活,兼容性高,不需要任何研究成本。
简单来说,你按照自己的想法和习惯开发一个POC验证程序,它只要做到三点,即:
1. 接收一个目标地址字符串作为输入参数。
2. 定义一个名称为 "exploit" 的函数供小框架来调用。
3. 当验证成功时返回一个自定义的字符串作为标志。
就完全可以满足使用小框架的条件了。
针对以上条件再说一下细节。
小框架负责将字符串参数传递给POC程序,逻辑上讲最少要传递目标地址,想再接一些其他参数也完全可以,只要你的POC程序可以正确解析和处理就可以,完全由你自己来控制。
小框架在读取POC程序之后会调用名为 "exploit" 的函数,并获取返回结果,就好比操作系统载入一个PE程序之后会调用 "main()" 函数的道理一样,至于这个函数里面又调用了其他哪些函数,就完全是由你自己来自由定制了。
POC程序,或者说 "exploit" 函数验证成功的时候返回一个表示成功的自定义字符串,这个不必解释了,那么验证失败的时候呢?当然也可以返回另一个标志字符串,但是我个人一般习惯直接丢弃验证失败的目标结果不做记录,这个看个人需求了,也是自由定制的。
小框架使用Python来开发,Python 2 和 3 无缝兼容执行。
上代码:
#!/usr/bin/env python # -*- coding: utf-8 -*-import argparse import importlib import sys import threadpooldef main():parser = argparse.ArgumentParser(description="Multithreading Batch Processing Framework")parser.add_argument("-s", "--script", type=open, required=True, help="script file")parser.add_argument("-i", "--input", type=open, required=True, help="input file")parser.add_argument("-t", "--thread", default=1, type=int, help="number of threads")try:args = parser.parse_args()except IOError as e:print(e)sys.exit(1)poolsize = args.threadsome_callable = get_some_callable(args.script)list_of_args = get_list_of_args(args.input)global logtry:log = open("log_" + args.input.name, "w")except IOError as e:print(e)sys.exit(1)pool = threadpool.ThreadPool(poolsize)reqs = threadpool.makeRequests(some_callable, list_of_args, callback)[pool.putRequest(req) for req in reqs]pool.wait()pool.dismissWorkers(poolsize)pool.joinAllDismissedWorkers()log.close()def get_some_callable(script):try:script = importlib.import_module(script.name.split(".")[0])some_callable = script.exploitexcept (AttributeError, ImportError) as e:print(e)sys.exit(1)else:return some_callabledef get_list_of_args(input):list_of_args = list()list_of_temp = input.readlines()for i in list_of_temp:list_of_args.append(i.strip())return list_of_argsdef callback(request, result):if result:log.write(result + "\n")print(result)if __name__ == "__main__":main()
转载于:https://www.cnblogs.com/f0rsaken/p/9244558.html
使用Python开发的POC多线程批量执行小框架相关推荐
- python实现简单小游戏_用python开发一个有趣的猜数字小游戏(实现简单的GUI界面学习)...
文章目录 用python开发一个有趣的猜数字小游戏 用于字符串的格式化,通过 {} 和 : 来代替以前的 % 1. python的GUI编程 1.1 pythonGUI常用库对比 Python 提供了 ...
- 使用Python实现Linux命令的批量执行
prodigal用于预测原核生物cds,平常会用来预测核苷酸序列的cds并且翻译成氨基酸序列,但是需要一条一条的执行,量大的话很麻烦,需要一直修改命令. 该软件使用时的命令格式为 prodigal - ...
- python编程小知识_分享Python开发中要注意的十个小贴士
大家请注意:这篇文中假设我们都用的是Python 3 1. 列表推导式 你有一个list:bag = [1, 2, 3, 4, 5] 现在你想让所有元素翻倍,让它看起来是这个样子:[2, 4, 6, ...
- 【Python开发】ComicDownloader(漫画批量下载)
ComicDownloader(漫画批量下载) 自制漫画批量下载工具 点击下载 使用步骤: 搜索关键字. 选中搜索结果. 选择下载章节,下载. 等待下载完成. 支持 manhuadb.com hhim ...
- python开发小型数据库_python数据库编程小应用
python DB api 数据库连接对象connection 数据库交互对象cursor 数据库异常类exceptions 流程: 开始 创建connection 获取cursor 执行查询.执行命 ...
- python编写小游戏教程_用Python开发 写个消消乐小游戏
提到开心消消乐这款小游戏,相信大家都不陌生,其曾在 2015 年获得过玩家最喜爱的移动单机游戏奖,受欢迎程度可见一斑,本文我们使用 Python 来做个简单的消消乐小游戏. 实现 消消乐的构成主要包括 ...
- 实战|轻松用 Python 开发一个简单有趣的聊天小程序
前言 Internet 协议集支持一个无连接的传输协议,该协议称为用户数据报协议(UDP,User Datagram Protocol). UDP 为应用程序提供了一种无需建立连接就可以发送封装的 I ...
- 程序O带你回忆经典:原生Python开发一款打砖块儿小游戏~
导语 嘿!前不久刚刚给大家✍过一款反弹球的小游戏嘛! 不知道大家还记得不?不记得可以看下往期的内容呢,在上一期的基础上升级了这款大转款的小游 戏,界面的话也挺简单的,经典配色原汁原味哈哈哈. 大家好
- python开发snkrs秒抢_Snkrs抽签小技巧
Snkrs作为nike的发售鞋子的app,现在做的是越来越强大, 下面来简单的给大家介绍一下如何进行抽签. 1.打开snkrs主页,找到需要抽签的鞋子. 2.在框选位置可以看到该鞋于2月14日开始抽签 ...
最新文章
- 2021年大数据Flink(十四):流批一体API Connectors JDBC
- 谷歌简单粗暴“复制-粘贴”数据增广,刷新COCO目标检测与实例分割新高度
- 大志非才不就,大才非学不成—我的博文资源汇总
- static_cast, dynamic_cast, const_cast
- gcp上使用gpu来学习tensorflow
- DHCP : 网络世界身份的获取
- ansible基础配置
- (五十九)iOS网络基础之UIWebView简易浏览器实现
- MAC usb启动盘制作
- 程序员的量化交易之路(17)--Cointrader之Temporal实体(5)
- Windows server 2003设置IP安全策略批处理脚本
- python的类,复现assert和eval成功失败原因
- Chess Queen
- 分布式定时任务框架选型,完美!
- 工业大数据竞赛的轴承数据集
- 打官司除了找律师,还能找谁?
- 华为2018勇敢星实习招聘机试题
- nyist oj nyoj 865
- Docker的数据管理(数据卷、容器互联)
- 中国渔业统计年鉴(1979-2022)
热门文章
- opencv基础知识-videowriter
- 本来调试无误的程序在真机运行时报标题错误解决方案
- jquery 插件 任意位置浮动固定层
- 关于supervisor 挂载woker和worker linke worker 的同样的结束等待
- Jsoup:使用Java将爬虫得到的数据写入Excel,Jsoup得到的数据进行持久化,爬虫数据保存到本地Excel中
- nvidia显示设置不可用_白送大福利?实战FreeSync显示器开启NVIDIA GSync Compatible
- 最好用浏览器_魔镜魔镜,请你告诉我谁是Mac上最好用的浏览器?--全网最好用的12个功能让你玩转Safari...
- php mysql 时间戳查询_mysql中时间查询函数(包括时间戳)
- 计算机 配置不过4000,台式机4000元以上免谈,非主流配置免谈
- python diango 并发_利用gunicorn提高django的并发能力