大数据文摘出品
作者:Caleb
俄罗斯入侵乌克兰第6天,双方代表团完成第一轮会谈,但尚未达成任何实质协议,第二轮会谈将于来日举行。
随着本次冲突的不断发展,乌克兰的不少基础设施也遭到破坏。
根据监测组织Netblocks,自俄罗斯正式对乌克兰发起行动后,乌克兰的互联网服务一直在经历“严重的中断”。
2月26日,乌克兰副总理费多罗夫在推特上求助马斯克,希望能通过Starlink改善乌克兰的卫星互联网接入服务。对此马斯克回应表示,“Starlink已经在乌克兰激活,更多终端正在运送途中”。
就在本周一,费多罗夫在推特上传了一张照片,SpaceX向乌克兰发去了一辆装满Starlink用户终端的卡车,初步统计,这些终端数量为150台。
不过,乌克兰没有地面站可以接收Starlink信号,最近的地面站位于波兰沃拉克罗博斯卡村。本周二,据乌克兰《基辅独立报》报导,乌克兰对Starlink系统进行了成功测试,速度达到每秒200兆比特以上。
其实乌克兰也没必要这么麻烦,本周一晚,就有一位乌克兰软件通信工程师利用自己之前在eBay上买到的东西,组建了一个设备,竟然还真的成功连接到了Starlink网络。
“老实说,我都开始怀疑这东西到底是不是有作用了。我之前以为可能还存在一些障碍,或者我的设备有些问题,但现在这玩意儿连接得非常顺畅,速度也非常快。”Oleg Kutkov说到。
从无法连接到网速200M
其实好几个月前,Kutkov就已经有一个自己的Starlink天线了,但一直没机会使用它。
这个天线是他从eBay上低价收购入手的,主要也是为了对该设备进行反向工程,以了解更多信息。卖家也把自己的美国账户转给了Kutkov,但Kutkov能做的并不多,毕竟当时乌克兰还不支持Starlink。
也正因为此,Kutkov和Starlink也有了一些联系。期间他还试图将他的账户地址从美国地址换成乌克兰地址,但Starlink工作人员表示,该位置无法支持服务。不过好在当时Kutkov仍然选择支付了这个账户,“为实验保持服务,而且......以防万一”。
随着马斯克对乌克兰提供了大量终端,Kutkov也决定再试一次。
最初Kutkov尝试将自己的设备连接到他的账户,但失败了。随后Starlink的工作人员联系到他,表示现在他的账户应该可以正常连接并使用了。
Kutkov也在推特上连发数条推文,以表兴奋之情。他表示,目前他能够达到超过200 Mbps最高速度。
目前,SpaceX在轨道上拥有近2000颗活跃的Starlink卫星,并且在任何特定时间都在乌克兰上空运行少数轨道。此外,Starlink基础设施的非官方地图显示,在乌克兰的一些邻国也设有网关,这有助于保持卫星连接。
Kutkov表示,这个小实验只是一个测试,他不打算一直使用Starlink天线。相较而言,他还有一个非常好用的光纤网络,目前为止还没有中断过。
另外,库特科夫对他的设备也进行了很多修补,包括拆除底座。
归根结底,Kutkov只是想向乌克兰人民展示,Starlink目前正在乌克兰运行。“我可以测试这项服务,并向大家报告说,‘是的,这在乌克兰是可行的”。
Starlink终端的逆向工程
在2021年底,Kutkov还写了一篇关于Starlink终端的逆向工程的文章。
路由器的核心是当下流行的Qualcomm IPQ4018 SoC:四核ARM Cortex A-7、802.11ac WiFi 5GHz和2.4 GHz,2个通道。此外,该SoC集成了加密引擎和交换机引擎以及硬件NAT和流量控制。
其中最有趣的部分是STSAFE-A芯片。这个特殊的MCU能提供安全存储、身份验证和一些加密功能,完全受OpenSSL支持。MCU用于存储电路板配置和证书。
重新组建的路由器框架图如下:
SpaceX存储库基于相当古老的OpenWrt 15.05.1 “Chaos Calmer”版本。Kutko决定在Ubuntu 16.04 (LTS) 环境中使用Docker:
FROM ubuntu:16.04
ARG UID=1000
ARG GID=1000
# OpenWRT's dl directory.
ENV DLDIR /opt/dl
RUN apt-get update && apt-get install -y \
apt-utils \
build-essential \
curl \
ocaml \
device-tree-compiler \
iputils-ping \
file \
gawk \
git \
less \
libjansson-dev \
libncurses5-dev \
libssl-dev \
nodejs \
python-m2crypto \
python-minimal \
sharutils \
subversion \
unzip \
vim \
squashfs-tools \
wget
RUN groupadd -g $GID user && \
useradd --create-home --gid $GID --uid $UID user
WORKDIR /var/build/starlink-wifi
将Dockerfile放入Starlink存储库顶部目录并运行:
docker build . -t starlink-wifi-build -f Dockerfile
运行Docker:
src_root=$(realpath "$(dirname $0)")
docker run -i $(tty -s && echo -t) \
-v ${src_root}:/var/build/starlink-wifi \
-v /opt/dl \
-v ~/.gitconfig:/etc/gitconfig \
-u $(id -u):$(id -g) \
starlink-wifi-build "$@"
然后构建固件:
./scripts/feeds update -a
./scripts/feeds install -a
cp spacex_openwrt.config .config
make oldconfig
运行make menuconfig并转到Boot Loaders --->,同时确保uboot-ipq40xx........................ U-boot for ipq40xx based platforms已选中,并且未选中其他所有内容。
cp nand_extracted_kernel_config target/linux/ipq806x/config-4.4
make V=s -jN
STSAFE-A110采用了UFDFPN8 2×3 mm封装,Kutko决定构建一个适配器以便于连接。
此外,还需要一组最低限度的组件:旁路电容器和复位电路。
连接树莓派I2C总线的设备:
进行一次快速测试:
$ i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 abcdef
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20:20 -- --
-- -- -- -- -- -- -- - - -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
成功了!
除此之外,Kutko表示自己还会尝试反转I2C通信协议,以了解wifi_control如何与STSAFE交互,以及弄清楚这些证书是如何工作的,如何与Starlink服务器通信的。
完整过程可以参考Kutko的博客文章:
https://olegkutkov.me/2021/12/25/analysis-and-reverse-engineering-of-the-original-starlink-router/
目前,乌克兰的互联网基础设施仍然可能瞬息万变的情况,对此Kutko表示,他对经常使用Starlink同样保持谨慎的态度,因为有人猜测该设备可能使他更容易受到俄罗斯空袭的影响。
“我不知道这是否属实,但从技术角度来看,这是可能的。所以大家一定也要更加注意和小心。”
相关报道:
https://www.theverge.com/2022/3/1/22956481/ukraine-spacex-starlink-oleg-krutkov-dish-internet-russia-invasion