基于ChatGPT打造安全脚本工具流程

这篇具有很好参考价值的文章主要介绍了基于ChatGPT打造安全脚本工具流程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

以前想要打造一款自己的工具,想法挺好实际上是难以实现,第一不懂代码的构造,只有一些工具脚本构造思路,第二总是像重复造轮子这种繁琐枯燥工作,抄抄改改搞不清楚逻辑,想打造一款符合自己工作的自定义的脚本工具难度倍增,但是随着AI的兴起极大的改变了我们的生活工作方式,只需利用ChatGPT即可打造自己的专属自定义工具,下面作者以自己的几个脚本工具的案例为例,讲述一下如何利用ChatGPT开发安全脚本工具。
(注:作者专注安全其他方向,非正儿八经的安全开发,纯粹讲解思路,工具简陋之际,纯粹不入流勿喷)

案例一 漏洞简报生成

工具前景

作者是一名渗透测试工程师,在工作中避免不了写漏洞报告,为了提高工作效率,避免繁琐的文档工作,所以有一下脚本工具诞生,工具潦草但实用,快速生成一份漏洞简报,只需填写对应的漏洞成果,避免了上网查询漏洞相关细节和修复方式,基于web.xlsx表格内容为存储漏洞信息,有一定局限性,但工具目前可塑性很强,有待提高。

工具名称

本工具为《Bug_writer》漏洞报告辅助工具,该工具旨在提高渗透测试人员,和网络安全从业者,爱好者等人群的工作效率,使得更快速准确地填写更多的漏洞报告,虽然作者不是专业开发,但作为一名安全从业者,作者在用心制作这个工具来解决自己的工作需求,之前Github有更新本项目,后来参加HVV大意了没有闪被溯源了,Github废弃了,马甲相关信息均废弃(还不是因为丢人)。

工具结构

工具结构
Bug_writer:
│  
│  main.py
│  README.md
│  requirements.txt
│
├─config
│  │  WEB.docx
│  │  WEB.xlsx
│  │
│  └─漏洞模版
│          简报模版一.docx
│          默认模板.docx
│
└─output

说明:

主目录 mian.py为脚本文件
│  README.md 为使用说明
│  requirements.txt 为需要安装的第三方库
│  config文件夹下
│    WEB.docx 简报模版
│    WEB.xlsx 漏洞库
│    漏洞模版文件夹下,为模版样式
│  output文件夹为输出的简报文件

工具思路

在此之前我们是参考xlsx漏洞模板,用于填写漏洞报告,后来转念一想,可以把漏洞里面的信息直接填充就好了,随机一发不可收拾的开始搞这个脚本工具,现将模版修改如下所示,然后开始构思流程
基于ChatGPT打造安全脚本工具流程首先我的工具定位是可以生成简报的脚本,其次我对它要求为代码简单快速生成且可塑性强,然后如下所示
基于ChatGPT打造安全脚本工具流程考虑python语言较为方便,使用python作为脚本工具开发语言,优点在于它的第三方库和语言通用性

第一步

1.先将xlsx模版放在config文件夹中,首先需要生成pyhton脚本模糊查询漏洞名称,假设为sql注入,我们输入注入,该工具会在xlsx表格中查询漏洞名称列,如果没有查询到存在注入二字结果,直接结束返回命令行页面告知未查询结果,如果有该漏洞名存在,进行下一步,根据上述的思路,编写文案,在Chatgpt上执行,会得出初代源码,根据初代源码进行修改不足,完成上述所示需求。基于ChatGPT打造安全脚本工具流程基于ChatGPT打造安全脚本工具流程

第二步

2.当初代源码可以调用模糊查询时,我们就需要将其他列的信息按照格式展示在命令行,如何展示可以在ChatGpt上完善我们第二步需求,如下所示,这里已经完善了上述需求.
基于ChatGPT打造安全脚本工具流程代码如下

import argparse
import os
import pandas as pd


class VulReportGenerator:
    def __init__(self):
        self.parser = argparse.ArgumentParser(description='漏洞报告生成器')
        self.parser.add_argument('-c', type=str, help='指定模糊查询漏洞名称.')
        self.parser.add_argument('-t', action='store_true', help='生成报告')
        self.args = self.parser.parse_args()
        self.df = pd.read_excel('./config/WEB.xlsx')

    def search_vuls(self):
        search_name = self.args.c.lower()
        result = self.df[self.df['漏洞名称'].str.lower().str.contains(search_name)]
        result_count = result.shape[0]

        if result.empty:
            print('<<这里并没有发现结果--您可以去查看是否输入错误>>')
        else:
            print(f'查询到 {result_count} 条记录:')

            for index, row in result.iterrows():
                print('漏洞名称:  {}\n风险级别: {}\n漏洞描述:\n\t {} \n加固建议: \n\t {}\n\n\n'.format(
                    row['漏洞名称'], row['风险级别'], row['漏洞描述'], row['加固建议']))

            if self.args.t:
                self.generate_report(result)

    def generate_report(self, data):
        # 在这里编写生成报告的逻辑,例如将结果输出到文件或者其他操作
        print("生成报告:" + str(data))


if __name__ == '__main__':
    generator = VulReportGenerator()
    generator.search_vuls()

第三步

这一步的时候,我们可以看到,样式有些难看,我们可以使用图形化字符工具生成一个字符图形,然后再完善增加颜色样式。
基于ChatGPT打造安全脚本工具流程基于ChatGPT打造安全脚本工具流程代码如下

import argparse
import os
import pandas as pd

# 创建命令行参数解析器
print('''
 \033[31m  ____                              _ _            \033[0m
 \033[31m | __ ) _   _  __ _  __      ___ __(_| |_ ___ _ __ \033[0m
 \033[31m |  _ \| | | |/ _` | \ \ /\ / | '__| | __/ _ | '__|\033[0m     
 \033[31m | |_) | |_| | (_| |  \ V  V /| |  | | ||  __| |   \033[0m     
 \033[31m |____/ \__,_|\__, |   \_/\_/ |_|  |_|\__\___|_|   \033[0m     Version: \033[33m公测版本 \033[0m
 \033[31m              |___/\033[0m                                     Tools: \033[33m漏洞报告辅助工具\033[0m      
            \033[34mgithub.com/yichensec/Bug_writer\033[0m     

一款面向用于安服,渗透测试人员,网络安全从业者等人群的漏洞报告辅助工具可以生成漏洞测试简报,可自己私人定制。''')
print('''\033[33m================================== 渗透漏洞报告书写员的开始 =========================================\033[0m''')

class VulReportGenerator:
    def __init__(self):
        self.parser = argparse.ArgumentParser(description='漏洞报告生成器')
        self.parser.add_argument('-c', type=str, help='指定模糊查询漏洞名称.')
        self.parser.add_argument('-t', action='store_true', help='生成报告')
        self.args = self.parser.parse_args()
        self.df = pd.read_excel('./config/WEB.xlsx')

    def search_vuls(self):
        search_name = self.args.c.lower()
        result = self.df[self.df['漏洞名称'].str.lower().str.contains(search_name)]
        result_count = result.shape[0]

        if result.empty:
            print('<<这里并没有发现结果--您可以去查看是否输入错误>>')
        else:
            print(f'查询到 {result_count} 条记录:')

            for index, row in result.iterrows():
                print('\033[0m\033[33m漏洞名称:\033[0m\033[32m  {}\n\033[0m\033[33m风险级别:\033[0m\033[31m  {}\033[0m\n\033[33m漏洞描述:\033[0m  \n\t\033[34m  {}\033[0m\n\033[33m加固建议:\033[0m\033[35m \n\t {}\033[0m\n\n\033[33m=====================================================================================\033[0m\n'.format(row.漏洞名称, row.风险级别, row.漏洞描述, row.加固建议))

            if self.args.t:
                self.generate_report(result)

    def generate_report(self, data):
        # 在这里编写生成报告的逻辑,例如将结果输出到文件或者其他操作
        print("生成报告:" + str(data))


if __name__ == '__main__':
    generator = VulReportGenerator()
    generator.search_vuls()

第四步

这时候我们可以添加其他模块功能,这里我们生成一个list模块,展示漏洞类型,并生成,-p 和-s 模块展示出分页和数量展示,便于展示,当模块多了后,我们需要设置一个-h帮助模块,将内置所以功能的模块展示出来,这里每次生成的代码需要多次调试,代码有一些不足问题,需要人工识别并指出使用ChatGpt进行辅助修改。基于ChatGPT打造安全脚本工具流程基于ChatGPT打造安全脚本工具流程基于ChatGPT打造安全脚本工具流程

第五步

最后就是简报生成模块,-t,这里使用-t模块指定生成,如何生成指定到简报中?可以参考下面替换法
基于ChatGPT打造安全脚本工具流程这个是简报模板,可以看到%S1,%S2,....,这种,分别对应着漏洞xlsx表格中的漏洞名称,风险等级,漏洞描述,加固建议,采用替换的方式,将识别到的漏洞信息,采用替换对应的%值进行输出,另存到output文件中,为了方便也是怕导出的名称重复出现覆盖报错问题,采用递归方式001.docx,002.docx,....等方式进行命令,这里生成-t模块,将识别到的漏洞信息指定从web.docx简报文档中进行替换%值,另存到output文件夹中的docx文件中,这样即可完成该模块需求。
基于ChatGPT打造安全脚本工具流程基于ChatGPT打造安全脚本工具流程到此,我们的工具思路大致如上所述。

完整代码如下

当前版本提供两个功能
1.调用本地漏洞库查询漏洞、
2.批量输出漏洞简报模版

import argparse
import os
import pandas as pd
from docx import Document

# 创建命令行参数解析器
print('''
 \033[31m  ____                              _ _            \033[0m
 \033[31m | __ ) _   _  __ _  __      ___ __(_| |_ ___ _ __ \033[0m
 \033[31m |  _ \| | | |/ _` | \ \ /\ / | '__| | __/ _ | '__|\033[0m     
 \033[31m | |_) | |_| | (_| |  \ V  V /| |  | | ||  __| |   \033[0m     
 \033[31m |____/ \__,_|\__, |   \_/\_/ |_|  |_|\__\___|_|   \033[0m     Version: \033[33m公测版本 \033[0m
 \033[31m              |___/\033[0m                                     Tools: \033[33m漏洞报告辅助工具\033[0m      
            \033[34mgithub.com/yichensec/Bug_writer\033[0m     

一款面向用于安服,渗透测试人员,网络安全从业者等人群的漏洞报告辅助工具可以生成漏洞测试简报,可自己私人定制。''')
print('''\033[33m================================== 渗透漏洞报告书写员的开始 =========================================\033[0m''')
class VulReportGenerator:
    def __init__(self):
        self.parser = argparse.ArgumentParser(description='\033[33m漏洞报告生成器\033[0m')
        self.df = pd.read_excel('./config/WEB.xlsx')

    def parse_args(self):
        self.parser.add_argument('-c', type=str, help='指定模糊查询漏洞名称.')
        self.parser.add_argument('-t', action="store_true", help='指定生成漏洞报告')
        self.parser.add_argument('-list', action='store_true', help='列出漏洞名称')
        self.parser.add_argument('-p', type=int, default=5, help='指定页面数量')
        self.parser.add_argument('-s', type=int, default=10, help='指定每页显示的项目数')
        self.args = self.parser.parse_args()

    def run(self):
        self.parse_args()

        if self.args.list:
            self.list_vul_names()
        elif self.args.c:
            self.search_vuls()
        else:
            print('\033[31m<<无效的参数--您可以输入"-h"查看使用说明>>\033[0m')

    def search_vuls(self):
        search_name = self.args.c.lower()
        result = self.df[self.df['漏洞名称'].str.lower().str.contains(search_name)]
        result_count = result.count()[0]

        if result.empty:
            print('\033[31m<<这里并没有发现结果--您可以去查看是否输入错误>>\033[0m')
        else:
            print(f'\033[31m查询到 {result_count} 条记录:\033[0m')

            total_count = result_count
            page_count = self.args.p
            rows_per_page = self.args.s
            current_page = 1
            while True:
                page_result = result[(current_page-1) * rows_per_page : current_page * rows_per_page]
                if page_result.empty:
                    break

                print(f'\033[0m\033[33m第{current_page}页:\033[0m')
                for row in page_result.itertuples(index=False):
                    print('\033[0m\033[33m漏洞名称:\033[0m\033[32m  {}\n\033[0m\033[33m风险级别:\033[0m\033[31m  {}\033[0m\n\033[33m漏洞描述:\033[0m  \n\t\033[34m  {}\033[0m\n\033[33m加固建议:\033[0m\033[35m \n\t {}\033[0m\n\n\033[33m=====================================================================================\033[0m\n'.format(row.漏洞名称, row.风险级别, row.漏洞描述, row.加固建议))

                if self.args.t:
                    self.generate_report(page_result)

                current_page += 1
                if current_page > page_count:
                    break

    def list_vul_names(self):
        ld_names = self.df['漏洞名称']
        if not ld_names.empty:
            for index, ld_name in enumerate(ld_names):
                page_num = (index + 1) // self.args.s + 1
                if index % self.args.s == 0:
                    print(f'\033[0m\033[33m第{page_num}页:\033[0m')
                print(f'{ld_name}\t', end='')
                if (index + 1) % self.args.s == 0:
                    print()

            print()
        else:
            print('\033[31m<<这里并没有发现结果--您可以去查看是否输入错误>>\033[0m')

    def generate_report(self, page_result):
        doc_path = './config/web.docx'
        if os.path.exists(doc_path):
            doc_output_path = './output/001.docx'
            counter = 1
            while os.path.exists(doc_output_path):
                counter += 1
                doc_output_path = f'./output/{counter:03}.docx'

            doc = Document(doc_path)
            for index, row in page_result.iterrows():
                for para in doc.paragraphs:
                    if '%S1' in para.text:
                        para.text = para.text.replace('%S1', row['漏洞名称'])
                    if '%S2' in para.text:
                        para.text = para.text.replace('%S2', row['风险级别'])
                    if '%S3' in para.text:
                        para.text = para.text.replace('%S3', row['漏洞描述'])
                    if '%S4' in para.text:
                        para.text = para.text.replace('%S4', row['加固建议'])
            try:
                doc.save(doc_output_path)
                print(f'\033[33m已将查询结果写入到" {doc_output_path} "文件中\033[0m')
            except Exception as e:
                print(f'\033[31m写入文件"{doc_output_path}"时出错:{e}\033[0m')
        else:
            print(f'\033[31m指定的文件"{doc_path}"不存在\033[0m')
if __name__ == '__main__':
    generator = VulReportGenerator()
    generator.run()

工具使用

1.使用命令帮助

python main.py -h

当前版本是5个参数
  -c C        指定模糊查询漏洞名称.
  -t          指定生成漏洞报告
  -list       列出漏洞名称
  -p P        指定页面数量
  -s S        指定每页显示的项目数

基于ChatGPT打造安全脚本工具流程

2.漏洞查询

python main.py -c 查询漏洞

这里-c参数是指定查询漏洞名称(可模糊查询)

基于ChatGPT打造安全脚本工具流程

3.漏洞分页展示

python main.py -c 注入 -p 展示页数 -s 展示数量

基于ChatGPT打造安全脚本工具流程

4.漏洞简报模版生成

python main.py -c 漏洞名 -p 展示页数 -s 展示数量 -t

执行-t保存在output文件夹下的docx文件中,这里001.docx是默认名依次往后递归文件名002.docx....

基于ChatGPT打造安全脚本工具流程

5.模版样式

打开文件夹会看到漏洞模版生成后的样式,如图下所示,(注模板可以更换自己公司的模板)
基于ChatGPT打造安全脚本工具流程
基于ChatGPT打造安全脚本工具流程

6.漏洞数量

python main.py -list -s 1

基于ChatGPT打造安全脚本工具流程基于ChatGPT打造安全脚本工具流程
叙述至此关于ChatGpt打造安全脚本工具篇章完结,后续关于ChatGpt其他玩法在csdn博客中在更新

基于ChatGPT打造安全脚本工具流程文章来源地址https://www.toymoban.com/news/detail-854993.html

到了这里,关于基于ChatGPT打造安全脚本工具流程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ChatGLM3:打造更智能、更安全的代码解释器和工具使用体验

    ChatGLM3 是由智谱AI训练的第三代大型语言模型,它不仅能理解和生成人类语言,还能执行代码、调用工具,并以 markdown 格式进行响应。为了提高用户体验,同时避免用户输入的注入攻击,ChatGLM3 采用了全新的对话格式。下载智谱清言体验ChatGLM3最新的能力。 GitHub代码仓库:

    2024年02月04日
    浏览(49)
  • npm包安装与管理:深入解析命令行工具的全方位操作指南,涵盖脚本执行与包发布流程

    npm,全称为Node Package Manager,是专为JavaScript生态系统设计的软件包管理系统,尤其与Node.js平台紧密关联。作为Node.js的默认包管理工具,npm为开发者提供了便捷的方式来安装、共享、分发和管理代码模块。 npm作为JavaScript世界不可或缺的基础设施,极大地促进了代码复用和协作

    2024年04月12日
    浏览(74)
  • 使用 GPT4 和 ChatGPT 开发应用:前言到第三章

    原文:Developing Apps with GPT-4 and ChatGPT 译者:飞龙 协议:CC BY-NC-SA 4.0 在发布仅仅五天后,ChatGPT 就吸引了惊人的一百万用户,这在科技行业及其他领域引起了轰动。作为一个副作用,OpenAI API 用于人工智能文本生成的接口突然曝光,尽管它已经可用了三年。ChatGPT 界面展示了这

    2024年01月20日
    浏览(71)
  • 免费打造个人专属的高颜值本地大模型AI助手,无限量使用 Ollama+LobeChat开源工具,在本地运行AI大模型,安全的和AI对话。

    第一步,首先安装ollama,选择对应系统的安装包 ollama官网地址:https://ollama.com/ 本问是lunix系统上安装ollama: 如果机子没有GPU显卡的话,ollama会提示只通过cpu模式运行。 测试ollama命令: 想要流畅运行,推荐配置: 4b的模型:8GB内存。 7b的模型:16GB内存。 13b模型: 32GB内存。 70b模

    2024年04月26日
    浏览(43)
  • Qt魔法书:打造自定义鼠标键盘脚本

    在我们的日常生活和工作中,脚本扮演着重要的角色。它们就像是一种“自动化的魔法”,可以帮助我们完成各种复杂、繁琐的任务,从而提高效率,节省时间。这就像是我们拥有了一个个小助手,他们可以按照我们的指示,自动完成我们需要的工作。 脚本的重要性不仅体现

    2024年02月09日
    浏览(46)
  • 保姆级教程!教你打造自己的AI孙燕姿;全程使用AI工具设计一款桌游;搭建基于LLM的客服系统的实践 | ShowMeAI日报

    👀 日报周刊合集 | 🎡 生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 王咏刚,创新工场CTO,技术撰稿人,有数个知名出版作品。他结合自己在AI领域投资、深度孵化和创业的丰富经验,分享了自己对AI技术最新应用场景的思考。 第一部分围绕GPT等通用大语言模型,

    2024年02月06日
    浏览(51)
  • OpenAI Translator 基于 ChatGPT API 的划词翻译工具

    OpenAI Translator,一款基于 ChatGPT API 的划词翻译浏览器插件和跨平台桌面端应用,使用 ChatGPT API 进行划词翻译和文本润色,借助了 ChatGPT 强大的翻译能力,帮助用户更流畅地阅读外语和编辑外语,允许跨 55 种不同语言进行相互翻译、润色和总结,支持浏览扩展、Mac和Windows等等

    2023年04月17日
    浏览(47)
  • 掌握前端框架,打造高效的开发流程

    在当今互联网时代,前端开发已经成为了一项非常重要的技能。随着互联网的快速发展,前端技术也在不断演进和更新。为了提高开发效率和代码质量,掌握前端框架已经成为了必备的技能之一。本文将介绍如何通过掌握前端框架,打造高效的开发流程,并通过一个实际案例

    2024年02月11日
    浏览(55)
  • Java与MySQL的绝妙结合:打造高效审批流程

    1️⃣.串行流程 当前节点审批完成后,下一次节点才能进行操作,例如经理通过之后,总监才能审批; 2️⃣.并行流程 一个审批节点需要多人联审。一般有两种方式: 会签、或签 ; 会签:         注意: 别跟串行审批混淆。会签的多个角色是平行的,没有上下级关系、

    2024年02月03日
    浏览(39)
  • Spring Boot整合Camunda打造高效工作流程

    🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是尘缘,一个在CSDN分享笔记的博主。📚📚 👉点击这里,就可以查看我的主页啦!👇👇 尘缘的个人主页 🎁如果感觉还不错的话请给我点赞吧!🎁🎁 💖期待你的加入,一起学习,一起进步!💖💖 在现代的软件开发中,工作流管

    2024年04月13日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包