有趣的Hack-A-Sat黑掉卫星挑战赛——被破坏的阿波罗计算机(解法二)

2023-11-19

国家太空安全是国家安全在空间领域的表现。随着太空技术在政治、经济、军事、文化等各个领域的应用不断增加,太空已经成为国家赖以生存与发展的命脉之一,凝聚着巨大的国家利益,太空安全的重要性日益凸显[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名宇航员,舱内设有导航、控制、通信、生命保障和电源等设备。

AGC是阿波罗计划中的主要船载计算机,使用在所有的登月任务中。指挥舱和登月舱都有AGC,但是两者运行的软件不同。AGC及其软件是在麻省理工学院仪器实验室(现在称为德雷珀实验室)开发的。性能参数如下

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有趣的Hack-A-Sat黑掉卫星挑战赛——被破坏的阿波罗计算机(解法二) 的相关文章

  • 三十三.二叉树的创建、后序遍历、深度统计。

    include
  • 【视频编码学习】VTM15.0编译运行

    VTM版本 15 0 操作系统 Win10 x64位 IDE Visual Studio 2019 编译器 cmake 利用VS2019运行VTM15 0 前言 一 下载VTM15 0 二 下载安装cmake 1 下载cmake并安装 2
  • Java中的IO流如何理解——精简

    目录 引言 缓冲流 字节缓冲流 字符缓冲流 转换流 字符输入转换流 字符输出转换流 序列化和反序列化 对象序列化 对象反序列化 打印流 Properties 引言 通过前面的简单学习 我们已经能够大致了解了关于文件的操作 但是能够明显感受到
  • mybatis中pagehelper分页、排序

    原文链接 https blog csdn net liuyuanjiang109 article details 78955881 在springboot 结合mybatis 时用到pagehelper 分页工具 并进行分页 排序 其git
  • 安装 mysqldb for python

    1 安装 ssetuptools wget http pypi python org packages 2 6 s setuptools setuptools 0 6c9 py2 6 egg md5 ca37b1ff16fa2ede6e19
  • 常用GIT命令速览,现学也能登堂入室

    系列文章目录 手把手教你安装Git 萌新迈向专业的必备一步 GIT命令只会抄却不理解 看完原理才能事半功倍 常用GIT命令速览 现学也能登堂入室 系列文章目录 一 GIT HELP 1 命令文档 2 简要说明 二 配置 config 1 配
  • minio上传文件报错io.minio.errors.InvalidResponseException: Non-XML response from server

    上传文件报错io minio errors InvalidResponseException Non XML response from server 开发中上传文件到minio遇到问题 上传小于1M的文件成功 上传大于1M的文件失败 检查
  • 《算法图解》第九章动态规划学习心得

    1 背包问题 动态规划先解决子问题 再逐步解决大问题 每个动态规划都从一个网格开始 背包问题的网格如下 网格最初是空的 动态规划就是逐步将网格填满 吉他行 第一个单元格表示背包的容量为1磅 吉他的重量也是1磅 这意味着它能装入背包 因此这个
  • list类型的用法(含列表合并)

    编程中对于链表的处理通常都是比较麻烦的 C 的STL库中提供了list类型 大大方便了我们对链表的处理 不熟悉的小伙伴们快来了解 一定能为你的编程带来益处 list是双向带头循环链表 不同于之前讲过的vector 它不支持随机访问 即下标访
  • python提取两个引号中的内容,怎样用 Python 提取不在双引号的内容?

    三叔2016 11 11 13 30 281楼 import re a Peter d 13tsddgjlsv gt gt bgeghg n desfegeivm x wb rhwrohjow dddeuvb n dwegjosnngwei
  • C语言中的静态函数

    关于C中的static类型的函数是与extern类型相对的 也就是说函数的调用方式并没有改变 只通过这个关键字影响了linker的行为 下面在具体说说他们的区别 extern都知道 是指该函数在整个工程中可见 而static是指只在当前文件
  • STL : vector 矢量容器

    目录 Vector Capacity Elements access Modifiers Allocator Non member Notice overloads Template specializations Vector inclu
  • 业务流程图怎么画?3步+8张案例,5分钟教你快速上手!

    业务流程图能很好地帮助我们梳理业务 高效表达需求 尤其是产品经理在梳理业务时 经常会用到业务流程图 业务流程图会在产品经理画原型图前 帮助梳理产品业务流程 避免做无用功 今天从业务历程图的基本介绍 常用场景和绘制方法三方面介绍 让大家对业务
  • C11头文件声明了创建和管理线程,信号,条件变量的函数

    作者Danny Kalev 是通过以色列系统分析师协会认证的系统分析师 并且是专攻C 的软件工程师 Kalev 写了多本C 的书籍 同时给不同的软件开发者站点投搞C 文章 他是C 标准委员会的成员 还获得了通用语言学的硕士学位 原始鏈接 h
  • TypeError: can only concatenate list (not "str") to list

    类型错误 只能将list类型和list类型联系起来 而不是str类型 出现上述类型错误 判断一下需要连接的两个变量的类型 如果是将str类型加入list用append添加 如果是移除用pop或remove
  • Ubuntu 10.10下安装TFTP的步骤 tftp-hpa版本

    背景 由于想要在tq2440板子上用tftp下载kernel 所以要在自己的PC机的Ubuntu 10 10上安装tftp服务 所以就去网上找了些教程 但是很悲剧 按照那些教程去操作 结果还都是无法正常运行tftp服务 最后还是从一个外国人
  • 自己动手写CSDN博客提取器,提取文件保存支持PDF、doc、txt三种格式

    转载自 http blog csdn net w397090770 article details 7760907 下载地址http download csdn net detail w397090770 4438566 不需要积分 下面有
  • npm配置及.npmrc文件

    一 npm配置 1 npm cli 提供了npm config 命令进行npm相关配置 通过npm config ls l 可查看npm的所有配置 包括默认配置 2 npm config set 进行配置项修改 使用命令配置后会把配置文件中

随机推荐

  • POJ - 1129 Channel Allocation(染色问题)

    题意 AC代码 When a radio station is broadcasting over a very large area repeaters are used to retransmit the signal so that
  • Oracle RAC FailOver配置

    Oracle RAC FailOver配置 Oracle RAC主要为数据库的应用提供了HA High Available 的环境 HA体现在负载均衡 loadbalance 和容错 failover 两个方面 Oracle RAC 的Fa
  • Scala 的 Set集合详解

    目录 一 不可变长Set集合 1 Set的声明与遍历 2 Set的几个常用方法 intersect diff 操作符 filter过滤 二 可变长Set集合 三 Set的其他方法 Set集合的特点 元素存放无序 且不可重复 一 不可变长Se
  • c++:多态案例,电脑组装

    需求 include
  • 【Ansible初识】Linux系统之Ansible的基本介绍

    Ansible初识 Linux系统之Ansible的基本介绍 一 Ansible的介绍 1 Ansible简介 2 Ansible的特点 3 Ansible的原理 二 Ansible的架构 1 Ansible的架构图 2 Ansible的核
  • oracle数据库分区的几种方式

    范围分区 每个分区都由一个分区键值范围指定 对于一个以日期列作为分区键的表 2005 年 1 月 分区包含分区键值为从 2005 年 1 月 1 日 到 2005 年 1 月 31 日 的行 列表分区 每个分区都由一个分区键值列表指定 对于
  • IOS 访问系统粘贴板

    粘贴板提供了一种核心OS特性 用于跨应用程序共享数据 用户可以跨应用来复制粘贴 也可以设置只在本应用中复制粘贴用来保护隐私 UIPasteboard类允许访问共享的设备粘贴板以及内容 下面代码返回一般的系统粘贴板 它适合大多数一般的复制粘贴
  • 百度智能云章淼:详解企业级七层负载均衡开源软件BFE

    随着云计算和云原生的发展 七层负载均衡得到了越来越多的关注 同时也出现了很多不同的解决方案 BFE是基于Go语言编写的七层负载均衡开源软件 在2020年6月被CNCF接受为 沙盒项目 成为中国第一个网络方向的CNCF开源项目 2022年7月
  • Open3D 计算模型的表面积和体积

    函数解析 def get surface area self 计算物体表面积 def get volume self 计算物体体积 完整的代码 import open3d as o3d print 绘制立方体 mesh box o3d ge
  • android解决方法数超过65536问题,(满则溢)Android AS打包提示方法数超65536的解决方法...

    满则溢 平常大家喝饮料啥的都知道一个杯子的容量 如果超出就溢出 这个时候只能在加个杯子装了 Android开发也是如此 当方法数超过65536的时候就需要分包 为啥出现 项目当中添加的依赖和架包太多了 方法数超过65536还是很正常的 所以
  • flutter可以开发HTML5,Flutter建立JsBridge用于webview与h5通信

    项目背景 随着项目的不断完善 需要做一些运营活动 通常是H5页面 在app中打开这些H5页面就需要引入WebView 有时候H5需要客户端提供一些内部的接口 这时候我们就需要建立JSBridge用于客户端与H5之间的通讯 使用 1 安装we
  • 宝可梦虚拟银行服务器连接不上,更多宝可梦!《精灵宝可梦:太阳/月亮》虚拟银行将开启...

    任天堂近日宣布3DS 精灵宝可梦 太阳 月亮 Pok mon Sun Moon 将在一月下旬开启 宝可梦虚拟银行 这个功能主要是让游戏与整个 口袋妖怪 系列进行联动 进行寄存或领出各种宝可梦 宝可梦虚拟银行 从1月下旬起对应 精灵宝可梦 太
  • 25 个 JavaScript 实用级语句 进阶

    1 复制内容到剪贴板 为了提高网站的用户体验 我们经常需要将内容复制到剪贴板 以便用户粘贴到指定的地方 const copyToClipboard content gt navigator clipboard writeText conte
  • 黑客美化版大马_2012版

  • JVM调优之GC调优——响应时间优先(三)

    GC调优之响应时间优先 上一节简单介绍了GC调优的吞吐量优先 详见 https blog csdn net Winner941112 article details 102679614 这一节将会考虑响应时长进行调优 响应时间优先 依然使用
  • Qt5学习之路(vs2012下创建一个QT应用程序)2013-10-14

    刚开始学习QT在网上找的资料基本都是使用QT Create进行开发的 VS下开发的学习资料感觉很少很难找的到 视频教程也基本没看到过貌似 因为我们研发中心是使用MFC进行开发开发工具是VS2010 使用QT开发的话基本我们不会再使用QT C
  • 2021-01-01 中国公务员级别

    中华人民共和国公务员 1 级别 一级到二十七级 27个级别 2 职务 国家级正职到乡科级副职 10级领导职务 3 职级 一级巡视员到二级科员 12个职级 根据 中华人民共和国公务员法 2018年12月29日第十三届全国人民代表大会常务委员会
  • 使用selenium自动登录淘宝并获取cookie

    http sunjun041640 blog 163 com blog static 256268322013101473549333 最近做个东西需要用程序登录淘宝然后去后台获取些东西 分析了一下登录页面 发现淘宝有用flash生成一个字
  • BLE连接、配对和绑定

    参考 一篇文章带你解读蓝牙配对绑定 参考 BLE安全之SM剖析 1 参考 BLE安全之SM剖析 2 参考 BLE安全之SM剖析 3 参考 https blog csdn net chengbaojin article details 103
  • 有趣的Hack-A-Sat黑掉卫星挑战赛——被破坏的阿波罗计算机(解法二)

    国家太空安全是国家安全在空间领域的表现 随着太空技术在政治 经济 军事 文化等各个领域的应用不断增加 太空已经成为国家赖以生存与发展的命脉之一 凝聚着巨大的国家利益 太空安全的重要性日益凸显 1 而在信息化时代 太空安全与信息安全紧密地结合