logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Keeloq - obsługa z wykorzystaniem uC

xPatryk 01 Mar 2011 18:54 4500 5
  • #1 9221845
    xPatryk
    Poziom 15  
    Witajcie,

    szukam informacji odnośnie obsługi systemu keeloq (bezprzewodowe piloty ze zmiennym kodem) z wykorzystaniem uC, najlepiej AVR.

    Domyślam się, iż konieczne jest wykorzystanie zewnętrznego modułu, który odkoduje sygnał i prześle go do uC?

    Jak zrobić to najprościej? Spotkał się ktoś z takowymi modułami, których cena nie szokuje?

    A może ktoś zna rozwiązanie wykorzystujące tylko uC i odbiornik sygnału?

    Pozdrawiam,
    Patryk
  • #2 9222033
    BoskiDialer
    Poziom 34  
    Funkcja kodująca jak i dekodująca są publicznie znane. Jeśli mam dobrą pamięć, to czytając forum wyczytałem, że Microchip zezwala na implementowanie swojego algorytmu tylko na swoich procesorach. Jakkolwiek kod da się skompilować pod AVR, w moim przypadku do testów nawet sobie kod zoptymalizowałem. Samo odbieranie sygnału wymaga odbiornika na 433MHz, który wystawy sygnał czy jest nośna czy jej nie ma (nadajniki w pilotach są skrajnie proste i umożliwiają tylko taką transmisję).

    W załączniku mój kod dekodera optymalizowany w asm (keeloq_decode.s) oraz główny plik projektu (keeloq_rx.c) zawierający segment odbiornika, który jest w stanie odbudować ramkę wysyłaną z pilota. Całość kompilowałem pod attiny2313, wtedy zajmowało mi to łącznie 728 bajtów, jednak będzie się kompilować pod dowolnym procesorem. Jako że segment odbiornika pracuje na przerwaniu od timera (aby uniknąć wszelkich delay'ów), to w przypadku zmiany procesora może być konieczne inne ustawienie timera. Wejście miałem na PD2 a dalej wysyłałem dane szeregowo do komputera (robiłem głównie testy pilotów w sposób: wlutować się kabelkiem i sprawdzić co hcs200 wysyła, stąd jest tam też fragment kodu który wkompilowywałem jak chciałem przeprogramować hcs200) przy czym dane są już zdekodowane kluczem który został wpisany w kod.
    Załączniki:
  • #4 10892186
    gn000
    Poziom 12  
    Witajcie
    mam czasami dziwne pomysły i tym razem padło na keeyloq'a chciałem sprawdzić czy można złamać to zabezpieczenie ? ot tak dla sportu. Mam kilka pilotów, mam jakieś odbiorniki widząc że jest kod dla avra to zbudowałem całość właśnie na nim.
    Zaprogramowałem piloty kodem zaproponowanym przez BoskiegoDialera klucz=0x0123456789ABCDEF . Napisałem dllke dekodującą w C natomiast aplikację szukającą kodu w C# (szkoda że C# bo trochę wolno działała - ale trudno).
    Wymyśliłem sobie teorię jak to złamać i do dzieła.
    Złamanie w mojej teorii musiało nastąpić brutalforcem czyli wyszukanie wszystkich kodów z zakresu od 0x0 do 0xFFFFFFFFFFFFFFFF czyli 18446744073709551615 kodów !

    Klucz kodujący miał wartość 0x0123456789ABCDEF aby zadanie było łatwiejsze rozpocząłem szukanie klucza od wartości 0x0120056789ABCDEF w górę.
    Wartość od jakiej wystartowałem stanowi 0.439485341 % procent wszystkich możliwych kodów. Mam komputer 4 rdzeniowy aplikacja pracowała na jednym i nie była optymalna - to fakt, miałem ją potem jeszcze przepisać inaczej aby pracowała możliwie szybko ale koniecznie chciałem wykonać test. Tak więc wystartowałem...
    i poszedłem na obiad widząc że licznik procentów jest mało ruchliwy ! Gdy zjadłem było przeszukane ok 240 milionów kodów !
    Przeliczyłem to na kalkulatorze i stwierdziłem że złamanie kodu będzie trwało nieco ponad 5 mln lat zakładając że zmienię komputer i zoptymalizuję aplikację, przyśpieszając nawet 1000 krotnie to zadanie wydaję się nierealne.

    Microchip nawet ładnie to wymyślił - jeśli prawidłowo oprogramujemy procesor i nie pozwolimy na użycie kodu jaki już był i pochodzi z podsłuchu to możemy spać spokojnie.
    Pamiętajmy że nigdy nie wiadomo kto programował sterownik w naszym samochodzie i czy do odblokowania samochodu nie zastosował tylko i wyłącznie nie kodowanej części (serial number).

    Już raz słyszałem że da się złamać to zabezpieczenie co sądzicie ? pewnie ktoś popełnił błąd w programowaniu procesora i ktoś inny wykrył lukę ?
  • #5 10892538
    tmf
    VIP Zasłużony dla elektroda
    Rosjanie to podobno rozbroili w kilka godzin, ale ze źródeł raczej pewnych to chwila szukania i: http://eprint.iacr.org/2011/242.pdf - jak widać w zależności od klucza niezbyt wyrafinowany sprzęt potrafi złamać keeloga od sekund do 5-7 lat w zależności od długości klucza. Niemniej w samochodach tylko połowa klucza jest unikalna, a połowa stała dla producenta. Czyli cracker musi w warunkach domowych rozbroić dowolny klucz, a w warunkach polowych powyższy układ za mniej niż sekundę mu rozbroi część unikalną. Czyli marne to zabezpieczenie. Tym bardziej, że tobie wyszło pare mln lat pisząc w C#, co ma pewnie z 1000-krotny lub lepszy narzut w stosunku do assemblera, z wykorzystaniem jednego rdzenia. A niezbyt wypaśna nVIDIA ma do dyspozycji 512 i więcej jednostek obliczeniowych o mocy wielokrotnie większej niż twój rdzeń. Owszem, to ciągle wymaga kosztownego sprzętu, ale łatwo sobie wyobrazić, że ludzie żyjący z kradzieży mają do tego dostęp. Tyle, że wtedy nie kradną samochodu za 15 tys. :)
  • #6 10892552
    xPatryk
    Poziom 15  
    gn000 - atak metodą brute force nadaje się do otwierania zabezpieczeń na rowery.
    W przypadku algorytmów typu keelog są zdecydowanie skuteczniejsze metody. Poszukaj rosyjskich opracowań.
REKLAMA