当前位置: 首页 > news >正文

部署 T-Pot:构建高级威胁捕获与分析平台的精妙指南

介绍

T-Pot:多功能蜜罐平台简介

在网络安全领域,威胁检测与防御是至关重要的课题。T-Pot 作为一款由德国电信安全团队(Telekom Security)开发的多功能蜜罐平台,以其强大的功能和灵活的部署方式,成为安全研究人员和企业用户的得力助手。T-Pot 集成了 Kibana、Elasticvue 等强大的工具,内置了多个蜜罐,为用户提供了一个全面的网络威胁捕获、分析和可视化解决方案。

什么是 T-Pot?

T-Pot 是一个开源的蜜罐生态系统,旨在通过模拟真实的网络服务来吸引和捕获攻击者的行为。它基于 Docker 容器技术,能够快速部署多种蜜罐服务,并结合强大的日志分析和可视化工具,帮助用户深入了解网络威胁的模式与特征。无论是用于安全研究、威胁情报收集,还是企业内部的防护测试,T-Pot 都能提供高效的支持。

核心功能与特点

T-Pot 的强大之处在于其集成性和多样性,以下是其主要特点:

  1. 内置多种蜜罐
    T-Pot 预装了多个常见的蜜罐服务,例如 Conpot(工业控制系统蜜罐)、Cowrie(SSH/Telnet 蜜罐)、Dionaea(恶意软件捕获蜜罐)等。这些蜜罐模拟了常见的网络服务(如 SSH、HTTP、FTP)以及工业协议,能够捕获从简单脚本攻击到复杂 APT(高级持续性威胁)的各类行为。

  2. 强大的数据分析工具
    T-Pot 集成了 Kibana 和 Elasticvue 等工具,通过 Elasticsearch 存储和索引捕获的数据。Kibana 提供直观的可视化仪表盘,让用户可以实时监控攻击事件、分析攻击来源和模式;Elasticvue 则为 Elasticsearch 数据提供了一个简洁的管理界面,方便用户查询和调试。

  3. 容器化架构
    基于 Docker 和 Docker Compose,T-Pot 将每个蜜罐和服务封装在独立的容器中。这种设计不仅简化了安装和维护,还提高了系统的可移植性和扩展性。用户只需一台支持 Docker 的服务器,就能快速搭建完整的蜜罐网络。

  4. 灵活的部署模式
    T-Pot 支持多种运行模式,包括标准模式(Standard)、Hive 模式(分布式部署)和轻量模式(Lite),用户可以根据需求选择适合的配置。无论是单机测试还是分布式威胁捕获,T-Pot 都能灵活适应。

  5. 社区支持与更新
    作为开源项目,T-Pot 拥有活跃的社区支持,用户可以获取最新的蜜罐插件和安全更新,确保系统始终能够应对新兴威胁。

应用场景

T-Pot 的设计使其适用于多种场景:

  • 威胁情报收集:通过捕获攻击者的行为,T-Pot 可为企业提供实时的威胁情报,帮助识别潜在风险。

  • 安全研究:研究人员可以利用 T-Pot 分析恶意软件、攻击手法和网络流量模式。

  • 教育培训:T-Pot 提供了一个安全的实验环境,适合网络安全课程和攻防演练。

  • 企业防护:部署在网络边界,T-Pot 可以作为早期预警系统,分散攻击者的注意力,保护核心资产。

技术架构

T-Pot 的架构清晰且高效,主要组件包括:

  • 蜜罐层:由多个 Docker 容器运行的蜜罐服务,监听常见端口(如 22、80、443)并记录攻击数据。

  • 数据存储层:Elasticsearch 负责存储所有捕获的日志和事件,确保数据的高效索引和检索。

  • 分析与可视化层:Kibana 和 Elasticvue 将原始数据转化为可视化的图表和报告,便于用户理解。

  • 管理层:通过 Nginx 提供 Web 界面(默认端口 64297),用户可以登录查看仪表盘和管理配置。

安装与使用

T-Pot 的安装非常简单,只需在支持 Docker 的 Linux 系统(如 Ubuntu)上运行安装脚本即可。官方推荐最低配置为 8GB 内存和 128GB 存储空间,以确保所有容器和服务正常运行。安装完成后,用户可以通过浏览器访问 Web 界面,配置蜜罐并查看捕获的数据。

组件作用:

T-Pot共五个组件:Attack MapCyberchefElasticvueKibanaSpiderfoot。这些组件在 T-Pot 生态系统中(或与 T-Pot 相关的安全分析环境中)发挥着重要作用,尽管并非所有组件都是 T-Pot 的核心内置组件。以下是这些组件的具体作用和功能

1. Attack Map

  • 作用
    Attack Map 是 T-Pot 中的一个可视化工具,负责将捕获的攻击数据映射到地理位置,提供全球攻击来源的动态视图。它通常与 map_data 和 map_web 组件协作,生成交互式的攻击地图。
  • 功能
    • 实时显示攻击者的地理分布(如国家或城市)。
    • 通过颜色和标记表示攻击频率或严重性。
    • 支持时间轴分析,追踪攻击模式的变化。
  • 典型应用
    • 帮助安全分析师识别攻击来源的集中区域(如某国的高频攻击)。
    • 用于生成威胁情报报告,展示全球威胁态势。

2. Cyberchef

  • 作用
    Cyberchef 是一个强大的在线工具(通常通过 Web 界面集成),用于数据分析和解码。它在 T-Pot 环境中常被用作辅助工具,处理捕获的恶意数据。
  • 功能
    • 支持多种数据转换操作(如 Base64 解码、XOR 加密、哈希计算)。
    • 提供正则表达式匹配和字符串操作,用于解析日志或恶意软件样本。
    • 允许用户创建自定义工作流,自动化数据处理。
  • 典型应用
    • 分析 Cowrie 或 Dionaea 捕获的恶意文件,解码隐藏的命令或数据。
    • 快速验证攻击者上传内容的结构或意图。

3. Elasticvue

  • 作用
    Elasticvue 是一个轻量级的 Elasticsearch 管理界面,专为简化数据查询和调试而设计。它是 T-Pot 数据存储层的辅助工具。
  • 功能
    • 提供直观的 Web 界面,浏览和搜索 Elasticsearch 索引。
    • 支持实时监控索引状态和数据统计。
    • 允许用户执行复杂的查询或导出数据。
  • 典型应用
    • 排查 Elasticsearch 数据导入问题(如 Logstash 配置错误)。
    • 快速验证蜜罐日志是否正确索引。

4. Kibana

  • 作用
    Kibana 是 T-Pot 的核心可视化组件,与 Elasticsearch 集成,负责将捕获的数据转化为交互式图表和仪表盘。
  • 功能
    • 创建自定义仪表盘,展示攻击事件、流量统计和地理分布。
    • 支持时间序列分析和过滤,追踪攻击趋势。
    • 提供插件支持,扩展可视化功能(如地图插件)。
  • 典型应用
    • 实时监控 T-Pot 捕获的攻击活动。
    • 生成详细的安全报告,用于企业合规性或研究目的。

5. Spiderfoot

  • 作用
    Spiderfoot 是一个开源的 OSINT(开放源情报)工具,通常作为 T-Pot 的扩展组件,用于自动收集与攻击者相关的外部情报。
  • 功能
    • 扫描公开数据源(如 WHOIS、DNS 记录、社交媒体),识别攻击者的基础设施。
    • 生成关联图,展示目标网络与已知威胁的联系。
    • 支持多种模块,覆盖域名、IP 和电子邮件情报。
  • 典型应用
    • 分析捕获的攻击者 IP,追踪其背后的域名或组织。
    • 增强威胁情报,识别潜在的 APT 活动。

T-Pot 安装文档(Ubuntu 22.04.1 LTS,VMware,无代理)

目标与环境

  • 目标:在 Ubuntu 22.04.1 LTS 上安装 T-Pot(Hive 模式),使用 VMware,无代理配置。

  • 系统要求:建议 8GB RAM,128GB 磁盘空间(最低 4GB RAM,50GB 磁盘空间)。

  • 网络要求:需直接访问 ghcr.io 和 download.docker.com,无代理。

  • 当前日期:2025年3月14日

步骤 1:准备系统和网络环境

确保系统更新并网络连接正常。

  1. 更新系统
    sudo apt update && sudo apt upgrade -y
    • 扩展命令:检查是否有可升级的包:
      apt list --upgradable
  2. 安装基本工具
    sudo apt install curl git net-tools ca-certificates -y
    sudo update-ca-certificates
    • 扩展命令:验证工具版本:
      curl --version && git --version && netstat --version
  3. 配置 DNS
    • 检查并确保系统能够正确解析域名:
      sudo nano /etc/resolv.conf
      添加或替换为以下内容:
      nameserver 8.8.8.8
      nameserver 8.8.4.4
      保存并退出(Ctrl+O,Enter,Ctrl+X)。
    • 测试 DNS 解析:
      sudo systemctl disable --now systemd-resolved
      若返回 IP 地址,则 DNS 配置正常。
    • 扩展命令:验证 DNS 文件内容:
      sudo systemctl disable --now systemd-resolved
    • 注意:若修改后被覆盖,可禁用 systemd-resolved:
      sudo systemctl disable --now systemd-resolved
  4. 测试网络连通性
    ping -c 4 8.8.8.8
    ping -c 4 google.com
    curl -I https://ghcr.io/v2/       # 测试 T-Pot 镜像仓库
    curl -I https://download.docker.com  # 测试 Docker Hub
    • 扩展命令:检查网络路径:
      traceroute google.com
  5. 检查系统资源
    在安装前,确保系统资源充足:
    free -h  # 检查内存
    df -h    # 检查磁盘空间
    nproc    # 检查 CPU 核心数
    • 建议:若内存低于 8GB 或磁盘空间不足,考虑增加资源以避免容器启动失败。

步骤 2:安装 Docker

T-Pot 依赖 Docker,确保安装过程无误。

  1. 添加 Docker GPG 密钥
    sudo mkdir -p /etc/apt/keyrings
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
    sudo chmod a+r /etc/apt/keyrings/docker.gpg
    • 扩展命令:验证密钥文件:
      ls -l /etc/apt/keyrings/docker.gpg
  2. 配置 Docker 软件源
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu jammy stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    • 扩展命令:检查源文件:
      cat /etc/apt/sources.list.d/docker.list
    • 优化:若下载速度慢,可替换为国内镜像(如阿里云):
      sudo nano /etc/apt/sources.list.d/docker.list
      修改为:
      deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu jammy stable
  3. 安装 Docker
    sudo apt update
    sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
    • 扩展命令:检查安装版本:
      dpkg -l | grep docker
  4. 配置 Docker 镜像加速器(可选)
    sudo mkdir -p /etc/docker
    sudo nano /etc/docker/daemon.json
    输入以下内容并保存:
    {
      "registry-mirrors": [
        "https://registry.cn-hangzhou.aliyuncs.com",
        "https://docker.mirrors.ustc.edu.cn"
      ]
    }
    • 扩展命令:验证配置文件:
      cat /etc/docker/daemon.json
  5. 启动并验证 Docker
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    sudo systemctl enable docker
    sudo docker --version
    sudo docker compose version
    sudo docker run hello-world
    • 扩展命令:检查 Docker 服务状态:
      sudo systemctl status docker
    • 格式化检查容器状态:验证 hello-world 容器:
      sudo docker ps --format "table {{.Names}}\t{{.Status}}"

步骤 3:克隆 T-Pot 仓库

获取 T-Pot 源码,提供两种方式:HTTPS(无需密钥)和 SSH(需配置密钥)。

  1. 选项 1:使用 HTTPS 克隆(无需 SSH 密钥)
    git clone https://github.com/telekom-security/tpotce.git
    cd tpotce
    • 扩展命令:验证仓库版本:
      git log -1

  2. 选项 2:使用 SSH 密钥克隆
    • 生成 SSH 密钥:
      ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
      按提示操作,建议不设置密码直接回车。
    • 查看公钥并添加到 GitHub:
      cat ~/.ssh/id_rsa.pub
      复制输出内容,登录 GitHub,在 Settings > SSH and GPG keys 中添加新 SSH 密钥。
    • 测试 SSH 连接:
      ssh -T git@github.com
      若返回 Hi <username>! You've successfully authenticated...,则配置成功。
    • 克隆仓库:
      git clone git@github.com:telekom-security/tpotce.git
      cd tpotce
    • 扩展命令:验证仓库版本:
      git log -1

步骤 4:运行 T-Pot 安装脚本

配置系统参数并运行安装脚本。

  1. 检查端口冲突
    sudo netstat -tuln | grep -E ":80|:443|:22|:23|:9200|:5601"
    • 扩展命令:若有冲突,查找并终止进程:
      sudo lsof -i :9200  # 示例,替换端口号
      sudo kill -9 <PID>
  2. 设置系统参数(为 Elasticsearch)
    sudo sysctl -w vm.max_map_count=262144
    • 扩展命令:持久化并验证:
      echo "vm.max_map_count=262144" | sudo tee -a /etc/sysctl.conf
      sudo sysctl -p
      sysctl vm.max_map_count
  3. 执行安装脚本
    ./install.sh
    • 输入 y 确认安装,选择 h(Hive 模式),设置 Web 用户名(如 master)和密码(如 your_password)。
    • 扩展命令:若失败,检查脚本日志:
      tail -n 50 install.log
  4. 优化:配置 .env 文件
    安装脚本会生成 .env 文件,但需要手动检查和修正,确保变量格式正确且 WEB_USER 为 Base64 编码。
    • 检查 .env 文件:
      cat .env
      示例内容可能如下:
      WEB_USER=your_user
      WEB_PASS=your_password
      TPOT_REPO=dtagdevsec
      TPOT_VERSION=latest
      TPOT_PULL_POLICY=always
      BEELZEBUB_LLM_MODEL: "ollama"
      BEELZEBUB_LLM_HOST: "http://ollama.local:11434/api/chat"
      BEELZEBUB_OLLAMA_MODEL: "openchat"
      GALAH_LLM_PROVIDER: "ollama"
      GALAH_LLM_SERVER_URL: "http://ollama.local:11434"
      GALAH_LLM_MODEL: "llama3.1"
      存在的问题
      • 变量格式错误:BEELZEBUB_LLM_MODEL 等变量使用了冒号 : 而不是等号 =,这会导致 tpotinit 容器启动失败。
      • WEB_USER 需要 Base64 编码:T-Pot 要求 WEB_USER 是一个 Base64 编码的 htpasswd 值,直接设置 WEB_USER=master 会导致 tpotinit 解析失败。
      • WEB_PASS 不需要:T-Pot 不使用 WEB_PASS,应删除。
    • 修复步骤
      • 编辑 .env 文件:
        sudo nano .env
        修正变量格式,将冒号 : 改为等号 =,并删除 WEB_PASS:
        WEB_USER=<Base64编码值>
        TPOT_REPO=dtagdevsec
        TPOT_VERSION=latest
        TPOT_PULL_POLICY=always
        BEELZEBUB_LLM_MODEL="ollama"
        BEELZEBUB_LLM_HOST="http://ollama.local:11434/api/chat"
        BEELZEBUB_OLLAMA_MODEL="openchat"
        GALAH_LLM_PROVIDER="ollama"
        GALAH_LLM_SERVER_URL="http://ollama.local:11434"
        GALAH_LLM_MODEL="llama3.1"
      • 生成 Base64 编码的 WEB_USER:
        htpasswd -n -b "master" "your_password" | base64 -w0
        假设输出为:
        bWFzdGVyOiRhcHIxJGRqZDVmOG4kZW9KeXdZOHJ3ZlR6MGlVVWZzL2tMUWpXRVMxCl9wCg==
        将 WEB_USER 修改为:
        WEB_USER=bWFzdGVyOiRhcHIxJGRqZDVmOG4kZW9KeXdZOHJ3ZlR6MGlVVWZzL2tMUWpXRVMxCl9wCg==
        保存并退出(Ctrl+O,Enter,Ctrl+X)。
      • 加载环境变量:
        export $(grep -v '^#' .env | xargs)
  5. 确保必要目录存在
    sudo mkdir -p /data/nginx/conf
    sudo mkdir -p /data/nginx/cert
    sudo chmod -R 755 /data/nginx
    • 扩展命令:验证目录权限:
      ls -ld /data/nginx/conf /data/nginx/cert
  6. 重启系统
    sudo reboot

步骤 5:验证 T-Pot 安装

检查服务状态并验证访问。

  1. SSH 登录
    ssh <username>@<你的IP> -p 64295
    • 示例:ssh leo@192.168.205.133 -p 64295
    • 扩展命令:检查 SSH 端口:
      sudo netstat -tuln | grep 64295
  2. 检查服务状态
    sudo systemctl status tpot
    sudo docker ps -a
    • 格式化检查所有容器状态
      sudo docker ps --format "table {{.Names}}\t{{.Status}}"
      确保所有容器(如 conpot_ipmi, nginx, elasticsearch, kibana)状态为“Up”或“healthy”。
    • 扩展命令:查看容器详情:
      sudo docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
  3. 验证特定容器状态
    • 检查 Elasticsearch:
      sudo docker ps --format "table {{.Names}}\t{{.Status}}" | grep elasticsearch
      若状态为 Exited,查看日志:
      sudo docker logs elasticsearch
    • 检查 Kibana:
      sudo docker ps --format "table {{.Names}}\t{{.Status}}" | grep kibana
    • 检查 Nginx:
      sudo docker ps --format "table {{.Names}}\t{{.Status}}" | grep nginx
  4. 访问 Web 界面
    • 在浏览器输入:https://<你的IP>:64297
    • 接受自签名证书警告,使用安装时设置的用户名和密码登录。
    • 扩展命令:测试 Web 接口连通性:
      curl -k -I https://<你的IP>:64297
  5. 检查 Kibana 访问
    • 获取 Kibana 的 Docker 内部 IP:
      sudo docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' kibana
    • 测试 Kibana 连通性(替换 <Kibana_IP> 为上一步输出的 IP):
      curl -I http://<Kibana_IP>:5601
    • 若外部访问失败,检查端口映射:
      sudo docker port kibana
    • 若端口未映射,手动运行:
      sudo docker run -d --name=kibana -p 5601:5601 dtagdevsec/kibana:latest
    • 修改 Kibana 监听地址(若需外部访问):
      sudo docker exec -it kibana /bin/bash
      echo 'server.host: "0.0.0.0"' >> /usr/share/kibana/config/kibana.yml
      exit
      sudo docker restart kibana
    • 验证 Kibana 重启后状态:
      sudo docker ps --format "table {{.Names}}\t{{.Status}}" | grep kibana

故障排查与维护

  1. 查看容器日志
    sudo docker logs <容器名>
    • 示例:sudo docker logs elasticsearch
  2. tpotinit 启动失败
    • 若 tpotinit 状态为 Exited 或 unhealthy,查看日志:
      sudo docker logs tpotinit
      若报错 WEB_USER is not set or empty,检查 .env 文件是否正确配置 Base64 编码的 WEB_USER。
  3. Elasticsearch 启动失败
    • 检查端口冲突:
      sudo netstat -tulnp | grep 9200
      若被占用,杀掉进程:
      sudo kill -9 <进程ID>
    • 确保数据目录权限:
      sudo chown -R 1000:1000 /data/elasticsearch
      sudo chmod -R 755 /data/elasticsearch
    • 重启:
      sudo docker compose -f docker-compose.yml up -d elasticsearch
  4. 重启服务
    cd ~/tpotce
    sudo docker compose -f docker-compose.yml down
    sudo docker compose -f docker-compose.yml up -d
    • 检查重启后容器状态:
      sudo docker ps --format "table {{.Names}}\t{{.Status}}"
  5. 停止所有容器
    sudo docker stop $(sudo docker ps -q)
    • 检查停止后状态:
      sudo docker ps --format "table {{.Names}}\t{{.Status}}"
  6. 更新镜像
    cd ~/tpotce
    sudo docker compose pull
    sudo docker compose up -d
    • 检查更新后容器状态:
      sudo docker ps --format "table {{.Names}}\t{{.Status}}"
  7. 监控资源
    watch -n 5 "docker stats --no-stream"

注意事项

  • 系统要求:低于推荐配置可能导致容器崩溃,建议预留足够资源。
  • 网络环境:若无法访问 ghcr.io,检查网络设置或联系管理员。
  • 安装时间:根据网络速度,可能需要 15 分钟到 1 小时。
  • 端口冲突:安装前确保常用端口(如 80、443、22、23、9200、5601)未被占用。
  • Kibana 访问:蜜罐容器使用 Docker 内部 IP,需通过外部 IP 或端口映射访问。

验证你的环境

  • 系统信息
    Distributor ID: Ubuntu
    Description:    Ubuntu 22.04.1 LTS
    Release:        22.04
    Codename:       jammy
  • 本文档适用于上述环境,无需桥接模式。

扩展命令表格

以下是所有扩展命令及其功能,方便调试时快速参考:

命令功能
apt list --upgradable检查系统是否有可升级的软件包
curl --version && git --version && netstat --version验证基本工具的安装版本
cat /etc/resolv.conf显示当前 DNS 配置文件内容
sudo systemctl disable --now systemd-resolved禁用 systemd-resolved,避免 DNS 配置被覆盖
traceroute google.com检查网络路径,诊断连通性问题
ls -l /etc/apt/keyrings/docker.gpg验证 Docker GPG 密钥文件是否存在及权限
cat /etc/apt/sources.list.d/docker.list显示 Docker 软件源配置文件内容
`dpkg -lgrep docker`
cat /etc/docker/daemon.json验证 Docker 镜像加速器配置文件内容
sudo systemctl status docker检查 Docker 服务运行状态
sudo docker ps --format "table {{.Names}}\t{{.Status}}"格式化显示所有容器名称和状态
git log -1显示 T-Pot 仓库最新提交信息
ssh -T git@github.com测试 SSH 密钥与 GitHub 的连接
sudo lsof -i :9200查找占用指定端口(如 9200)的进程
sudo kill -9 <PID>强制终止指定进程
sudo sysctl -p应用系统参数配置文件(如 vm.max_map_count)
sysctl vm.max_map_count检查当前 vm.max_map_count 值
tail -n 50 install.log查看安装脚本最后 50 行日志,排查错误
sudo nano .env编辑 T-Pot 的环境配置文件
ls -ld /data/nginx/conf /data/nginx/cert验证 Nginx 目录权限
`sudo netstat -tulngrep 64295`
sudo docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"格式化显示容器名称、状态和端口映射
`sudo docker ps --format "table {{.Names}}\t{{.Status}}"grep elasticsearch`
`sudo docker ps --format "table {{.Names}}\t{{.Status}}"grep kibana`
`sudo docker ps --format "table {{.Names}}\t{{.Status}}"grep nginx`
curl -k -I https://<你的IP>:64297测试 Web 界面连通性(忽略证书警告)
sudo docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' kibana获取 Kibana 的 Docker 内部 IP
curl -I http://<Kibana_IP>:5601测试 Kibana 内部 IP 的连通性
sudo docker port kibana检查 Kibana 的端口映射
sudo docker logs <容器名>查看指定容器日志
sudo docker system prune -af强制清理所有未使用的 Docker 对象

相关文章:

  • DNS服务和实验
  • uniapp 多环境配置打包,比较优雅的解决方案,全网相对优解
  • 自动化立体仓库堆垛机HMI屏幕程序施耐德HMIGXU系列 Vijeo Designer功能设计
  • 【为什么游戏能使人上瘾】
  • Windows安全日志Defender 的配置被修改5007
  • 《灵珠觉醒:从零到算法金仙的C++修炼》卷三·天劫试炼(53)炼妖壶收子集 - 子集问题(位运算与回溯)
  • transformer入门详解
  • 设计模式之原型模式:原理、实现与应用
  • python习题卷1
  • 【从零开始学习计算机科学】算法分析(一)算法、渐进分析、递归分析
  • JAVA实战开源项目:教学辅助平台(Vue+SpringBoot) 附源码
  • Word:双栏排版操作步骤及注意事项
  • 3个 Vue $set 的应用场景
  • 查询MySQL表占用磁盘大小的方法
  • 重生之我在学Vue--第14天 Vue 3 国际化(i18n)实战指南
  • vue-常用指令 | 常用指令的修饰符
  • DNS查询
  • Mysql与ElasticSearch间的数据同步场景模拟
  • Blender-MCP服务源码4-初始化项目解读
  • 算法——先序中序还原二叉树
  • 聘期三年已至:37岁香港青年叶家麟卸任三亚市旅游发展局局长
  • 央媒:设施老化、应急预案套模板,养老机构消防隐患亟待排查
  • 2025吉林市马拉松开跑,用赛道绘制“博物馆之城”动感地图
  • 天问二号探测器顺利转入发射区,计划5月底择机发射
  • 上海将建设万兆小区、园区及工厂,为模型训练数据的传输提供硬件支持
  • AG600“鲲龙”批生产首架机完成生产试飞