key programming immo tools emergency start device программаторы ключа заводилки Кодграббер штатных охранных систем, toyota, lexus, subaru.

попробовал брутить keyloq )))

Ahalam

New Member
делать нех... было - набросал подбор криптоключа с инкрементом оного и проверкой на совпадение дискриминатора и старшего байта счетчика а младшего байта на отличие на единицу. срисовал с брела шерифовского два последовательных посыла и поставил брутить. брутил в симуляторе MPLab(ы). кароче за сутки брута наклацало 6 милимонов вариантов после чего от экспериментов с ксеноновой лампочкой рядом с блоком компа
комп глюканул и повис. на этом чюдо брут закончился.)))
а проект остался ну и решил выложить мож кто заморочится да и накрутит чего нового??? функция декрипта рабочая стопудов - проверено с помощью микрочиповской тулзы "KEELTOOL".
 

Вложения

Ahalam

New Member
запускаеш МПлабу открываеш файл startup.asm

береш две последовательные посылки кейлока типа 1 и 2. первый хоппинг прописываеш сюда:
movlw 0xXX
movwf BUF1_0
movlw 0xXX
movwf BUF1_1
movlw 0xXX
movwf BUF1_2
movlw 0xXX
movwf BUF1_3

второй хоппинг прописываеш сюда:

movlw 0xYY
movwf BUF2_0
movlw 0xYY
movwf BUF2_1
movlw 0xYY
movwf BUF2_2
movlw 0xYY
movwf BUF2_3

компилируеш всё енто и запускаеш в симуляторе. симулятор расшифровывает хоп1 и хоп2 и сверяет значение дискриминатора и проверяет счетчик на +1 в случае удачной проверки прога выскакивает на брекпоинт и зависает. ключ шифрования в этом случае
находится в регистрах M_KEY_7 - M_KEY_0 и его можно посмотреть просто наведя курсор на регистр. если не срослось то симулятор увеличивает ключ на единицу
и все повторяется.)))
 

gar47

New Member
ясно, но мне кажется к этуму времени мои внуки станут дедами )))

---------- Добавлено в 14:22 ---------- Предыдущее сообщение было написано в 13:55 ----------

кстати от скорости компа сильно зависит или неочень? сколько он перебирает например за секунду?
 

gar47

New Member
малотит уже сутки:D пока ничего, чувствую бессмысленное занятие, но азарт есть! а где посмотреть кол-во перибранных вариантов?
 

tviktor

Member
Ну выб уж разделились, разбилибы на части ключ и каждый брутил бы свою часть. В симуляторе наверно будет долго, непробывали перенести эту прогу в делфи или Си, скорость то будет быстрея.
Яб для начала проверил прогу на извесной сиге с извесным ключем (мангуст).
 

Ahalam

New Member
да поболту!))) если б и разбили на десять частей то - десять лет вперед десять назад х...йня ))):35: в обсчем накатал это все для интереса: работает энкрипт-декрипт или нет.
ато обсуждали это с Oleg-om еще год назад. он сделал а я нет.))) там еще косяк может быть с дискриминатором так как я не до конца понял что это такое.:)
 

tviktor

Member
На в какой версии мп-лаб можно это запустить. Как ты определяеш значение NLF функции, а то я разобраться не могу.
 

Ahalam

New Member
у меня мплаб 742 помойму.

определение переменной nlf (функция представляет собой простую таблицу от 0 до 31 где каждому числу соответствует 0 или 1):

NLF_1(метка)
CLRF NLF_TMP ; очищаем временный регистр
BTFSC CSR0,0 ; смотрим HOP0,0
BSF NLF_TMP,0 ; помещаем значение в NLF_TMP,0
BTFSC CSR1,0 ; смотрим HOP1,0
BSF NLF_TMP,1 ; помещаем значение в NLF_TMP,1
BTFSC CSR2,3 ; смотрим HOP2,3
BSF NLF_TMP,2 ; помещаем значение в NLF_TMP,2
BTFSC CSR3,1 ; смотрим HOP3,1
BSF NLF_TMP,3 ; помещаем значение в NLF_TMP,3
BTFSC CSR3,6 ; смотрим HOP3,6
BSF NLF_TMP,4 ; помещаем значение в NLF_TMP,4
; в итоге в NLF_TMP,4 - NLF_TMP,0 имеем номер ; ; ячейки таблицы(от 0 до 31)

MOVF NLF_TMP,W ;
CALL NLF_F ;

NLF_F(метка)
ADDWF PCL,F ; используя этот номер как смещение +PCL ; ; извлекаем из таблицы значение функции для ; данного круга

RETLW D'0'
RETLW D'1'
RETLW D'1'
RETLW D'1'
RETLW D'0'
RETLW D'1'
RETLW D'0'
RETLW D'0'
RETLW D'0'
RETLW D'0'
RETLW D'1'
RETLW D'0'
RETLW D'1'
RETLW D'1'
RETLW D'1'
RETLW D'0'
RETLW D'0'
RETLW D'0'
RETLW D'1'
RETLW D'1'
RETLW D'1'
RETLW D'0'
RETLW D'1'
RETLW D'0'
RETLW D'0'
RETLW D'1'
RETLW D'0'
RETLW D'1'
RETLW D'1'
RETLW D'1'
RETLW D'0'
RETLW D'0'

может кто поправит потому что по математике в ПТУ у меня была твердая 3- (с минусом))):eek:
 
Последнее редактирование:

ZAN

New Member
Открою великую тайну)))))))))))))
Вместо забивания таблицы, забиваете в регистры константу nlf=3a5c742e (это тоже самое в БИН виде) и берете из этой константы бит под номером
(32-(число переведенное из набора битов3.6,3.1,2.3,1.0,0.0))
3 . 6
3 . 1
2 . 3
.....
| |_________номер бита в байте
|___номер байта
конечно каждый делает как удобнее!!!!
 
Последнее редактирование:

Ahalam

New Member
да не вопрос))), я как бы для наглядности так расписал чтоб человек побыстрее догнал мыслю.
но ваще-то нада даташит почитать повнимательнее и несколько раз пока понимание придет. а лучче попробовать сравнить пару трое даташитов.
 

tviktor

Member
По даташиту все понятно .Как у тебя в программе определяется что значение 00011 соответствует номеру ячейки 3(может у тебя гдето еще таблица ).
 

Ahalam

New Member
00011 это 3(dec)

NLF_F(метка)
ADDWF PCL,F ; добавляем 3 к PCL и автоматом перескакиваем...

RETLW D'0'
RETLW D'1'
RETLW D'1'
RETLW D'1' ; СЮДА!!! где возврат из подпрограммы с загрузкой ; константы D'1' в аккумулятор
RETLW D'0'
RETLW D'1'
RETLW D'0'
RETLW D'0'
RETLW D'0'
RETLW D'0'
RETLW D'1'
RETLW D'0'
RETLW D'1'
RETLW D'1'
RETLW D'1'
RETLW D'0'
RETLW D'0'
RETLW D'0'
RETLW D'1'
RETLW D'1'
RETLW D'1'
RETLW D'0'
RETLW D'1'
RETLW D'0'
RETLW D'0'
RETLW D'1'
RETLW D'0'
RETLW D'1'
RETLW D'1'
RETLW D'1'
RETLW D'0'
RETLW D'0'

---------- Добавлено в 11:33 ---------- Предыдущее сообщение было написано в 11:29 ----------

потом смотрим таблицу в даташите и точно!!! переменной b'00011' соответствует значение функции "1"
 

tviktor

Member
Еще раз спрашеваю..........Как программа определяет что 00011 это 3(dec)?
 

Ahalam

New Member
да фиг ево знает. по мойму она ничего не определяет а просто оперирует этим (двоичным!) числом и все. компилятору ,например, похуй в каком виде ему тройку суют лишь бы синтаксис правильный был. или я чивой-то не понял вопроса:confused:

---------- Добавлено в 07:41 ---------- Предыдущее сообщение было написано в 07:22 ----------

чтоб было понятней забей это число (00011) в калькулятор и переведи в децимал. калькулятор покажет "3".

---------- Добавлено в 07:47 ---------- Предыдущее сообщение было написано в 07:41 ----------

имеем из хоппинга число b'00011'

NLF_F(метка)
ADDWF PCL,F ; добавляем b'00011' к PCL и автоматом перескакиваем...

RETLW D'0'
RETLW D'1'
RETLW D'1'
RETLW D'1' ; СЮДА!!! где возврат из подпрограммы с загрузкой ; константы D'1' в аккумулятор
RETLW D'0'
RETLW D'1'
RETLW D'0'
RETLW D'0'
RETLW D'0'
RETLW D'0'
RETLW D'1'
RETLW D'0'
RETLW D'1'
RETLW D'1'
RETLW D'1'
RETLW D'0'
RETLW D'0'
RETLW D'0'
RETLW D'1'
RETLW D'1'
RETLW D'1'
RETLW D'0'
RETLW D'1'
RETLW D'0'
RETLW D'0'
RETLW D'1'
RETLW D'0'
RETLW D'1'
RETLW D'1'
RETLW D'1'
RETLW D'0'
RETLW D'0'

вот так прога выглядит в реале т.е. десятичными числами в реале мы не оперируем.
 
Последнее редактирование:

tviktor

Member
Так бы и сказали что из двоичной системы переводим в десятичную получаем 3.
Да по письмам трудно объяснятся.
Так я не понял серийный номерпульта в получении хопинговой части не учавствует?
 

tviktor

Member
косвенно участвует, из него и мануфака крипто ключ генерится, которым крипт\декрипт делают
Тут ты не прав, крипто ключ не генирится из серийника т.к. сига с двумя разными пультами(с разными сетийными номерами) открываю одну сигу(крипта у них одинакова).
Я думаю что он учавствуют в формирования хопинга, 32 бита как раз и состоит из 4 бита код кнопки+16 серийный номер пульта+12 значение синхронизации.Это написано и в даташите.
 
Последнее редактирование:
Сверху