Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 18 kwi 2024, o 17:32


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 12 ] 
Autor Wiadomość
PostNapisane: 20 maja 2021, o 15:12 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 lut 2013
Posty: 148
Lokalizacja: KTT
Pomógł: 1

... na temat zabezpieczenia programu.

Witam,
Ostatnio czytałem na temat lock-bitów w AVR-ach (a konkretnie w XMwega) pod kątem zabezpieczenia procka przed niepowołanym dostępem. Okazuje się, że to nie jest takie oczywiste jak się wydaje, ponieważ po zabezpieczeniu procka przed odczytem z FLASH, mogą być problemy z odwołaniem się do stałych w pamięci FLASH.
Jednocześnie zainteresowałem się sygnaturą produkcyjną w prockach xmega i widzę po typie strukturalnym NVM_PROD_SIGNATURES_t, że zapisanych jest tam sporo danych.
Zastanawia mnie czy każdy egzemplarz procka ma swoje unikalne informacje w tej strukturze i czy można ją wykorzystać do zabezpieczenia programu?
Pomysł jest taki, żeby przy starcie programu odczytywać te dane i sprawdzać z danymi danego porcka zapisanymi np. w jakiejś tabeli we flash. Jeśli tak, program idzie dalej, jeśli nie to koniec (pułapka programowa). Czyli program nie pójdzie na innym procku niż ten, na który został napisany.

Mam tylko problem z realizacją tego pomysłu w eclipse. Czy są jakieś proste sposoby na odczytanie tych informacji (z sygnatury produkcyjnej) i realizację mojego pomysłu? Czy są one unikalne dla każdego egzemplarza? Będę wdzięczny za podpowiedzi i sugestie.

_________________
Gordon



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 maja 2021, o 14:06 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 lut 2013
Posty: 148
Lokalizacja: KTT
Pomógł: 1

Już wiem, że informacje w sygnaturze produkcyjnej są unikalne dla każdego procka. Pozostaje kwestia ich odczytania w programie.
Chyba nikt oprócz mnie się nad tym nie zastanawiał...

_________________
Gordon



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 maja 2021, o 14:38 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2013
Posty: 485
Lokalizacja: Siedlce
Pomógł: 9

gordon10 napisał(a):
Chyba nikt oprócz mnie się nad tym nie zastanawiał...


Kolego zastanawiał, zastanawiał... ;)
viewtopic.php?p=224996#p224996

_________________
Ucz się ucz ,bo po to tutaj jesteś...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 cze 2021, o 15:54 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 lut 2013
Posty: 148
Lokalizacja: KTT
Pomógł: 1

To już jest nas co najmniej dwóch :)
Z mojej wiedzy w Atmel Studio są specjalne funkcje we frameworku ASF do odczytu tych informacji z Xmega. Tylko jak to zrobić w Eclipse (ja nie używam AS)???
W Xmega dostępem do pamięci zajmuje się kontroler NVM, za jego pomocą można się dobrać do danych z sygnatur produkcyjnej i użytkownika. Jednak teoria teorią, ale praktycznie tego nie rozkminiłem.

_________________
Gordon



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 cze 2021, o 10:20 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 lut 2013
Posty: 148
Lokalizacja: KTT
Pomógł: 1

Grzebiąc dalej w necie i w pdf-ach stworzyłem 'szkic' funkcji odczytującej jeden bajt sygnatury xmega.

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Niestety nie działa. Nie wiem czy dobrze wpisuję/przekazuję adres.

_________________
Gordon



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 cze 2021, o 19:47 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 lis 2019
Posty: 147
Pomógł: 37

Wg manuala https://ww1.microchip.com/downloads/en/ ... Manual.pdf str 416, punkt 33.11.2.14 trzeba się pobawić assemblerem.
Nie bardzo znam inline asm więc na pewno są błędy:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
Think for yourself and question authority.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 cze 2021, o 13:38 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 lut 2013
Posty: 148
Lokalizacja: KTT
Pomógł: 1

Dzięki za sugestie i podpowiedzi. Poprawiłem literówki ale niestety nie działa.

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Nie wiem czy adresu nie trzeba załadować wcześniej do rejestrów NVM.ADDR0 - NVM.ADDR2. No nic będę próbował dalej w wolnej chwili.

_________________
Gordon



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 cze 2021, o 19:39 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 lis 2019
Posty: 147
Pomógł: 37

Wykomentowałeś instrukcję która robi robotę to jak ma działać?

_________________
Think for yourself and question authority.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 cze 2021, o 20:22 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 lut 2013
Posty: 148
Lokalizacja: KTT
Pomógł: 1

Sprawdzałem oczywiście niezakomentowaną. Tu mi się jakoś tak wkleiło :)
Sprawdzałem jako: asm... i asm volatile... też nic.
Podejrzewam trop jest dobry, tylko diabeł jak zwykle tkwi w szczegółach.

_________________
Gordon



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 cze 2021, o 22:00 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 lut 2013
Posty: 148
Lokalizacja: KTT
Pomógł: 1

Pogrzebałem jeszcze w pikach ASF w AS z nadzieją, że znajdę gotowca i coś tam wyszperałem, no ale cóż, assemblera nie znam więc nie powalczę.

Moje znaleziska:
w pliku nvm.h jest funkcja:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


a co do funkcji nvm_read_byte() znalazłem tylko coś takiego:
w pliku nvm_asm.s

Składnia: [ Pobierz ] [ Ukryj ]
język asm
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


pozostaje tylko się podszkolić z asm ;)

_________________
Gordon



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 cze 2021, o 14:54 
Offline
Użytkownik

Dołączył(a): 07 cze 2016
Posty: 563
Pomógł: 143

Możesz spróbować tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Powinno zadziałać (sprawdzone na ATxmega128A3U).


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 cze 2021, o 16:08 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 lut 2013
Posty: 148
Lokalizacja: KTT
Pomógł: 1

No i śmiga jak ta lala :) Sprawdziłem na Xmega32A4U. Dzięki andrews.

_________________
Gordon



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 12 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO