Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Bezpieczna sieć IoT z Arduino Yun

ghost666 26 Lis 2015 19:21 7458 7
  • Bezpieczna sieć IoT z Arduino Yun


    Moduł Arduino Yun jest świetnym sposobem, aby wejść w tematykę Internetu Rzeczy (IoT). Arduino Yun to niewielki moduł integrujący w sobie Linuxa na Układzie z światem Arduino. Poniższy projekt jest wprowadzeniem w tematykę Arduino Yun, oprogramowywanie sensorów w Pythonie i PHP oraz w tworzenie zabezpieczeń w sieci. Całość omówiona jest na przykładzie internetowego sensora temperatury. W układzie istnieje także możliwość sterowania diodą LED poprzez sieć, z wykorzystaniem PHP.

    Autor poradnika zakłada, że czytający miał już jakieś doświadczenie z Arduino i zna podstawy obsługi komputera i sieci. W innych poradnikach można przeczytać o wykorzystaniu API do sterowania modułem, jednakże autor zdecydował się na inne podejście - z wykorzystaniem Pythona i PHP - jako że API jest mało funkcjonalne i dosyć wolne.

    Krok 1: Opis modułu Arduino Yun

    Bezpieczna sieć IoT z Arduino Yun


    Najprościej jest spojrzeć na moduł Yun jak na Arduino połączone z systemem Linux pracującym pod OpenWRT. Arduino i OpenWRT mogą się ze sobą komunikować poprzez wewnętrzne połączenie, ale ponadto nie są ze sobą mocno związane. Moduł ten może pracować jako samodzielny moduł Arduino lub samodzielna maszyna pod kontrolą systemu Linux, ale skoro są już połączone razem, to czemu by nie wykorzystać tego do wytworzenia ciekawego urządzenia?

    Arduino Yun ma wbudowane WiFi, ethernet, USB, slot na kartę SD i oczywiście wyprowadzenia w standardzie Arduino. Karta SD jest bardzo przydatna do przechowywania danych, więc warto o niej pamiętać.

    Krok 2: Sieć i Yun

    Bezpieczna sieć IoT z Arduino Yun Bezpieczna sieć IoT z Arduino Yun Bezpieczna sieć IoT z Arduino Yun






    Aby podłączyć Yun do sieci uruchamiamy moduł, pozwalając mu załadować system i czekamy minutę lub dwie. Na komputerze odnajdujemy sieć WiFi, która nazywać się będzie Arduino_12345678, gdzie cyfry 12345678 to numer MAC modułu Yun. Domyślne IP modułu to 192.168.240.1. Wpisując ten adres do przeglądarki przechodzimy do menu konfiguracyjnego.

    W menu wpisujemy SSID naszej sieci bezprzewodowej oraz hasło. Następnie zapisujemy i resetujemy urządzenie, które po ponownym uruchomieniu się połączy się z zdefiniowaną siecią WiFi.

    Krok 3: Wykorzystanie Arduino IDE

    Bezpieczna sieć IoT z Arduino Yun


    W Arduino IDE istnieje możliwość konfiguracji modułu Yun przez WiFi lub USB. Aby wykorzystać sieć bezprzewodową konieczne jest obsługiwanie Bonjour lub mDNS w sieci. W domowym WiFi nie będzie to raczej problemem, ale z sieciami firmowymi bywa różnie i takie rozwiązanie może nie działać i lepiej będzie wykorzystać sieć lokalną.

    W Arduino IDE wybieramy w menu Tools Arduino Yun w polu "Board", a w menu portów wyszukujemy nasze urządzenie. Jeśli nie pojawia się tam sieć WiFi, to resetujemy układ i próbujemy ponownie lub łączymy moduł z komputerem za pomocą USB.

    Krok 4: Mruganie diodą

    Bezpieczna sieć IoT z Arduino Yun


    Pierwszą rzeczą, jaką każdy powinien zrobić testując moduł Arduino jest mruganie diodą. Ładujemy sketch pod nazwą Blink, który znajduje się w podstawowych przykładach w Arduino IDE.

    Jeśli dioda mruga i układ działa, przechodzimy do następnego kroku.

    Krok 5: Linux na Yun

    Bezpieczna sieć IoT z Arduino Yun Bezpieczna sieć IoT z Arduino Yun


    To, co czyni Yun tak potężnym narzędziem do obsługi siecio IoT jkest wbudowany Linux. Zapoznajmy się odrobinę z tym systemem. Wbudowany w opisywany moduł Linux oparty jest o OpenWRT - szeroko znany system dla platform embedded. Poprzez SSH można zalogować się do systemu wykorzystując dowolny terminal, zależnie od systemu:

    Code:
    ssh root(malpa)yourArduino.local


    Z pomocą komendy df -h dowiemy się, ile pozostaje w systemie wolnego miejsca dla plików, a ls pozwoli nam wyświetlić, jakie pliki znajdują się w systemie. Zwróćmy uwagę na /mnt/sda1 - w tym folderze zamontowana jest karta SD, jeśli takowa jest obecna w naszym urządzeniu.

    Krok 6: Foldery na karcie SD.

    Bezpieczna sieć IoT z Arduino Yun


    Na karcie SD zapisywać i odczytywać będziemy pliki, gdyż pamięć znajdująca się w module ma ograniczoną liczbę cykli zapisu i odczytu. Jakkolwiek w realistycznym przypadku raczej nigdy nie dojdziemy do maksymalnej liczby zapisów na wbudowanej pamięci, to po co ryzykować? Poza tym, zawsze dodatkowym plusem jest możliwość wczytania karty SD bezpośrednio do komputera.

    Po załadowaniu do Arduino sketchu wykorzystującego interfejs webowy na karcie SD pojawią się (a przynajmniej powinny) pewne foldery, potrzebne do działania. Jeśli chcemy uniknąć problemów, możemy założyć te foldery samodzielnie:

    mkdir /mnt/sda1/arduino
    mkdir /mnt/sda1/arduino/logs
    mkdir /mnt/sda1/arduino/web
    mkdir /mnt/sda1/arduino/phplib
    mkdir /mnt/sda1/arduino/db

    Arduino Yun wykorzystuje uhttpd jako serwer sieci web. Domyślnym folderem dla zawartości sieciowej da tego serwera jest /www. Folder /www/sd w pamięci układu jest dowiązaniem symbolicznym do folderu /mnt/sda1/arduino/www na karcie pamięci. Jeśli go nie ma, musimy go stworzyć:

    Code:
    ln -s /mnt/sda1/arduino/www /www/sd  
    
    ls -al


    Krok 7: Arduino Yun - webowe "hello world"

    Bezpieczna sieć IoT z Arduino Yun


    Docieramy teraz do momentu, w którym pojawia się wiele rozwiązań tego samego problemu. Można wykorzystać IDE do do załadowania plików na urządzenie oraz do dostępu poprzez mostek do mikrokontrolera, do czego wykorzystać trzeba javascript oraz API. Autor uważa, że metoda ta jest powolna i daje małe możliwości, jednakże wykorzystana została w celach pokazowych.

    Tworzymy pusty sketch, który nazywamy HelloWorld.ino. W folderze projektu tworzymy folder www,, w którym tworzymy plik index.html, w którym umieszczamy następujący kod HTML:

    Kod: html
    Zaloguj się, aby zobaczyć kod


    I zapisujemy plik.

    Krok 8: Ładowanie sketchu

    Bezpieczna sieć IoT z Arduino Yun
    Bezpieczna sieć IoT z Arduino Yun


    Ładujemy sketch do modułu Arduino, jeśli otrzymujemy błąd "Problem accessing board folder /mnt/sd" to oznacza, że źle zrealizowaliśmy dowiązanie symboliczne, o którym pisano powyżej.

    Teraz możemy wejść na http://TwojeArduino/sd/HelloWorld i zobaczyć umieszczoną tam stronę.

    I gotowe, wszystko działa. Pamiętajcie, że pliki zostaną przesłane tylko, jeśli korzystamy z połączenia sieciowego - poprzez USB IDE nie będzie transferowało plików.

    Krok 9: Prosty czujnik temperatury

    Bezpieczna sieć IoT z Arduino Yun


    W przykładach znaleźć możemy projekt TemperatureWebPanel. Zaimplementujemy podobny projekt, jednak oparty o PHP z dodanymi zabezpieczeniami, niezwykle przydatnymi w sieci IoT. Układ budować będziemy w oparciu o sensory LM35/LM35. Są bardzo łatwe do podłączenia - pin 1 do zasilania (5 V), pin 2 do wejścia A1 a pin 3 do masy. Napięcie odczytuje się jako wartość od 0 do 1023.

    Aby uzyskać wartość napięcia musimy podzielić odczytaną wartość przez 1023 i pomnożyć przez 5:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Krok 10: Program do pomiaru temperatury

    Zanim zaczniemy przesyłać temperaturę po sieci, przetestujmy działanie programu odczytując temperaturę poprzez port szeregowy. Aby to było możliwe, musimy podłączyć układ do komputera poprzez USB. Po kolei musimy: zdefiniować pin odczytu napięcia, zainicjalizować port szeregowy i odczytać napięcie, a następnie dokonać konwersji na temperaturę i wysłać wartość poprzez port szeregowy. Program wygląda następująco:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Krok 11: Python i Arduino Yun

    Na tym etapie jesteśmy już w stanie odczytać temperaturę poprzez port szeregowy, ale sprawdźmy jakby to było, gdyby spróbować zrobić to samo z pomocą Pythona.

    Poniżej znajduje się program napisany w tym języku, który odczytuje wartość z portu A1 przesłaną z Arduino do Linuxa. Warto zwrócić uwagę na dodanie najpierw biblioteki bridge i korzystanie z bridge.get() do odczytu wartości przesyłanych przez mostek z Arduino.

    Kod: python
    Zaloguj się, aby zobaczyć kod


    Krok 12: Wykorzystanie komunikacji przez mostek w sketchu

    Teraz musimy zmusić także Arduino do komunikacji poprzez mostek, aby dane mogły zostać odczytane przez program umieszczony na Linuxowej części urządzenia. Aby to osiągnąć, wykorzystamy funkcję Bridge.put(jakaś_wartość). Dzięki temu zmienna jakaś_wartość może być odczytywana pod Linuxem - tak z wykorzystaniem Pythona, jak i PHP, dzięki czemu ten sam program może być wykorzystywany do komunikacji z różnym oprogramowaniem pod Linuxem. Kod źródłowy programu wygląda następująco:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Krok 13: Skrypty PHP na Arduino Yun

    Na tym etapie jesteśmy już w stanie wysłać wartość temperatury poprzez port szeregowy. Spróbujmy teraz wykorzystać PHP, aby można było odczytywać ją po sieci. Aby to zrobić, musimy zmienić kilka wpisów w uhttpd.conf. Logujemy się poprzez SSH na Yun i tam podajemy komendy:

    Code:
    opkg update
    
    opkg install php5 php5-cgi php-json php5-mod-sockets


    Zmieniamy (odkomentowujemy) następujące linie w php.ini:

    vi /etc/php.ini
    extension=session.so
    extension=sockets.so

    Oraz w pliku uhttpd.conf:

    vi /etc/config/uhttpd
    list interpreter ".php=/usr/bin/php-cgi"

    Resetujemy uhttpd:

    Code:
    /etc/init.d/uhttpd restart



    Krok 14: Programowanie w PHP na Arduino Yun

    Bezpieczna sieć IoT z Arduino Yun


    Do przetestowania działania serwera PHP napiszemy prosty programik w typie Hello World. W folderze /ww/sd, czyli na karcie SD tworzymy helloworld.php, którym zapiszemy:

    Kod: php
    Zaloguj się, aby zobaczyć kod


    Możemy teraz przejść pod adres: http://arduino.local/sd/helloworld.php i zobaczyć wynik działania serwera

    Krok 15: Skrypt PHP na Arduino Yun

    Chcemy przesyłać poprzez sieć dane z sensora temperatury. Wykorzystujemy do tego PHP z funkcją Bridge.get() i Bridge.put() po stronie mikrokontrolera. Odczytywaliśmy ją z wykorzystaniem Pythona, więc to samo powinno być możliwe z wykorzystaniem PHP. Oto jak zostanie to zrealizowane:

    * Kod PHP komunikować się będzie z Arduino poprzez mostek, wykorzystując odpowiednią bibliotekę - trzeba ją zaimportować.
    * Wysyłamy wartość i nazwę zmiennej poprzez put:

    Kod: PHP
    Zaloguj się, aby zobaczyć kod


    * Wartość odbieramy poprzez get:

    Kod: php
    Zaloguj się, aby zobaczyć kod


    Kod naszej strony, prezentującej temperaturę prezentuje się następująco:

    Kod: php
    Zaloguj się, aby zobaczyć kod



    Po stronie Arduino musimu odczytywać pewne dane z PHP poprzez Bridge.get(nazwa zmiennej po stronie PHP, zmienna lokalna do przechowywania danych, długość zmiennej). Dane odczytujemy jako znaki (char) w pętli while. Podczas używania tej procedury koniecznie trzeba znać długość importowanego ciągu znaków.

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Co ze stringami?

    Kod: php
    Zaloguj się, aby zobaczyć kod



    Krok 16: Arduino Yun i kontrola diody LED przez PHP

    Bezpieczna sieć IoT z Arduino Yun


    Poniżej znajduje się prosty przykład, który umożliwia kontrolę diody LED poprzez PHP z wykorzystaniem Arduino Yun. Do pinu 3 modułu podłączamy diodę LED poprzez opornik 220 Ω. Ładujemy plik .ino do Arduino, a plik w PHP wgrywamy na kartę SD jako /www/sd/controlLED.php. Pliki ze źródłami możemy znaleźć na stronie źródłowej projektu (link na samym dole).

    Program dla Arduino wygląda następująco:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Krok 17: Projektowanie internetowego monitora temperatury

    Zastanówmy się, jakie mamy wymagania, jeśli chodzi o monitorowanie temperatury.

    1. Wyświetlanie temperatury po sieci web.
    2. Ograniczenie poziomów temperatury do pewnego zakresu.
    3. Powiadomienia o przekroczeniu przez e-mail.
    4. Wyświetlanie wartości temperatury lokalnie, na urządzeniu.
    5. Uwierzytelnianie użytkownika przed odczytaniem temperatury.
    6. Odświeżanie wartości temperatury po sieci, dzięki czemu przy zmianach w systemie nie będziemy musieli zmieniać zawartości plików .ino.

    Aby to osiągnąć, wykorzystamy:

    1. 10-segmentowy wyświetlacz LED aby prezentować temperaturę w postaci rosnącego słupka.
    2. Dane dotyczące wysyłanych e-maili trzymane będą w bazie danych.
    3. Ograniczenia temperatury - górne i dolne - zapisane będą w bazie danych.
    4. Stworzono konto administratora z hasłem kodowanym sha256 z wykorzystaniem soli.
    5. Administrator będzie mógł zmieniać hasło.
    6. Skrypt napisany w Pythonie wykorzystany zostanie do nadawania alarmów przez crontab.
    7. Kolejny skrypt Pythona odpowiedzialny będzie za wyświetlanie ograniczeń temperatury.
    8. W razie przekroczenia zaprogramowanych wartości uruchamia się zdefiniowany skrypt Pythona.
    9. Do uwierzytelniania użytkownika na stronie wykorzystano sesje o skończonym czasie.
    10. Zabezpieczenie przed XSS i SQLi.
    11. Logowanie nieudanych prób zalogowania do systemu.
    12. Panel administratora wykorzystuje HTTPS.

    Krok 18: Sketch na Arduino do monitorowania temperatury i prezentacji wartości w sieci.

    Poniższy program służy do obsługi termometru (LM35) i 10-segmentowego wyświetlacza LED. Program wykorzystuje mostek wraz z odpowiednią biblioteką do odczytywania zaprogramowanych ograniczeń ze skryptu Pythona i prezentuje je na wyświetlaczu LED.

    Ważne funkcje:

    Odczyt ograniczeń ze skryptu poprzez mostek:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Ze skryptu korzystamy do ustawienia zakresu i wyświetlania do na diodach LED:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Program oczywiście wysyła też dane poprzez mostek (Bridge.put):

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Krok 19: Aplikacja monitorująca w Pythonie

    Do monitorowania temperatury wykorzystujemy skrypt napisany w Pythonie. Skrypt ten także odpowiadać będzie za informowanie sketchu na Arduino o limitach temperatury.

    Pracę nad skryptem zacząć musimy od zainstalowania potrzebnych bibliotek:

    Code:
    opkg update
    
    opkg install python-sqlite3 php5-mod-sqlite3 sqlite3-cli php5-mod-hash


    Oraz utworzenia bazy danych w /mnt/sda1/arduino/db/:

    Code:
    sqlite3 tempDB.sql3 
    
    CREATE TABLE admin( adminid INTEGER PRIMARY KEY ASC, llimit, ulimit, mxserver, mailfrom, mailto);
    CREATE TABLE users( userid INTEGER PRIMARY KEY ASC, username, password, salt, email);
    insert into admin (llimit, ulimit, mxserver, mfrom) values(50, 90, 'mx.example.com', 'joe@example.com');

    .quit


    Tworzymy finalnie folder dla skryptu:

    Code:
    mkdir /mnt/sda1/arduino/scripts
    
    vi yuntemp,py


    Sam skrypt wygląda następująco:

    Kod: python
    Zaloguj się, aby zobaczyć kod


    Następnie dodajemy crontab korzystając z polecenia crontab -e.

    Teraz mamy do stworzenia 6 plików PHP (index.php, login.php, admin.php, header.php, footer.php i temp-lib.php). Na tym etapie musimy zadbać o bezpieczeństwo systemu.

    Plik index.php odpowiedzialny będzie za wyświetlanie temperatury, header and footer oszczędzą nam kilka linii w kodzie. Plik admin.php zawierać będzie panel administracyjny, a login.php pozwoli się do niego zalogować. Do przechowywania wielokrotnie używanego kodu wykorzystamy temp-lib.php. Wszystkie pliki, za wyjątkiem temp-lib.php powinny znajdować się w /mnt/sda1/arduino/www. temp-lib.php zapisujemy w /mnt/sda1/arduino/phplib

    Krok 20: UHTTPD

    Zanim przejdziemy dalej musimy upewnić się, że HTTPS działa na naszym module. Dodajemy więc plik indes.php do listy w pliku /etc/config/uhttpd
    • W sekcji "main" dodajemy:

    Code:
    option 'index_file' 'index.htm index.html index.php' 
    
    option 'index_page' 'index.htm index.html index.php'


    • Resetujemy UHTTPD:

    Code:
    uhttpd /etc/init.d/uhttpd restart


    Krok 21: PHP

    Bezpieczna sieć IoT z Arduino Yun


    Zabezpieczenia naszej aplikacji są dosyć proste, ale jest ich sporo. Zapewnienie bezpieczeństwa to sprawa warstwowej konstrukcji systemu - żadne pojedyncze zabezpieczenie nie jest w stanie zapewnić bezpieczeństwa, dlatego też stosuje się warstwowe struktury. Upewnijmy się, że korzystamy z HTTPS przy pomocy funkcji znajdującej się w pliku temp-lib.php - httpsCheck - zwraca ona informację, czy połączenie korzysta z HTTPS.

    Dodatkowo program sprawdza też wielkość hasła, co zapewnia kontrolę nad zajmowaną przez nie przestrzenią w pamięci karty SD. To zabezpiecza przed utworzeniem bardzo długiego hasła, co zapełniłoby kartę SD. Sprawdzamy także następujące zmienne sesji:

    Czy IP jest takie samo, z jakiego się zalogowano?
    Czy zapytanie POST pochodzi z naszego serwera sieci web?
    Czy USER AGENT jest taki sam, jaki zalogował się do systemu?
    Czy sesja nie jest starsza niż 39 minut?

    Logujemy wszystkie nieudanelogowania do pliku error_log. Następnie zabezpieczamy nasze SQLite3 przed atakiem typu SQL injection:

    Korzystamy z strip_tags() aby utrzymać wejście w 'czystości'.
    Hasło przechowujemy dodając Sól do hasła użytkownika i hashując całość.

    Krok 22: Sprawdzanie sesji PHP

    Za każdym razem, gdy ktoś sprawdza stronę, sprawdzamy zmienne sesji:

    Kod: php
    Zaloguj się, aby zobaczyć kod



    Krok 23: Sprawdzanie HTTPS w PHP

    Sprawdzamy SERVER['HTTPS'] aby dowiedzieć sie, czy klient używa https:

    Kod: php
    Zaloguj się, aby zobaczyć kod



    Krok 24: Strip_Tags

    Aby zapewnić sobie czyste wejście, pozbawione tagów (co uniemożliwia SQLi) wykorzystujemy funkcję strip_tags(). Kod prezentuje się następująco:

    Kod: php
    Zaloguj się, aby zobaczyć kod


    Krok 25: Sprawdzanie wartości numerycznych i zmiennych w PHP

    Na tym etapie sprawdzamy na wartości wprowadzonych zmiennych - powinny one tworzyć trzy klasy zmiennych o różnej długości, ustalonej w programie.

    Kod: php
    Zaloguj się, aby zobaczyć kod


    Krok 26: Logowanie danych w PHP

    Wykorzystujemy formularz PHP error_log do zapisywania nieudanych prób logowania do systemu.

    Kod: php
    Zaloguj się, aby zobaczyć kod


    Krok 27: Biblioteka funkcji do kodu w PHP

    Załączona poniżej biblioteka powinna znaleźć się w folderze /mnt/sda1/arduino/phplib .

    .
    Kod: php
    Zaloguj się, aby zobaczyć kod


    Krok 28: Index.php

    Załączony poniżej plik umieszczamy w /mnt/sda1/arduino/www

    Kod: php
    Zaloguj się, aby zobaczyć kod


    Krok 29: Panel administratora

    Panel administratora ma wbudowane bardzo wiele funkcji. Wymagają one uwierzytelniania przed wprowadzaniem zmian w informacje o systemie i jego konfiguracją.

    Kod: php
    Zaloguj się, aby zobaczyć kod


    Krok 30: Strona logowania i wylogowania

    Strona logowania jest bardzo prosta, jedyne co jest w niej istotne, to upewnienie się, że wykorzystujemy HTTPS.

    Strona wylogowania wywołuje jedynie zdefiniowaną wcześniej funkcję do wylogowania się:

    Kod: php
    Zaloguj się, aby zobaczyć kod


    Krok 31: Gotowe

    Bezpieczna sieć IoT z Arduino Yun


    Nasz bezpieczny termometr z dostępem do sieci jest gotowy, ale pamiętajmy, że to nie koniec - dodać można jeszcze wiele funkcji, służących poprawie bezpieczeństwa, takich jak blokowanie złych prób zalogowania, możemy utworzyć różnych użytkowników i grupy, ale zaprezentowany powyżej projekt daje dobry punkt wyjścia do dalszych rozwinięć i pokazuje możliwości Arduino Yun.

    Autor planuje drugą część projektu, w której poziom zabezpieczenia układu ma wzrosnąć poprzez dodanie SNMP do opisanej aplikacji.

    Wszystkie pliki źródłowe pobrać można ze strony projektu (poniżej).

    Źródła:
    http://www.instructables.com/id/Secure-IoT-with-the-Arduino-Yun/?ALLSTEPS
    https://www.arduino.cc/en/Main/ArduinoBoardYun


    Fajne!
  • #2 27 Lis 2015 10:37
    michał_bak
    Poziom 15  

    Chętnie przeczytałbym ale muszę trzy razy przewijać w poziomie.
    To już kolejny rekord, szkoda bo zawsze chętnie czytam pańskie teksty.

  • #3 27 Lis 2015 11:06
    ghost666
    Tłumacz Redaktor

    michał_bak napisał:
    Chętnie przeczytałbym ale muszę trzy razy przewijać w poziomie.
    To już kolejny rekord, szkoda bo zawsze chętnie czytam pańskie teksty.


    Sprawdzałem kilkukrotnie artykuł, m.in. pod kątem obecności znaków niedrukowalnych i nie wiem co może powodować takie rozjeżdżanie się formatowania...

  • #4 27 Lis 2015 11:32
    xamrex
    Poziom 28  

    ghost666 napisał:
    Sprawdzałem kilkukrotnie artykuł, m.in. pod kątem obecności znaków niedrukowalnych i nie wiem co może powodować takie rozjeżdżanie się formatowania...

    Może to:
    Krok 3: Wykorzystanie Arduino IDE[/b[
    albo
    [b]Krok 4: Mruganie diodą
    Chodzi mi o niezamknięty tag pogrubaiający gdzieś?

  • #6 25 Gru 2015 15:50
    Janusz_kk
    Poziom 12  

    Gratulacje dla Autora i Tłumacza za ładne opisanie możliwości i przykład wykorzystania modułu, dla tłumacza za doskonałe tłumaczenie.

    Pozdrawiam
    Janusz

  • #7 25 Lut 2017 18:09
    zurzada
    Poziom 1  

    Krok 13
    Ma problem z instalacja * opkg_install_cmd: Cannot install package php-json.
    Możesz mi udzielić więcej informacji gdzie i jak mam to odkomentować?

  • #8 04 Maj 2017 20:54
    Bojleros
    Poziom 14  

    Cześć,

    Ciekawy art. Taki tandem mikrokontrolera z mikroprocesorem SoC daje dość fajną możliwość. Zawsze mnie irytowała myśl o zaszywaniu bibliotek SSL/TLS w firmware i potem dostarczaniu aktualizacji do tego. Taki podział ma sens a przy odrobinie sprytu ten MIPS powinien się dać aktualizować bez resetowania ATmegi. Idea ciekawa ....

    PS.

    ghost666 napisał:
    Dodatkowo program sprawdza też wielkość hasła, co zapewnia kontrolę nad zajmowaną przez nie przestrzenią w pamięci karty SD. To zabezpiecza przed utworzeniem bardzo długiego hasła, co zapełniłoby kartę SD


    Teoretycznie można by tak zapełnić RAM ale większość poważniejszych systemów jest już na to dawno odporna bo przetwarza tylko n pierwszych znaków z wejścia a resztę sobie odpuszcza. Flash można załatwić czymś takim jedynie pod warunkiem że hasło siedzi w nim otwartym tekstem a soft nie ma żadnego ograniczenia długości hasła na wejściu. Normalnie hasła zapisywane są w postaci nieodwracalnego skrótu, którego długość jest z góry przewidywalna więc jak wpiszesz "Ala" albo "TadekNiejadek" dostaniesz skrót o tej samej długości.

    ghost666 napisał:
    Autor planuje drugą część projektu, w której poziom zabezpieczenia układu ma wzrosnąć poprzez dodanie SNMP do opisanej aplikacji.


    Teoretycznie po SNMP można by wyciągać wartości pomiarów ale SNMP samo z siebie nie ma nic wspólnego z bezpieczeństwem a w pewnych wersjach wręcz przeciwnie.

    PS. Zapisywanie danych do sqllite wykończy flash tak samo jak każdy inny cykliczny zapis.

    Pozdrawiam,

 Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME