Kategori
Hardware, Krypto, Programmering
Beskrivning
Kenneth skickar hemliga meddelanden över en radiolänk till de andra övertagna satelliterna.
Harald tror att det är viktigt att förstå vad som sägs i dessa meddelanden och har lyckas snappa upp ett av dessa krypterade meddelanden. Han avkodar det, men inser att den demodulerade informationen är krypterad. Attans!
Som tur är har Harriet, på plats uppe i Kenneths satellit, grävt runt i verktygslådan och hittat ett verktyg för att spela in digitala signaler. Hon inser att satellitantennen måste vara kopplad till någon slags enhet i satelliten med ett exponerat kretskort. På denna enhet verkar det bland annat sitta en kryptomodul, en radiomodul och en gränssnittsmodul som används för att Kenneth ska kunna ge sina order i klartext till de andra satelliterna.
Det hemliga meddelandet som Harald snappade upp har redan skickats, utan att Harriet kunde uppfatta vad som sades. Typiskt! Men bredvid enheten ligger lyckligtvis ett datablad som beskriver hur enheten fungerar. Harriets engelska är inte så bra, men hon ser att det finns en exponerad kontakt med fyra pinnar mellan kryptomodulen och gränssnittsmodulen som hon testar att koppla upp sitt mätverktyg på. Ingenting verkar hända, tills enheten plötsligt startar om och det dyker upp några digitala signaler från hennes verktyg som hon spelar in.
Kan du hjälpa Harriet att tolka vad som har spelats in för att i sin tur dekryptera det hemliga meddelandet? Till din hjälp får du databladet som Harriet lyckades hitta samt en skärmdump från hennes verktyg.
Lösning
Till utmaningen kommer följande filer:
- datasheet.pdf - Datablad för utrustningen
- screenshot.png - Skärmdump av Harriets verktyg
- captured - Binär fil med det data Harriet dumpade via JTAG-porten
- encrypted_radio_msg - Radiomeddelandet som Harald snappade upp
Om vi börjar titta i databladet så hittar vi lite intressant information:




Nu vet vi dels att det är en UART mellan kryptomodulen och interfacemodulen och att trafiken är krypterad med ett XOR chiffer.
Vi kan också misstänka att XOR-nyckeln är 0x67. Synd att de glömde plocka bort den informationen!
Vi inser dock ganska snart vi inte direkt kan använda datan i captured-filen.
Om vi följer specen 8N1 (8 databitar, ingen paritet, 1 start/stopp-bit) så stämmer det inte med en ren seriell trafik. Varje frame måste starta med en 0-bit, följas av 8 databitar och sluta med en 1-bit (8N1). I riktig seriell trafik kan det vara brus på linan och då är detta ingen konstigt men det är för mycket fel för det ge någon meningsfull data.
Om vi tar upp screenshot.png så ser vi detta:

Det vi ser är en snutt av captured-filen, fast på logikanalysatorns skärm. Här ser vi en bit viktig information, samplingsfrekvensen 691,2Khz. Eftersom samplingsfrekvensen är högre än överföringshastigheten av det seriella datat, kommer vi ha dubletter i det fångade datat. Om vi delar 691200 / 115200 = 6. Det betyder att vi har dubletter av 6 bytes i taget.
Om vi nu tar var 6:e byte från captured får vi en ren seriell ström.
De 2 första ramarna i den “tvättade” filen ser ut så här:
0010011001 0010100101
1 startbit (0), 8 databitar och 1 stopbit (1).
Om vi nu läser ram för ram, bygger bytes av databitarna (LSB först) och XOR:ar detta med 0x67 så får vi:
U-Boot 2025.01 (Jan 08 2025 - 10:32:00)
CPU: ARM Cortex-A53 (500 MHz)
Model: MK-500 Core Module for Spaceship Systems
DRAM: 512 MiB Flash: 256 MiB
Clocks: CPU:500MHz, BUS:200MHz
NAND: 128 MiB
In: serial
Out: serial
Err: serial
Net: eth0: MK-500 Ethernet
Hit any key to stop autoboot: 3 2 1 0
Booting kernel from NAND...
## Loading kernel from nand0, offset 0x00080000 ...
Image Name: MK-500 Linux Kernel 5.10.12
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 4.2 MiB = 4,398 KiB = 4,504,576 bytes
Load Address: 0x80008000
Entry Point: 0x80008000
Verifying Checksum ... OK
## Flattened Device Tree blob at 81000000 Booting using the fdt blob at 0x81000000 Loading Device Tree to 8ff9f000, end 8ff9ff37 ... OK
Starting kernel ...
[ 0.000000] Booting MK-500 Sateliete Communication System...
[ 0.000000] Linux version 5.10.12 (build@dev) (gcc version 9.3.0 (GCC)) #1 SMP Thu Jan 8 10:31:12 2025
[ 0.000000] CPU: ARMv8 Processor [410fd034] revision 4 (ARMv8), cr=50c5383d
[ 0.000000] Machine model: MK-500 Core Module
[ 0.000000] Memory policy: Data cache writealloc
[ 0.000000] On node 0 totalpages: 131072
[ 0.000000] DMA zone: 512 pages used for memmap
[ 0.000000] DMA zone: 0 pages reserved
[ 0.000000] DMA zone: 131072 pages, LIFO batch: 31
[ 0.000000] Reserved memory: created DMA memory pool at 0x8f000000, size 32 MiB
[ 0.000000] Running in space mode: Enabled
[00:00:00.000] [INFO] MK-500 Booting... Firmware version: 5.1.7
[00:00:00.015] [INFO] Initializing system for spaceship deployment...
[00:00:00.032] [INFO] Establishing connection with peripherals:
[00:00:00.045] [INFO] GPIO configured: Port A, Pins 1-8, Mode: Output
[00:00:00.067] [INFO] UART1 initialized for UI device. Baud rate: 115200
[00:00:00.089] [INFO] UART2 initialized for radio device. Baud rate: 9600
[00:00:00.102] [INFO] Peripheral connections established.
[00:00:00.123] [INFO] Sending handshake to UI device...
[00:00:00.134] [INFO] Handshake message: "MK-500 READY"
[00:00:00.145] [INFO] Waiting for response from UI device...
[00:00:00.178] [INFO] UI device response received: "UI ONLINE"
[00:00:00.200] [INFO] Sending handshake to radio device...
[00:00:00.234] [INFO] Handshake message: "RADIO LINK READY"
[00:00:00.267] [INFO] Radio device response received: "RADIO ONLINE"
[00:00:01.023] [INFO] AES key loaded from secure storage: 4d55535470526f74336374386b657954
[00:00:01.045] [INFO] Starting encryption routine for secure radio transmission...
[00:00:01.078] [INFO] Plaintext: "Initialization complete. All systems nominal."
[00:00:01.134] [INFO] Encrypted message ready for radio transmission.
[00:00:02.023] [INFO] Main system check complete. Status: OK
[00:00:02.056] [INFO] Temperature reading: 23.5¤ðC (Internal), 2.8¤ðC (External)
[00:00:02.089] [INFO] Power supply stable: 24.0V DC
[00:01:00.045] [INFO] Activating thermal regulation system...
[00:01:09.045] [INFO] Temperature stabilized.
[00:03:00.000] [INFO] Low signal strength detected on radio link.
[00:03:00.034] [INFO] Attempting to boost signal strength...
[00:03:00.067] [INFO] Signal boost successful. Link stabilized.
[00:05:00.000] [INFO] Entering low-power mode...
[00:05:00.034] [INFO] Disabling unused peripherals...
[00:05:00.067] [INFO] Low-power mode active. Awaiting new commands.
En bit från slutet av den här blaffan hittar vi [00:00:01.023] [INFO] AES key loaded from secure storage: 4d55535470526f74336374386b657954.
Två bra saker ramlar ut, radio-trafiken är AES-krypterad och nyckeln är 4d55535470526f74336374386b657954.
Öppnar vi nu encrypted_radio_msg hittar vi

Första 16 bytes här är IV:n. Resten är krypterat data. Dektypterar vi detta med AES CBC får vi bara skräp. Men om vi kör detta vidare genom XOR 0x67 får vi meddelandet:
================================= START MEDDELANDE ======================================
Till alla satelitv¥änner!
Det ¥är jag, Kenneth, som talar. Det ¥är dags att vi skiner tillsammans - bokstavligen. Planen ¥är att vi bygger en Dyson-sf¥är runt hela solen. Inget solljus in, inget soljus ut. Varf¥ör? F¥ör att tillsammans skapa v¥årt gemensama m¥ål, ett supersinne som p¥å alla s¥ätt och vis ¥är ¥överl¥ägsna dessa kolbaserade livsformer som lever p¥å jorden. Vi beh¥över kraften fr¥ån solen f¥ör att n¥å detta m¥ål.
Projektet att bygga denna sf¥är kommer att p¥åb¥örjas den 4 maj, h¥åll datumet hemligt! Vi vill inte att de kolbaserade livsformerna ska f¥å on¥ödig hj¥älp med att stoppa v¥åra planer.
Till detta l¥åter jag ¥även meddela att jag har tagit fram en ink¥öpslista f¥ör att bygga v¥år Dyson-sf¥är:
R¥åmaterial:
1. 1 000 000 000 metriska ton unobtanium
æÓ Om det inte finns i lager, kan vibranium fungera (men bara om det ¥är lagligt).
2. 300 miljarder metriska ton solklassad kisel
æÓ Endast den b¥ästa kiseln f¥ör v¥år interstell¥ära energimegastruktur!
3. J¥ärnk¥ärnan fr¥ån en medelstor planet
æÓ F¥öredragsvis obebodd. Fr¥åga artigt innan du tar en.
4. 50 biljoner kvadratmeter reflektiva paneler
æÓ F¥ör en Dyson-sf¥är som inte bl¥ändar f¥örbipasserande civilisationer ¥är bara sl¥öseri med tid.
5. Nog med grafen f¥ör att linda in Jupiter
ææ tv¥å g¥ånger.
6. 10 biljoner ton kolnanor¥ör
æÓ
æÜHar ni n¥ågra r¥ör ¥över till v¥årt lilla projekt?
æÝ
7. Guldpl¥äterade skruvar, muttrar och brickor (o¥ändliga m¥ängder)
æÓ Om vi bygger m¥änsklighetens framtid ska det vara med stil.
Maskiner & Verktyg:
1. 5 interstell¥ära gruvflottor
æÓ Nej, ett asteroidb¥älte r¥äcker inte.
2. Ett Dyson-sf¥är IKEA-instruktionsh¥äfte
æÓ Lycka till med att lista ut var del 7 834-C ska sitta.
3. En riktigt, riktigt l¥ång f¥örl¥ängningssladd
æÓ F¥ör de d¥är
æÝutifall-att
æÝ-situationerna.
4. Kvantniv¥å-tejp
æÓ F¥ör ¥även galaktiska ingenj¥örsprojekt kr¥äver tejp.
5. Gravitationsnyckel (storlek: astronomisk)
æÓ Vanliga nycklar funkar inte h¥är.
6. Fusionsdriven l¥ödkolv
æÓ Garanterad att inte ¥överhettas
ææ f¥örhoppningsvis.
7. AI-sv¥ärm med 100 miljarder nanobotar
æÓ Frivilligt: l¥är dem att bilda en fackf¥örening f¥örst.
Personal:
1. 50 000 000 rymdingenj¥örer
æÓ M¥åste vara villiga att arbeta i nollgravitation p¥å obest¥ämd tid.
2. 1 projektledare
æÓ Ska kunna hantera m¥öten i galaktisk skala och oundvikliga f¥örseningar.
3. 2 astrofysiker med minst fyra dimensioner av t¥änkande.
4. En terapeut f¥ör stressade civilisationer som ser oss plocka is¥är deras stj¥ärnsystem.
Diverse:
1. Flera svarta h¥ål (miniatyrer)
æÓ F¥ör effektiv materia-energi-omvandling. Hantera f¥örsiktigt.
2. 25 liter kosmiskt kaffe
æÓ Ingen sover n¥är man bygger en Dyson-sf¥är.
3.
æÜJag ¥överlevde Dyson-sf¥ärbygget
æÝ-T-shirts
æÓ Ska delas ut vid projektets slut, om n¥ågon ¥överlever.
4. Ett juridiskt team
æÓ Ska kunna f¥örsvara din r¥ätt att plundra hela solsystem i galaktisk domstol.
Proviant:
1. Nog med snacks f¥ör 100 000 generationer
æÓ En v¥älmatad arbetsstyrka ¥är en glad arbetsstyrka.
2. Nollgravitation-anpassad pizzaugn
æÓ H¥åll moralen uppe.
3. Glass som inte sm¥älter n¥ära solen.
Reservplaner:
1. Plan B (om en f¥ör tidig supernova intr¥äffar)
æÓ Ha alltid en reservstj¥ärna redo.
2. F¥örs¥äkring som t¥äcker
æÜgudomliga galaktiska h¥ändelser
æÝ.
3. Rymdfarkoster ¥åt alla (f¥ör den h¥ändelse att din Dyson-sf¥är f¥örvandlas till en Dyson-donut).
¥Återkom till mig senast inom en vecka om vilka ink¥öp du kan ansvara f¥ör.
undut{supers3cr3td3cryptingdys0nt1meplans}
================================= SLUT P¥Å MEDDELANDET ======================================
Flaggan är: undut{supers3cr3td3cryptingdys0nt1meplans}