Verkefni og yfirferð
Hingað til höfum við æft okkur inni í ~/examples möppunni, sem er æfingasvæði sem hægt er að endurstilla hvenær sem er með skipuninni examples. Frá og með næsta kafla munu flestir kaflarnir innihalda raunveruleg verkefni á fylgiþjóninum sem þú getu leyst beint í Linux heimamöppunni.
Hér förum við yfir nokkrar skipanir og ferlið við að sækja, leysa og skila inn þessum verkefnum. Þú þarft ekki að muna allt sem farið verður yfir. Á þjóninum má alltaf keyra skipunina skoli til að fá stutta upprifjun.
Að sækja verkefnasafn
Verkefni hvers kafla eru flokkuð saman í verkefnasöfn. Áður en við getum byrjað á verkefnum kaflans sækjum við viðkomandi safn með skipuninni
fetch <nafn-á-safni>
Í upphafi hvers kafla má finna nafnið á meðfylgjandi verkefnasafni. Þegar fetch er keyrt afritast verkefnin í möppuna ~/challenges/<nafn-á-safni>/, með einni undirmöppu fyrir hvert verkefni.
~/challenges/
└── eitthvad-safn/
├── 00-fyrsta-verkefni/
└── 01-annad-verkefni/
Að sækja verkefni aftur
Skipunin fetch sækir aðeins ný verkefnasöfn, en yfirskrifar ekki verkefnasafn sem við höfum þegar sótt. Þannig komumst við hjá því að týna því sem við höfum gert nú þegar.
Að leysa verkefni
Lýsing hvers verkefnis er á verkefnasíðu þess hér í Hakkaraskólanum, eins og öll önnur verkefni. Þegar við höfum kynnt okkur verkefnið opnum við möppu verkefnisins undir ~/challenges/ með cd og leysum það þar.
Verkefnin flokkast í tvo flokka, annars verkefni sem biðja okkur um að breyta, bæta við, eða eyða skrám og möppum; og hins vegar verkefni sem biðja okkur um að skrifa út svarið. Fyrri tegundina köllum við uppfærsluverkefni og þá seinni útskriftarverkefni.
Yfirferð
Þegar við teljum okkur hafa leyst verkefni notum við skipunina check til að fara yfir lausnina okkar.
Uppfærsluverkefni
Ef um er að ræða uppfærsluverkefni er nóg að keyra
check
úr möppu viðkomandi verkefnis. Skipunin check þá þær uppfærslur sem gerðar voru, segir okkur hvort þær séu réttar og, ef svo er, birtir fánann og skilar honum inn fyrir okkur sjálfkrafa.
Einfaldast er að keyra check úr verkefnamöppum, en hægt er að keyra yfirferð á hvaða verkefni sem er með
check <nafn-á-safni>/<nafn-verkefnis>
óháð vinnumöppu.
Útskriftarverkefni
Ef um útskriftarverkefni er að ræða þarf check að fara yfir úttak þeirrar skipunar (eða skipana) sem skrifa út það sem verkefnið biður um. Það er gert með því að bæta | check, fyrir aftan skipunina, til dæmis
ls -lah | check
Úttakið skipunarinnar skrifast þá ekki lengur út á skjá, heldur beinist það í skipunina check og farið er yfir það. Við förum nánar yfir virkni pípunnar, |, í ./pipes.md.
answer.txt
Á bak við tjöldin veldur | check því að úttak skipunarinnar er skrifað í
skránna answer.txt, sem check fer svo yfir. Það er því eðlilegt að sú
skrá birtist eftir að kallað hefur verið á check með þessum hætti.
Sjálfvirk innskil
Þegar check ályktar að verkefni hafi verið rétt leyst skilar skipunin líka fánanum til verkefnakerfis Hakkaraskólans. Það þarf ekki að klippa og líma fánann til að skila. Á bak við tjöldin notar check forritaskilalykil (e. API key) fyrir verkefnakerfið sem er að finna í ~/.ctf-token. Eftir að skipunin check fer fyrst yfir verkefnið athugar hún hvort þessi skrá sé til staðar og, ef svo er, notar hún lykilinn til að senda fánann sjálfkrafa inn í verkefnakerfið. Hægt er að slökkva á þessari virkni með stillingunni --no-submit, þ.e.
check --no-submit
Sjálfvirk fánaskil
Þegar notandinn þinn á fylgiþjóninum var búinn til var smíðaður forritaskilalykill fyrir verkefnakerfið og hann settur í heimamöppuna þína.
Ef þessari skrá er eytt eða lykillinn rennur út mun check aðeins sýna
okkur fána, en ekki skila þeim fyrir okkur. Hægt er hægt að endurstilla
lykilinn inni í verkefnakerfinu undir
https://skoli.ggc.tf/settings#linux-lab með því að smella á Regenerate
CTFd token.
Skipunin check mun samt alltaf gefa okkur fána ef verkefni er rétt leyst
og það er ávallt hægt að skila þeim handvirkt í verkefnakerfið.
Að byrja upp á nýtt
Til að endurstilla verkefni, þ.e. koma því í upprunalegt horf, er hægt að keyra
restore
úr möppu verkefnisins, eða úr möppu verkefnasafnsins (~/challenges/<nafn-á-safni>) til að endurstilla öll verkefni í því safni í einu. Einnig er hægt að tilgreina ákveðið verkefni eða safn, hvar sem er, með
restore ~/challenges/<nafn-á-safni>/<nafn-verkefnis>
Ekkert afrit
Skipunin restore geymir ekki afrit af því sem við höfum gert áður. Skipunin biður okkur um staðfestingu, og eftir það er gögnunum eytt fyrir fullt og allt. Ekki geyma neitt sem máli skiptir inni í ~/challenges/. Ef við viljum vinnusvæði sem er ekki tengt ákveðnu verkefni er betra að nota ~/examples í staðinn, en einnig er hægt að endurstilla það á sama hátt með skipuninni examples.
Ágrip
Ekki er nauðsynlegt að leggja neitt af þessu á minnið. Á þjóninum getum við keyrt skoli til að fá stutta samantekt á öllum skipunum sem kynntar eru í þessum kafla, meiri gagnlegum upplýsingum.
Verkefni