wrap
This commit is contained in:
parent
e9555e363e
commit
0bfad78612
14
README.md
14
README.md
|
@ -1,21 +1,21 @@
|
|||
# BLAHAJ Hack-a-Sat 2020 Writeups
|
||||
|
||||
- [aaaa/my-0x20](aaaa/my-0x20)
|
||||
- [aaaa/digital-filters-meh](aaaa/digital-filters-meh)
|
||||
- [aaaa/spacebook](aaaa/spacebook)
|
||||
- [aaaa/like-to-watch](aaaa/like-to-watch)
|
||||
- [aaaa/attitude-adjustment](aaaa/attitude-adjustment)
|
||||
- [aaaa/digital-filters-meh](aaaa/digital-filters-meh)
|
||||
- [aaaa/like-to-watch](aaaa/like-to-watch)
|
||||
- [aaaa/my-0x20](aaaa/my-0x20)
|
||||
- [aaaa/seeing-stars](aaaa/seeing-stars)
|
||||
- [aaaa/spacebook](aaaa/spacebook)
|
||||
- [comms/56k](comms/56k)
|
||||
- [comms/phasors-to-stun](comms/phasors-to-stun)
|
||||
- [ground-segment/can-you-hear-me-now](ground-segment/can-you-hear-me-now)
|
||||
- [ground-segment/talk-to-me-goose](ground-segment/talk-to-me-goose)
|
||||
- [ground-segment/i-see-what-you-did-there](ground-segment/i-see-what-you-did-there)
|
||||
- [ground-segment/talk-to-me-goose](ground-segment/talk-to-me-goose)
|
||||
- [payload/calendar](payload/calendar)
|
||||
- [payload/leakycrypto](payload/leakycrypto)
|
||||
- [payload/spacedb](payload/spacedb)
|
||||
- [payload/calendar](payload/calendar)
|
||||
- [satellite-bus/bytes-away](satellite-bus/bytes-away)
|
||||
- [satellite-bus/magic-bus](satellite-bus/magic-bus)
|
||||
- [space/wheres-the-sat](space/wheres-the-sat)
|
||||
- [space/1201-alarm](space/1201-alarm)
|
||||
- [space/good-plan-great-plan](space/good-plan-great-plan)
|
||||
- [space/wheres-the-sat](space/wheres-the-sat)
|
||||
|
|
2
misc.tex
2
misc.tex
|
@ -1,2 +1,2 @@
|
|||
\usepackage{amsmath}
|
||||
\newcommand{\norm}[1]{\left\lVert#1\right\rVert}
|
||||
\newcommand{\norm}[1]{\left\lVert#1\right\rVert}
|
||||
|
|
|
@ -251,7 +251,8 @@ The correct value for `VIDIODE` was determined through trial and error. The rese
|
|||
|
||||
After successfully spoofing the telemetry data, we notice in the console output from our session that the scheduler has been activated:
|
||||
```
|
||||
critical-tel-check info: Scheduler service comms started successfully at: 3.19.61.44:14764/sch/graphiql
|
||||
critical-tel-check info: Scheduler service comms started successfully at: 3.19.61.44:14764/sch
|
||||
/graphiql
|
||||
```
|
||||
We visit the provided URL and find another graphiql interface. According to the [KubOS documentation](https://docs.kubos.com/1.19.0/ecosystem/services/scheduler.html), we may issue the following query to enter safe mode and stop any subsequent checks which might kill the scheduler and bring us back to where we started:
|
||||
```
|
||||
|
@ -262,7 +263,8 @@ mutation safe {
|
|||
We also see that we can dump the task lists for all available modes with the following query:
|
||||
```
|
||||
query dump {
|
||||
availableModes{name, path, lastRevised, schedule{tasks{description, delay, time, period, app{name, args, config}}, path, filename, timeImported}, active},
|
||||
availableModes{name, path, lastRevised, schedule{tasks{description, delay, time, period,
|
||||
app{name, args, config}}, path, filename, timeImported}, active},
|
||||
activeMode{name}
|
||||
}
|
||||
```
|
||||
|
@ -270,14 +272,28 @@ From the information from the dumped task lists, we can see that there are sever
|
|||
```
|
||||
mutation patch {
|
||||
createMode(name: "patch"){success, errors}
|
||||
importRawTaskList(name: "patch", mode: "patch", json: "{\"tasks\":[{\"description\":\"Orient solar panels at sun.\",\"delay\":\"0s\",\"time\":null,\"period\":null,\"app\":{\"name\":\"sunpoint\",\"args\":null,\"config\":null}},{\"description\":\"Update system telemetry\",\"delay\":\"1s\",\"time\":null,\"period\":null,\"app\":{\"name\":\"update_tel\",\"args\":null,\"config\":null}}]}"){success, errors}
|
||||
importRawTaskList(name: "patch", mode: "patch", json: "{\"tasks\":[{\"description\":\"Orien
|
||||
t solar panels at sun.\",\"delay\":\"0s\",\"time\":null,\"period\":null,\"app\":{\"name\":\"sun
|
||||
point\",\"args\":null,\"config\":null}},{\"description\":\"Update system telemetry\",\"delay\":
|
||||
\"1s\",\"time\":null,\"period\":null,\"app\":{\"name\":\"update_tel\",\"args\":null,\"config\":
|
||||
null}}]}"){success, errors}
|
||||
activateMode(name: "patch"){success, errors}
|
||||
}
|
||||
```
|
||||
Subsequently, we need to create a mode which will aim the transmission antenna at the ground, activate the antenna, print the flag to the log, transmit the comms buffer, power down the antenna, and reorient the solar panels. We may do this via the following mutation:
|
||||
```
|
||||
mutation {
|
||||
importRawTaskList(json:"{\"tasks\":[{\"description\":\"Orient antenna to ground.\",\"delay\":null,\"time\":\"2020-05-23 16:40:49\",\"period\":null,\"app\":{\"name\":\"groundpoint\",\"args\":null,\"config\":null}},{\"description\":\"Power-up downlink antenna.\",\"delay\":null,\"time\":\"2020-05-23 16:41:09\",\"period\":null,\"app\":{\"name\":\"enable_downlink\",\"args\":null,\"config\":null}},{\"description\":\"Prints flag to log\",\"delay\":null,\"time\":\"2020-05-23 16:41:19\",\"period\":null,\"app\":{\"name\":\"request_flag_telemetry\",\"args\":null,\"config\":null}},{\"description\":\"Power-down downlink antenna.\",\"delay\":null,\"time\":\"2020-05-23 16:41:34\",\"period\":null,\"app\":{\"name\":\"disable_downlink\",\"args\":null,\"config\":null}},{\"description\":\"Orient solar panels at sun.\",\"delay\":null,\"time\":\"2020-05-23 16:41:39\",\"period\":null,\"app\":{\"name\":\"sunpoint\",\"args\":null,\"config\":null}}]}",name:"nominal-op",mode:"transmission"){success,errors}
|
||||
importRawTaskList(json:"{\"tasks\":[{\"description\":\"Orient antenna to ground.\",\"delay\
|
||||
":null,\"time\":\"2020-05-23 16:40:49\",\"period\":null,\"app\":{\"name\":\"groundpoint\",\"arg
|
||||
s\":null,\"config\":null}},{\"description\":\"Power-up downlink antenna.\",\"delay\":null,\"tim
|
||||
e\":\"2020-05-23 16:41:09\",\"period\":null,\"app\":{\"name\":\"enable_downlink\",\"args\":null
|
||||
,\"config\":null}},{\"description\":\"Prints flag to log\",\"delay\":null,\"time\":\"2020-05-23
|
||||
16:41:19\",\"period\":null,\"app\":{\"name\":\"request_flag_telemetry\",\"args\":null,\"config
|
||||
\":null}},{\"description\":\"Power-down downlink antenna.\",\"delay\":null,\"time\":\"2020-05-2
|
||||
3 16:41:34\",\"period\":null,\"app\":{\"name\":\"disable_downlink\",\"args\":null,\"config\":nu
|
||||
ll}},{\"description\":\"Orient solar panels at sun.\",\"delay\":null,\"time\":\"2020-05-23 16:4
|
||||
1:39\",\"period\":null,\"app\":{\"name\":\"sunpoint\",\"args\":null,\"config\":null}}]}",name:"
|
||||
nominal-op",mode:"transmission"){success,errors}
|
||||
}
|
||||
```
|
||||
Finally, per the challenge directive, we must have the satellite enter low-power mode:
|
||||
|
|
Loading…
Reference in New Issue