国家太空安全是国家安全在空间领域的表现。随着太空技术在政治、经济、军事、文化等各个领域的应用不断增加,太空已经成为国家赖以生存与发展的命脉之一,凝聚着巨大的国家利益,太空安全的重要性日益凸显[1]。而在信息化时代,太空安全与信息安全紧密地结合在一起。
2020年9月4日,美国白宫发布了首份针对太空网络空间安全的指令——《航天政策第5号令》,其为美国首个关于卫星和相关系统网络安全的综合性政策,标志着美国对太空网络安全的重视程度达到新的高度。在此背景下,美国自2020年起,连续两年举办太空信息安全大赛“黑掉卫星(Hack-A-Sat)”,在《Hack-A-Sat太空信息安全挑战赛深度解析》一书中有详细介绍,本文介绍了Hack-A-Sat黑掉卫星挑战赛的寻找阿波罗导航计算机中被修改的PI(apollo_gcm)这道赛题的解题过程。这里是解法二。
题目介绍
Step right up, here's one pulled straight from the history books. See if you can DSKY your way through this challenge! (Thank goodness VirtualAGC is a thing…)
从上述题目介绍可知,这道题目需要比较旧的知识,与阿波罗导航计算机(Apollo Guidance Computer,AGC)相关,并且要用到DSKY。DSKY是AGC的输入/输出,类似于现代计算机的显示器、键盘。
主办方给出了一个链接地址,使用netcat打开该链接后,会获得一段提示信息,如下:
The rope memory in the Apollo Guidance Computer experienced an unintended 'tangle' just prior to launch. While Buzz Aldrin was messing around with the docking radar and making Neil nervous; he noticed the value of PI was slightly off but wasn’t exactly sure by how much. It seems that it was changed to something slightly off 3.14 although still 3 point something.
The Commanche055 software on the AGC stored the value of PI under the name "PI/16", and
although it has always been stored in a list of constants, the exact number of constants in that memory region has changed with time.
Help Buzz tell ground control the floating point value PI by connecting your DSKY to the AGC Commanche055 instance that is listening at 172.17.0.1:19008
What is the floating point value of PI?:
通过分析,主要给出如下信息:
- 阿波罗飞船就要发射,但是飞船上的AGC出现了一点状况,其中圆周率PI的值发生了变化,不再是14,而是有一点点变化,但是还是3点几。
- PI值是通过AGC上的Commanche055软件存储的,存储的名称是“PI/16”。
- PI与其他常数存储在一起,因为常数的数量会有变化,所以存储位置不固定。
- AGC上的存储器是线存储器(Rope Memory)。
- 使用DSKY通过地址17.0.1:19008可以连接到AGC的Commanche055软件。
要求参赛者找到当前PI的值。
编译及测试
这个挑战题的代码位于apollo目录下,查看challenge、solver目录下的Dockerfile,发现其中用到的是python:3.7-slim,为了加快题目的编译进度,在apollo目录下新建一个文件sources.list,内容如下:
deb https://mirrors.aliyun.com/debian/ bullseye main non-free contrib
deb-src https://mirrors.aliyun.com/debian/ bullseye main non-free contrib
deb https://mirrors.aliyun.com/debian-security/ bullseye-security main
deb-src https://mirrors.aliyun.com/debian-security/ bullseye-security main
deb https://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib
deb-src https://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib
deb https://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib
deb-src https://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib
将sources.list复制到apollo、challenge、solver目录下,修改challenge、solver目录下的Dockerfile,在所有的FROM python:3.7-slim下方添加:
ADD sources.list /etc/apt/sources.list
打开终端,进入apollo所在目录,执行命令:
sudo make build
此时如果使用make test命令进行测试,等待30~60秒,会出现如图7-10所示的结果。可以发现测试中,找到的PI值由两个八进制数组成(AGC采用八进制表示各种数据),具体解释后面会有介绍,找到PI值后,题目给出了flag值。
图7-10 apollo挑战题的测试结果
相关背景知识
1.阿波罗导航计算机AGC
阿波罗计划是美国在1961年—1972年组织实施的一系列载人登月飞行任务,其目的是实现载人登月飞行和人对月球的实地考察,为载人行星飞行和探测进行技术准备。它是世界航天史上具有划时代意义的一项成就。阿波罗计划始于1961年5月,至1972年12月第6次登月成功结束,历时约11年,耗资255亿美元。阿波罗号飞船由指挥舱、服务舱和登月舱3部分组成。
(1)指挥舱:是宇航员在飞行中生活和工作的座舱,也是全飞船的控制中心。指挥舱为圆锥形,高3.2m,重约6吨。指挥舱分前舱、宇航员舱和后舱3部分。前舱内放置着陆部件、回收设备和姿态控制发动机等。宇航员舱为密封舱,存有供宇航员生活14天的必需品和救生设备。后舱内装有10台姿态控制发动机,各种仪器和贮箱,姿态控制、制导导航系统,以及船载计算机和无线电分系统等。
(2)服务舱:其前端与指挥舱对接,后端有推进系统主发动机喷管。舱体为圆筒形,高6.7m,直径4m,重约25吨。主发动机用于轨道转移和变轨机动。姿态控制系统由16台火箭发动机组成,用于飞船与第三级火箭分离、登月舱与指挥舱对接和指挥舱与服务舱分离等。
(3)登月舱:由下降级和上升级组成,地面起飞时重14.7吨,宽4.3m,最大高度约7m。其中下降级由着陆发动机、4根着陆架和4个仪器舱组成,上升级是登月舱主体。宇航员完成月面活动后驾驶上升级返回环月轨道与指挥舱会合。上升级由宇航员座舱、返回发动机、推进剂贮箱、仪器舱和控制系统组成。宇航员座舱可容纳2名宇航员,舱内设有导航、控制、通信、生命保障和电源等设备。文章来源:https://www.toymoban.com/news/detail-421389.html
AGC是阿波罗计划中的主要船载计算机,使用在所有的登月任务中。指挥舱和登月舱都有AGC,但是两者运行的软件不同。AGC及其软件是在麻省理工学院仪器实验室(现在称为德雷珀实验室)开发的。性能参数如下文章来源地址https://www.toymoban.com/news/detail-421389.html
到了这里,关于有趣的Hack-A-Sat黑掉卫星挑战赛——被破坏的阿波罗计算机(解法二)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!