10.12.
2024
Python a kybernetická bezpečnosť – 21. časť
V tejto časti seriálu naprogramujeme ďalšiu verziu našej vzorovej aplikácie, pričom ju doplníme o funkcionalitu čítania informácií z údajových súborov MS Outlook. Tieto údajové súbory sú ďalším nesmierne cenným artiklom, ktorý nám ponúka obrovské množstvo informácií nielen o používateľovi (obeti), ale aj o cieľovom zariadení, resp. o sieťovom okolí daného zariadenia. Súbory PST sa štandardne nachádzajú v domovskej zložke konkrétneho používateľa, presnejšie v pod-zložke Dokumenty. V prípade, že sme účet úspešne kompromitovali, nie je žiaden problém stiahnuť údajový súbor (údajové súbory) PST a analyzovať ho (ich) v off-line režime napr. aj prostredníctvom jednoduchého programu napísaného v jazyku Python.
2.11.
2024
Python a kybernetická bezpečnosť – 20. časť
Dnešnú časť seriálu venujeme vytvoreniu veľmi jednoduchého, avšak nesmierne nebezpečného programu, ktorého úlohou bude zašifrovať produktívne súbory (doc, xls, ppt) nachádzajúce sa v zložke Dokumenty konkrétneho používateľa. Tentokrát nepôjde o klient-server aplikáciu ale o dvojicu samostatných programov, z ktorých jeden bude určený na zašifrovanie a druhý na dešifrovanie spomínaných súborov. V podstate pokračujeme v téme, v rámci ktorej sa venujeme šifrovaniu. Využívame rovnaký balík PyCryptodome a všetky poznatky, ktoré sme získali v predošlých častiach seriálu.
14.10.
2024
Python a kybernetická bezpečnosť – 19. časť
V minulej časti seriálu sme si začali hovoriť o šifrovaní v spojení s kybernetickou bezpečnosťou a programovaním „škodlivých“ aplikácií v jazyku Python. Pripomenuli sme si najmä základné informácie týkajúce sa symetrickej blokovej šifry AES, jej šifrovacie módy a predstavili sme si balík PyCryptodome. Dnes tieto informácie využijeme na prípravu novej verzie našej vzorovej aplikácie. Ako obvykle budeme pracovať v klient-server prostredí, v ktorom jednu programovú časť spúšťame na zariadení obete (nazývame klientom) a druhú na zariadení útočníka (nazývame serverom). Obe časti sú v mnohom identické s programami, ktoré boli súčasťou 17. časti seriálu (tunelovanie) a preto ich nebudeme detailne rozoberať, ale zameriame sa iba na popis vykonaných zmien súvisiacich so šifrovaním.
27.9.
2024
Python a kybernetická bezpečnosť – 18. časť
Dnešnú a takisto pár nasledujúcich častí seriálu venujeme šifrovaniu. Samozrejme sa zameriame na jeho využitie v rámci našich Python programov na riešenie úloh patriacich do oblasti kybernetickej bezpečnosti. Šifrovanie je podobne ako tunelovanie nástroj určený na ukrytie informácií, ktoré prenášame pri komunikácii medzi klientom a serverom, resp. medzi zariadením obete a zariadením útočníka. Okrem toho sa často používa na veľmi nekalý účel v rámci tzv. Ransomware programov, ktoré obetiam zablokujú prístup k ich cenným údajom. Útočník prostredníctvom Ransomware zašifruje vybrané údaje a žiada od obete výkupné za zaslanie dešifrovacieho kľúča. Šifrovanie je však užitočné aj z mnohých iných dôvodov ako napr. pri zasielaní riadiacich údajov / povelov, na ukrytie užitočných údajov (payload), ukrytie samotných šifrovacích kľúčov, resp. pomocných parametrov / atribútov používaných počas šifrovania.
3.7.
2024
Python a kybernetická bezpečnosť – 17. časť
V tejto časti seriálu plynule nadviažeme na predošlú časť, v rámci ktorej sme si predstavili jednoduchú klient-server aplikáciu, prostredníctvom ktorej sme na server (vzdialený počítač) zasielali obsah Windows Clipboardu. Naprogramujeme novú verziu našej vzorovej aplikácie (v5.1), ktorá bude plniť tú istú funkciu, avšak diametrálne odlišným spôsobom. Našim cieľom bude ukryť a preniesť údaje (informácie) pomocou služieb, ktoré prioritne nie sú určené na prenos údajov. Táto technika sa všeobecne označuje ako tunelovanie (tunneling). Nie je pritom dôležité či údaje zašifrujeme, alebo ponecháme v otvorenej podobe. Tunelovanie výrazne sťažuje prácu bezpečnostným systémom a analytikom. Ak by títo chceli ukryté údaje identifikovať, museli by sledovať a vyhodnocovať kompletne všetky údaje, ktoré sú prenášané v kontrolovanej sieti, bez zamerania sa na konkrétnu službu, vrstvu či protokol.
31.5.
2024
Python a kybernetická bezpečnosť – 16. časť
Obsahom dnešnej časti seriálu je popis doslova triviálnej aplikácie, prostredníctvom ktorej budeme na server (vzdialený počítač) odosielať obsah Windows Clipboardu a Firefox Cookies. V prvom momente by sa dalo povedať, že sa zabávame a hráme s nepodstatnými drobnosťami. Keď si však uvedomíme čo všetko môžu potencionálni útočníci získať, zistíme, že až taká zábava to nie je. Clipboard je bežný systémový nástroj, ktorý používame denno denne bez toho, aby sme tomu prikladali nejaký význam. Takisto cookies sú pri používaní Internetu všadeprítomné a ich existencia často podceňovaná. Stačí si spomenúť ako často a rýchlo prijímame ponúkané cookies bez toho aby sme sa s ich obsahom oboznámili. Pre útočníkov predstavujú obidva spomínané prvky významný zdroj údajov použiteľných na rôznu záškodnícku činnosť.
13.3.
2024
Python a kybernetická bezpečnosť – 15. časť
V minulej časti seriálu sme si ukázali ako možno zneužiť mechanizmus Distributed Computing Environment / Remote Procedure Call (DCE/RPC) a jeden z jeho transportných protokolov Server Message Block (SMB) na vykonanie príkazu, resp. kódu v rámci vzdialeného adresového priestoru, tzn. na vzdialenom počítači pripojenom do počítačovej sieti. Predstavili sme si knižnicu Pypsexec a uviedli sme si 4 podmienky jej použitia. DCE/RPC však nemusí využívať iba transportný protokol SMB, ale vie pracovať aj priamo cestou protokolov TCP/UDP (port 135). V takomto prípade nie je nutné splniť žiadnu zo spomínaných podmienok. Stačí nám poznať používateľské údaje bežného používateľa a mať „otvorený“ port 135, ba v niektorých prípadoch nie je potrebné ani to...
1.3.
2024
Python a kybernetická bezpečnosť – 14. časť
V minulej časti seriálu sme si ukázali ako možno veľmi užitočnú funkcionalitu zneužiť na nekalé účely. Dnes na túto tému nadviažeme a ukážeme si, ako možno zneužiť ďalšiu z užitočných funkcionalít a to konkrétne mechanizmus Distributed Computing Environment / Remote Procedure Call (DCE/RPC). DCE/RPC s výhodami využívajú najmä systémoví administrátori a to k vzdialenému prístupu na počítače v ich správe. V prípade potreby teda nemusia fyzicky prísť ku konkrétnym počítačom, ale z pohodlia vlastnej kancelárie ich dokážu spravovať s využitím funkcionality vzdialeného prístupu, resp. vzdialeného vykonania príkazov. DCE/RPC je okrem správy vzdialených počítačov použiteľný napr. na vykonanie časovo náročných úloh na výkonnejších počítačoch, na efektívnu distribúciu úloh, na vykonanie špecializovaných úloh na špecializovaných platformách… Ako obvykle budeme pracovať v rámci OS Linux s nainštalovanými virtuálnymi strojmi pričom napadneme OS Windows.
24.1.
2024
Python a kybernetická bezpečnosť – 13. časť
Čím to je, že akonáhle niekto vymyslí niečo úžasné, takmer okamžite sa nájde niekto, kto to zneužije? Toto tvrdenie sa dá krásne aplikovať na systém ukladania prihlasovacích údajov, ktorý ponúkajú moderné internetové prehliadače. O čo ide? Určite ste sa už stretli s ponukou internetového prehliadača na uloženie prihlasovacieho mena a hesla počas prvého prihlasovania sa na niektorú z internetových stránok. Mnohí z nás túto ponuku využili a nemusia tak pri každom novom otvorení danej stránky zadávať svoje ťažko zapamätateľné údaje znovu a znovu. Systém ukladania prihlasovacích údajov je určite nápomocný, avšak predstavuje obrovské bezpečnostné riziko. V tejto časti seriálu si prakticky predvedieme jednu z možností ako možno uvedené údaje veľmi jednoducho a ľahko získať. Zameriame sa pritom na OS Windows a Google Chrome, avšak na podobnom princípe pracujú aj ostatné známe prehliadače.
24.1.
2024
Python a kybernetická bezpečnosť – 12. časť
Dnešná časť seriálu bude nepriamym pokračovaním 10. časti, v rámci ktorej sme si popísali jednu z mnohých možností, resp. princípov, ako na cieľovom zariadení zachovať našu prítomnosť (maintain persistence). Zameriame sa pritom na metódu využitia prihlasovacích skriptov (Logon Scripts) so súčasným popisom možností skrytia programových súborov prostredníctvom tzv. New Technology File System (NTFS) Alternate Data Streams (ADSs).
2.1.
2024
Python a kybernetická bezpečnosť – 11. časť
V dnešnej časti seriálu sa vrátime k téme získavania prihlasovacích údajov, naprogramujeme novú časť (stránku) vzorovej aplikácie a prakticky si predvedieme ďalší zo spôsobov útoku na cieľové zariadenie. Prihlásenie sa na cieľové zariadenie je jedným z najdôležitejších krokov potrebných pre následnú záškodnícku činnosť útočníka. Kompromitácia zariadenia je síce možná aj bez tohto kroku, avšak prihlásenie nám otvorí omnoho viac dverí a umožní nám vykonať omnoho viac aktivít. Práve preto je kvalita prihlasovacích údajov a takisto ich silná ochrana nesmierne dôležitá.
25.10.
2023
Python a kybernetická bezpečnosť – 10. časť
V tomto článku budeme pokračovať v „dobíjaní“ cieľového zariadenia pričom si popíšeme jednu z mnohých možností, resp. princípov ako na tomto zariadení zachovať našu prítomnosť (maintain persistence). V predošlých častiach seriálu sme si popísali aké máme možnosti čo sa týka hľadania a pripojenia k počítačovým sieťami a následne ako sledovať prevádzku v rámci týchto sietí s cieľom získania základných informácií o zariadeniach, ktoré sú k nim pripojené. Ďalším krokom je pripojenie k vybranému zariadeniu a vykonanie požadovaných úloh. Tento krok nateraz preskočíme a zameriame sa na následný krok – tzv. zachovanie perzistencie. Budeme sa pritom venovať viac princípu, resp. postupu práce, ako samotnému programovaniu.
9.10.
2023
Python a kybernetická bezpečnosť – 9. časť
V rámci tohto článku budeme pokračovať v rozvíjaní aplikácie Sieťový skener. Tentoraz sa zameriame na tzv. Domain Name System (DNS). Aplikáciu doplníme o jednoduchý DNS skener, prostredníctvom ktorého budeme môcť získavať informácie o úlohách, ktoré plní to ktoré sieťové zariadenie. Je totiž bežné, že prevádzkovatelia sieťových služieb nazývajú jednotlivé servre podľa účelu, na ktorý slúžia. To, či je v našom bezprostrednom okolí nainštalovaný nejaký DNS server, môžeme zistiť sledovaním prevádzky na všeobecne známom porte 53. DNS je ako kniha, ak ju vieme správne čítať, vieme z nej získať mnoho zaujímavých informácií.
9.10.
2023
Python a kybernetická bezpečnosť – 8. časť
Najdôležitejším cieľom druhej verzie našej aplikácie je byť čo najmenej „hlučný“. V minulej časti seriálu sme si spomínali, že „hlučnosť“ je veľmi nebezpečná a môže nás a našu činnosť veľmi rýchlo prezradiť. Presne takto rozmýšľajú aj potencionálni útočníci a snažia sa využívať čo najtichšie spôsoby sliedenia. Namiesto aktívneho zasielania rámcov či celých paketov, budeme iba ticho načúvať, resp. monitorovať sieťovú prevádzku. Nevýhodou takéhoto postupu je to, že nami požadované informácie nezískame okamžite, ale musíme čakať a priebežne vyhodnocovať množstvo prijatých údajov. Faktom je, že útočníci sledujú sieťovú prevádzku veľmi dlhú dobu, dokonca aj niekoľko rokov. Zhromažďujú informácie a až keď ich majú dostatok, vykonajú komplexný útok.
9.10.
2023
Python a kybernetická bezpečnosť – 7. časť
Počnúc touto časťou seriálu začneme programovať aplikáciu, ktorá nám pomôže lepšie pochopiť niektoré procesy prebiehajúce v sieťovom prostredí. Zopakujeme si pritom viaceré poznatky získané z predošlých častí seriálu. Pripravíme základný kód, ktorý budeme v nasledujúcich častiach rozširovať a dopĺňať o novú funkcionalitu. Vychádzame zo stavu, kedy máme naše zariadenie pripojené k počítačovej sieti (tzn. máme pridelenú IP adresu). Budeme vykonávať činnosť, ktorú by s veľkou pravdepodobnosťou vykonával aj potenciálny útočník.
22.6.
2023
Python a kybernetická bezpečnosť – 6. časť
Ak chceme ochraňovať naše systémy pred útočníkmi, musíme sa vžiť do ich pozície a rozmýšľať nad tým, čo a ako by sme urobili aby sme nepozorovane vykonali nekalú činnosť. Písali sme o tom, že ideálna možnosť je pripojiť sa k niektorej z bezdrôtových sietí nachádzajúcich sa v našom okolí. Je samozrejmé, že mnoho sietí je chránených šifrovaním a pripojiť sa k nim nebude ľahké. Ideálnou voľbou sú otvorené siete. V prípade zatvorených sietí sa môžeme pokúsiť prelomiť slabé kľúče (heslá), ktoré sú ich najčastejšou slabinou. V každom prípade je nevyhnutné vždy používať dobre zabezpečené zariadenie, ktoré neprezradí našu identitu a úmysly.
15.5.
2023
Python a kybernetická bezpečnosť – 5. časť
V predošlých častiach seriálu sme si povedali a prakticky predviedli niektoré možnosti získavania informácií o počítačových sieťach nachádzajúcich sa v našom okolí. Skenovanie je jednou z prvých aktivít v rámci prípravy na možné útoky. Poskytuje nám obrovské množstvo informácií, niektoré menej podstatné, avšak niektoré veľmi dôležité, ba dokonca také, ktoré nám naše budúce obete ponúkajú nevedome a nechcene. Našim cieľom je nájsť takú bezdrôtovú sieť, ku ktorej by sme sa mohli pripojiť. V prípade otvorených, tzv. „Free WiFi“ sietí, resp. sietí chránených šifrovaním WEP/WPA, sme vyhrali hneď na začiatku a môžeme sa venovať ďalším aktivitám. V prípade sietí so šifrovaním WPA2, alebo najnovším WPA3, je to už zložitejšie. Čo ale znamenajú tieto skratky?
15.5.
2023
Python a kybernetická bezpečnosť – 4. časť
Na konci predošlej časti seriálu sme si spomenuli jednu z mnohých aktívnych techník ovplyvnenia bezdrôtových sietí a síce vynútené odpojenie (deauthentication / disassociation) zariadení od prístupových bodov (AP – Access Point). Na to, aby sme mohli vynútené odpojenie prakticky realizovať, potrebujeme poznať fyzickú adresu konkrétneho AP (BSSID) a konkrétneho asociovaného zariadenia (Station MAC), ak teda nechceme zarušiť celú sieť broadcast vysielaním. Pretože týmito informáciami zatiaľ nedisponujeme, musíme našu aplikáciu doplniť o skener uvedených údajov, ktoré následne využijeme na tzv. WiFi Deauthentication (Deauth) Attack.
15.5.
2023
Python a kybernetická bezpečnosť – 3. časť
V tejto časti seriálu sa na chvíľku vrátime k teórii pričom si uvedieme niekoľko faktov, ktoré sa týkajú manažmentu bezdrôtového spojenia. Začneme tým, že bez prehnanej paranoje a bez glorifikácie konšpiračných teórií skonštatujeme, že ktokoľvek z nás, kto má práve pri sebe zapnutý bezdrôtový (cellular) telefón, resp. smartfón, alebo akékoľvek iné zariadenie podporujúce globálny systém mobilných komunikácií (GSM), alebo štandard 802.11, dobrovoľne, aj keď nevedome, oznamuje svetu svoje aktivity. Možno sa čudujete, prečo je to tak, kto to dovolil a prečo sa spomínaný únik informácií nedá nejako zakázať. Bohužiaľ tu nehovoríme o chybe technológií, ani o neochote na strane ľudí. Jednoducho je to cena, ktorú platíme za to, že chceme využívať služby založené na bezdrôtovom spojení.
14.1.
2023
Python a kybernetická bezpečnosť – 2. časť
V tejto časti seriálu sa doslova bezhlavo vrhneme do neprebádaných vôd a hneď zostra začneme programovať. Pri plnom vedomí toho, že sme si zatiaľ takmer nič nevysvetlili, pripravíme prvú verziu vzorovej aplikácie, ktorú budeme v nasledujúcich častiach dopĺňať o novú funkcionalitu. Ako základ nám poslúži kód, ktorý sme si už raz predstavili, avšak nateraz použijeme iné výkonné príkazy. Čo sa týka teórie, tú si budeme predstavovať postupne s uvedením vzťahu k jednotlivým príkazom a postupom. Chápeme, že bez ďalšieho štúdia potrebných detailov budú viaceré veci nejasné, avšak našim cieľom je čo najrýchlejšie prezentovať praktické aplikácie bez zdĺhavého venovania sa teórii.
14.1.
2023
Python a kybernetická bezpečnosť – 1. časť
S príchodom nového roku nasmerujeme náš seriál smerom k téme kybernetickej bezpečnosti (KB), ktorá je podmnožinou informačnej bezpečnosti (IB). Postupne si predstavíme základné možnosti a spôsoby využitia Pythonu v oblasti KB a takisto niekoľko jeho najzaujímavejších knižníc, ktoré dokážeme využiť na splnenie úloh spojených s KB. Táto časť bude úvodná, teoretická, zameraná na vysvetlenie základných pojmov. V ďalších častiach sa však preklopíme od teórie do praxe a ukážeme si viacero trikov ako využiť Python a jeho knižnice najskôr na pasívnu či aktívnu analýzu počítačových sietí a neskôr na ich ovplyvnenie. Tematika, ktorú budeme rozoberať, je určená začiatočníkom, avšak postupne sa budeme venovať aj sofistikovanejším postupom, z ktorých sa viaceré budú týkať nielen klientskych pracovných staníc, ale aj serverov.
21.11.
2022
Python 33
Python knižnice
Pamätám sa ako som pred viac ako 20-timi rokmi začínal s programovaním a mojou absolútnou túžbou bolo zobraziť pomocou Assembleru obyčajnú čiaru a neskôr rasterizovať trojuholník. V Pascale som sa snažil dopočítať k perspektívnemu 3D zobrazeniu niekoľkých čiar a neskôr v jazyku C riešil maticovú algebru. Moje strasti s ručným programovaním elementárnych prvkov vyriešila grafická knižnica OpenGL. Zistil som, že drvivá väčšina kódu, ktorú som sa snažil tak krvopotne vymyslieť, bola implementovaná v rámci uvedenej knižnice. Za tých 20 rokov sa svet programovania obrátil naruby a dovolím si konštatovať, že v dnešnej dobe neexistuje žiaden triviálny kód, ktorý by nebol implementovaný v rámci nejakej knižnice. Takisto si dovolím tvrdiť, že dnešný spôsob programovania je až neuveriteľne vzdialený od toho spred 20-tich rokov. Programátori už nevkladajú do kódu inštrukciu za inštrukciou, ale spájajú vopred pripravené bloky inštrukcií často s cieľom tzv. rýchleho vývoja aplikácií (Rapid Application Development).
21.11.
2022
Python 32
PyGLSL v2.1
V dnešnej časti seriálu o programovaní v jazyku Python sa posledný krát vrátime k aplikácii PyGLSL. Počas prípravy jej druhej verzie, v rámci ktorej sme na vykreslenie jednoduchej 3D scény využili funkcionalitu API Vulkan, sme sa zmienili, že definíciu vrcholov a farieb dvojice trojuholníkov, ktoré sú obsahom našej scény, sme zahrnuli do kódu shaderov. Naviac, v spomínanej verzii aplikácie sme na pokrytie trojuholníkov použili jednoduché farby bez aplikácie textúrovania. Externú definíciu vrcholov a textúrovanie je síce možné implementovať relatívne drobnými úpravami kódu, spomínaná funkcionalita je však neodmysliteľnou súčasťou moderných 3D aplikácií a práve preto ju nesmieme opomenúť.
21.11.
2022
Python 31
Programujeme cestou Guacamole
V tejto časti seriálu si predstavíme jeden z možných scenárov praktického využitia Guacamole prostredia na vzdialené programovanie (nielen) v Pythone. Po tom ako sme heroicky nainštalovali všetky komponenty potrebné na sfunkčnenie celého prostredia si dnes ukážeme čo sme tým dosiahli a akým spôsobom dokážeme využiť ponúkané služby vo svoj prospech.
21.11.
2022
Python 30
Vzdialené programovanie
V tejto časti seriálu sa na chvíľu odkloníme od témy Pythonu a to z dôvodu riešenia inej naliehavej veci. Každému z nás sa už v našom IT-programátorskom živote určite stalo, že sme sa dostali k zariadeniu, ktoré by sme vedeli využiť na rôzne IT aktivity vrátane programovania, avšak na ktorom sme nemali nainštalovaný potrebný softvér. Z dôvodu nechcenej modifikácie požičaného zariadenia sme doň neradi pridávali ďalší softvér, resp. nedisponovali sme potrebnými privilégiami. Východiskom sa môže zdať využitie služieb niektorej z aplikácií, ktoré ponúkajú vzdialený prístup k inému zariadeniu, na ktorom máme nainštalované všetko potrebné pre našu prácu. Problémom však je, že aj v tomto prípade musíme na požičané zariadenie nainštalovať nejakú klientskú aplikáciu. No a práve tento problém sa podarilo odstrániť spoločnosti Apache pomocou zaujímavého produktu Guacamole.
22.5.
2022
Python 29
Vulkan prakticky
Túto časť seriálu venujeme extrémne stručnému popisu praktickej aplikácie, v rámci ktorej využijeme funkcionalitu API Vulkan na vykreslenie jednoduchej scény. Hneď v úvode zopakujeme, že jazyk Python z pohľadu výkonu v žiadnom prípade nesiaha na jednoznačného lídra, ktorým je jazyk C. Efektivitu programového kódu takisto nemožno prehnane vyzdvihnúť pretože Vulkan si v oboch prípadoch vyžaduje omnoho náročnejšiu a hlavne rozsahovo väčšiu prípravu kódu. Čo si však môžeme z tohto článku odniesť je poznanie, že Python je svojou flexibilitou skutočne bezhraničný a okrem ostatnej funkcionality dokáže bez problémov pracovať s modernými programovacími rozhraniami, medzi ktoré patrí aj API Vulkan.
22.5.
2022
Python 28
Vulkan
Touto časťou seriálu budeme plynule pokračovať v popise grafických možností jazyka Python, tentoraz v spojitosti s API Vulkan. Hneď v úvode pripomenieme, že spájať Python s programovaním vysoko-výkonnej počítačovej grafiky nie je to pravé orechové. Napriek tomu stále existuje mnoho prípadov, kde toto spojenie vyniká a to najmä pre jeho vysokú efektívnosť. API Vulkan ako nástupca OpenGL síce omnoho plnohodnotnejšie využijeme v spojení s programovacím jazykom C a čo je najdôležitejšie, vôbec ho nemusíme preferovať pred starším OpenGL, avšak jeho znalosť nám určite rozšíri naše programátorské vedomosti a môže nás nasmerovať pri vývoji budúcich grafických aplikácií.
22.5.
2022
Python 27
PyOpenGL
V roku 2011, konkrétne v aprílovom vydaní magazínu Infoware, sme publikovali tretiu časť seriálu Programujeme GPU, v rámci ktorej sme predstavili zdrojový kód aplikácie glsl v1.0. O tri roky neskôr, v januári 2014, sme publikovali prvú časť seriálu Programujeme pre Android, v rámci ktorej sme transformovali kód uvedenej aplikácie tak, aby bol spustiteľný na platforme Android. Po ôsmych rokoch sme sa rozhodli ten istý kód oprášiť a napísať ho v jazyku Python. Bez preháňania musíme konštatovať, že sme túto úlohu splnili bravúrne. V prvom rade k tomu prispela jednoduchosť, produktívnosť a efektivita jazyka Python, k čomu sa následne pridala nadčasovosť našich aplikácií. Tým chceme fakticky upozorniť na to, že v roku 2011 sme pripravili a prezentovali kód, ktorý je s minimálnymi úpravami použiteľný aj v roku 2022. Svojou štruktúrou a obsahom dodržuje štandardy, ktoré sú stále platné, a ktoré sú základom pre ďalší vývoj v danej oblasti.
22.5.
2022
Python 26
PyCharm
Po tom ako sme si v úvodných častiach seriálu uviedli teoretické základy programovania v Pythone, sme neskôr pokračovali najmä v príprave rôznych webových aplikácií s použitím IDE (Integrated Development Environment) JupyterLab. Na úpravu drobných častí kódu sme občas použili vývojové prostredie IDLE, alebo jednoduchšie textové editory ako napr. UNIX vi, Kate, resp. GNU nano. Ako by to však vyzeralo, keby sme zabudli na IDE, pomocou ktorého by sme mohli písať klasické lokálne (newebové) aplikácie? Presne také IDE, na aké sme boli zvyknutí z dávnej minulosti keď sme začali písať naše prvé programy v jazyku Pascal, Basic, alebo C? Áno, podobné vývojové prostredia s plnohodnotným GUI (Graphical User Interface) rozhraním určené na vývoj (nie len) lokálnych aplikácií sú dostupné aj v prípade jazyka Python. A ako to už v dnešnej dobe býva, takých prostredí je hneď niekoľko.
19.12.
2021
Python 25
Django VI
V tejto časti seriálu sa rozlúčime s frameworkom Django a to detailnejším popisom tretej – poslednej verzie vzorovej aplikácie s názvom Spotreba energií. Nebudeme riešiť žiadne nové problémy. Našim cieľom bude zosumarizovať všetok doterajší kód a rozšíriť ho o aktivity, v rámci ktorých sa budeme venovať zápisu odpočtov spotreby elektriny a plynu. Najvýznamnejším rozšírením aplikácie je doplnenie grafických prehľadov priemernej dennej spotreby jednotlivých komodít.
19.12.
2021
Python 24
Django V
V minulej časti seriálu sme si predstavili druhú verziu vzorovej aplikácie, v rámci ktorej sme začali využívať metódy tried Manager a QuerySet a to bez toho, aby sme si vysvetlili ich význam. Práve preto sa k nim dnes vrátime a predstavíme si detaily ich funkcionality. Pripomeňme, že Manager je rozhranie, pomocou ktorého sú výstupy otázok smerujúcich na databázu (dB Queries) odovzdávané modelom. Výstupy manažéra sú sadou objektov triedy QuerySet. Objekty nachádzajúce sa v sade QuerySet možno po ich vytvorení mnohými spôsobmi filtrovať, limitovať a agregovať čím získavame požadované – konkretizované výstupy.
19.12.
2021
Python 23
Django IV
V dnešnej časti seriálu si predstavíme a detailne popíšeme algoritmy druhej verzie našej vzorovej Django aplikácie s názvom Spotreba energií v2.0. Do aplikácie doplníme všetky základné funkcie, ktorých existencia je nevyhnutná z dôvodu manažmentu záznamov nachádzajúcich sa v databázovej tabuľke. Okrem toho budeme dolaďovať grafický vzhľad aplikácie, riešiť jej odolnosť voči zadávaniu nekorektných vstupov a priebežne vykonávať jej testovanie.
23.10.
2021
Python 22
Django III
Posledné dve časti seriálu sme venovali teórii a informáciám, ktoré sa týkali tých najpodstatnejších detailov tvorby webových aplikácií s využitím frameworku Django. V tejto časti seriálu sa vrhneme na praktickú prípravu aplikácie a to riadne z ostra.
23.10.
2021
Python 21
Django II
V tejto časti seriálu si uvedieme viacero veľmi dôležitých detailov, ktoré musíme poznať predtým, ako sa naplno pustíme do tvorby Django projektov. Ukážeme si ako sprístupníme správcovskú web stránku a v závere sa začneme venovať tzv. zobrazeniam (Views).
23.10.
2021
Python 20
Django I
Pri hľadaní témy na ďalšiu časť seriálu som mal v úmysle predstaviť možnosti Pythonu pri práci s databázami. Najdôležitejšou podmienkou bola vizuálna reprezentácia a správa údajov uložených v databáze. Okrem predstavenia vybranej databázy teda bolo potrebné vybrať nástroj, ktorý by vytvoril prezentačnú vrstvu. V minulosti sme si predstavili frameworky Flask a Dash. Tentoraz vystúpime omnoho vyššie a budeme sa venovať frameworku Django. Teoretické informácie, ktoré uvedieme vo veľmi skrátenej forme, pretavíme do aplikácie, ktorá bude určená na správu údajov uložených v databáze MySQL a to prostredníctvom interaktívnej webovej stránky generovanej nástrojmi Django.
25.5.
2021
Python 19
Sliedič v.2
Dnešná časť seriálu bude priamym pokračovaním predošlej, v ktorej sme opísali funkcionalitu vzorovej aplikácie Sliedič v.1. Nadväznosť textového obsahu úzko súvisí s nadväznosťou programového kódu aplikácie. V podstate ide o rozšírenie jej prvej verzie o aktívnu časť. Tá bude realizovať tzv. poškodenie ARP záznamov. Ide o jeden zo základných spôsobov aktívneho sliedenia počítačových sietí.
25.5.
2021
Python 18
Sliedič v.1
V minulých častiach seriálu sme sa naučili ako pracovať so sieťovým manipulátorom Scapy. Súčasne sme si ukázali ako používať framework Dash a vytvárať pomocou neho prezentačnú vrstvu našich webových aplikácií. Dnes tieto naše ťažko nadobudnuté skúsenosti naplno zužitkujeme. Vytvoríme rozsiahlejšiu aplikáciu, pomocou ktorej implementujeme sieťový sliedič (sniffer). V prvej verzii aplikácii nebudeme do siete nijako zasahovať, tzn. aplikácia bude pracovať v čisto pasívnom móde. Môžeme si ju teda dovoliť spustiť kdekoľvek bez strachu, že by sme tým porušili bezpečnostné pravidlá.
8.4.
2021
Python 17
Skener dátovej siete II
Táto časť seriálu bude priamym pokračovaním predošlých dvoch článkov, v ktorých sme sa začali venovať skenom počítačových sietí. Dnes si dokončíme popis funkcií slúžiacich konkrétne na skenovanie portov. Hneď na to si popíšeme aplikáciu netmap, pomocou ktorej prakticky realizujeme jednotlivé skeny.
8.4.
2021
Python 16
Skener dátovej siete
V tejto časti seriálu budeme pokračovať v skenovaní počítačovej siete pričom sa zameriame na skenovanie pripojených zariadení. Budeme pritom vychádzať z informácií, ktoré už poznáme. Doplníme ich o podrobnosti týkajúce sa zasielania sieťových paketov a prijímania odpovedí. Prezentačná vrstva bude rovnaká – Dash, avšak detailnejšie rozpracovaná a doplnená o nové prvky. V úvode musíme zdôrazniť, že sa ideme venovať získavaniu detailných informácií o našej počítačovej sieti. Táto aktivita je obvykle prípustná v našom domácom prostredí, resp. po predošlom povolení od správcu siete. Bez tohto povolenia skeny nikdy nespúšťajme!
30.10.
2020
Python 15
Scapy
V tejto časti seriálu využijeme nadobudnuté vedomosti týkajúce sa frameworku Dash na vytvorenie grafického rozhrania aplikácie, ktorej úlohou bude skenovať dostupné bezdrôtové siete. Využijeme pritom vizuálne komponenty knižnice Plotly (tabuľka, stĺpcový graf). Programovú logiku postavíme na funkciách paketového analyzátora Scapy (https://scapy.net). Skenovať budeme bezdrôtové siete čím neporušíme žiadne legislatívne pravidlá. Technickým prostriedkom bude obyčajný PC s bezdrôtovým sieťovým adaptérom.
30.10.
2020
Python 14
Dash
Touto časťou seriálu síce nadviažeme na predošlé články, avšak diametrálne zmeníme prístup k tvorbe vzorovej aplikácie. Aj naďalej sa budeme venovať grafickej reprezentácii údajov prostredníctvom webových stránok. Budeme pracovať na štvrtej verzii aplikácie, ktorej úloha ostáva nezmenená a síce bude slúžiť na zobrazenie technických parametrov áut vo forme grafov. Framework Flask však vymeníme za jeho nadstavbu s názvom Dash čím kompletne zmeníme náš programátorský prístup k vývoju aplikácie.
30.10.
2020
Python 13
Čítanie Excelových tabuliek
V tejto časti seriálu si predstavíme tretiu verziu aplikácie cars_v3, ktorej hlavným rozšírením oproti predchádzajúcej verzii, je schopnosť čítania a prezentácie údajov uložených vo formáte Microsoft Office Excel. Samotné čítanie z Excelových súborov je realizované triviálne pomocou funkcií knižnice Pandas. Problematickejšiu časť kódu tvorí konverzia získaných údajov do stavu, v ktorom ich chceme prezentovať na našej webovej stránke.
30.10.
2020
Python 12
Grafická reprezentácia údajov
V tomto článku si predstavíme viacero možností grafickej reprezentácie údajov v rámci dynamicky vytváraných webových stránok. S využitím niekoľkých alternatív vytvoríme druhú verziu aplikácie, ktorej vlastnosti doplníme o možnosť vstupu údajov a ich grafickej vizualizácie.
30.10.
2020
Python 11
Webový prihlasovací formulár II
V tomto článku dokončíme popis algoritmu webového prihlasovacieho formulára verzie 1.0. Zameriame sa pritom na viaceré dôležité detaily algoritmu. V úvode si uvedieme adresárovú štruktúru aplikácie s umiestnením jej jednotlivých súborov. Následne sa zameriame na popis významu a funkcionality jej konkrétnych Python modulov a HTML súborov.
11.9.
2020
Python 10
Webový prihlasovací formulár I
V tejto a takisto aj v nasledujúcej časti seriálu sa budeme venovať prepojeniu Pythonu s webovým prostredím. Toto naše jasné smerovanie sleduje moderný trend tvorby programových diel, ktorého cieľom je sprístupniť aplikácie maximálnemu počtu používateľov so súčasným využitím výhod aplikačného prostredia typu klient-server. Jednou z najdôležitejších vlastností mnohých internetových stránok je autentifikácia, teda rozpoznanie – identifikácia konkrétneho používateľa. Často je to jeden z prvých krokov pri práci na danom portály a preto začneme práve touto témou. Vytvoríme jednoduchý webový prihlasovací formulár, ktorý okoreníme použitím tzv. jednorázového hesla (OTP – One Time Password).
11.9.
2020
Python 9
Kópia snímok z IP kamery
Mnohí z nás majú doma či v práci nainštalované tzv. IP kamery najrôznejšieho typu a využitia. Môže ísť pritom o jednoduché-lacné kamery alebo o zložitý-drahý kamerový systém. V každom prípade pokiaľ hovoríme o technológii IP, takéto kamery pripájame k bežnej počítačovej sieti, prostredníctvom ktorej následne využívame poskytované služby. Najčastejšie ide o sledovanie obrazu snímaného kamerou. V prípade ak chceme obraz sledovať mimo lokálnej počítačovej siete, často sa stretávame s pojmami ako PortForwarding, Public IP, DDNS, IPsec, Onvif, rtsp... Veľkou otázkou je počítačová bezpečnosť. Ďalšou je napr. ukladanie záznamu v lokálnom (domácom) prostredí, ktoré môže byť pri incidente kompletne kompromitované vrátane zničenia záznamu.
28.5.
2020
Python 8
Regulárne výrazy, PIP, JSON
Regulárne výrazy (Regular Expressions – RegEx) sú sekvencie znakov, ktoré tvoria tzv. vyhľadávací vzor (search pattern). PIP (Python Package Installer) je manažér balíčkov programovacieho jazyka Python. Na zdôraznenie faktu, že programovací jazyk Python je možné s výhodou využiť na prácu s databázami a ďalšími zdrojmi údajov, v krátkosti si predstavíme formát JSON (JavaScript Object Notation).
28.5.
2020
Python 7
Výnimky, objektovo orientované programovanie
Interpreter Pythonu pri vzniku chyby, ktorá nastane počas vykonávania programu (runtime error), vytvorí objekt nazývaný výnimka (exception). So zväčšovaním sa programových balíkov a s tým súvisiacim nabaľovaním kódu, ktorý už nepripravoval jediný programátor, ale veľká skupina ľudí, začalo programovanie nadobúdať omnoho väčšie rozmery. Údaje a im prislúchajúce funkcie preto začali byť zoskupované do celkov – objektov s cieľom systematizácie práce a čo najjednoduchšej orientácie v rozsiahlom programovom kóde. Vzniklo tak objektovo orientované programovanie (OOP).
28.5.
2020
Python 6
Súbory, množiny a pevné množiny, rekurzia
V čase kedy pracujeme so spusteným programom (runtime) sú všetky naše údaje uložené v pamäti počítača (RAM), ktorej obsah je po ukončení vykonávania programu, resp. pri vypnutí počítača, zmazaný. V prípade ak chceme spracovávané údaje uchovať pre budúce využite, musíme ich uložiť do súborov (files). Jednou z najbežnejších funkcionalít, ktorá je implementovaná v mnohých programovacích jazykoch, je tzv. rekurzia. Ide o programovú konštrukciu, v rámci ktorej funkcia volá samú seba.
28.5.
2020
Python 5
Typy, moduly, menné priestory
List je sekvenčné zoskupenie položiek (items), resp. elementov rôznych typov do jedného celku, ktorý ohraničujeme hranatými zátvorkami. Slovníky sú meniteľným dátovým typom, ktorý mapuje nemeniteľné kľúče (keys) k ľubovolným typom údajov. Modul je súbor, ktorý obsahuje definície a výkonné výrazy, ktoré môžeme využiť v rámci našich programov. Menné priestory (namespaces) sú kolekcie identifikátorov, ktoré patria konkrétnemu modulu, resp. funkcii.
21.2.
2020
Python 4
Funkcie, reťazce, typy
Funkcia je pomenovaná sekvencia výrazov, ktoré tvoria jeden funkčný celok. Ich primárny význam je štrukturalizácia programov na menšie celky. Pomocou funkcií zjednodušujeme kód programov a to tým, že väčšie, často opakujúce sa sekvencie výrazov nahrádzame jednoduchým výrazom, resp. volaním funkcie.
11.12.
2019
Python 3
Tok programu
Interpreter Pythonu vykonáva kód programu krok za krokom, resp. riadok za riadkom. Hovoríme pritom o tzv. toku vykonávania (flow of execution) programu, ktorý môže byť zmenený niekoľkými možnými spôsobmi. Všetky sú pritom založené na tzv. podmienenom vykonávaní (conditional execution). Pomocou podmienok dokážeme riadiť vykonávanie programu, resp. meniť jeho tok nami požadovaným smerom.
11.12.
2019
Python 2
Programovanie programu
11.12.
2019
Python 1
Úvod
Programovací jazyk Python (python.org) sa za posledný rok stal najdynamickejšie sa rozvíjajúcim jazykom a má viaceré predpoklady stať sa jedničkou v konkurencii omnoho silnejších hráčov. Seriál rozdelíme na dva väčšie celky. Prvý bude obsahovať všeobecné základy programovania v jazyku Python. V druhom sa budeme venovať rozšíreným možnostiam Pythona, resp. riešeniu konkrétnych problémov. Informácie o jazyku Python môžeme získať z extrémneho množstva informačných zdrojov – elektronických aj tlačených. V dnešnej dobe so všadeprítomným Internetom nie je najmenší problém nájsť zdroje, ktoré hĺbkovo popisujú nielen samotný jazyk, ale aj jeho špecifiká a rozdiely v porovnaní s inými programovacími jazykmi. Ambíciou tohto seriálu je informácie roztrúsené na rôznych miestach zosumarizovať a podať v ucelenej podobe.
- Článok: cl1.doc
- Publikované v PC Revue 10/2019
| |