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

2023-10-30

国家太空安全是国家安全在空间领域的表现。随着太空技术在政治、经济、军事、文化等各个领域的应用不断增加,太空已经成为国家赖以生存与发展的命脉之一,凝聚着巨大的国家利益,太空安全的重要性日益凸显[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

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

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

  • 从注解@EventListener和@TransactionalEventListener掌握Spring的事件机制原理

    文章目录 Spring事件监听机制 Spring事件监听机制概述 Spring事件监听机制介绍 Spring事件相关的几个类 使用硬编码简单还原Spring事件机制 Spring事件机制正确的使用方式 Spring事件创建 Spring事件
  • Opencv学习二之图像基本操作

    1 如下图所示 一张图像是有很多像素点构成的 每个像素点的取值范围在0 255之间 其表示图像的亮度 0表示是黑点 255表示白点 RGB表示图像的颜色通道 通常彩色图都是RGB三颜色通道 2 图像数据的读取 import cv2 open
  • L1-095 分寝室PTA

    学校新建了宿舍楼 共有 n 间寝室 等待分配的学生中 有女生 n0 位 男生 n1 位 所有待分配的学生都必须分到一间寝室 所有的寝室都要分出去 最后不能有寝室留空 现请你写程序完成寝室的自动分配 分配规则如下 男女生不能混住 不允许单人住
  • git删除本地分支、远程分支、创建分支

    git删除本地分支 远程分支 创建分支 git创建本地分支 git checkout b 分支名 git删除本地分支 git branch D 本地分支名 git删除远程分支 git push origin delete 远程分支名 git
  • 用生日攻击方法求解离散对数问题(C语言实现)-大三密码学实验

    实验原理 生日攻击 输入为生成元a的阶p 1和元b 输出为离散对数 设置两个长度为p的列表 1 列表1包含 通过随机选取p个k得到 2 列表2包含 通过随机选取p个l得到 则在两个列表中很有可能出现重复的项 即 因此 那么就是要找的离散对数
  • Map集合的Key比较

    类 Object 是类层次结构的根类 每个类都使用 Object 作为超类 所有对象 包括数组 都实现这个类的方法 在Object类中有两个重要的方法 hashCode 和equals Object obj 在我们使用集合容器的时候我们需要
  • allegro17.4 中规则的导入与导出

    在使用allegro时 经常会遇到多个项目的规则一致 因此进行规则的复用很有必要 1 打开已经设置好规则的PCB文件 执行菜单setup constraints constraint manager 进入菜单管理器 2 然后点击file e
  • Elasticsearch:RestClient+SearchSourceBuilder使用案例

    1 前言 RestClient是较低层的API 这里使用基于其封装的高层API 即RestHighLevelClient 需要添加的依赖如下

随机推荐

  • Altium AD20更改原理图背景颜色

    AD20更改原理图背景颜色 点击右下角 Panels 选择 Properties Sheet Color 即为背景颜色 Sheet Border 为 页面信息栏 及 最外层边框 的颜色 AD默认的淡黄色背景颜色为 FFFCF8 更改回默认可
  • axios 或 fetch 如何实现对发出的请求的终止?

    终止 HTTP 请求是一个重要的功能 特别是在需要优化性能 避免不必要的请求或在某些事件发生时 例如用户点击取消 中断正在进行的请求时 以下是如何使用 axios 和 fetch 实现请求终止的方法 1 axios axios 使用了 Ca
  • 微信小程序基础使用-请求数据并渲染

    小程序基本使用 请求数据并渲染 小程序模板语法 数据绑定 在js中定义数据 Page data isOpen true message hello world 小程序的data是一个对象 不同于vue的data是一个函数 在模块中获取使用数
  • Bash基本命令用法

    man 查看命令帮助信息 echo 在终端输出字符 reboot 重启 poweroff 关机 ps 查看系统中的进程状态 top 动态的监视进程活动与系统负载等信息 pidof 查询某个指定服务进程的pid值 kill 终止某个指定pid
  • 3DsMax次级菜单无法选中---简单方法

    在桌面新建文本文档 将下列代码赋值到文本文档中 Ctrl S保存代码 然后改扩展名为 reg 最后双击导入就完美解决了 Win10系统代码 Windows Registry Editor Version 5 00 HKEY CURRENT
  • mybatis查询当年的数据、查询当天的数据、查询当年每个月的数据

    mybatis查询当年 当天的数据 查询当年每个月的数据 最近遇到公司的需求 查询一个表里面当年的数据和当年每个月的数据 测试数据表如下 很显然我们要对time字段进行操作 查询当天的数据 我们可以在where后面这么写 AND TO DA
  • windows建立隐藏用户及查找隐藏用户

    建立隐藏用户 1 cmd gt net user 用户名 密码 add hint cmd gt net localgroup administrators 用户名 add 将用户添加进管理员组 2 cmd gt regedit 路径 HKE
  • ty计算机网络背诵简答题满分冲刺版!

    ty计算机网络背诵简答题满分冲刺版 ty 2023 名词解释 记忆中文名称即可 缩写 全称 解释 DNS 域名系统 用于将域名转换为IP地址的分布式数据库系统 URL 统一资源定位符 用于标识互联网上资源位置的地址 IGP 内部网关协议 用
  • 什么时候要有拷贝构造函数?

    1 构造对象 时 用已实例化的对象进行构造 int main Student a 10 2 Student b a 拷贝构造 并且要特别注意指针数据成员的赋值 避免出现野指针的情况 2 返回临时对象 而不是返回对象的引用 rmb opera
  • 如何使用代理IP池进行爬虫工作

    要使用代理IP池进行爬虫 需要先将代理IP池集成到爬虫代码中 并在需要访问目标网站时随机选取代理IP进行访问 简单的步骤如下 1 导入代理IP池模块 将代理IP池的模块集成到你的爬虫代码中 通常情况下 代理IP池提供了一些API接口 可以通
  • Android中常用的adb shell命令

    注意事项 这里写的命令 网页可能会重新编辑格式 比如我写了两个减号 发布后变成了一个减号 如果这里的命令不能正确执行 请手动输入命令 切记切换英文状态 android 常用shell命令记录下来备忘 n 在shell命令中的作用是换行 而
  • 8.Spring EL与ExpressionParser

    Spring EL与ExpressionParser 文章目录 Spring EL与ExpressionParser 介绍 使用SpEL来计算评估文字字符串表达式 使用SpEL来计算评估 bean 属性 item name 介绍 Sprin
  • 原生js实现水印背景

    参考文档 https juejin cn post 6844904095749242888 1 通过canvas生成水印图片 2 把图片作为div的背景让其平铺 const setWatermark gt let canvas docume
  • Java线程池ThreadPoolExecutor-终止线程池原理

    一 终止线程池主要有两个方法 shutdown 和 shutdownNow shutdown 后线程池将变成shutdown状态 此时不接收新任务 但会处理完正在运行的 和 在阻塞队列中等待处理的任务 shutdownNow 后线程池将变成
  • ArcPy操作shp格式文件

    目录 ArcPy操作shp格式文件 shp文件介绍 创建shp 编辑shp 编辑列 字段 插入列 编辑行 记录 主要涉及的对象 arcpy Cursor 游标 对象 arcpy Row对象 arcpy Array对象 插入行 删除行 更新行
  • java中double转String如何去掉整数结尾的小数位“.0“

    可以使用Java中的DecimalFormat类 设置格式化模式来实现将double转为String 去掉整数结尾的小数位 0 以下是示例代码 double d 1234 0 DecimalFormat df new DecimalForm
  • linux 新建用户、用户组 以及为新用户分配权限

    一 Linux系统用户账号的管理 用户账号的管理工作主要涉及到用户账号的添加 修改和删除 添加用户账号就是在系统中创建一个新账号 然后为新账号分配用户号 用户组 主目录和登录Shell等资源 刚添加的账号是被锁定的 无法使用 1 添加新的用
  • C++性能优化系列——矩阵转置(八)IPP转置API性能测试

    本篇记录Intel 高性能计算函数库IPP中的转置函数ippiTranspose 8u C1R的执行情况 方便性能优化系列篇中转置实现做性能对比 函数说明 解释来自IPP2018发布文档 Intel Integrated Performan
  • Linux报错:-bash: 路径xx: No such file or directory解决方法

    为什么80 的码农都做不了架构师 gt gt gt 问题 出现这个错误 bash 路径xx No such file or directory除了cd能用外 所有linux命令都不能用 一般导致问题原因是etc profile配置文件出错导
  • 有趣的Hack-A-Sat黑掉卫星挑战赛——被破坏的阿波罗计算机(解法一)

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