[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-linwhitehat--ET-BERT":3,"tool-linwhitehat--ET-BERT":61},[4,18,26,36,44,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},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,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},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 真正成长为懂上",143909,2,"2026-04-07T11:33:18",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":32,"last_commit_at":42,"category_tags":43,"status":17},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 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107888,"2026-04-06T11:32:50",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":32,"last_commit_at":50,"category_tags":51,"status":17},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[52,14],"插件",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":10,"last_commit_at":59,"category_tags":60,"status":17},4487,"LLMs-from-scratch","rasbt\u002FLLMs-from-scratch","LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目，旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型（LLM）。它不仅是同名技术著作的官方代码库，更提供了一套完整的实践方案，涵盖模型开发、预训练及微调的全过程。\n\n该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型，却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码，用户能够透彻掌握 Transformer 架构、注意力机制等关键原理，从而真正理解大模型是如何“思考”的。此外，项目还包含了加载大型预训练权重进行微调的代码，帮助用户将理论知识延伸至实际应用。\n\nLLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API，而是渴望探究模型构建细节的技术人员而言，这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计：将复杂的系统工程拆解为清晰的步骤，配合详细的图表与示例，让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础，还是为未来研发更大规模的模型做准备",90106,"2026-04-06T11:19:32",[35,15,13,14],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":66,"readme_en":67,"readme_zh":68,"quickstart_zh":69,"use_case_zh":70,"hero_image_url":71,"owner_login":72,"owner_name":73,"owner_avatar_url":74,"owner_bio":75,"owner_company":76,"owner_location":77,"owner_email":78,"owner_twitter":78,"owner_website":78,"owner_url":79,"languages":80,"stars":85,"forks":86,"last_commit_at":87,"license":88,"difficulty_score":89,"env_os":90,"env_gpu":91,"env_ram":90,"env_deps":92,"category_tags":106,"github_topics":107,"view_count":32,"oss_zip_url":78,"oss_zip_packed_at":78,"status":17,"created_at":115,"updated_at":116,"faqs":117,"releases":148},5052,"linwhitehat\u002FET-BERT","ET-BERT","The repository of ET-BERT, a network traffic classification model on encrypted traffic. The work has been accepted as The Web Conference (WWW) 2022 accepted paper.","ET-BERT 是一款专为加密网络流量分类设计的开源模型，曾入选国际顶级会议 WWW 2022。在如今隐私保护日益增强、网络流量普遍加密的背景下，传统方法难以在不解密的情况下精准识别流量类型，而 ET-BERT 正是为了解决这一难题而生。\n\n它能够直接从加密的数据报中学习上下文关联特征，无需破解加密内容即可准确判断流量类别（如视频流、网页浏览或恶意通信等）。其核心技术亮点在于引入了预训练 Transformer 架构：首先在大规模无标签数据上进行自监督学习，掌握通用的流量传输规律；随后仅需少量标注数据微调，即可快速适配到具体的应用场景中。这种“预训练 + 微调”的机制，不仅大幅降低了对标注数据的依赖，还显著提升了模型在不同网络环境下的泛化能力。\n\nET-BERT 非常适合网络安全研究人员、流量分析工程师以及从事人工智能与网络交叉领域开发的开发者使用。对于希望构建高效入侵检测系统、优化网络服务质量或进行学术探索的专业人士而言，它提供了一个强大且灵活的基线模型。项目代码基于成熟的 UER-py 框架，并提供了详细的复现指南和预训练模型，便于用户快速上手并集成到自己的安全防御体系中。","# ET-BERT: A Contextualized Datagram Representation with Pre-training Transformers for Encrypted Traffic Classification\n\n\u003C!-- \n[![codebeat badge](https:\u002F\u002Fcodebeat.co\u002Fbadges\u002Ff75fab90-6d00-44b4-bb42-d19067400243)](https:\u002F\u002Fcodebeat.co\u002Fprojects\u002Fgithub-com-linwhitehat-et-bert-main) \n![](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-000000.svg) \n[![arXiv](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FarXiv-1909.05658-\u003Ccolor>.svg)](https:\u002F\u002Farxiv.org\u002Fabs\u002F2202.06335) \n-->\n\n\u003Cp align=\"center\">\n  \u003Ca href=''>\u003Cimg src='https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-brightgreen'>\u003C\u002Fa> \n  \u003Ca href='https:\u002F\u002Farxiv.org\u002Fabs\u002F2202.06335'>\u003Cimg src='https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FarXiv-1909.05658-\u003Ccolor>.svg'>\u003C\u002Fa> \n  \u003Ca href='https:\u002F\u002Fdl.acm.org\u002Fdoi\u002F10.1145\u002F3485447.3512217' target='_blank'>\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FWWW'22-Paper-blue\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n**Note:**\n- ⭐ **Please leave a \u003Cfont color='orange'>STAR\u003C\u002Ffont> if you like this project!** ⭐\n- If you find any \u003Cfont color='red'>incorrect\u003C\u002Ffont> \u002F \u003Cfont color='red'>inappropriate\u003C\u002Ffont> \u002F \u003Cfont color='red'>outdated\u003C\u002Ffont> content, please kindly consider opening an issue or a PR. \n\n**The repository of ET-BERT, a network traffic classification model on encrypted traffic.**\n\nET-BERT is a method for learning datagram contextual relationships from encrypted traffic, which could be **directly applied to different encrypted traffic scenarios and accurately identify classes of traffic**. First, ET-BERT employs multi-layer attention in large scale unlabelled traffic to learn both inter-datagram contextual and inter-traffic transport relationships. Second, ET-BERT could be applied to a specific scenario to identify traffic types by fine-tuning the labeled encrypted traffic on a small scale.\n\n![The framework of ET-BERT](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Flinwhitehat_ET-BERT_readme_6c173dde412f.png)\n\nThe work is introduced in the *[31st The Web Conference](https:\u002F\u002Fwww2022.thewebconf.org\u002F)*:\n> Xinjie Lin, Gang Xiong, Gaopeng Gou, Zhen Li, Junzheng Shi and Jing Yu. 2022. ET-BERT: A Contextualized Datagram Representation with Pre-training Transformers for Encrypted Traffic Classification. In Proceedings of The Web Conference (WWW) 2022, Lyon, France. Association for Computing Machinery. \n\nNote: this code is based on [UER-py](https:\u002F\u002Fgithub.com\u002Fdbiir\u002FUER-py). Many thanks to the authors.\n\u003Cbr\u002F>\n\nTable of Contents\n=================\n  * [Requirements](#requirements)\n  * [Datasets](#datasets)\n  * [Using ET-BERT](#using-et-bert)\n  * [Reproduce ET-BERT](#reproduce-et-bert)\n  * [Citation](#citation)\n  * [Contact](#contact)\n  * [Sponsor](#buy-me-a-coffee)\n\u003Cbr\u002F>\n\n## Requirements\n* Python >= 3.6\n* CUDA: 11.4\n* GPU: Tesla V100S\n* torch >= 1.1\n* six >= 1.12.0\n* scapy == 2.4.4\n* numpy == 1.19.2\n* shutil, random, json, pickle, binascii, flowcontainer\n* argparse\n* packaging\n* tshark\n* [SplitCap](https:\u002F\u002Fwww.netresec.com\u002F?page=SplitCap)\n* [scikit-learn](https:\u002F\u002Fscikit-learn.org\u002Fstable\u002F)\n* For the mixed precision training you will need apex from NVIDIA\n* For the pre-trained model conversion (related with TensorFlow) you will need TensorFlow\n* For the tokenization with wordpiece model you will need [WordPiece](https:\u002F\u002Fgithub.com\u002Fhuggingface\u002Ftokenizers)\n* For the use of CRF in sequence labeling downstream task you will need [pytorch-crf](https:\u002F\u002Fgithub.com\u002Fkmkurn\u002Fpytorch-crf)\n\u003Cbr\u002F>\n\n## Datasets\nThe real-world TLS 1.3 dataset is collected from March to July 2021 on China Science and Technology Network (CSTNET). For privacy considerations, we only release the anonymous data (see in [CSTNET-TLS 1.3](CSTNET-TLS%201.3\u002Freadme.md)).\n\nOther datasets we used for comparison experiments are publicly available, see the [paper](https:\u002F\u002Farxiv.org\u002Fabs\u002F2202.06335) for more details. If you want to use your own data, please check if the data format is the same as `datasets\u002Fcstnet-tls1.3\u002F` and specify the data path in `data_process\u002F`.\n\n\u003Cbr\u002F>\n\n## Using ET-BERT\nYou can now use ET-BERT directly through the pre-trained [model](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1r1yE34dU2W8zSqx1FkB8gCWri4DQWVtE\u002Fview?usp=sharing) or download via:\n```\nwget -O pretrained_model.bin https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1r1yE34dU2W8zSqx1FkB8gCWri4DQWVtE\u002Fview?usp=sharing\n```\n\nAfter obtaining the pre-trained model, ET-BERT could be applied to the spetic task by fine-tuning at packet-level with labeled network traffic:\n```\npython3 fine-tuning\u002Frun_classifier.py --pretrained_model_path models\u002Fpre-trained_model.bin \\\n                                   --vocab_path models\u002Fencryptd_vocab.txt \\\n                                   --train_path datasets\u002Fcstnet-tls1.3\u002Fpacket\u002Ftrain_dataset.tsv \\\n                                   --dev_path datasets\u002Fcstnet-tls1.3\u002Fpacket\u002Fvalid_dataset.tsv \\\n                                   --test_path datasets\u002Fcstnet-tls1.3\u002Fpacket\u002Ftest_dataset.tsv \\\n                                   --epochs_num 10 --batch_size 32 --embedding word_pos_seg \\\n                                   --encoder transformer --mask fully_visible \\\n                                   --seq_length 128 --learning_rate 2e-5\n```\n\nThe default path of the fine-tuned classifier model is `models\u002Ffinetuned_model.bin`. Then you can do inference with the fine-tuned model:\n```\npython3 inference\u002Frun_classifier_infer.py --load_model_path models\u002Ffinetuned_model.bin \\\n                                          --vocab_path models\u002Fencryptd_vocab.txt \\\n                                          --test_path datasets\u002Fcstnet-tls1.3\u002Fpacket\u002Fnolabel_test_dataset.tsv \\\n                                          --prediction_path datasets\u002Fcstnet-tls1.3\u002Fpacket\u002Fprediction.tsv \\\n                                          --labels_num 120 \\\n                                          --embedding word_pos_seg --encoder transformer --mask fully_visible\n```\n\u003Cbr\u002F>\n\n## Reproduce ET-BERT\n### Pre-process\nTo reproduce the steps necessary to pre-train ET-BERT on network traffic data, follow the following steps:\n 1. Run `vocab_process\u002Fmain.py` to generate the encrypted traffic corpus or directly use the generated corpus in `corpora\u002F`. Note you'll need to change the file paths and some configures at the top of the file.\n 2. Run `main\u002Fpreprocess.py` to pre-process the encrypted traffic burst corpus.\n    ```\n       python3 preprocess.py --corpus_path corpora\u002Fencrypted_traffic_burst.txt \\\n                             --vocab_path models\u002Fencryptd_vocab.txt \\\n                             --dataset_path dataset.pt --processes_num 8 --target bert\n    ```\n 3. Run `data_process\u002Fmain.py` to generate the data for downstream tasks if there is a dataset in pcap format that needs to be processed. This process includes two steps. The first is to split pcap files by setting `splitcap=True` in `datasets\u002Fmain.py:54`  and save as `npy` datasets. Then the second is to generate the fine-tuning data. If you use the shared datasets, then you need to create a folder under the `dataset_save_path` named `dataset` and copy the datasets here.\n\n### Pre-training\nTo reproduce the steps necessary to finetune ET-BERT on labeled data, run `pretrain.py` to pre-train. If one wishes to continue training on an already pre-trained model, the parameter `--pretrained_model_path` a can be increased.\n```\n   python3 pre-training\u002Fpretrain.py --dataset_path dataset.pt --vocab_path models\u002Fencryptd_vocab.txt \\\n                       --output_model_path models\u002Fpre-trained_model.bin \\\n                       --world_size 8 --gpu_ranks 0 1 2 3 4 5 6 7 \\\n                       --total_steps 500000 --save_checkpoint_steps 10000 --batch_size 32 \\\n                       --embedding word_pos_seg --encoder transformer --mask fully_visible --target bert\n```\n\n### Fine-tuning on downstream tasks\nTo see an example of how to use ET-BERT for the encrypted traffic classification tasks, go to the [Using ET-BERT](#using-et-bert) and `run_classifier.py` script in the `fine-tuning` folder.\n\nNote: you'll need to change the path in programes.\n\u003Cbr\u002F>\n\n## Citation\n#### If you are using the work (e.g. pre-trained model) in ET-BERT for academic work, please cite the [paper](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002F10.1145\u002F3485447.3512217) published in WWW 2022:\n\n```\n@inproceedings{lin2022etbert,\n  author    = {Xinjie Lin and\n               Gang Xiong and\n               Gaopeng Gou and\n               Zhen Li and\n               Junzheng Shi and\n               Jing Yu},\n  title     = {{ET-BERT:} {A} Contextualized Datagram Representation with Pre-training\n               Transformers for Encrypted Traffic Classification},\n  booktitle = {{WWW} '22: The {ACM} Web Conference 2022, Virtual Event, Lyon, France,\n               April 25 - 29, 2022},\n  pages     = {633--642},\n  publisher = {{ACM}},\n  year      = {2022}\n}\n```\n\n\u003Cbr\u002F>\n\n## Contact\nPlease post a Github issue if you have any questions. Welcome to discuss new ideas, techniques, and improvements!\n\n## Buy Me a Coffee\nIf you find it useful and want to say thanks, I'd appreciate it if you bought me a coffee! It helps keep the motivation and the energy high!\n","# ET-BERT：一种基于预训练Transformer的加密流量分类上下文数据报表示\n\n\u003C!--\n[![codebeat badge](https:\u002F\u002Fcodebeat.co\u002Fbadges\u002Ff75fab90-6d00-44b4-bb42-d19067400243)](https:\u002F\u002Fcodebeat.co\u002Fprojects\u002Fgithub-com-linwhitehat-et-bert-main) \n![](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-000000.svg) \n[![arXiv](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FarXiv-1909.05658-\u003Ccolor>.svg)](https:\u002F\u002Farxiv.org\u002Fabs\u002F2202.06335) \n-->\n\n\u003Cp align=\"center\">\n  \u003Ca href=''>\u003Cimg src='https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-brightgreen'>\u003C\u002Fa> \n  \u003Ca href='https:\u002F\u002Farxiv.org\u002Fabs\u002F2202.06335'>\u003Cimg src='https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FarXiv-1909.05658-\u003Ccolor>.svg'>\u003C\u002Fa> \n  \u003Ca href='https:\u002F\u002Fdl.acm.org\u002Fdoi\u002F10.1145\u002F3485447.3512217' target='_blank'>\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FWWW'22-Paper-blue\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n**注：**\n- ⭐ **如果您喜欢该项目，请留下一个\u003Cfont color='orange'>星标\u003C\u002Ffont>！** ⭐\n- 如果您发现任何\u003Cfont color='red'>错误\u003C\u002Ffont> \u002F \u003Cfont color='red'>不当\u003C\u002Ffont> \u002F \u003Cfont color='red'>过时\u003C\u002Ffont>的内容，请考虑提交一个问题或拉取请求。\n\n**ET-BERT代码库，一种针对加密流量的网络流量分类模型。**\n\nET-BERT是一种从加密流量中学习数据报上下文关系的方法，可以**直接应用于不同的加密流量场景，并准确识别流量类别**。首先，ET-BERT在大规模未标记流量上采用多层注意力机制，学习数据报间以及不同流量传输之间的上下文关系。其次，通过在小规模标注加密流量上进行微调，ET-BERT可以应用于特定场景以识别流量类型。\n\n![ET-BERT框架](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Flinwhitehat_ET-BERT_readme_6c173dde412f.png)\n\n该工作已在*[第31届万维网大会](https:\u002F\u002Fwww2022.thewebconf.org\u002F)*上发表：\n> Xinjie Lin, Gang Xiong, Gaopeng Gou, Zhen Li, Junzheng Shi 和 Jing Yu. 2022. ET-BERT：一种基于预训练Transformer的加密流量分类上下文数据报表示。载于《万维网大会》（WWW）2022年会议论文集，法国里昂。计算机协会。\n\n注：此代码基于[UER-py](https:\u002F\u002Fgithub.com\u002Fdbiir\u002FUER-py)。非常感谢原作者。\n\u003Cbr\u002F>\n\n目录\n=================\n  * [要求](#requirements)\n  * [数据集](#datasets)\n  * [使用ET-BERT](#using-et-bert)\n  * [复现ET-BERT](#reproduce-et-bert)\n  * [引用](#citation)\n  * [联系](#contact)\n  * [赞助](#buy-me-a-coffee)\n\u003Cbr\u002F>\n\n## 要求\n* Python >= 3.6\n* CUDA: 11.4\n* GPU: Tesla V100S\n* torch >= 1.1\n* six >= 1.12.0\n* scapy == 2.4.4\n* numpy == 1.19.2\n* shutil, random, json, pickle, binascii, flowcontainer\n* argparse\n* packaging\n* tshark\n* [SplitCap](https:\u002F\u002Fwww.netresec.com\u002F?page=SplitCap)\n* [scikit-learn](https:\u002F\u002Fscikit-learn.org\u002Fstable\u002F)\n* 对于混合精度训练，您需要NVIDIA的apex工具包。\n* 对于预训练模型的转换（与TensorFlow相关），您需要TensorFlow。\n* 对于使用wordpiece模型进行分词，您需要[WordPiece](https:\u002F\u002Fgithub.com\u002Fhuggingface\u002Ftokenizers)。\n* 对于在序列标注下游任务中使用CRF，您需要[pytorch-crf](https:\u002F\u002Fgithub.com\u002Fkmkurn\u002Fpytorch-crf)。\n\u003Cbr\u002F>\n\n## 数据集\n真实世界的TLS 1.3数据集收集于2021年3月至7月期间，来自中国科学技术网（CSTNET）。出于隐私考虑，我们仅发布匿名数据（详见[CSTNET-TLS 1.3](CSTNET-TLS%201.3\u002Freadme.md)）。\n\n我们用于对比实验的其他数据集均为公开可用，更多细节请参阅[论文](https:\u002F\u002Farxiv.org\u002Fabs\u002F2202.06335)。如果您希望使用自己的数据，请确保数据格式与`datasets\u002Fcstnet-tls1.3\u002F`一致，并在`data_process\u002F`中指定数据路径。\n\u003Cbr\u002F>\n\n## 使用ET-BERT\n您现在可以直接使用预训练的[模型](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1r1yE34dU2W8zSqx1FkB8gCWri4DQWVtE\u002Fview?usp=sharing)，或者通过以下命令下载：\n```\nwget -O pretrained_model.bin https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1r1yE34dU2W8zSqx1FkB8gCWri4DQWVtE\u002Fview?usp=sharing\n```\n\n获得预训练模型后，可以通过在数据包级别对标注的网络流量进行微调，将ET-BERT应用于特定任务：\n```\npython3 fine-tuning\u002Frun_classifier.py --pretrained_model_path models\u002Fpre-trained_model.bin \\\n                                   --vocab_path models\u002Fencryptd_vocab.txt \\\n                                   --train_path datasets\u002Fcstnet-tls1.3\u002Fpacket\u002Ftrain_dataset.tsv \\\n                                   --dev_path datasets\u002Fcstnet-tls1.3\u002Fpacket\u002Fvalid_dataset.tsv \\\n                                   --test_path datasets\u002Fcstnet-tls1.3\u002Fpacket\u002Ftest_dataset.tsv \\\n                                   --epochs_num 10 --batch_size 32 --embedding word_pos_seg \\\n                                   --encoder transformer --mask fully_visible \\\n                                   --seq_length 128 --learning_rate 2e-5\n```\n\n微调后的分类器模型默认保存路径为`models\u002Ffinetuned_model.bin`。随后您可以使用微调后的模型进行推理：\n```\npython3 inference\u002Frun_classifier_infer.py --load_model_path models\u002Ffinetuned_model.bin \\\n                                          --vocab_path models\u002Fencryptd_vocab.txt \\\n                                          --test_path datasets\u002Fcstnet-tls1.3\u002Fpacket\u002Fnolabel_test_dataset.tsv \\\n                                          --prediction_path datasets\u002Fcstnet-tls1.3\u002Fpacket\u002Fprediction.tsv \\\n                                          --labels_num 120 \\\n                                          --embedding word_pos_seg --encoder transformer --mask fully_visible\n```\n\u003Cbr\u002F>\n\n## 复现ET-BERT\n### 预处理\n要复现ET-BERT在网络流量数据上进行预训练所需的步骤，请按照以下步骤操作：\n 1. 运行`vocab_process\u002Fmain.py`生成加密流量语料库，或直接使用`corpora\u002F`中已生成的语料库。请注意，您需要更改文件顶部的文件路径和部分配置。\n 2. 运行`main\u002Fpreprocess.py`对加密流量突发语料库进行预处理。\n    ```\n       python3 preprocess.py --corpus_path corpora\u002Fencrypted_traffic_burst.txt \\\n                             --vocab_path models\u002Fencryptd_vocab.txt \\\n                             --dataset_path dataset.pt --processes_num 8 --target bert\n    ```\n 3. 运行`data_process\u002Fmain.py`生成下游任务所需的数据，如果存在需要处理的pcap格式数据集。此过程包括两个步骤。首先，在`datasets\u002Fmain.py:54`中设置`splitcap=True`来拆分pcap文件，并将其保存为`npy`格式的数据集。然后是生成微调数据的过程。如果您使用共享数据集，则需要在`dataset_save_path`下创建名为`dataset`的文件夹，并将数据集复制到此处。\n\n### 预训练\n要复现在标注数据上微调 ET-BERT 所需的步骤，请运行 `pretrain.py` 进行预训练。如果希望在已预训练的模型基础上继续训练，可以增加参数 `--pretrained_model_path`。\n```\n   python3 pre-training\u002Fpretrain.py --dataset_path dataset.pt --vocab_path models\u002Fencryptd_vocab.txt \\\n                       --output_model_path models\u002Fpre-trained_model.bin \\\n                       --world_size 8 --gpu_ranks 0 1 2 3 4 5 6 7 \\\n                       --total_steps 500000 --save_checkpoint_steps 10000 --batch_size 32 \\\n                       --embedding word_pos_seg --encoder transformer --mask fully_visible --target bert\n```\n\n### 下游任务上的微调\n要查看如何将 ET-BERT 用于加密流量分类任务的示例，请参阅 [使用 ET-BERT](#using-et-bert) 以及 `fine-tuning` 文件夹中的 `run_classifier.py` 脚本。\n\n注意：您需要更改程序中的路径。\n\u003Cbr\u002F>\n\n## 引用\n#### 如果您在学术工作中使用了 ET-BERT 中的工作（例如预训练模型），请引用发表于 WWW 2022 的论文：\n\n```\n@inproceedings{lin2022etbert,\n  author    = {Xinjie Lin and\n               Gang Xiong and\n               Gaopeng Gou and\n               Zhen Li and\n               Junzheng Shi and\n               Jing Yu},\n  title     = {{ET-BERT:} {A} Contextualized Datagram Representation with Pre-training\n               Transformers for Encrypted Traffic Classification},\n  booktitle = {{WWW} '22: The {ACM} Web Conference 2022, Virtual Event, Lyon, France,\n               April 25 - 29, 2022},\n  pages     = {633--642},\n  publisher = {{ACM}},\n  year      = {2022}\n}\n```\n\n\u003Cbr\u002F>\n\n## 联系方式\n如果您有任何问题，请在 GitHub 上提交 issue。欢迎讨论新的想法、技术及改进！\n\n## 请我喝杯咖啡\n如果您觉得本项目有用并想表达感谢，欢迎请我喝杯咖啡！这将有助于保持我的动力和热情！","# ET-BERT 快速上手指南\n\nET-BERT 是一个基于预训练 Transformer 的加密流量分类模型，能够学习数据报的上下文关系，直接应用于不同的加密流量场景并准确识别流量类型。\n\n## 环境准备\n\n### 系统要求\n- **操作系统**: Linux (推荐)\n- **Python**: >= 3.6\n- **CUDA**: 11.4\n- **GPU**: 推荐 Tesla V100S 或同等算力显卡\n\n### 前置依赖\n请确保安装以下核心依赖库：\n```bash\npip install torch>=1.1 six>=1.12.0 scapy==2.4.4 numpy==1.19.2 argparse packaging scikit-learn\n```\n\n**其他可选依赖（根据需求安装）：**\n- **混合精度训练**: 需安装 NVIDIA `apex`\n- **TensorFlow 模型转换**: 需安装 `tensorflow`\n- **WordPiece 分词**: 需安装 `tokenizers` (`pip install tokenizers`)\n- **CRF 序列标注**: 需安装 `pytorch-crf` (`pip install pytorch-crf`)\n- **工具链**: 需安装 `tshark` 和 [SplitCap](https:\u002F\u002Fwww.netresec.com\u002F?page=SplitCap) 用于数据包处理。\n\n## 安装步骤\n\n1. **克隆项目代码**\n   ```bash\n   git clone https:\u002F\u002Fgithub.com\u002Flinwhitehat\u002Fet-bert.git\n   cd et-bert\n   ```\n\n2. **下载预训练模型**\n   您可以直接从 Google Drive 下载官方提供的预训练模型文件：\n   ```bash\n   wget -O pretrained_model.bin \"https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1r1yE34dU2W8zSqx1FkB8gCWri4DQWVtE\u002Fview?usp=sharing\"\n   ```\n   *注：如果下载速度慢，建议手动在浏览器打开链接下载后，将文件重命名为 `pretrained_model.bin` 并放入 `models\u002F` 目录。*\n\n3. **准备数据集**\n   项目默认使用 CSTNET-TLS 1.3 数据集。如需使用自有数据，请确保数据格式与 `datasets\u002Fcstnet-tls1.3\u002F` 目录下的结构一致，并在 `data_process\u002F` 中配置路径。\n\n## 基本使用\n\n以下是使用预训练模型进行**微调（Fine-tuning）**和**推理（Inference）**的最简流程。\n\n### 1. 微调模型\n使用标注好的加密流量数据对预训练模型进行微调，以适应特定分类任务：\n\n```bash\npython3 fine-tuning\u002Frun_classifier.py --pretrained_model_path models\u002Fpre-trained_model.bin \\\n                                   --vocab_path models\u002Fencryptd_vocab.txt \\\n                                   --train_path datasets\u002Fcstnet-tls1.3\u002Fpacket\u002Ftrain_dataset.tsv \\\n                                   --dev_path datasets\u002Fcstnet-tls1.3\u002Fpacket\u002Fvalid_dataset.tsv \\\n                                   --test_path datasets\u002Fcstnet-tls1.3\u002Fpacket\u002Ftest_dataset.tsv \\\n                                   --epochs_num 10 --batch_size 32 --embedding word_pos_seg \\\n                                   --encoder transformer --mask fully_visible \\\n                                   --seq_length 128 --learning_rate 2e-5\n```\n*执行完成后，微调后的模型将保存为 `models\u002Ffinetuned_model.bin`。*\n\n### 2. 模型推理\n使用微调后的模型对未标注的流量数据进行分类预测：\n\n```bash\npython3 inference\u002Frun_classifier_infer.py --load_model_path models\u002Ffinetuned_model.bin \\\n                                          --vocab_path models\u002Fencryptd_vocab.txt \\\n                                          --test_path datasets\u002Fcstnet-tls1.3\u002Fpacket\u002Fnolabel_test_dataset.tsv \\\n                                          --prediction_path datasets\u002Fcstnet-tls1.3\u002Fpacket\u002Fprediction.tsv \\\n                                          --labels_num 120 \\\n                                          --embedding word_pos_seg --encoder transformer --mask fully_visible\n```\n\n*提示：运行前请根据实际文件路径修改上述命令中的 `--*_path` 参数。*","某大型云服务商的安全运营团队正面临海量加密流量（TLS 1.3）的监控挑战，急需在不解密的前提下精准识别恶意应用与异常行为。\n\n### 没有 ET-BERT 时\n- **识别盲区大**：传统方法依赖端口号或握手明文特征，面对全面加密的 TLS 1.3 流量，无法有效区分视频流、即时通讯或隐蔽隧道，导致大量未知威胁漏报。\n- **标注成本高昂**：基于深度学习的现有方案需要海量人工标注数据进行监督训练，安全专家需耗费数周时间清洗和标记流量样本，项目启动缓慢。\n- **泛化能力弱**：针对特定场景训练的模型一旦遇到新的加密协议变种或混合流量，准确率急剧下降，需反复重新训练，运维负担极重。\n- **上下文缺失**：传统模型仅分析单个数据包，忽略了数据包之间的时序和逻辑关联，难以捕捉复杂的攻击链特征。\n\n### 使用 ET-BERT 后\n- **深层语义洞察**：ET-BERT 利用预训练 Transformer 架构，直接从加密数据报文中学习上下文关系，无需解密即可精准分类各类加密业务流量，显著降低漏报率。\n- **小样本高效微调**：借助在大规模无标签流量上的预训练成果，团队仅需少量标注样本进行微调，即可将模型适配到新场景，部署周期从数周缩短至数天。\n- **强泛化适应性**：模型掌握了通用的加密流量传输规律，面对新型加密应用或协议变化时仍能保持高准确率，大幅减少了重复训练的需求。\n- **关联特征捕获**：通过多层注意力机制，ET-BERT 能同时捕捉包内与包间的复杂依赖关系，有效识别出隐藏在正常流量中的高级持续性威胁（APT）。\n\nET-BERT 通过“预训练 + 微调”范式，彻底解决了加密流量分类中标注难、泛化差的痛点，让网络安全防护在“看不见”的加密世界中依然眼明心亮。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Flinwhitehat_ET-BERT_2003447d.png","linwhitehat","Xinjie Lin","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Flinwhitehat_3029d660.jpg","Traffic Analysis & AI Security.","UCAS\u002FZGCLAB","Beijing China",null,"https:\u002F\u002Fgithub.com\u002Flinwhitehat",[81],{"name":82,"color":83,"percentage":84},"Python","#3572A5",100,623,120,"2026-04-06T03:04:40","MIT",4,"未说明","必需，推荐 NVIDIA Tesla V100S，CUDA 11.4",{"notes":93,"python":94,"dependencies":95},"需要安装外部工具 SplitCap 和 tshark 进行数据预处理。若使用混合精度训练需安装 NVIDIA apex；若涉及预训练模型转换需安装 TensorFlow；若使用 CRF 进行序列标注任务需安装 pytorch-crf。代码基于 UER-py 框架开发。",">=3.6",[96,97,98,99,100,101,102,103,104,105],"torch>=1.1","six>=1.12.0","scapy==2.4.4","numpy==1.19.2","scikit-learn","apex","tensorflow","wordpiece","pytorch-crf","tshark",[14,35],[108,109,110,111,112,113,114],"pre-training","transformer-architecture","burst-analysis","mask-burst-modeling","same-origin-burst-prediction","pytorch","encrypted-traffic-analysis","2026-03-27T02:49:30.150509","2026-04-07T22:51:04.344111",[118,123,128,133,138,143],{"id":119,"question_zh":120,"answer_zh":121,"source_url":122},22960,"微调模型时结果与预训练模型相差较大，可能是什么原因？","结果差异通常源于数据划分方式不同。官方代码采用针对样本层级（split 后的 flow 或 packet）进行随机抽样；如果您是按 App 类别划分，或未混合 VPN 与非 VPN 数据，需确保分类明细与官方一致（如 AIM, Email, Facebook 等 17 类）。此外，请检查是否使用了正确的数据集版本（如 CompletePCAPs.zip），并确认预处理流程中 Service 到 App 细类的拆分逻辑是否正确。","https:\u002F\u002Fgithub.com\u002Flinwhitehat\u002FET-BERT\u002Fissues\u002F28",{"id":124,"question_zh":125,"answer_zh":126,"source_url":127},22961,"模型在相同分布的测试数据上过拟合严重，效果很差，如何解决？","这可能与训练集和测试集的划分策略有关。官方方法是在 split 后的 flow 或 packet 级别随机抽样，而如果您直接使用未 split 的原始 pcap 文件作为测试集（即测试集 pcap 未出现在训练集中），可能会因分布偏差导致泛化性能下降。建议检查测试 pcap 的样本分布是否与训练样本存在较大偏差。目前的采样模式是公认的，可视化结果可参考论文附录以验证并非通过简易相似性达到高识别率。","https:\u002F\u002Fgithub.com\u002Flinwhitehat\u002FET-BERT\u002Fissues\u002F38",{"id":129,"question_zh":130,"answer_zh":131,"source_url":132},22962,"提供的数据集格式是 npy，但代码参数要求 tsv 格式，该如何处理？","npy 文件是提取特征后的存储格式，包含不同特征类型。您可以直接使用项目中的数据处理代码将 npy 数据生成 tsv 文件作为模型输入。如果遇到 'IndexError: index out of range in self' 错误，通常是因为输入数据中的 token ID 超出了词表大小范围，请检查生成的 tsv 文件是否正确以及词汇表是否匹配。","https:\u002F\u002Fgithub.com\u002Flinwhitehat\u002FET-BERT\u002Fissues\u002F108",{"id":134,"question_zh":135,"answer_zh":136,"source_url":137},22963,"运行微调脚本时报错 'unrecognized arguments: --vocab_path' 或 'ModuleNotFoundError: No module named uer'，怎么解决？","首先，请重新 clone 最新版本的代码，维护者已修复了 UER 相关的 `embeddings.py` 文件。其次，注意命令行参数路径的大小写，例如将 `--pretrained_model_path models\u002Fpre-trained_model.bin` 改为 `--pretrained_model_path models\u002Fpretrained_model.bin` 以匹配实际文件名。若仍报 'No module named uer' 错误，需要将本项目涉及的 uer 子模块路径添加到 Python 解释器的 PATH 环境变量中。","https:\u002F\u002Fgithub.com\u002Flinwhitehat\u002FET-BERT\u002Fissues\u002F100",{"id":139,"question_zh":140,"answer_zh":141,"source_url":142},22964,"数据集是移动端收集的还是非移动端收集的？具体类别包含哪些 pcap？","数据集涵盖了跨平台（CrossPlatform）的 iOS 和 Android 设备流量，包括 VPN-APP 和 Service 类别。具体的每个类别下包含的 pcap 文件详情，可以参考开源数据集仓库中的标签文件和目录结构进行查看。","https:\u002F\u002Fgithub.com\u002Flinwhitehat\u002FET-BERT\u002Fissues\u002F134",{"id":144,"question_zh":145,"answer_zh":146,"source_url":147},22965,"运行微调时提示找不到 'dataset.pt' 文件，应该如何生成？","`dataset.pt` 文件通常需要在运行微调脚本前，通过执行数据预处理步骤生成。请检查是否已正确运行了将原始数据（如 tsv）转换为模型所需格式（pt）的预处理脚本。如果缺少该文件，模型无法加载数据进行训练。","https:\u002F\u002Fgithub.com\u002Flinwhitehat\u002FET-BERT\u002Fissues\u002F121",[]]