3G终于来了
摘要
一位网络爱好者记录了使用JTAG、焊接和开源Osmocom工具破解旧AT&T 3G femtocell以广播UMTS的过程。
<p><a href="https://lobste.rs/s/dd9poy/3g_at_last">评论</a></p>
查看缓存全文
缓存时间: 2026/08/09 14:47
# 终于有 3G 了! | Nick vs Networking
Source: https://nickvsnetworking.com/3g-at-last/
不久前我才写过一篇文章,感叹自己从没搞定过 3G(https://nickvsnetworking.com/adventures-not-building-3g-umts-rncs/),尽管我买了一大堆 3G Small Cells——都是怀着让 UMTS 跑起来的雄心买的——却从未成功。
但最近,Osmocom Discourse 用户 `Tempest`(https://discourse.osmocom.org/t/umts-with-the-at-t-dph-153-femto/2625)一直在折腾旧的 AT&T 3G 小基站,并在多年前 `Neggles` 和其他几个人所做的事情(https://osmocom.org/issues/4574)的基础上继续推进。太棒了,他们居然让这该死的东西成功发射信号了!
于是我就上了 eBay,4-6 周之后,我搞到了一台 Cisco / AT&T 品牌的 **DP-153-AT**,这是一台支持 Band 8 和 Band 2 的 UMTS 毫微微蜂窝基站。
解释如何让这些设备上线的那个帖子又长又有点散乱,但 Tempest 写了一个更清晰的帖子,一步一步详细列出了他们成功发射信号所经历的所有步骤(https://forum.laptopfm.com/viewtopic.php?t=4)。
## 硬件破解部分
要让这个东西工作,我们需要将 JTAG 调试器连接到设备上的 Picocom CPU。幸运的是,板上有 JTAG 焊盘;不幸的是,它们不是普通的排针,而只是焊盘,而且我们得相当暴力地拆开外壳才能接触到它们。
设备上还有几个小跳线,当你撬开外壳时它们会弹开,这些跳线用于防篡改检测。但由于这项服务已经关闭多年,它无处可回连,而且反正有一个脚本可以重置它。
于是我一手拿着笔记本电脑,一手拿着 Dremel 电磨,设备夹在两腿之间(安全第一),切下第一刀,撬开了外壳,防篡改检测跳线散落一地——现在没有回头路了!
我不太擅长焊接,但最终还是把教程要求的所有焊盘都焊好了。以下是我第一次重大失误:
焊错焊盘了……我 **焊错了焊盘**——我本该焊接的那组焊盘在这组右侧大约 20 厘米处,这意味着我必须把它们全部拆掉,然后在正确的位置重新焊接。
Tempest 的指南把焊接部分讲得非常清楚,下面是我焊接完成后的样子。
当我在正确的焊盘上焊接完成,设备能够通过 JTAG 通信时,我真是得意极了。
有一件事吓到我了,那就是防篡改检测跳线。有一组小短路跳线,就像旧主板上用的那种,如果你打开外壳就会被拔出来,撒得到处都是。幸运的是,一旦我们进入文件系统后,根目录下有一个 shell 脚本可以清除并忽略该标志;但至少在我的这台设备上,带排针跳线的焊盘是顶部 2 个已跳线,底部 1 个开路,位于 J15。其中“顶部”是文字朝上时的方向(见下图)——如果你懒得弄这个也没关系,等我们 SSH 进去之后可以清除它,但你每次重启后都得这么做,或者设置一个 cronjob。
防篡改检测跳线
不过我的第二个教训是:虽然设备用 5V 也能上电、灯也会亮,但它需要 12V,这就是为什么它配了一个 12V 适配器。这也是为什么设备上写着“12v”。**它需要 12 伏电压。**显然,所有这些微妙的线索都不足以让我理解:要让设备工作,它需要 12V。我折腾了好几个小时才恍然大悟。
## 软件刷写
所以整件事的目标是进入第二颗 CPU。板上有两颗 CPU:一颗 Ralink RT3050,运行的本质上是一个路由器,我们很容易就能搞定;在它后面是一颗 Picochip PC312,运行着 3G NodeB 协议栈,而这才是真正让我们掌控这个设备的关键。
Tempest 的突破在于他们修改了 Picochip 的文件系统,从而可以设置启动参数来打开调试串口,然后从那里获得设备的控制台访问权限。
我一开始也是用这种方法,但不知道是不是我把板子上 Rx UART 的那个焊盘弄翘了,无论如何折腾,串口输入都无法被设备接收,所以我换了一种稍微不同的方法——修改文件系统,预先“植入”后门,这样它在启动时我就不需要依赖串口了。
我用的是一台所有引脚都焊好的 Tigard(是的,即使是 VTGT),JTAG 侧电压滑块设置为 VTGT。我还得安装一些原本没有的基础依赖:
```
sudo apt-get install -y openocd u-boot-s32-tools u-boot-tools
```
把 Tigard 接到我们焊好的焊盘上,给设备上电,然后运行:
```
nick@amanaki:~/Documents/3G_Femto$ openocd -f openocd-dph153-tigard-adapted.cfgOpen On-Chip Debugger 0.12.0Licensed under GNU GPL v2For bug reports, read http://openocd.org/doc/doxygen/bugs.htmlInfo : clock speed 500 kHzInfo : JTAG tap: pc302.cpu tap/device found: 0x07b763a9 (mfg: 0x1d4 (Picochip Designs Ltd), part: 0x7b76, ver: 0x0)Info : found ARM1176Info : pc302.cpu: hardware has 6 breakpoints, 2 watchpointsInfo : starting gdb server for pc302.cpu on 3333Info : Listening on port 3333 for gdb connectionsInfo : JTAG tap: pc302.cpu tap/device found: 0x07b763a9 (mfg: 0x1d4 (Picochip Designs Ltd), part: 0x7b76, ver: 0x0)Info : found ARM1176Warn : pc302.cpu: ran after reset and before halt ...target halted in ARM state due to debug-request, current mode: Supervisorcpsr: 0x200001d3 pc: 0x0601103ctarget halted in ARM state due to breakpoint, current mode: Supervisorcpsr: 0x200001d3 pc: 0x06011004Info : Listening on port 6666 for tcl connectionsInfo : Listening on port 4444 for telnet connections
```
它可能会崩溃好多次,这其实只是时机问题。插上设备,等上几秒钟,然后再启动 `openocd` 命令。如果运气好,它会找到 Picochip 并监听 4444 端口等待 Telnet 连接。
然后我通过 telnet 连接到设备:`telnet localhost 4444`,并备份了原始文件系统:
```
haltdump_image /tmp/rwstore_now.bin 0x40480000 0x380000
```
现在到了修改版固件登场的时候了。它基于原始闪存镜像,但里面塞满了后门:启用了 SSH、加入了已知的密钥,并且还留了一些备份,以防万一失败。
你可以在这里选择一条岔路。如果你想照我做的来,这里有一份我的文件系统里所有文件的副本,以及 SSH 公钥和要刷入的后门版文件系统。不过里面也有一些脚本,展示了文件系统的修改过程,如果你感兴趣的话。
接下来清除闪存,然后把 .zip 文件中的修改版写入:
```
haltarm11 memwrite burst disablereset haltflash erase_address 0x40480000 0x380000flash write_image /tmp/rwmkfs.bin 0x40480000
```
然后把它读回来,检查闪存上文件系统的校验和是否和我刚才制作的一致,因为我比较多疑,而且大约做了 5 次,始终不确定自己做错了什么:
```
reset haltdump_image /tmp/verify.bin 0x40480000 0x40000# on host: cmp /tmp/verify.bin against the head of /tmp/rwmkfs.bin -> MATCHreset run
```
然后我让它启动。
接下来是网络部分——Picochip 位于 Ralink 芯片*后面*的 192.168.157.x 地址上,所以你需要在你的机器上添加一条静态路由(在我的情况下还需要在路由器上添加,因为 hNB-GW 在一个不同的子网里)。因此我必须添加
相似文章
Show HN: 将20美元的4G无线热点改装为短信设备
本文详细介绍了如何通过openstick安装Linux,将一个20美元的4G无线热点改装成自定义短信设备,集成Clicks键盘和SHARP显示屏,重点在于DIY过程和硬件组件。
Ubiquiti 5G Backup在AT&T上的调试
本文详细介绍了Ubiquiti的UniFi 5G Backup设备与AT&T的调试过程,揭示了因网络支持限制导致的兼容性问题和性能限制。
破解Kyocera KY-42C
一篇关于解锁引导加载程序和改造Kyocera KY-42C功能手机的详细博客文章,该手机在固件更新后被认为无法获取root权限。作者研究了联发科(MediaTek)的启动过程和漏洞利用。
nokia-dct3-emulator:适用于Nokia DCT3手机的开源模拟器和分析工具包
一个适用于Nokia DCT3系列手机的开源模拟器和架构分析工具包,能够在浏览器或原生GUI中运行真实固件,用于离线教育分析和软件保存。
@xinzhi: 到手小小只,插入 SIM 卡连电脑,macOS 下让 opencode 直接开工,5 分钟搞好 VID/PID 修改和切换什么 ECM usbnet 模式,我啥都不懂也懒细看,就轻松搞定了。AI 时代玩硬件一点都不用折腾。 现在插入电脑、…
用户分享在一个小硬件上插入SIM卡、连接电脑并在macOS下快速配置opencode工具以改装成有线网卡的经验,强调AI时代硬件折腾门槛低。