因为代码量非常少,所以就叫“小框架”吧。

接口非常简陋,但是好处是适配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多线程批量执行小框架相关推荐

  1. python实现简单小游戏_用python开发一个有趣的猜数字小游戏(实现简单的GUI界面学习)...

    文章目录 用python开发一个有趣的猜数字小游戏 用于字符串的格式化,通过 {} 和 : 来代替以前的 % 1. python的GUI编程 1.1 pythonGUI常用库对比 Python 提供了 ...

  2. 使用Python实现Linux命令的批量执行

    prodigal用于预测原核生物cds,平常会用来预测核苷酸序列的cds并且翻译成氨基酸序列,但是需要一条一条的执行,量大的话很麻烦,需要一直修改命令. 该软件使用时的命令格式为 prodigal - ...

  3. python编程小知识_分享Python开发中要注意的十个小贴士

    大家请注意:这篇文中假设我们都用的是Python 3 1. 列表推导式 你有一个list:bag = [1, 2, 3, 4, 5] 现在你想让所有元素翻倍,让它看起来是这个样子:[2, 4, 6, ...

  4. 【Python开发】ComicDownloader(漫画批量下载)

    ComicDownloader(漫画批量下载) 自制漫画批量下载工具 点击下载 使用步骤: 搜索关键字. 选中搜索结果. 选择下载章节,下载. 等待下载完成. 支持 manhuadb.com hhim ...

  5. python开发小型数据库_python数据库编程小应用

    python DB api 数据库连接对象connection 数据库交互对象cursor 数据库异常类exceptions 流程: 开始 创建connection 获取cursor 执行查询.执行命 ...

  6. python编写小游戏教程_用Python开发 写个消消乐小游戏

    提到开心消消乐这款小游戏,相信大家都不陌生,其曾在 2015 年获得过玩家最喜爱的移动单机游戏奖,受欢迎程度可见一斑,本文我们使用 Python 来做个简单的消消乐小游戏. 实现 消消乐的构成主要包括 ...

  7. 实战|轻松用 Python 开发一个简单有趣的聊天小程序

    前言 Internet 协议集支持一个无连接的传输协议,该协议称为用户数据报协议(UDP,User Datagram Protocol). UDP 为应用程序提供了一种无需建立连接就可以发送封装的 I ...

  8. 程序O带你回忆经典:原生Python开发一款打砖块儿小游戏~

    导语 嘿!前不久刚刚给大家✍过一款反弹球的小游戏嘛! 不知道大家还记得不?不记得可以看下往期的内容呢,在上一期的基础上升级了这款大转款的小游 戏,界面的话也挺简单的,经典配色原汁原味哈哈哈. 大家好

  9. python开发snkrs秒抢_Snkrs抽签小技巧

    Snkrs作为nike的发售鞋子的app,现在做的是越来越强大, 下面来简单的给大家介绍一下如何进行抽签. 1.打开snkrs主页,找到需要抽签的鞋子. 2.在框选位置可以看到该鞋于2月14日开始抽签 ...

最新文章

  1. 2021年大数据Flink(十四):流批一体API Connectors JDBC
  2. 谷歌简单粗暴“复制-粘贴”数据增广,刷新COCO目标检测与实例分割新高度
  3. 大志非才不就,大才非学不成—我的博文资源汇总
  4. static_cast, dynamic_cast, const_cast
  5. gcp上使用gpu来学习tensorflow
  6. DHCP : 网络世界身份的获取
  7. ansible基础配置
  8. (五十九)iOS网络基础之UIWebView简易浏览器实现
  9. MAC usb启动盘制作
  10. 程序员的量化交易之路(17)--Cointrader之Temporal实体(5)
  11. Windows server 2003设置IP安全策略批处理脚本
  12. python的类,复现assert和eval成功失败原因
  13. Chess Queen
  14. 分布式定时任务框架选型,完美!
  15. 工业大数据竞赛的轴承数据集
  16. 打官司除了找律师,还能找谁?
  17. 华为2018勇敢星实习招聘机试题
  18. nyist oj nyoj 865
  19. Docker的数据管理(数据卷、容器互联)
  20. 中国渔业统计年鉴(1979-2022)

热门文章

  1. opencv基础知识-videowriter
  2. 本来调试无误的程序在真机运行时报标题错误解决方案
  3. jquery 插件 任意位置浮动固定层
  4. 关于supervisor 挂载woker和worker linke worker 的同样的结束等待
  5. Jsoup:使用Java将爬虫得到的数据写入Excel,Jsoup得到的数据进行持久化,爬虫数据保存到本地Excel中
  6. nvidia显示设置不可用_白送大福利?实战FreeSync显示器开启NVIDIA GSync Compatible
  7. 最好用浏览器_魔镜魔镜,请你告诉我谁是Mac上最好用的浏览器?--全网最好用的12个功能让你玩转Safari...
  8. php mysql 时间戳查询_mysql中时间查询函数(包括时间戳)
  9. 计算机 配置不过4000,台式机4000元以上免谈,非主流配置免谈
  10. python diango 并发_利用gunicorn提高django的并发能力