<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.com 的重新维护将于 9 月 1 日开始
ChatWithBinary 是一种尖端的软件工具,旨在使用 LangChain(OpenAI API)技术分析二进制文件。它主要帮助 CTF(Capture The Flag)攻防队员深入了解他们正在处理的二进制文件,并提供有价值的帮助,帮助他们更有效地解决挑战 :)
ChatWithBinary 基于人工智能和机器学习的强大基础,能够快速高效地分析复杂的二进制文件。通过利用 OpenAI API 的力量,RET2GPT 可以提供全面且详细的二进制文件分析,使其成为 CTF 攻防队员不可或缺的工具。
ChatWithBinary 的主要目标是简化理解二进制文件的过程,从而使 CTF 攻防队员能够专注于解决挑战而不是陷入二进制分析的复杂性中。该软件通过对二进制文件的结构、逻辑和潜在漏洞进行彻底检查来实现这一目标。这种分析帮助攻防队员识别代码中可能被攻击者利用的任何弱点。
总而言之,ChatWithBinary 包括以下功能:
langchain 来分割文件,为您节省大量的标记时间和金钱langchain 和 OpenAI API 在没有人工干预的情况下实现二进制文件的自动化分析我们的包已经成功上传到 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 >>>
我相信你自己能弄明白这两个命令的意思
要找到这个问题的答案,我们必须分析程序的每个目录和步骤,所以让我们开始吧!
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 文件夹的主函数。它负责解析用户输入并调用相应的函数。

AI一键生成PPT,就用博思AIPPT!
博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。


AI赋能电商视觉革命,一站式智能商拍平台
潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平 台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。


企业专属的AI法律顾问
iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。


稳定高效的流量提升解决方案,助力品牌曝光
稳定高效的流量提升解决方案,助力品牌曝光


最新版Sora2模型免费使用,一键生成无水印视频
最新版Sora2模型免费使用,一键生成无水印视频


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


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


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


最强AI数据分析助手
小浣熊家族Raccoon,您的AI智能助手,致力于通过先进的人工智能技术,为用户提供高效、便捷的智能服务。无论是日常咨询还是专业问题解答,小浣熊都能以快速、准确的响应满足您的需求,让您的生活更加智能便捷。


像人一样思考的AI智能体
imini 是一款超级AI智能体,能根据人类指令,自主思考、自主完成、并且交付结果的AI智能体。
最新AI工具、AI资讯
独家AI资源、AI项目落地

微信扫一扫关注公众号