Wpis z mikrobloga

Murki, dajcie pomysł. Mam sobie chińskie urządzenie z małym uC które przyjmuje kod do wykonania operacji. Kod pochodzi z serwera dostawcy i jest zapewne bazowany na unikalnym ID urządzenia (8 znaków) oraz timestampie (bo co sekundę jest inny oraz w komunikacji z urządzeniem jest synchronizacja czasu). Wynik ma nieznaną dlugość w sumie. Nie ma tu czynnika losowego, kod wygenerowany przez serwer w tej samej sekundzie będzie taki sam.

I teraz, jedyny pomysł na złamanie tego jaki mi przychodzi to jakiś bruteforce, ale nie znam narzędzi do łamania takich rzeczy. Czy to w ogóle wykonalne? Mogę wygenerować dużo par wejście->wyjście, ale nie wiem czy to coś da jeżeli to nawet jest prosty md5 po stronie serwera w jakiejś nieokreślonej kombinacji tych dwóch czynników + jeszcze może być dodany pieprz...

Czyli w skrócie, czy jest narzędzie które mi złamie hash/szyfr jak mu zapodam odpowiednią próbkę danych in->out?
Fizyczne łamanie sobie odpuściłem bo interfejs SPI tego chińskiego cuda milczy.

#kryptografia #programowanie #szyfrowanie
  • 18
A konkretnie co do wyniku to ktoś odkrył że ta zmienna część pakietu z kodem to jest

14 first bytes of HMAC, using “blesignkey” as key and SHA-1 as variant


Co jeszcze bardziej komplikuje temat ( ͡° ʖ̯ ͡°)
@adii_22: ale co? No mam appkę na Androida co sobie gada z serwerem, pobiera kod i przesyła po BT. Temat w tym że chciałbym - trochę z ciekawości, trochę z wygody, trochę z "filozofii życiowej" - pozbyć się serwera i samemu móc generować pakiety
@Wiktor426: nie, ale mam jedynie piny SPI na płytce, a procesor jest nieznany; nie mam wiedzy jak próbować takie coś ugryźć
@aso824: ściągnij program z uC jak sie da i potem w disassembler (ghirda na kiju, ale do embedded to nie zawsze supportuje zestaw instrukcji do wszystkiego).
Możesz zobaczyć czy nie ma jakiejś złączki do debuga/programatora (jitag czy cos) widocznej na płytce
Ew sciągasz dokumentacje uC i paczysz czy nie ma nóżek pod interfejs do debugu/programowania i se ręcznie przylutować

W każdym razie jak zablokowane jest dumpowanie i debug to musisz być
Ogólnie to sobie zdekompilowałem appkę i ona pozyskuje magiczny, zmienny czasowo klucz od serwera i wtedy wytwarza HMAC SHA-1, który przycina do 14 bajtów i śle do urządzenia...
@aso824: tylko ze zeby kryptograficznie to zrobic to musisz wiedziec jak to jest liczone - np jak wszystko leci do sha1 to musisz znac kolejnosc laczenia sha1(czasoznacznik+jakisguwnoklucz+jakiesguwnobajty) albo sha1(jakiesguwnobajty+czasoznacznik+jakisguwnoklucz) no i musisz wiedziec jakie guwnobajty sa dodawane (o ile wogle) - inaczej #!$%@? a nie burtfors zrobisz.
Takze, jestes troche w doopie, ale skoro wystawia to spi to obstawiam ze do programowania to jest i przy odrobinie szczescia to wygrzebiesz gdzies
@aso824: nie ma to możliwościu update firmware-u/producent nie udostepnia firmware ? wtedy mozna by bylo od producenta binarke zassac i wrzucic w disassembler i modlic sie zeby nie bylo guwnoobfuskacji xD
@sh7d: takie gówno xD
Cholera, myślałem o bruteforce wszystkich kombinacji aż trafię kod który dostaję z serwera ale zapomniałem że te hashe mają kolizje i zajęłoby mi to wieczność ( ͡° ʖ̯ ͡°)
SPI jak pisałem milczy i nie wiem co mu powiedzieć żeby się odezwał w jakikolwiek sposób
@seniorwykopek: @adii_22: @Wiktor426: @sh7d: dobra mirki, wygląda na to że producent mnie okłamał w ich chińskim PDFie z opisem SDK xD udało mi się w końcu pogadać z ich API i klucz który oni odsyłają, który jest następnie używany do HMAC-SHA256 jest... niezmienny. Albo przynajmniej nie uległ zmianie w ciągu godziny ( ͡ ͜ʖ ͡)

Pozostaje mi tylko zakodować obsługę pakietów na ESP
@aso824 tyle zachodu dla głupiego zamka ( ͡º ͜ʖ͡º)
To faktycznie nie było sie spodziewać tam skomplikowanych mechanizmów szyfrowania, myslalem ze hakujesz jakis klucz sprzętowy z urządzenia za co najmniej 10k