[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-mandiant--stringsifter":3,"tool-mandiant--stringsifter":64},[4,17,27,35,43,56],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":16},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,3,"2026-04-05T11:01:52",[13,14,15],"开发框架","图像","Agent","ready",{"id":18,"name":19,"github_repo":20,"description_zh":21,"stars":22,"difficulty_score":23,"last_commit_at":24,"category_tags":25,"status":16},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",138956,2,"2026-04-05T11:33:21",[13,15,26],"语言模型",{"id":28,"name":29,"github_repo":30,"description_zh":31,"stars":32,"difficulty_score":23,"last_commit_at":33,"category_tags":34,"status":16},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107662,"2026-04-03T11:11:01",[13,14,15],{"id":36,"name":37,"github_repo":38,"description_zh":39,"stars":40,"difficulty_score":23,"last_commit_at":41,"category_tags":42,"status":16},3704,"NextChat","ChatGPTNextWeb\u002FNextChat","NextChat 是一款轻量且极速的 AI 助手，旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性，以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发，NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。\n\n这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言，它也提供了便捷的自托管方案，支持一键部署到 Vercel 或 Zeabur 等平台。\n\nNextChat 的核心亮点在于其广泛的模型兼容性，原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型，让用户在一个界面即可自由切换不同 AI 能力。此外，它还率先支持 MCP（Model Context Protocol）协议，增强了上下文处理能力。针对企业用户，NextChat 提供专业版解决方案，具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能，满足公司对数据隐私和个性化管理的高标准要求。",87618,"2026-04-05T07:20:52",[13,26],{"id":44,"name":45,"github_repo":46,"description_zh":47,"stars":48,"difficulty_score":23,"last_commit_at":49,"category_tags":50,"status":16},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",84991,"2026-04-05T10:45:23",[14,51,52,53,15,54,26,13,55],"数据工具","视频","插件","其他","音频",{"id":57,"name":58,"github_repo":59,"description_zh":60,"stars":61,"difficulty_score":10,"last_commit_at":62,"category_tags":63,"status":16},3128,"ragflow","infiniflow\u002Fragflow","RAGFlow 是一款领先的开源检索增强生成（RAG）引擎，旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体（Agent）能力相结合，不仅支持从各类文档中高效提取知识，还能让模型基于这些知识进行逻辑推理和任务执行。\n\n在大模型应用中，幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构（如表格、图表及混合排版），显著提升了信息检索的准确度，从而有效减少模型“胡编乱造”的现象，确保回答既有据可依又具备时效性。其内置的智能体机制更进一步，使系统不仅能回答问题，还能自主规划步骤解决复杂问题。\n\n这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统，还是致力于探索大模型在垂直领域落地的创新者，都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口，既降低了非算法背景用户的上手门槛，也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目，它正成为连接通用大模型与行业专有知识之间的重要桥梁。",77062,"2026-04-04T04:44:48",[15,14,13,26,54],{"id":65,"github_repo":66,"name":67,"description_en":68,"description_zh":69,"ai_summary_zh":69,"readme_en":70,"readme_zh":71,"quickstart_zh":72,"use_case_zh":73,"hero_image_url":74,"owner_login":75,"owner_name":76,"owner_avatar_url":77,"owner_bio":78,"owner_company":79,"owner_location":79,"owner_email":79,"owner_twitter":79,"owner_website":80,"owner_url":81,"languages":82,"stars":91,"forks":92,"last_commit_at":93,"license":94,"difficulty_score":95,"env_os":96,"env_gpu":97,"env_ram":97,"env_deps":98,"category_tags":104,"github_topics":105,"view_count":23,"oss_zip_url":79,"oss_zip_packed_at":79,"status":16,"created_at":113,"updated_at":114,"faqs":115,"releases":145},2317,"mandiant\u002Fstringsifter","stringsifter","A machine learning tool that ranks strings based on their relevance for malware analysis.","StringSifter 是一款专为恶意软件分析打造的机器学习工具，旨在帮助安全专家从海量字符串数据中快速锁定关键线索。在进行逆向工程时，传统工具提取的字符串往往成千上万且杂乱无章，分析师很难从中迅速分辨出哪些具有实际调查价值。StringSifter 通过智能算法自动对这些字符串进行相关性排序，将最可疑、最重要的内容置顶，从而大幅缩短人工筛选时间，提升分析效率。\n\n这款工具特别适合网络安全研究人员、恶意软件分析师以及数字取证专家使用。无论是处理静态二进制文件、内存转储，还是结合 FLOSS 等去混淆工具的输出，StringSifter 都能灵活适配。其独特之处在于采用了“学习排序”（Learning to Rank）技术，能够理解上下文语境而非简单的关键词匹配，确保排序结果更贴合实战需求。此外，它提供了命令行接口和 Docker 支持，易于集成到现有的自动化分析流程中。对于希望从繁杂数据中高效提炼情报的专业人士而言，StringSifter 是一个实用且强大的助手。","\u003Cdiv align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmandiant_stringsifter_readme_cb9a662f903b.png\" width=\"400\">\n\u003C\u002Fdiv>\n\n--------------------------------------------------------------------------------\n\nStringSifter is a machine learning tool that automatically ranks strings based on their relevance for malware analysis.\n\n# Quick Links\n* [Technical Blogpost - *Learning to Rank Strings Output for Speedier Malware Analysis*](https:\u002F\u002Fwww.mandiant.com\u002Fresources\u002Fblog\u002Flearning-rank-strings-output-speedier-malware-analysis)\n* [Announcement Blogpost - *Open Sourcing StringSifter*](https:\u002F\u002Fwww.mandiant.com\u002Fresources\u002Fblog\u002Fopen-sourcing-stringsifter)\n* [DerbyCon Talk - *StringSifter: Learning to Rank Strings Output for Speedier Malware Analysis*](https:\u002F\u002Fyoutu.be\u002FpLiaVzOMJSk)\n* [StringSifter releases on PyPi](https:\u002F\u002Fpypi.org\u002Fproject\u002Fstringsifter\u002F)\n\n# Usage\n\nStringSifter requires Python version 3.9 or newer. Run the following commands to get the code, run unit tests, and use the tool:\n\n## Installation\n\n```sh\npip install stringsifter\n```\n\nFor development, use [poetry](https:\u002F\u002Fpython-poetry.org\u002F):\n```sh\ngit clone https:\u002F\u002Fgithub.com\u002Fmandiant\u002Fstringsifter.git\ncd stringsifter\npoetry install --with dev\n```\n\n## Running Unit Tests\n\nTo run unit tests from the StringSifter installation directory:\n\n```sh\npoetry run tests -v\n```\n\n## Running from the Command Line\n\nThe `pip install` command installs two runnable scripts `flarestrings` and `rank_strings` into your python environment. When developing from source, use `pipenv run flarestrings` and `pipenv run rank_strings`.\n\n`flarestrings` mimics features of GNU binutils' `strings`, and `rank_strings` accepts piped input, for example:\n\n```sh\nflarestrings \u003Cmy_sample> | rank_strings\n```\n\n`rank_strings` supports a number of command line arguments.  The positional argument `input_strings` specifies a file of strings to rank.  The optional arguments are:\n\nOption | Meaning\n--- | ---\n--scores (-s) | Include the rank scores in the output\n--limit (-l) | Limit output to the top `limit` ranked strings\n--min-score (-m) | Limit output to strings with score >= `min-score`\n--batch (-b) | Specify a folder of `strings` outputs for batch processing\n\nRanked strings are written to standard output unless the `--batch` option is specified, causing ranked outputs to be written to files named `\u003Cinput_file>.ranked_strings`.\n\n`flarestrings` supports an option `-n` (or `--min-len`) to print sequences of characters that are at least `min-len` characters long, instead of the default 4.  For example:\n\n```sh\nflarestrings -n 8 \u003Cmy_sample> | rank_strings\n```\n\nwill print and rank only strings of length 8 or greater.\n\n## Running from a Docker container\n\n- After cloning the repo, build the container.  From the the package's top level directory:\n```sh\ndocker build -t stringsifter -f docker\u002FDockerfile .\n```\n- Run the container with `flarestrings` or `rank_strings` argument to use the respective command. The containerized commands can be used in pipelines:\n```sh\ncat \u003Cmy_sample> | docker run -i stringsifter flarestrings | docker run -i stringsifter rank_strings\n```\n- Or, run the container without arguments to get a shell prompt, using the `-v` flag to expose a host directory to the container:\n```sh\ndocker run -v \u003Cmy_malware>:\u002Fsamples -it stringsifter\n```\nwhere `\u003Cmy_malware>` contains samples for analysis, for example:\n```sh\ndocker run -v $HOME\u002Fmalware\u002Fbinaries:\u002Fsamples -it stringsifter\n```\n- At the container prompt:\n```sh\nflarestrings \u002Fsamples\u002F\u003Cmy_sample> | rank_strings \u003Coptions>\n```\n\nAll [command line arguments](#running-from-the-command-line) are supported in the containerized scripts.\n\n## Running on FLOSS Output\n\nStringSifter can be applied to arbitrary lists of strings, making it useful for practitioners looking to glean insights from alternative intelligence-gathering sources such as live memory dumps, sandbox runs, or binaries that contain obfuscated strings. For example, [FireEye Labs Obfuscated Strings Solver (FLOSS)](https:\u002F\u002Fgithub.com\u002Ffireeye\u002Fflare-floss) extracts printable strings just as *Strings* does, but additionally reveals obfuscated strings that have been encoded, packed, or manually constructed on the stack. It can be used as an in-line replacement for Strings, meaning that StringSifter can be similarly invoked on FLOSS output using the following command:\n\n```sh\n$PY2_VENV\u002Fbin\u002Ffloss –q \u003Coptions> \u003Cmy_sample> | rank_strings \u003Coptions>\n```\n\nNotes:\n1. The `–q` argument suppresses headers and formatting to show only extracted strings. To learn more about additional FLOSS options, please see its [Usage Docs](https:\u002F\u002Fgithub.com\u002Ffireeye\u002Fflare-floss\u002Fblob\u002Fmaster\u002Fdoc\u002Fusage.md).\n2. FLOSS requires Python 2, while StringSifter requires Python 3.  In the example command at least one of `floss` or `rank_strings` must include a relative path referencing a python virtual enviroment.\n3. FLOSS can be downloaded as a [standalone executable](https:\u002F\u002Fgithub.com\u002Ffireeye\u002Fflare-floss\u002Freleases). In this case it is not required to specify a Python environment because the executable does not rely on a Python interpreter.\n\n## Notes on running `strings`\n\nThis distribution includes the `flarestrings` program to ensure predictable output across platforms.  If you choose to run your system's installed `strings` note that its options are not consistent across versions and platforms:\n\n### Linux\n\nMost Linux distributions include the `strings` program from GNU Binutils.  To extract both \"wide\" and \"narrow\" strings the program must be run twice, piping to an output file:\n\n```sh\nstrings \u003Cmy_sample>       > strs.txt   # narrow strings\nstrings -el \u003Cmy_sample>  >> strs.txt   # wide strings.  note the \">>\"\n```\n\n### MacOS\n\nSome versions of BSD `strings` packaged with MacOS do not support wide strings.  Also note that the `-a` option to strings to scan the whole file may be disabled in the default configuration.  Without `-a` informative strings may be lost.  We recommend installing GNU Binutils via Homebrew or MacPorts to get a version of `strings` that supports wide characters.  Use care to invoke the correct version of `strings`.\n\n### Windows\n\n`strings` is not installed by default on Windows. We recommend installing [Windows Sysinternals](https:\u002F\u002Fdocs.microsoft.com\u002Fen-us\u002Fsysinternals\u002F), [Cygwin](https:\u002F\u002Fwww.cygwin.com\u002F), or [Malcode Analyst Pack](http:\u002F\u002Fsandsprite.com\u002FiDef\u002FMAP\u002F) to get a working `strings`.\n\n# Discussion\nThis version of StringSifter was trained using *Strings* outputs from sampled malware binaries associated with the first [EMBER dataset](https:\u002F\u002Fgithub.com\u002Fendgameinc\u002Fember). Ordinal labels were generated using weak supervision procedures, and supervised learning is performed by [Gradient Boosted Decision Trees](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FLightGBM) with a learning-to-rank objective function. See [Quick Links](#quick-links) for further technical details. Please note that neither labeled data nor training code is currently available, though we may reconsider this approach in future releases.\n\n## Issues\nWe use [GitHub Issues](https:\u002F\u002Fgithub.com\u002Ffireeye\u002Fstringsifter\u002Fissues) for posting bugs and feature requests.\n\n## Acknowledgements\n- Thanks to the FireEye Data Science (FDS) and FireEye Labs Reverse Engineering (FLARE) teams for review and feedback.\n- StringSifter was designed and developed by Philip Tully (FDS), Matthew Haigh (FLARE), Jay Gibble (FLARE), and Michael Sikorski (FLARE).\n- The StringSifter logo was designed by Josh Langner (FLARE).\n- `flarestrings` is derived from the excellent tool [FLOSS](https:\u002F\u002Fgithub.com\u002Fmandiant\u002Fflare-floss).\n","\u003Cdiv align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmandiant_stringsifter_readme_cb9a662f903b.png\" width=\"400\">\n\u003C\u002Fdiv>\n\n--------------------------------------------------------------------------------\n\nStringSifter 是一款机器学习工具，能够根据字符串与恶意软件分析的相关性自动对其进行排序。\n\n# 快速链接\n* [技术博客文章 - *通过学习对字符串输出进行排序以加速恶意软件分析*](https:\u002F\u002Fwww.mandiant.com\u002Fresources\u002Fblog\u002Flearning-rank-strings-output-speedier-malware-analysis)\n* [公告博客文章 - *开源 StringSifter*](https:\u002F\u002Fwww.mandiant.com\u002Fresources\u002Fblog\u002Fopen-sourcing-stringsifter)\n* [DerbyCon 演讲 - *StringSifter：通过学习对字符串输出进行排序以加速恶意软件分析*](https:\u002F\u002Fyoutu.be\u002FpLiaVzOMJSk)\n* [StringSifter 在 PyPI 上的发布](https:\u002F\u002Fpypi.org\u002Fproject\u002Fstringsifter\u002F)\n\n# 使用方法\n\nStringSifter 需要 Python 3.9 或更高版本。运行以下命令即可获取代码、执行单元测试并使用该工具：\n\n## 安装\n\n```sh\npip install stringsifter\n```\n\n若需开发，请使用 [poetry](https:\u002F\u002Fpython-poetry.org\u002F)：\n```sh\ngit clone https:\u002F\u002Fgithub.com\u002Fmandiant\u002Fstringsifter.git\ncd stringsifter\npoetry install --with dev\n```\n\n## 运行单元测试\n\n在 StringSifter 的安装目录下运行单元测试：\n```sh\npoetry run tests -v\n```\n\n## 命令行运行\n\n通过 `pip install` 命令会将两个可执行脚本 `flarestrings` 和 `rank_strings` 安装到您的 Python 环境中。从源码开发时，请使用 `pipenv run flarestrings` 和 `pipenv run rank_strings`。\n\n`flarestrings` 模仿了 GNU binutils 中 `strings` 工具的功能，而 `rank_strings` 则支持管道输入，例如：\n```sh\nflarestrings \u003Cmy_sample> | rank_strings\n```\n\n`rank_strings` 支持多个命令行参数。其中位置参数 `input_strings` 用于指定待排序的字符串文件。可选参数如下：\n\n选项 | 含义\n--- | ---\n--scores (-s) | 在输出中包含排序分数\n--limit (-l) | 将输出限制为排名前 `limit` 的字符串\n--min-score (-m) | 仅输出分数大于等于 `min-score` 的字符串\n--batch (-b) | 指定一个包含多个 `strings` 输出文件的文件夹，以进行批量处理\n\n排序后的字符串会输出到标准输出，除非指定了 `--batch` 选项，此时排序结果将被写入名为 `\u003Cinput_file>.ranked_strings` 的文件中。\n\n`flarestrings` 支持 `-n`（或 `--min-len`）选项，用于打印长度至少为 `min-len` 的字符序列，而非默认的 4 个字符。例如：\n```sh\nflarestrings -n 8 \u003Cmy_sample> | rank_strings\n```\n\n将仅打印并排序长度为 8 个字符或更长的字符串。\n\n## 通过 Docker 容器运行\n\n- 克隆仓库后，构建容器镜像。在项目根目录下执行：\n```sh\ndocker build -t stringsifter -f docker\u002FDockerfile .\n```\n- 运行容器并传入 `flarestrings` 或 `rank_strings` 参数以使用相应命令。容器内的命令可以用于管道操作：\n```sh\ncat \u003Cmy_sample> | docker run -i stringsifter flarestrings | docker run -i stringsifter rank_strings\n```\n- 或者不传入任何参数直接运行容器以进入 Shell 提示符，并使用 `-v` 标志将主机目录挂载到容器中：\n```sh\ndocker run -v \u003Cmy_malware>:\u002Fsamples -it stringsifter\n```\n其中 `\u003Cmy_malware>` 包含待分析的样本，例如：\n```sh\ndocker run -v $HOME\u002Fmalware\u002Fbinaries:\u002Fsamples -it stringsifter\n```\n- 在容器提示符下：\n```sh\nflarestrings \u002Fsamples\u002F\u003Cmy_sample> | rank_strings \u003Coptions>\n```\n\n容器化脚本支持所有 [命令行参数](#running-from-the-command-line)。\n\n## 处理 FLOSS 输出\n\nStringSifter 可应用于任意字符串列表，因此对于希望从其他情报来源（如实时内存转储、沙箱运行结果或包含混淆字符串的二进制文件）中提取信息的安全从业者来说非常有用。例如，[FireEye Labs Obfuscated Strings Solver (FLOSS)](https:\u002F\u002Fgithub.com\u002Ffireeye\u002Fflare-floss) 与 `Strings` 工具一样会提取可打印的字符串，但还会揭示经过编码、打包或手动构造在栈上的混淆字符串。它可以作为 `Strings` 工具的替代品直接使用，因此也可以用 StringSifter 对 FLOSS 的输出进行类似处理，命令如下：\n```sh\n$PY2_VENV\u002Fbin\u002Ffloss –q \u003Coptions> \u003Cmy_sample> | rank_strings \u003Coptions>\n```\n\n注意事项：\n1. `–q` 参数会抑制标题和格式，仅显示提取的字符串。有关 FLOSS 其他选项的更多信息，请参阅其 [使用文档](https:\u002F\u002Fgithub.com\u002Ffireeye\u002Fflare-floss\u002Fblob\u002Fmaster\u002Fdoc\u002Fusage.md)。\n2. FLOSS 需要 Python 2，而 StringSifter 需要 Python 3。在上述示例中，`floss` 或 `rank_strings` 至少需要包含一个指向 Python 虚拟环境的相对路径。\n3. FLOSS 也可以作为 [独立可执行文件](https:\u002F\u002Fgithub.com\u002Ffireeye\u002Fflare-floss\u002Freleases) 下载。在这种情况下，无需指定 Python 环境，因为该可执行文件并不依赖于 Python 解释器。\n\n## 关于运行 `strings` 的说明\n\n本发行版包含 `flarestrings` 程序，以确保跨平台输出的一致性。如果您选择运行系统自带的 `strings` 工具，请注意其选项在不同版本和平台上并不一致：\n\n### Linux\n\n大多数 Linux 发行版都包含来自 GNU Binutils 的 `strings` 程序。为了提取“宽”和“窄”字符串，必须分别运行两次，并将输出重定向到文件中：\n```sh\nstrings \u003Cmy_sample>       > strs.txt   # 窄字符串\nstrings -el \u003Cmy_sample>  >> strs.txt   # 宽字符串。注意是追加重定向 \">>\"\n```\n\n### MacOS\n\n部分随 macOS 一起提供的 BSD 版本的 `strings` 不支持宽字符。此外，请注意，默认配置下可能禁用了扫描整个文件的 `-a` 选项。如果没有启用 `-a`，可能会丢失一些有价值的信息。建议通过 Homebrew 或 MacPorts 安装 GNU Binutils，以获得支持宽字符的 `strings` 版本。请务必调用正确的 `strings` 版本。\n\n### Windows\n\nWindows 系统默认未安装 `strings` 工具。我们建议安装 [Windows Sysinternals](https:\u002F\u002Fdocs.microsoft.com\u002Fen-us\u002Fsysinternals\u002F)、[Cygwin](https:\u002F\u002Fwww.cygwin.com\u002F) 或 [Malcode Analyst Pack](http:\u002F\u002Fsandsprite.com\u002FiDef\u002FMAP\u002F) 来获取可用的 `strings` 工具。\n\n# 讨论\n此版本的 StringSifter 是基于与首个 [EMBER 数据集](https:\u002F\u002Fgithub.com\u002Fendgameinc\u002Fember)相关的恶意软件样本生成的 `Strings` 输出训练而成的。序数标签通过弱监督方法生成，监督学习则由 [Gradient Boosted Decision Trees](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FLightGBM) 使用排序学习目标函数完成。更多技术细节请参阅 [快速链接](#quick-links)。请注意，目前尚未提供标注数据或训练代码，但我们可能会在未来的版本中重新考虑这一做法。\n\n## 问题\n我们使用 [GitHub Issues](https:\u002F\u002Fgithub.com\u002Ffireeye\u002Fstringsifter\u002Fissues) 来提交 bug 和功能请求。\n\n## 致谢\n- 感谢 FireEye 数据科学团队 (FDS) 和 FireEye 实验室逆向工程团队 (FLARE) 的审阅与反馈。\n- StringSifter 由 Philip Tully (FDS)、Matthew Haigh (FLARE)、Jay Gibble (FLARE) 和 Michael Sikorski (FLARE) 共同设计并开发。\n- StringSifter 的标志由 Josh Langner (FLARE) 设计。\n- `flarestrings` 是基于优秀的工具 [FLOSS](https:\u002F\u002Fgithub.com\u002Fmandiant\u002Fflare-floss) 开发的。","# StringSifter 快速上手指南\n\nStringSifter 是一款基于机器学习的工具，能够自动根据字符串在恶意软件分析中的相关性对其进行排序，帮助安全研究人员快速定位关键信息。\n\n## 环境准备\n\n*   **操作系统**：Linux、macOS 或 Windows（推荐在 Linux 环境下使用以获得最佳兼容性）。\n*   **Python 版本**：必须安装 **Python 3.9** 或更高版本。\n*   **依赖管理**：\n    *   普通用户仅需 `pip`。\n    *   开发者如需贡献代码或运行测试，需安装 [Poetry](https:\u002F\u002Fpython-poetry.org\u002F)。\n\n> **提示**：国内用户建议使用国内镜像源加速安装，例如阿里云或清华大学镜像源。\n\n## 安装步骤\n\n### 方式一：通过 PyPI 安装（推荐普通用户）\n\n直接使用 pip 安装即可，命令会自动将 `flarestrings` 和 `rank_strings` 脚本添加到你的 Python 环境中。\n\n```sh\npip install stringsifter -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n### 方式二：源码安装（推荐开发者）\n\n如果你需要开发功能或运行单元测试，请克隆仓库并使用 Poetry 安装依赖：\n\n```sh\ngit clone https:\u002F\u002Fgithub.com\u002Fmandiant\u002Fstringsifter.git\ncd stringsifter\npoetry install --with dev\n```\n\n## 基本使用\n\n安装完成后，你将获得两个主要命令：\n1.  `flarestrings`：类似 GNU `strings` 工具，用于从二进制文件中提取字符串（针对跨平台一致性进行了优化）。\n2.  `rank_strings`：接收字符串列表，利用机器学习模型对其进行相关性排序。\n\n### 最简单的使用示例\n\n将提取字符串和排序步骤通过管道连接，直接对样本文件进行分析：\n\n```sh\nflarestrings \u003Cmy_sample> | rank_strings\n```\n\n*   `\u003Cmy_sample>`：替换为你要分析的恶意软件样本文件路径。\n*   该命令会输出按相关性从高到低排列的字符串列表。\n\n### 常用参数示例\n\n*   **限制输出数量**（仅显示前 20 条最相关的字符串）：\n    ```sh\n    flarestrings \u003Cmy_sample> | rank_strings -l 20\n    ```\n\n*   **显示评分**（在输出中包含机器学习给出的相关性分数）：\n    ```sh\n    flarestrings \u003Cmy_sample> | rank_strings -s\n    ```\n\n*   **自定义最小字符串长度**（仅提取并排序长度大于等于 8 的字符串）：\n    ```sh\n    flarestrings -n 8 \u003Cmy_sample> | rank_strings\n    ```\n\n### 进阶场景：结合 FLOSS 使用\n\n如果你需要分析混淆字符串，可以将 StringSifter 与 FireEye Labs Obfuscated Strings Solver (FLOSS) 结合使用：\n\n```sh\nfloss -q \u003Cmy_sample> | rank_strings\n```\n*(注意：FLOSS 可能需要独立的 Python 2 环境或使用其 standalone 可执行文件)*","某安全分析师在紧急响应一起勒索软件攻击时，需要从被感染的二进制文件中快速提取关键线索以确定攻击者意图。\n\n### 没有 stringsifter 时\n- 面对 `strings` 命令输出的成千上万条杂乱字符串，分析师难以区分哪些是真正的恶意载荷特征，哪些只是无关的系统路径或乱码。\n- 人工逐行筛选耗时极长，在争分夺秒的应急响应中，极易因疲劳而漏掉隐藏在深处的关键 C2 域名或解密密钥。\n- 缺乏统一的评分标准，不同经验水平的分析师对字符串重要性的判断差异巨大，导致分析结果不稳定且难以复用。\n- 大量无效信息干扰视线，使得编写自动化检测规则（如 YARA 规则）时噪音过高，误报率难以控制。\n\n### 使用 stringsifter 后\n- stringsifter 利用机器学习模型自动将所有字符串按恶意相关性排序，将最可疑的 API 调用、URL 和加密常量直接置顶展示。\n- 分析师只需查看排名前几十位的字符串即可锁定核心行为，将原本数小时的人工筛选工作压缩至几分钟内完成。\n- 输出结果附带量化评分，为团队提供了客观的判断依据，确保无论谁执行分析，都能优先关注高价值线索。\n- 通过 `--limit` 参数精准提取顶部高分字符串，直接生成高质量的指标数据（IOCs），大幅提升了后续威胁情报生产的效率。\n\nstringsifter 通过将海量无序字符转化为有序的情报线索，彻底改变了恶意软件分析中“大海捞针”的低效现状。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmandiant_stringsifter_cb9a662f.png","mandiant","MANDIANT","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fmandiant_5928cb03.png","",null,"http:\u002F\u002Fwww.mandiant.com","https:\u002F\u002Fgithub.com\u002Fmandiant",[83,87],{"name":84,"color":85,"percentage":86},"Python","#3572A5",99.6,{"name":88,"color":89,"percentage":90},"Dockerfile","#384d54",0.4,754,129,"2026-03-17T08:03:25","Apache-2.0",1,"Linux, macOS, Windows","未说明",{"notes":99,"python":100,"dependencies":101},"该工具可通过 pip 直接安装，也支持 Docker 容器化运行。若需与 FLOSS 工具联用，需注意 FLOSS 可能需要 Python 2 环境或独立可执行文件，而 StringSifter 必须运行在 Python 3.9+ 环境中。推荐使用提供的 `flarestrings` 脚本代替系统自带的 `strings` 命令以确保跨平台输出一致性（特别是 macOS 和 Windows 下）。","3.9+",[102,103],"poetry (开发依赖)","LightGBM (底层算法依赖)",[51,54,13],[106,107,108,109,110,111,112],"machine-learning","fireeye-flare","strings","malware-analysis","learning-to-rank","reverse-engineering","fireeye-data-science","2026-03-27T02:49:30.150509","2026-04-06T05:15:37.573162",[116,121,126,131,136,140],{"id":117,"question_zh":118,"answer_zh":119,"source_url":120},10619,"在 macOS 上运行 rank_strings 时遇到 BrokenPipeError 或 LightGBM 加载错误怎么办？","这通常是由于 LightGBM 依赖库未正确安装导致的。解决方法是先通过 Homebrew 安装 lightgbm（这会同时安装 libomp），然后重新安装 Python 版的 lightgbm。具体命令如下：\n1. `brew install lightgbm`\n2. `pip uninstall lightgbm`\n3. `pip install -U lightgbm`\n此外，升级到包含更新依赖（LightGBM 3 和 Python 3.9+）的新版本 stringsifter 也能解决此问题。","https:\u002F\u002Fgithub.com\u002Fmandiant\u002Fstringsifter\u002Fissues\u002F11",{"id":122,"question_zh":123,"answer_zh":124,"source_url":125},10620,"Stringsifter 支持哪些 Python 版本？遇到版本不兼容报错如何处理？","早期版本因依赖 numpy 1.17.1 和 scipy 1.3.1 而不支持 Python 3.8+。后续版本（如 2.20201202 及通过 PR #34 更新的版本）已修复对 Python 3.8、3.9 和 3.10 的支持。\n如果您在使用较新 Python 版本时遇到 `scikit-learn` 相关的反序列化警告（UserWarning: Trying to unpickle estimator...），这是因为模型是用旧版 sklearn 保存的。虽然通常可以忽略并继续运行，但最稳妥的方法是升级 stringsifter 到最新版本，该版本已更新依赖以匹配新的 Python 环境。","https:\u002F\u002Fgithub.com\u002Fmandiant\u002Fstringsifter\u002Fissues\u002F13",{"id":127,"question_zh":128,"answer_zh":129,"source_url":130},10621,"运行时报错 LGBMNotFittedError: Estimator not fitted 是什么原因？","此错误发生在 lightgbm 版本 >= 3.3.1 时，与 stringsifter 的预训练模型不兼容。\n临时解决方案是将 lightgbm 降级到 3.3.0 版本：\n`pip install lightgbm==3.3.0`\n或者，直接升级 stringsifter 到最新版本（已通过 PR #34 修复），新版本已适配更高版本的 lightgbm。","https:\u002F\u002Fgithub.com\u002Fmandiant\u002Fstringsifter\u002Fissues\u002F18",{"id":132,"question_zh":133,"answer_zh":134,"source_url":135},10622,"如何在虚拟环境（virtualenv）或包含空格的路径中使用 Stringsifter？","在较新的 stringsifter 版本（如 3.20230711）和 Python 3.9+ 环境中，该问题已被修复，可以在包含空格的路径创建的虚拟环境中正常运行。\n如果您仍在使用旧版本并遇到 `-bash: bad interpreter: No such file or directory` 错误，建议升级 stringsifter 到最新版本。如果无法升级，请尝试将项目移动到不包含空格的路径中，或使用系统全局 Python 环境而非虚拟环境。","https:\u002F\u002Fgithub.com\u002Fmandiant\u002Fstringsifter\u002Fissues\u002F12",{"id":137,"question_zh":138,"answer_zh":139,"source_url":130},10623,"安装 stringsifier 时提示 joblib 版本冲突怎么办？","在安装过程中可能会遇到类似 `requires joblib==0.17.0, but you have joblib 0.16.0` 的版本冲突错误。\n解决方法是手动安装指定版本的 joblib，或者让 pip 自动解决依赖。您可以运行：\n`pip install joblib==0.17.0`\n然后再重新安装 stringsifter。通常升级到最新的 stringsifter 包会自动处理这些依赖关系。",{"id":141,"question_zh":142,"answer_zh":143,"source_url":144},10624,"为什么安装 stringsifter 后会连带安装 pytest？这对生产环境有影响吗？","在旧版本中，setup.py 配置不当导致将开发依赖（如 pytest）作为了生产依赖安装。\n此问题已在版本 1.20201201 中修复。如果您使用的是新版本，不应再出现此情况。如果您正在维护自己的构建或需要区分开发\u002F生产依赖，建议升级到最新版本，或者在您的 Dockerfile\u002F部署脚本中明确指定只安装运行时所需的包。","https:\u002F\u002Fgithub.com\u002Fmandiant\u002Fstringsifter\u002Fissues\u002F5",[146,149,152,155],{"id":147,"version":148,"summary_zh":79,"released_at":79},71191,"v3.20230711",{"id":150,"version":151,"summary_zh":79,"released_at":79},71192,"v2.20201202",{"id":153,"version":154,"summary_zh":79,"released_at":79},71193,"v1.20201201",{"id":156,"version":157,"summary_zh":79,"released_at":79},71194,"v0.20191202"]