Kirjautuminen

Haku

Tehtävät

Kilpailut: Jouluhakkeri

Järjestäjä: Metabolix

Joulun 2021 jälkeen tutkitaan kilpaa pienen sähkölaitteen lähettämiä viestejä. Kilpailu on avoinna ainakin helmikuun loppuun asti tai kunnes ratkeaa. Tuloslistalle pääsee saman tien, kun ratkaisee tehtävän. Jos tehtävä näyttää aluksi liian vaikealta, ei hätää: tehtävää helpotetaan vähitellen lisävihjeillä ja -ohjeilla.

Tarina

24.12.2021 joulupukin paketista paljastuu erikoinen yllätys, nimittäin kaksi outoa laitetta: jonkinlainen tukiasema ja omituinen ranneke. Ainoa ohje paketissa on pieni lappu:

1. Kytke pönttö seinään.
2. Pue ranneke.
3. Nähdään taas ensi vuonna!

Pukki on aina tuonut ihan parhaita leluja, joten teet työtä käskettyä. Mutta olit varmaan ollut liian tuhma, koska pukin laite onkin tällä kertaa kamalan kelju! Ranneke lukittuu eikä enää irtoa, ja tukiasema pulauttaa kondensaattoreistaan sellaisen kerroksen valkoista kemikaalia, ettei koko laitteeseen uskalla enää koskea. Ja mikä pahinta: jos rannekkeen vie liian kauas, tukiasema alkaa huutaa kuin palosireeni.

Tutkit pakettia vielä tarkemmin ja huomaat, että lappusen toisella puolella on lisää tekstiä:

Onneksi olkoon!

Sinut on valittu mukaan joulupukin pilottihankkeeseen.

Joulupukin tontuilta kuluu hurjasti aikaa lasten tarkkailuun. Tuhmimmat 5 % lapsista kuluttavat 95 % pukin valvontaresursseista. Joulupukki on päättänyt tehostaa toimintaa ja tehdä digiloikan: tuhmia lapsia valvoo jatkossa väsymätön Sähkötonttu™. Ennen täysimittaista käyttöönottoa pilotoimme hanketta yhteistyötahomme Ohjelmointiputkan hakkeriyhteisössä, josta olet valikoitunut mukaan kokeiluun.

Noudattamalla kääntöpuolen ohjeita annat samalla suostumuksesi tutkimukseen osallistumiseen ja vakuutat ymmärtäneesi, että tutkimus kestää ensi jouluun saakka ja sinuun sovelletaan siihen asti tuhmien lasten seurantaprotokollaa. Suostumuksen voi perua ottamalla henkilökohtaisesti yhteyttä joulupukkiin.

Ystävällisin terveisin,
Joulupukin IT-osasto,
teknisen valvonnan yksikkö.

P.S.
Joulupukki on kesälomalla ja palaa töihin taas 24.12.2022.
Hyvää alkavaa vuotta!

Voi ei! Jos odotat koko vuoden kiltisti, ehkä joulupukki hakee ensi jouluna laitteen pois. Mutta tarkkojen laskelmien mukaan ensi jouluun on paljon enemmän kuin kolme yötä, joten alat tutkia laitetta siinä toivossa, että ongelma ratkeaisi vielä ennen kesää...

Rauta

Vaikka laite on pukin pajan omaa tuotantoa, sille on hankittu viranomaisten hyväksyntä. Laitteen tarrassa on muutama virallinen numerosarja, joilla löytyy Yhdysvaltain telehallintoviraston asiakirjoja, joista selviää kaikenlaista. Ranneke – malliltaan Sähkötonttu-007 – lähettää 433,92 MHz:n taajuuskaistalla FSK-moduloitua signaalia. Viestin kesto on 5 millisekuntia ja viestien väli 18–22 sekuntia. Viesti sisältää laitteen tunnisteen ja jonkinlaisen statuksen. Vaikuttaa lupaavalta, nimittäin ihan samanlaista tekniikkaa on langattomissa lämpömittareissa ja pistorasioissa, joiden säätimien tee-se-itse-versioita löytyy jo valmiiksi netistä.

Varmemmaksi vakuudeksi asiakirjoista löytyy myös valokuva laitteen sisuksista, ja kuvassa näkyy määritysten mukainen radiolähetin CC1050. Elektroniikan nettikaupat myyvät yhteensopivia osia, ja asia on sillä selvä: ensin pitää vakoilla laitteen viestejä ja sitten huijata joulupukin tukiasemaa niin, että se ei enää kaipaa oikeaa ranneketta. Täytyy olla tarkka, etteivät tontut huomaa huijausta, tai ensi jouluna pukki voi olla on hyvin, hyvin vihainen...

Softa

Tilaat sopivat laitteet 24/7-pikatoimituksena heti paikalla. Säädät asetukset kohdalleen ja alat poimia bittejä ilmasta maksiminopeudella, 256 kilobittiä sekunnissa. Todellinen nopeus on luultavasti paljon pienempi, joten ylinopeudella pitäisi nähdä todelliset ykköset ja nollat pidempinä 1-bittien ja 0-bittien jonoina.

Kun olet saanut ensimmäiset viestit kiinni ja skriptit kuntoon, jätät laitteet tallentamaan koko yöksi. Ärsyttävä ranneke helkkyy ja välkkyy iloisesti, kun laittaudut yöpuulle. Aamulla pitäisi olla tarpeeksi viestejä koossa. Siitä työ vasta alkaa!

Data

Jouluaamuna on koossa jo mukava määrä aikaleimoja ja viestejä, vieläpä odotusten mukaisesti noin 20 sekunnin välein. (Kello oli ihan väärässä ajassa, mutta se ei haittaa, kun viestien väliajat voi silti laskea.) Muutama viesti on kai pudonnut välistä, kun peräkkäisten aikaleimojen ero on yli 30 sekuntia, mutta ehkä tiedot riittävät silti ongelman ratkaisuun. Mitä viestit sisältävät? Ja erityisesti: mitä viestejä pitäisi lähettää, jotta joulupukin tukiasema pysyy tyytyväisenä?

Lataa datatiedosto 1. (Vihjeisiin tulee datasta uusia versioita.)

Datatiedosto sisältää joka rivillä aikaleiman sekunteina ja viestin heksadesimaalimuodossa.

Vihjeet

25.12.2021: Viestissä on jotain logiikkaa, paljon nollia ja f-kirjaimia. Muistelet heksadesimaaleja: 0 = 0000, 3 = 0011, c = 1100, f = 1111. Olisiko helpompi katsoa tietoa ykkösinä ja nollina?

28.12.2021: Pienen pohdinnan jälkeen onnistut venyttämään bitit kohdalleen: poistat alusta ja lopusta satunnaisen näköiset pätkät, kohdistat nollat ja äffät nätisti ja korjaat selvät yhden bitin virheet. Syntyvä datatiedosto 2 näyttää jo paljon selvemmältä!

Vastausohjeet

Tee viestien sarja, jota toistamalla tukiasema pysyy tyytyväisenä. Anna ratkaisuksi tarvittavat viestit järjestyksessä, yksi viesti per rivi. (Aikaleimoilla ei ole merkitystä ja ne saa jättää pois.) Anna viestit datatiedoston 2 tai myöhempien mukaisessa muodossa.

Lähetä ratkaisu tarkistussivulle, joka kertoo heti, miten kävi. Tuloslistalle merkitään lähetyspäivä ja tieto, monesko yritys onnistui. Tosihakkeri onnistuu viimeistään kolmannella kerralla! Useammasta virheestä tulee kovenevia rangaistuksia ensi jouluksi. Toisaalta virheistä voi myös oppia, kun näkee, missä vaiheessa tukiaseman virhevalo alkaa tuikkia...

Jos saat selville muutakin viestien sisällöstä, voit kertoa siitä keskustelussa myöhemmin, kun kilpailu on päättynyt.

Lisää vihjeitä

31.12.2021: Aivonyrjähdyksen takia unohdit äsken muuttaa nollat ja äffät lyhyemmiksi. Nehän menevät nyt kivasti tasan, eli 8 peräkkäisestä bitistä voi tehdä yhden bitin, jolloin viesteistä tiivistyy datatiedosto 3. Laitteen oikea nopeus on siis pikemmin 32 kbps. Testaat vielä vastaanotinta tuolla nopeudella ja saat nyt myös vastaanotettua viestejä valmiiksi tässä paremmassa muodossa. Kokeilet lähettää yhden viestin näistä keräämistäsi, ja tukiasema reagoikin siihen – virhemerkkivalolla ”TARK. VIRHE”. Täytyy tutkia lisää...

4.1.2022: Uudessa muodossa viestit näyttävät yllättävän säännöllisiltä: kaikilla on sama alku ja loppu. Lisäksi huomaat, että alussa on f0 ja lopussa 00 mutta näiden välissä on kuudestatoista heksamerkistä vain kahdeksaa: 2345abcd. Onko viestissä sittenkin jokin virhe?

Lisätehtävä

5.1.2022: Kaverisi on joutunut samaan tilanteeseen. Kerrot, mitä olet saanut selville, ja kohta kaveri jo pyytääkin, voisitko hakkeroida samalla myös hänen rannekkeensa. Kaveri on saanut poimittua rannekkeeltaan vain yhden paketin:

f0ccaaaaaab4b3532d3554acacb34b2aaaab2acacb52ab00

Kun olet saanut oman rannekkeesi hoideltua, olisi varmaan kilttiä auttaa kaveria hädässä... Lähetä kaverille sopiva ratkaisu tarkistussivun lomakkeen toisesta lähetysnapista.

Vielä lisää vihjeitä

8.1.2022: Pyörittelet kahdeksaa heksamerkkiä binäärilukuina ja huomaat, että niissä kaikissa kaksi keskimmäistä bittiä ovat eri: 2 = 0010, b = 1011 jne.

12.1.2022: Sovellat edellistä havaintoa myös peräkkäisiin merkkeihin ja huomaat, että myös peräkkäisten merkkien rajalla bitti aina vaihtuu. Joka toinen bitti on siis yksinkertaisesti eri kuin edellinen eikä sisällä mitään uutta tietoa. Ehkä nämä voisi jotenkin purkaa pois.

15.1.2022: Löydät havaintoon sopivan koodauksen ja toteutat sen: poistat viesteistä alun ja lopun (f0–00), jaat sisällön kahden bitin paloihin ja muutat jokaisen palan yhdeksi bitiksi niin, että jos palan bitit ovat samat, tulos on 1, ja muuten tulos on 0.

c     | c     | a     | a     | ...
11 00 | 11 00 | 10 10 | 10 10 | ...
1  1    1  1  | 0  0    0  0  | ...
f             | 0             | ...

Takaisin heksamuotoon laitettuna datatiedosto 4 näyttää jo aika kivalta, alkuosa on vakio ja vain lyhyt pala lopussa muuttuu. Mutta voi ei: nyt pitäisi vielä ymmärtää siitä jotain, tai ainakin pitäisi pystyä tuottamaan vakuuttavasti samanlaista itse.

19.1.2022: Muistelet vielä hetken mittaustilannetta: Illalla olet liikkunut rannekkeen kanssa, yöllä nukkuessa laite on ollut enimmäkseen paikallaan, ja tietysti aamulla herätessä olet taas liikkunut. Viesteissä muuttuvat vain 6 viimeistä heksamerkkiä eli 3 tavua. Näistä yksi tavu sisältää keskellä yötä pienempiä ja muulloin isompia arvoja. Toinen tavu näyttää noudattavan jotain kaavaa lähimpien viestien välillä. Viimeinen tavu hyppii miten sattuu.

22.1.2022: Huomaat, että viestin kaksi viimeistä heksamerkkiä riippuvat jotenkin edellisistä: ei ole viestejä, joissa olisi eroa vain kahdessa viimeisessä merkissä. Voiko kyseessä olla jokin tarkastussumma?

26.1.2022: CRC taitaa olla aika yleinen algoritmi tarkastussumman laskentaan. Toisaalta tarvitseeko sitä välttämättä selvittää vai saisiko sopivat viestit kasaan muutenkin? Rannekkeen lähettämät viestit ovat kelvanneet tukiasemalle, joten mitä jos lähettäisi vain samat uudestaan?

29.1.2022: Lähetät kerättyjä viestejä järjestyksessä. Jonkin ajan päästä tukiaseman virhevalo vilkkuu. Viesteistä ja aikaleimoista näet, että virhe tulee, kun tiedostosi viestien aikaleima hyppää liikaa eli kerätyistä viesteistä on pudonnut yksi välistä. Ilmeisesti siis peräkkäisten viestien välillä on jokin yhteys ja laite huomaa välistä puuttuvan viestin. Noin lyhyeen viestiin ei voi mahtua kovin monimutkaista sääntöä tai aikaleimaa! Saisiko valmiista datasta jotenkin paikattua aukot? Montako erilaista viestiä tarvitaan toimivaan silmukkaan?

Viralliset vihjeet päättyvät tähän. Lisää vinkkejä voi löytyä nyt keskustelusta, jossa saa nyt vapaasti vaihtaa tietoja.

Tulokset

Vain -tossu- ratkaisi tehtävän ennen kesää – jo hyvissä ajoin, 4.1.2022 eli vain 10 päivää datan ilmestymisen jälkeen. Onneksi olkoon!

Halukkaat voivat edelleen yrittää tehtävää, ja tuloslista näkyy automaattisesti lähetyssivulla.

Tietoa sivustosta