Hmm roznie to mozna interpretowac tylko jak mozna sprzedawac cos co sie oprogramowalo z githuba? Ile osob tyle interpretacji pewnie bedzie ale albo sie dalej sie ciagnie z githubowa licencja albo przechodzi do zamknietego soucecodu , chyba , Nie znam sie.
Bez przesady ,kto by chciał robić komercyjny projekt na arduino , poza tym żeby to miało jakąś komercyjną jakość ,to musi jeszcze trochę wody upłynąć . Należy to traktować raczej jako ciekawostkę i zabawkę dla amatora który grzebie sobie w swoim PSA i pochodnych w garażu . Według mnie to temat edukacyjny . Kolega się po prostu trochę pobawił i podzielił tym co wymyślił program udostępnia za darmo , a że bazuje na uniwersalnym projekcie na arduino z can dostępnym za free ,który sobie może każdy sklecić sam kupując manele dosłownie wszędzie , to ciężko tu mówić o jakiejś tam komercji .
Hmm roznie to mozna interpretowac tylko jak mozna sprzedawac cos co sie oprogramowalo z githuba? Ile osob tyle interpretacji pewnie bedzie ale albo sie dalej sie ciagnie z githubowa licencja albo przechodzi do zamknietego soucecodu , chyba , Nie znam sie.
No to sobie ściągnij i napisz - będziesz miał za free.
Dodano po 9 [minuty]:
Oczywiście że traktuje to hobbystycznie i o komercji nawet nie pomyślałem.
A Arduino dla amatorów takich jak ja - jest całkiem fajna baza edukacyjną.
Mogę tylko dodać że udało mi się wy emulować ECU na arduino a co za tym idzie programowo komunikować z innymi urządzeniami.
Pozwoliło to przesledzić komunikację przesyłania danych IMMO
A co za tym idzie zbadać algorytm kodowania PIN w sieci CAN PSA.
Zbudować wirtualny emulator -- a i zapewne odczytywanie PIN z ECU.
Cześć wszystkim,
super dobra praca, którą śledzę z dużym zainteresowaniem.
Próbowałem pisać w 741:641 kluczem A8EE, ale nie działa. czy kiedykolwiek udało Ci się napisać?
przepraszam za błędy, to jest tłumaczenie 😅
Oto jak działa emulacja immo na Arduino.
Trochę posiedziałem nad algorytmem ale udało się.
W przygotowaniu czytanie PIN - zobaczymy - mam kilka pomysłów -ciekawe jak się sprawdzą.
Jestem po próbach odczytu PIN ze sterownika silnika:
Testy najpierw wykonywałem na EDC17C60 bo znałem PIN
A następnie na VD56.1
Testy wypadły pomyślnie - udało się odczytać PIN
MAM 3 pomysły jak to robić
1 - PIERWSZY POMYSŁ - skuteczny
Odpytanie ECU o wszystkie kody PIN
Testowany już na kupionym VD56.1 - nie znałem wcześniej pinu tego ECU.
Czasochłonny
Ilość rożnych kodów PIN wynosi 34^4
34 bo mamy tyle znaków do dyspozycji 0-9 A- Z ( z wyłączeniem o , i ) wielkie litery.
^4 bo mamy 4 pola kodu PIN
ilość kombinacji zatem wynosi : 1 336 336
Sposób realizacji odpytywania ( ARDUINO ) daje możliwość wykonania 4 zapytań na sekundę
I otrzymania 4 odpowiedzi oraz informacje potwierdzająca odblokowanie lub brak odblokowania.
Przy założeniu że nasz kod PIN to: Z Z Z Z
To trzeba uzbroić się w cierpliwość ( nie jest zbyt wydajna metoda ).
Ale nie jest tak źle - tak się składa ze ten typ szyfrowania oraz odpytywania nie jest super doskonały ( podobnie jak SEED i SEED KEY ) - już to opisywałem wcześniej.
- pierwsze działające przypadkowe pary uzyskałem już po 5 minutach a kolejne dwie po godzinie.
To przemawia za tym aby dopisać trochę inny algorytm próbkowania
( POMYSŁ nr 2 ).
Myślę że uzyskanie kody PIN powinno zamknąć się 15 min do 30 min
a w najgorszym razie 2 -3 godz.
A to jest do zaakceptowania przy moich potrzebach.
Będę testować.
I aby nie było że odbiegam od tematu BSI - to nadal jest powiązane ścisłe z bsi bo te urządzenia występują jako para.
Mam dostęp do 3 modułów:
1 -- W aucie - nic na razie nie grzebałem oprócz kodowania i podpinania klamki brak reakcji
2 -- moduł light te same nr co w aucie ale ma odblokowany dostęp i na stole reaguje na klamkę
3 -- moduł full który odczytałem ale po wgraniu nie reaguje w sieci CAN ( czuta i programuje) - kiedy działał to również reagował na klamkę bo tez miał odblokowany dostęp.
Żadna antena dodatkowa nie jest potrzebne
zasilanie CAN i klamka i na stole gada.
w aucie mam moduł o takich samych numerach ale oprogramowanie ma inny nr
Miałem moduł full - czyli z bt ale próby czyszczenia vin zakończyły się tym że pomimo tego ze się czyta i programuje - nawet oryginałem - procek daje ID
To moduł nie gada w sieci CAN
mam drugi light taki sam nr co w aucie ale jak juz pisałem ma odblokowany dostęp i jak widać - podpięta tylko klamka i gada.
co do wsadu
w module full jest identyczna PCB jak w light - brak jest tylko sekcji z bt ( nie ma kilkudziesięciu elementów - puste pola lutownicze)
W module full jest procesor RH850 który się czyta i programuje ... ale go jakoś ubiłem
a w module light oznaczenia na procku są jakieś zaszyfrowane ( maska ?) - i nie daje się poczytać - nie oddaje nawet ID
Uprzedzam - upa poczytała ale po wgraniu .... cisza w CAN.
CRC też do policzenia
Nie wiem gdzie jest PIN ( jest zaszyfrowany)
Oczywiście nic to nie daje jak nie ma 100% programatora na czytanie i wgrywanie - chyba że ktoś ma to przetestowane z jakimś programatorem.
a jeszcze wsady
KLUCZ kodowania -- A8EE
CAN
cześć, możesz mi powiedzieć, co zakodowałeś? ponieważ kiedy koduję mój z arduino, otrzymuję komunikat o błędzie : 7F2E7F
@glapsson@bbmax czy masz jakiś pomysł, aby mi pomóc?
Witam jakbyś miał problem z pinem to mam SMOK bsi+pin mogę poratować, nie ma problemu tylko musiał bym mieć ecu u siebie bo z pliku starsze tylko. Pozdrawiam
Spoko dzięki -ALE
Napisałem własny program do wyciągania PIN z ECU tych nowych.
Pozdrawiam.
Offtop: Chłopaki z Francji rozpracowali ESP z scirocco bez arduino
Wrzucilem to bo ruski sie chwalil ze zrobil i jakas niewiarygodna kase chcial za to Dalem za free na nowy rok...
No to szacun, niewiedziałem że to Ty , widziałem ten temat u ruskiego, a wiesz jak zrobić żeby pokazywało ograniczenia prędkośći na scirocco ?
Bedzie w opracowaniu narazie ale bedzie potrzebny emulator kamery , chyba ze cos w calibracjach przeoczylem ale musze to sprawdzic. Bez kamery na szybie nie wysyla ramki ktora odpowiada za wyswietlanie na Cirocco, mimo configu ze ma brac z Navi tylko.
Ruszyło
składa się to w całość.. jeszcze parę testów.
Uruchomiłem to wszystko trochę inaczej.
Wcześniej już napisałem aplikacje do wyciągania PIN z ECU baz kluczyka na stole bezpośrednio ze sterownika silnika.
Z racji że działa to trochę na zasadzie doboru i losowości ( zależnie od SEED z ECU )
Po kilkudziesięciu testach na kilku ECU moge powiedzieć że czas wyciagania PIN to od od 10min do max 3h.
Jest zakładka Emulacji immo zatem również - odpalanie awaryjne bez kluczy powinno działać.
Napisałem również mały programik do odczytu PIN jak jest przynajmniej 1 kluczyk - po OBD w aucie.
czas potrzebny na rozkodowanie PIN to kilkanaście sekund.
Nie obyło się bez przepisania znowu wsadu Arduino.
Te programy muszę wkomponować w jeden program razem z kodowaniem BSI i pozostałych opracowanych sterowników.
jakiś popieprzony algorytm na SEED jest albo idę w złą stronę i jest to prostsze niż myślę.
Popełniłem również kalkulator na liczenie PIN
Od tego wyszedłem i jak zaczęło to gadać to dopiero poszedłem dalej na OBD
Ale jakby nie było arduino to policzenie pin jest jak najbardziej możliwe - o ile posiada się tylko jakikolwiek analizator CAN.
Jak widać przy jednej parze może być od kilku do kilkudziesięciu zgodnych kluczy
Przy dwóch parach to już najczęściej 1 klucz ale trafiałem nawet 3 -4
Przy 3 parach to praktycznie pewniak.
W Arduino postawiłem na 5 par danych - aby nie było pomyłek.
// Immobilizer challenge-response implementation
// This should match the authentication between the BSI and the engine ECU
// The protocol is pretty simple:
// * On frame 0x72 (ECU to BSI): 0x00 (4 bytes of challenge)
// * On frame 0xA8 (BSI to ECU): 0x04 (4 bytes of response)
// * If the challenge is accepted: {0x00, 0x00, 0x00, 0x00, 0x00} on frame 0x72
// Thanks a lot to Wouter Bokslag for the original work and algorithm :)
#include <inttypes.h>
// Transformation function with PSA not-so-secret sauce
int16_t transform(uint8_t data_msb, uint8_t data_lsb, uint8_t sec[])
{
int16_t data = (data_msb << 8) | data_lsb;
int32_t result = ((data % sec[0]) * sec[2]) - ((data / sec[0]) * sec[1]);
if (result < 0)
result += (sec[0] * sec[2]) + sec[1];
return result;
}
// Challenge reponse calculation for a given pin and challenge
// Challenge and pin are both 4*8bits values
uint32_t compute_response(uint8_t pin[], uint8_t chg[])
{
// Hardcoded secrets...
int8_t sec_1[3] = {0xB2, 0x3F, 0xAA};
int8_t sec_2[3] = {0xB1, 0x02, 0xAB};
// Compute each 16bits part of the response and return it
int16_t res_msb = transform(chg[0], chg[2], sec_1) | transform(pin[0], pin[3], sec_2);
int16_t res_lsb = transform(chg[1], chg[3], sec_2) | transform(pin[1], pin[2], sec_1);
return (res_msb << 16) | res_lsb;
}
Ale ja już to mam .... przecież emuluje PIN i wyliczam z danych CAN.
Nie muszę już do tego siadać.
Zresztą widać że wyliczenie jest takie samo jak dla SEED BSI dla kodowania - inaczej następuje tylko podstawienie danych do operacji OR.
Ciekawi mnie jak to wygląda w SEED2 dla Continental
Bo wszystko wskazuje na to że matematycznie jest to całkowicie inaczej rozwiązane - albo dochodzi jakaś dodatkowa operacja XOR lub OR.
Nie drążę sam tematu bo dla mnie Continental to już raczej ciekawostka tak jak Valeo.
Nie spodziewam się abym kiedyś miał jeszcze szanse dla swoich potrzeb coś w tym temacie potrzebować robić.
Ale jakby ktoś znalazł ten algorytm to postaram się napisać do istniejącego już programu z zakładką valeo opcje continental i tu udostępnię.
Hello to everyone, Sorry for not typing in poland, I own a 2021 208 II, I also have a workbench using bsi2010 and I have connected to it the visteon 3d speedometer which has increased the mileage of both. I've read a bit the topic and found the tool for bsi2010ev. Any idea if it can work on the bench too? My main aim is to lower the mileage of the visteon 3d speedo since I need to put in my car for some testing purpose. unlike older PSA speedometer, the visteon doesn't have a separate eeprom like 3008 cirocco for example. I hope you guys understand me.