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

Вернуться   Изучение уязвимостей электронных систем > Для начинающих > Новички

Новички Раздел для новичков. Что такое кодграббер, ретранслятор, подмена кода.

Ответ
 
Опции темы
Старый 24.05.2011, 18:43   #81
tahion
начинающий фрикер
 
Регистрация: 15.06.2009
Сообщений: 624
Поблагодарил: 14
Поблагодарили 540 раз в 127 сообщениях
tahion скоро станет знаменитым(-ой)
По умолчанию

Самое главное здесь, программирование! Именно поэтому я выкладываю исходники, а не просто хексы.
Чтоб люди могли не просто скопировать устройство, а чтоб смогли научиться программировать изучив
хорошо откомментированные исходные коды. Конечно сразу все никому не дается! Когда есть вопросы,
что-то непонятно, что-то интересно... Кидайте в эту тему, вместе разберемся


Цитата:
Сообщение от Dmitry63 Посмотреть сообщение
Мне, как неграмотному, было проще с дизасмом построчно свериться с исходником и дописать его и поправить,что бы хекс получился байт в байт.Правил не только выброс.Попробую дописать сверку по серийнику. Спасибо.

А на самом деле, проще и приятней работать с чистым кодом, чем с дизасмом

Дам немного подсказок:

1. Косяк в макросе DelayUs. Даже не косяк, а просто кое что спрятано ))
В AVR Studio открываем Assembler Help, и смотрим за сколько тактов выпоняется каждая комманда.
Нам надо знать сколько тактов микроконтроллер выполняет за 1 микросекунду, что бы
сформировать правельную задержку. Там нужно аргументы умножить на частоту и
разделить на некоторое число ))

2. Метка Save. На нее программа переходит каждый раз когда принимает каждый бит.
Здесь надо добавить сверку по серийнику. Смотрим на коммент "Сравнить HOP части
этого и ранее принятого", здесь происходит исключение пакетов которых вылетает
10 штук при одном нажатии кнопки. Соответственно здесь же надо добавить хотя бы
две комманды: сверить байт серийного пульта ранее принятой посылки и текущего
пакета, и если неравно выйти нафиг ))))

3. Ну и последний момент, на выбросе, который в коде идет с метки SendData, нужно
просто посмотреть на длительности. Затем слегка покурить форум чтоб узнать какие
на самом деле длительности импульсов в кодировке старлайн и подправить ))
Затем скомпилить и залить в проц, после чего использовать по назначению
tahion вне форума   Ответить с цитированием
Старый 24.05.2011, 19:06   #82
sinobi2006
начинающий фрикер
 
Аватар для sinobi2006
 
Регистрация: 21.08.2006
Адрес: Екатеринбуржская область ;)
Сообщений: 517
Поблагодарил: 41
Поблагодарили 81 раз в 71 сообщениях
sinobi2006 стоит на развилке
По умолчанию

DelayUs(1000) должен быть 500 мс - насколько я знаю .Блин я не тот сначала исходник смотрел.Смотрел просто приём старлайна.меня вообще нинтересует как можно один брелок от другого отличить по серийнику или как.


Не надо мне 15 раз повторять,я с 9го понимаю!
----------------------------------------------------------------------------------------------
Если тебе пригодился меч один раз,носи его с собой всю жизнь.(Старая китайская мудрость)

Последний раз редактировалось sinobi2006; 24.05.2011 в 19:19.
sinobi2006 вне форума   Ответить с цитированием
Старый 24.05.2011, 19:12   #83
tahion
начинающий фрикер
 
Регистрация: 15.06.2009
Сообщений: 624
Поблагодарил: 14
Поблагодарили 540 раз в 127 сообщениях
tahion скоро станет знаменитым(-ой)
По умолчанию

sinobi2006, ты не то смотришь )) Это исходник приема старлайн! Качай исходник ГРАБА старлайн )))))
tahion вне форума   Ответить с цитированием
Старый 24.05.2011, 21:10   #84
sinobi2006
начинающий фрикер
 
Аватар для sinobi2006
 
Регистрация: 21.08.2006
Адрес: Екатеринбуржская область ;)
Сообщений: 517
Поблагодарил: 41
Поблагодарили 81 раз в 71 сообщениях
sinobi2006 стоит на развилке
По умолчанию

Да я уж понял потом когда по названиям макросов ты прошелся.Сижу втыкаюсь в асм-я немного как то в си понимаю более.

---------- Post added at 22:10 ---------- Previous post was at 20:33 ----------

Виноват- вот тайминги по старлайну-преамбулу не учел
Преамбула – 1000us \ 1000us
Единица – 500us \ 500us
Ноль – 250us \ 250us
Взял отсюда[Ссылки могут видеть только зарегистрированные пользователи. ]


Не надо мне 15 раз повторять,я с 9го понимаю!
----------------------------------------------------------------------------------------------
Если тебе пригодился меч один раз,носи его с собой всю жизнь.(Старая китайская мудрость)

Последний раз редактировалось sinobi2006; 24.05.2011 в 21:21.
sinobi2006 вне форума   Ответить с цитированием
Старый 26.05.2011, 01:23   #85
Dmitry63
редкий гость
 
Регистрация: 19.07.2007
Сообщений: 51
Поблагодарил: 3
Поблагодарили 9 раз в 7 сообщениях
Dmitry63 стоит на развилке
По умолчанию

Фикс прописал. Теперь о помехе в 3Те подумать надо..
Dmitry63 вне форума   Ответить с цитированием
Старый 26.05.2011, 02:10   #86
Coroller
начинающий фрикер
 
Регистрация: 15.05.2011
Адрес: с компа друга
Сообщений: 972
Поблагодарил: 64
Поблагодарили 349 раз в 241 сообщениях
Coroller скоро станет знаменитым(-ой)Coroller скоро станет знаменитым(-ой)
По умолчанию

Скажите, а можно использовать для этого проекта (как, впрочем, и аналогичных, в соседних ветках) не брелок, а блок сигнализации?
Coroller вне форума   Ответить с цитированием
Старый 26.05.2011, 03:29   #87
sasha11
начинающий фрикер
 
Аватар для sasha11
 
Регистрация: 17.02.2010
Адрес: phreaker.us
Сообщений: 616
Поблагодарил: 116
Поблагодарили 188 раз в 141 сообщениях
sasha11 стоит на развилке
По умолчанию

Цитата:
Сообщение от Coroller Посмотреть сообщение
Скажите, а можно использовать для этого проекта (как, впрочем, и аналогичных, в соседних ветках) не брелок, а блок сигнализации?

Да конечно можна , всё что есть под руками : телевизор , магнитофон , утюг , микроволновку , стиральную машинку , швейную но только електрическую , блок от сигнализации всё так же (как, впрочем, и аналогичных, в соседних ветках)
sasha11 вне форума   Ответить с цитированием
Старый 26.05.2011, 06:45   #88
killer123
Гость
 
Сообщений: n/a
По умолчанию

Цитата:
Сообщение от Coroller Посмотреть сообщение
Скажите, а можно использовать для этого проекта (как, впрочем, и аналогичных, в соседних ветках) не брелок, а блок сигнализации?

блок нет, а вот приёмопередатчик который на стекло вешается думаю можно, если вызвонить контакты и правильно подпаяться
  Ответить с цитированием
Старый 26.05.2011, 07:28   #89
tahion
начинающий фрикер
 
Регистрация: 15.06.2009
Сообщений: 624
Поблагодарил: 14
Поблагодарили 540 раз в 127 сообщениях
tahion скоро станет знаменитым(-ой)
По умолчанию

Цитата:
Сообщение от Dmitry63 Посмотреть сообщение
Фикс прописал. Теперь о помехе в 3Те подумать надо..

Если ты про старлайн, то у него т.н. шим, поэтому как такового 3ТЕ там нет. Соответственно завалить его можно либо просто шумом, либо переправить единички в пакете на ноли. На вскидку примерный алгоритм такой: из преамбулы узнаем длительность лог0, затем по каждому фронту сигнала выдаем импульс этой длительности.
tahion вне форума   Ответить с цитированием
Старый 26.05.2011, 19:40   #90
tahion
начинающий фрикер
 
Регистрация: 15.06.2009
Сообщений: 624
Поблагодарил: 14
Поблагодарили 540 раз в 127 сообщениях
tahion скоро станет знаменитым(-ой)
По умолчанию

Хочу предложить разобрать немного атмеловского ассемблера. Потому, что многие люди просто повторяют чужие устройства, стремясь к результату. Ни для кого не секрет, что самое главное в этих устройствах прошивка, которая получается путем компилирования текста программы в машинный код. И если освоить программирование, понять как все работает с точки зрения машины-микроконтроллера, то результат можно возвести в степень.

Ничего сложного в этом нет. Более того, это проще и интереснее чем программирование под винду. Ассемблер всегда штука хорошая, в обычной операционке он позволяет написать динамическую библиотеку, пакет, сервис, драйвер устройства и т.п., когда нужна скорость выполнения, обработки данных. Но когда речь заходит о пользовательском интерфейсе, то низкоуровневый ассемблер уходит на второй план, а на первый выходят языки высокого уровня, такие как си, бейсик, делфи, ява и т.п.

Конечно, система комманд в микроконтроллерах AVR не такая объемная как в современных процессорах Intel, но логика работы точно такая же. А потому, изучение будет намного проще. Помните, главное программа, без нее микроконтроллер и устройство в котором он используется просто кусок железа, керамики и полупроводников. Как современный компьютер без операционной системы.

Теперь давайте посмотрим на функцию сравнения двух регистров-переменных, которую я использую в кодграббере старлайн. Его исходники можно свободно скачать на предыдущих страницах. Так же эта функция используется и в кодграббере килог, и в кодграббере шерхан, которые будут доступны для скачивания чуть позже...а так же в приеме множества статических кодировок, типа цаме, найс и т.п., встречайте Compare:

Код:
	Compare:
		Push R17
		Cp   R16, R17
		Breq Comp_Pass
		Brge Comp_Test
		Push R16
		Mov  R16, R17
		Pop  R17
	Comp_Test:
		Sub  R16, R17
		Cpi  R16, 10
		Breq Comp_Pass
		Brlo Comp_Pass
	Comp_Fail:
		Pop R17
		Clt
		Ret
	Comp_Pass:
		Pop R17
		Set
		Ret
Функция очень простая и эффективная. Она позволяет сравнить два регистра относительно друг-друга на определенное расхождение. Например в проекте кодграббера под старлайн, она используется для определения единицы и нуля исходя из длительности принятого положительного импульса. Микроконтроллеры AVR имеют 8-битную RISC архитектуру, поэтому все динамические длительности я делю на 10. Т.е. если мы приняли импульс например 1000 микросекунд, то в регистре R17(Time) будет значение 100. Поэтому мы можем принимать импульсы длительностью до 2550 микросекунд, или 2.5 миллисекунд используя всего-лишь один 8 битный регистр.

А теперь рассмотрим как она работает. Функция использует два регистра, R16 и R17. При этом, регистр R16, он же Temp, считается временным, поэтому сохранять его не нужно. А вот R17 мы сохраним в стек. Стек это область оперативной памяти, в AVR это SRAM, которая начинается с конца. Поэтому команда:

Push R17

Просто сохраняет текущее значение регистра R17 в стек, по адресу который указывает на "дно стека". Если мы не сделаем RET или RETI, то это значение всегда будет нас ждать пока мы его оттуда не вытащим коммандой POP в какой-нибудь регистр.

Cp R16, R17

Сравниваем два регистра микроконтроллера. При этом в статусном регистре SREG устанавливаются соответствующие флаги. Все это можно увидеть в протеусе или в AVR STUDIO, которую можно свободно скачать с официального сайта atmel.com

Breq Comp_Pass

Если значения в этих двух регистров равны между собой, например R16=1 и R17=1, то переходим на метку Comp_Pass

Brge Comp_Test

А если R16>R17, то идти на метку Comp_Test

Push R16

Как вы помните, в начале функции мы занесли в стек значение регистра R17, а теперь следом за ним мы аналогично сохраняем в стек регистр R16, при этом увеличивая значение адреса "дна стека". Теперь если мы выполним команду POP, то сначала получим R16, и только потом R17. Принцип лифта, первым вошел - последним вышел.

Mov R16, R17

Mov, классическая комманда всех ассемблеров. Копирование значения из одного регистра в другой, теперь R16=R17. Но вы помните, что старое значение R16, у нас сохранено в стеке.

Pop R17

Этой командой мы поднимаем в регистр R17, то что у нас есть в стеке. А там у нас старое значение R16, т.е. этими командами мы сделали небольшой финт, а именно поменяли местами R16 и R17, но это только в том случае, если изначально R16 был больше R17 на первом сравнении.

Comp_Test:
Sub R16, R17


Метка дополнительного сравнения. Здесь мы вычитаем из R16 регистр R17, т.к. когда мы на нее перешли R16 был или стал больше чем R17, поэтому теперь мы сможем увидеть разницу между регистрами.

Cpi R16, 10

Сравнить значение в регистре R16, с числовой контантой 10. Т.е. 100 микросекунд. Это главная константа, изменив ее, мы можем увеличить или уменьшить значение времени длительности положительного импульса которое подходит под наш критерий.

Breq Comp_Pass

Если равно, переходим на метку Comp_Pass

Brlo Comp_Pass

А если меньше, то это значит точность еще выше, и так же переходим на метку Comp_Pass

Comp_Fail:

А вот если больше, значит сравнение вышло из рамок 100 микросекунд.

Pop R17

Как помним, сначала мы сунули в стек значение регистра R17, затем R16, но R16 мы уже подняли, следовательно в стеке еще висит значение R17. Поднимем его.

Clt

Сбросим T-флаг, тем самым сообщим вызвавшей функции, что тайминги отличаются больше, чем на 100 микросекунд.

Ret

И вернем управление функции, которая вызвала

Comp_Pass:

Здесь тоже самое, только функция сказажет, что сравнение прошло удачно, и длительность импульса вписалась в рамки 100 микросекунд.

Pop R17

Аналогично подняли значение R17 из стека

Set

И при этом, установили T-флаг регистра SREG, что бы вызвавшая функция знала, что мы приняли корректный импульс и можно принимать последующие.

Ret

И так же вернули управление.

В исходнике конечно не такие обширные комментарии, но здесь я хотел показать, насколько просто программировать на примере универсальной функции сравнения. Все логично, все величины известны, а микроконтроллер делает ровно то, что мы ему говорим, при том что скорость обработки информации даже на штатном рц-генераторе позволяет нам сделать намного большее, чем просто кодграббер, но об этом позже
tahion вне форума   Ответить с цитированием
Ответ

Метки
глушилка, кодграббер, отладочная плата, программатор


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
USB кодграббер + USB программатор - Часть 1 adm Новички 142 04.06.2016 16:27
USB кодграббер + USB программатор tahion Новички 839 31.03.2013 23:58
Макетная-отладочная плата. sinobi2006 Лаборатория 22 23.08.2011 02:06
отладочная плата STK89C5131 tviktor Программирование микроконтроллеров 0 07.05.2009 10:46
плата видеозахвата test Видеонаблюдение, системы контроля доступа 1 08.12.2008 11:49


Текущее время: 01:49. Часовой пояс GMT +4.


Перевод: zCarot