ChatWithBinary

ChatWithBinary

自动化二进制分析工具,提升CTF比赛效率

ChatWithBinary利用LangChain(OpenAI API)技术自动化分析二进制文件,帮助CTF选手提高解决挑战的效率。只需一个二进制文件,无需额外输入,即可开始分析。通过机器学习和精心设计的提示,提供详细的结构、逻辑及漏洞分析,助力发现代码中的弱点。是一款高效、精准的CTF选手必备工具。

ChatWithBinaryLangChainOpenAI API二进制文件分析CTFGithub开源项目

ChatWithBinary

chatwithbinary.com 的重新维护将于 9 月 1 日开始

<img width="1507" alt="image" src="https://github.com/retr0reg/Ret2GPT/assets/72267897/76a00844-5dc7-4e6e-9ddd-d4b35ee49754"> <img width="1000" alt="Xnip2023-04-16_11-36-38" src="https://yellow-cdn.veclightyear.com/2b54e442/48267dd6-d2a2-43c4-89db-439b44ba8e19.png">

ChatWithBinary 是一种尖端的软件工具,旨在使用 LangChain(OpenAI API)技术分析二进制文件。它主要帮助 CTF(Capture The Flag)攻防队员深入了解他们正在处理的二进制文件,并提供有价值的帮助,帮助他们更有效地解决挑战 :)

中文文档 README 📖

English README 📖

ChatWithBinary 基于人工智能和机器学习的强大基础,能够快速高效地分析复杂的二进制文件。通过利用 OpenAI API 的力量,RET2GPT 可以提供全面且详细的二进制文件分析,使其成为 CTF 攻防队员不可或缺的工具。

ChatWithBinary 的主要目标是简化理解二进制文件的过程,从而使 CTF 攻防队员能够专注于解决挑战而不是陷入二进制分析的复杂性中。该软件通过对二进制文件的结构、逻辑和潜在漏洞进行彻底检查来实现这一目标。这种分析帮助攻防队员识别代码中可能被攻击者利用的任何弱点。

总而言之,ChatWithBinary 包括以下功能:

  • 易于使用:无需输入任何其他文件,只需二进制文件 即可
  • Langchains:使用 langchain 来分割文件,为您节省大量的标记时间和金钱
  • 精确分析:使用 langchain 和 OpenAI API 分析二进制文件,使用我精心设计的提示语获得最佳结果
  • 自动化:使用 langchainOpenAI API 在没有人工干预的情况下实现二进制文件的自动化分析

安装

Pip

我们的包已经成功上传到 Pypi !!!, 所以你可以通过使用 pip 轻松安装它:

python3 -m pip --index-url=https://pypi.org/simple/ Ret2GPT

此外,如果你还没有安装 retdec,你可能需要先通过https://github.com/avast/retdec 来安装它,这不会花太长时间,将一劳永逸

在开始之前,你仍然需要在终端中设置你的 OPENAI_KEY,你可以从这里 获取你的密钥:

export OPENAI_API_KEY="Enter your api_key here"

然后你可以通过在终端中使用 Ret2GPT 来使用它:

Ret2GPT [FILE_PATH]

本地

首先,克隆我们的仓库:

git clone https://github.com/DDizzzy79/Ret2GPT.git

现在,如果你只想尝试 Ret2GPT,你可以通过使用 python3 运行它:

python3 ret2gpt

然而,如果你想永久使用 Ret2GPT,你可以通过执行 install.sh 文件轻松安装它:

chmod +x install.sh && ./install.sh

之后,你可以使用 ret2gpt 命令从任何地方运行我们的软件,这简直是奇迹吧?

使用方法

在开始之前,你需要在终端中设置你的 OPENAI_KEY,你可以从这里 获取你的密钥:

export OPENAI_API_KEY="Enter your api_key here"

首先,在命令行中使用此文件的方法为:

Usage: ret2gpt [FILE_PATH]

现在,您进入了命令行界面,您可以询问您想问的任何问题

例如,如果你想知道程序是否易受缓冲区溢出的影响,你可以问:

What do you want to ask about example2/hacknote.c >>> Are there any buffer overflow based on the program?

🏂 PwnGPT: 100% YES, there are several potential buffer overflow vulnerabilities in this code. 
The add_note() function uses the read() function to read user input into a buffer without specifying a maximum buffer size, 
which could allow an attacker to overflow the buffer and overwrite adjacent memory locations.
Additionally, the print_note() and del_note() functions also read user input without proper boundary checks, which could result in buffer overflows.
To fix these issues, implement proper input validation and boundary checks before reading user input, and use functions like fgets() or scanf() that allow specifying a maximum buffer size.

你可以使用 help 命令获取帮助信息:

What do you want to ask about example2/hacknote.c >>> /help


    /analysis - 从 Pwn 角度获取代码分析提示
    /exp - 获取可供 “Pwntools” 使用的 exp 模板
    /exit - 退出程序


 What do you want to ask about example2/hacknote.c >>>

我相信你自己能弄明白这两个命令的意思

Ret2GPT 如何工作?

要找到这个问题的答案,我们必须分析程序的每个目录和步骤,所以让我们开始吧!

langchain_proprocess/

在这部分代码中,我设计了一系列的函数和实用工具,利用 LangChain(OpenAI API)技术的力量创建一个先进的问题回答系统。该系统专门用于处理和分析文本文件,主要目标是帮助 Capture the Flag (CTF) 攻防队员理解二进制文件并更有效地解决挑战。

我首先导入了必要的模块,并使用 GPT-3.5 Turbo 模型初始化了 ChatOpenAI 模型。接下来,我定义了几个处理文本分析流水线中各种任务的实用函数:

loading

该函数接收一个文本文件描述符作为输入,并使用 TextLoader 实用程序将文件加载到内存中。

split_files

文件加载后,该函数使用 CharacterTextSplitter 实用程序将文档分成较小的块,使其更易于处理。

def split_files(loader): document = loader.load() text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0) return text_splitter.split_documents(document)

create_qa

该函数通过将文本块与 OpenAIEmbeddings 和 Chroma 向量存储结合起来创建一个问答系统,从而实现高效的信息检索。

def create_qa(loader): from langchain.embeddings import OpenAIEmbeddings from langchain.vectorstores import Chroma embeddings = OpenAIEmbeddings() db = Chroma.from_documents(split_files(loader), embeddings) retriever = db.as_retriever() return RetrievalQA.from_chain_type(llm=model, chain_type="stuff", retriever=retriever)

此外,我还为 QA bot 使用 GPT3.5

qa_with_docs

该函数运行问答链,将查询和文档加载器作为输入以生成有意义的回答。

query_about_files

该函数通过提供用户定义的查询来促进问答系统的查询。

summerize_chain

该函数负责通过摘要链对文本文件进行摘要,生成文件内容的简洁摘要。 为了确保问答系统能够理解上下文并提供准确且相关的信息,我使用 build_prompt_for_qa() 函数构建了一个详细的提示。此函数采用少样本学习的方法,结合FewShotPromptTemplate类,并包含几个代码分析和漏洞识别的示例。这些示例作为模型的指导,帮助模型理解上下文并做出相应的响应。

def build_prompt_for_qa(query): from langchain import PromptTemplate categories = ["Pwn","Reverse"] main_prompt = """ 描述:你是一个正在进行夺旗(CTF)比赛的分析员。 你的任务是帮助参赛者分析他们提供的二进制文件反编译出的 C 文件。 你必须首先提供漏洞的可能性。 请记住,你只能访问 C 语言文件,不能要求关于这些文件的任何额外信息。 当你给出回复时,你必须提供漏洞的位置和为什么这是一个漏洞的原因,否则你不能回复。 运用你的专业知识,彻底分析这些 C 文件,并为参赛者提供宝贵的见解。 提示:一名 CTF 比赛的参赛者刚刚提交了一份反编译的 C 文件以供分析。 他们在寻找任何潜在的漏洞、弱点或可能帮助他们比赛的线索。 使用仅在 C 文件中提供的信息,提供详细的分析,突出任何关注或值得注意的区域。 请勿生成不确定的信息。 以下是一些示例: """ examples = [ { "query": "你能在这段代码中找到任何缓冲区溢出漏洞吗?", "answer": "是的,通过对代码的分析,我发现了一个潜在的缓冲区溢出漏洞在函数 read_input 中。该函数使用 gets() 来读取用户输入到固定大小的缓冲区中,但没有检查输入长度,导致可能发生溢出。考虑用更安全的替代方法,如 fgets(),并验证输入大小以防止此问题。" },{ "query": "这段代码中有没有产生竞争条件的漏洞?", "answer": "是的,通过分析,我发现了一个潜在的竞争条件漏洞在函数 write_to_file 中。该函数使用 fopen() 打开一个文件并执行写操作,而没有适当的同步机制,例如锁。这可能会导致数据损坏或未授权的访问,如果多个进程或线程同时访问该文件。为了减轻这一问题,请考虑实施适当的文件锁定机制或使用原子文件操作。" }, { "query": "这段代码中是否有不安全的随机数生成方式?", "answer": "0%没有,这段代码中使用了安全的随机数生成方法。这段代码使用了 libsodium 库中的 randombytes() 函数,这是一个加密安全的随机数生成器。这确保了代码生成的任何随机值都具有足够的不可预测性和抗攻击性。" },{ "query": "这段代码中是否存在格式字符串漏洞?", "answer": "100%是的,print_user_info() 函数中存在格式字符串漏洞。该函数使用 printf() 打印用户输入,而没有指定适当的格式字符串。这可能允许攻击者利用该漏洞读取或写入任意内存地址。修复此问题的方法是使用匹配预期输入的格式字符串,比如 printf(\"%s\", user_input);。" }, { "query": "这段代码中是否有任何整数溢出漏洞?", "answer": "50%可能,我可能检测到计算大小() 函数中出现潜在的整数溢出漏洞。该函数可能在用户提供的整数上执行算术运算而没有适当的边界检查,这可能导致整数溢出。这可能会导致错误的计算、缓冲区溢出或其他意外行为。为减轻此漏洞,请在执行算术运算之前实施适当的输入验证和边界检查。" } ] example_template = "用户: {query}(基于代码)\n GPT: {answer}" example_prompt = PromptTemplate( input_variables=["query", "answer"], template=example_template ) suffix = "用户:{query}\nAI:" from langchain import FewShotPromptTemplate few_shot_prompt_template = FewShotPromptTemplate( examples=examples, example_prompt=example_prompt, prefix=main_prompt, suffix=suffix, input_variables=["query"], example_separator="\n\n" ) return few_shot_prompt_template.format(query=query)

built_in_command/

我认为 Ret2gpt 的这部分不需要过多的解释,这只是一个命令行界面,允许用户与系统进行交互。built_in_command 文件夹包含以下文件:

  • __init__.py:此文件负责将 built_in_command 文件夹初始化为一个 Python 包。
  • check_for_command.py:此文件包含 check()help() 函数,check() 用于检查用户输入是否为命令,并返回不同的提示,help() 则打印帮助信息。
  • command_line.py:此文件包含 command_line() 函数,这是 built_in_command 文件夹的主函数。它负责解析用户输入并调用相应的函数。

星标历史

Star History Chart

编辑推荐精选

问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

聊天机器人AI助手热门AI工具AI对话
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

热门AI工具AI办公办公工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

模型训练热门AI工具内容创作智能问答AI开发讯飞星火大模型多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

热门AI工具生产力协作转型TraeAI IDE
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

AI助手热门AI工具AI创作AI辅助写作讯飞绘文内容运营个性化文章多平台分发
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

下拉加载更多