Библиотека чтения ID брелков сигнализациий HCS301 KEELOQ
- Войдите на сайт для отправки комментариев
Вот накарябал свою первую библиотечку по чтению кодов с брелков на микросхеме HCS301 Keeloq
Целевое назначение - можно использовать в разных системах контроля доступа
Чип HCS301 Keeloq довольно часто используемый в брелках, отличается тем, что имеет "катящийся" код, т.е. постянно изменяемый. Расшифровку кода я не сделал, однако из передаваемых данных можно вытащить следующую инфу : блок кодированной инфы 32 бита, серийный номер брелка, нажатые кнопки, состояние батареи брелка
Помимо двух китайских брелков с ебея одолжил у соседа брелок сигнализации с названием KGB, оказалось что тоже великолепно работает.
"Катящийся код" позволяет делать систему с брелками, защищенную от клонирования и сканирования
Найти такие брелки на ебее можно по ключевым словам hcs 301
Например вот лот, который я использовал
Официально платка имеет 4 выхода, которые активируются при нажатии на одну из 4х кнопок брелка, но неофициально есть контакт "data" с которого можно считывать данные.
Подозреваю, что это можно делать любым приемником с соответствующей частотой
Не знаю, как тут прикрепить файлы, поэтому вот внешние ссылки
Библиотека
http://71reg.ru/HCS301.rar
Data sheet на HCS301
http://71reg.ru/hcs301.pdf
Ключевые слова:
Ардуино Arduino HCS301 KEELOQ Code Hopping rolling роллинг прыгающий код уникальный айди unique ID брелок KeyFob брелоков
Вот пример того, что читается с брелка
Зашифрованный постоянно меняющийся блок 1605787492
Серийный номер 223657
Нажата кнопка Close
Повтор =0
Батарея в норме
То есть если купить вот такой наборчик http://www.ebay.com/itm/433Mhz-RF-transmitter-and-receiver-link-kit-for-Arduino-ARM-MCU-WL-/140719918135?pt=LH_DefaultDomain_0&hash=item20c38f8c37, использовать из него приемник совместно с вашей библиотекой, то можно будет считывать коды с брелков автосигнализаций?
Скорее всего будет, но наборчик этот мне очень не понравился, есть у меня такой.
Еще один брелок протестировал, сига APS, тоже считывается
Проверил - работает.
Имея код брелка как при помощи Arduino воспроизвести его?
С какой целью ? Чтобы приемник KEELOQ типа сигнализации сигнал воспринял как родной ?
С какой целью ? Чтобы приемник KEELOQ типа сигнализации сигнал воспринял как родной ?
Открывать то, что по техпричинам временно не открывается. В законном понимание этого смысла)))
Сколько раз бывало, что ключи с брелками терялись. А так код имеешь пожалуйста открывай. Недавно у сестры на субарике пришлось сигналку переустанавливать из за того, что брел умер...
Вообще можно зашить код в брелок с Arduino без самой сигнализации?
Тут вся фишка в том, что HCS301 имеет "прыгающий" код. Каждая посылка уникальна в пределах что то около 65000 посылок.
Код формируется из кода производителя + серийный номер. Алгоритм KEELOQ вроде взломан, но настолько глубоко я не копал
Получается что даже если "подслушать" посылку и передать её это ничего не даст, второй раз эта посылка не пройдет
А для генерации корректной посылки нужно воспроизводить алгоритм Keeloq
Я думаю ты скоро до этого сам докопаешься. Посоветуй пожалуйста статью или топик по теме простых радио-пультов и их программирования.
По поводу простых радиопультов поищи по ключевому слову RCswitch это вроде библиотека для работы радиобрелками (но без прыгающего кода)
Я разбирался по даташиту HCS301
http://www.allcomponents.ru/pdf/microchip/hcs301.pdf
А теперь тоже самое, но на прерываниях
001
#define LED_PIN 13
002
#define HCS_RECIEVER_PIN 2 // пин к которому подключен приемник для брелков
003
004
005
class
HCS301 {
006
public
:
007
unsigned BattaryLow : 1;
// На брелке села батарейка
008
unsigned Repeat : 1;
// повторная посылка
009
unsigned BtnNoSound : 1;
010
unsigned BtnOpen : 1;
011
unsigned BtnClose : 1;
012
unsigned BtnRing : 1;
013
unsigned
long
SerialNum;
014
unsigned
long
Encript;
015
016
void
print();
017
};
018
019
volatile boolean HCS_Listening =
true
;
020
byte
HCS_preamble_count = 0;
021
uint32_t HCS_last_change = 0;
022
uint32_t HCS_start_preamble = 0;
023
uint8_t HCS_bit_counter;
// счетчик считанных бит данных
024
uint8_t HCS_bit_array[66];
// массив считанных бит данных
025
#define HCS_TE 400 // типичная длительность имульса Te
026
#define HCS_Te2_3 600 // HCS_TE * 3 / 2
027
028
HCS301 hcs301;
029
030
#define HCS_DEBUG_
031
032
#ifdef HCS_DEBUG
033
034
uint16_t HCS_PulseDuration[12];
035
uint16_t HCS_BitDuration[66];
036
uint32_t HCS_msg_duration;
037
038
struct
dta_ {
039
uint16_t delay;
040
byte
f;
041
byte
st;
042
};
043
044
volatile dta_ arr[1000];
045
volatile
int
poz_a = 0,poz_b = 0;
046
#endif
047
048
void
HCS301::print(){
049
String btn;
050
051
if
(BtnRing == 1) btn +=
"Ring"
;
052
if
(BtnClose == 1) btn +=
"Close"
;
053
if
(BtnOpen == 1) btn +=
"Open"
;
054
if
(BtnNoSound == 1) btn +=
"NoSound"
;
055
056
String it2;
057
it2 +=
"Encript "
;
058
it2 += Encript;
059
it2 +=
" Serial "
;
060
it2 += SerialNum;
061
it2 +=
" "
;
062
it2 += btn;
063
it2 +=
" BattaryLow="
;
064
it2 += BattaryLow;
065
it2 +=
" Rep="
;
066
it2 += Repeat;
067
068
Serial
.println(it2);
069
070
}
071
072
void
setup
() {
073
074
Serial
.begin(9600);
075
attachInterrupt(0, HCS_interrupt, CHANGE);
076
077
pinMode(LED_PIN, OUTPUT);
078
pinMode(HCS_RECIEVER_PIN, INPUT);
079
}
080
081
void
loop
() {
082
083
if
(HCS_Listening ==
false
){
084
085
HCS301 msg;
086
memcpy(&msg,&hcs301,
sizeof
(HCS301));
087
088
msg.print();
089
#ifdef HCS_DEBUG
090
if
(msg.SerialNum != 639){
091
092
Serial
.println(
"Raw >>>>>>>>>>>>>>>>>>>>>>>"
);
093
while
(1){
094
if
(poz_b == poz_a)
break
;
095
Serial
.println(String(poz_b)+String(
" "
)+String(arr[poz_b].delay)+String(
" "
)+String(arr[poz_b].f == 0 ?
"LOW"
:
"HIGH"
)+String(
" "
)+String(arr[poz_b].st));
096
poz_b++;
097
}
098
Serial
.println(
"Data >>>>>>>>>>>>>>>>>>>>>>>"
);
099
for
(
int
i = 0;i<66;i++){
Serial
.println(HCS_bit_array[i]); }
100
}
else
{
101
102
}
103
poz_a = 0,poz_b = 0;
104
#endif
105
106
HCS_Listening =
true
;
107
}
108
}
109
110
//
111
112
void
HCS_interrupt(){
113
114
if
(HCS_Listening ==
false
){
115
return
;
116
}
117
118
uint32_t cur_timestamp = micros();
119
uint8_t cur_status = digitalRead(HCS_RECIEVER_PIN);
120
uint32_t pulse_duration = cur_timestamp - HCS_last_change;
121
HCS_last_change = cur_timestamp;
122
123
#ifdef HCS_DEBUG
124
if
(poz_a < 999){
125
arr[poz_a].delay = pulse_duration;
126
arr[poz_a].f = cur_status == HIGH ? 0 : 1;
127
poz_a++;
128
}
129
#endif
130
131
// ловим преамбулу
132
if
(HCS_preamble_count < 12){
133
if
(cur_status == HIGH){
134
if
( ((pulse_duration > 200) && (pulse_duration < 400)) || HCS_preamble_count == 0){
135
// начало импульса преамбулы
136
if
(HCS_preamble_count == 0){
137
HCS_start_preamble = cur_timestamp;
// Отметим время старта преамбулы
138
}
139
}
else
{
140
// поймали какую то фигню, неправильная пауза между импульсами
141
HCS_preamble_count = 0;
// сбрасываем счетчик пойманных импульсов преамбулы
142
goto
exit;
143
144
}
145
}
else
{
146
// конец импульса преамбулы
147
if
((pulse_duration > 400) && (pulse_duration < 600)){
148
#ifdef HCS_DEBUG
149
HCS_PulseDuration[HCS_preamble_count] = pulse_duration;
150
#endif
151
// поймали импульс преамбулы
152
HCS_preamble_count ++;
153
#ifdef HCS_DEBUG
154
arr[poz_a-1].st = HCS_preamble_count;
155
#endif
156
if
(HCS_preamble_count == 12){
157
// словили преамбулу
158
//HCS_Te = (cur_timestamp - HCS_start_preamble) / 23; // вычисляем длительность базового импульса Te
159
//HCS_Te2_3 = HCS_Te * 3 / 2;
160
HCS_bit_counter = 0;
161
goto
exit;
162
}
163
}
else
{
164
// поймали какую то фигню
165
HCS_preamble_count = 0;
// сбрасываем счетчик пойманных импульсов преамбулы
166
goto
exit;
167
}
168
}
169
}
170
171
172
// ловим данные
173
if
(HCS_preamble_count == 12){
174
if
(cur_status == HIGH){
175
if
(((pulse_duration > 300) && (pulse_duration < 900)) || HCS_bit_counter == 0){
176
// начало импульса данных
177
}
else
{
178
// неправильная пауза между импульсами
179
HCS_preamble_count = 0;
180
goto
exit;
181
}
182
}
else
{
183
// конец импульса данных
184
if
((pulse_duration > 300) && (pulse_duration < 900)){
185
HCS_bit_array[65 - HCS_bit_counter] = (pulse_duration > HCS_Te2_3) ? 0 : 1;
// импульс больше, чем половина от Те * 3 поймали 0, иначе 1
186
187
#ifdef HCS_DEBUG
188
HCS_BitDuration[HCS_bit_counter] = pulse_duration;
189
#endif
190
HCS_bit_counter++;
191
#ifdef HCS_DEBUG
192
arr[poz_a-1].st = HCS_bit_counter;
193
#endif
194
if
(HCS_bit_counter == 66){
195
// поймали все биты данных
196
197
HCS_Listening =
false
;
// отключем прослушку приемника, отправляем пойманные данные на обработку
198
HCS_preamble_count = 0;
// сбрасываем счетчик пойманных импульсов преамбулы
199
#ifdef HCS_DEBUG
200
HCS_msg_duration = cur_timestamp - HCS_start_preamble;
201
#endif
202
203
hcs301.Repeat = HCS_bit_array[0];
204
hcs301.BattaryLow = HCS_bit_array[1];
205
hcs301.BtnNoSound = HCS_bit_array[2];
206
hcs301.BtnOpen = HCS_bit_array[3];
207
hcs301.BtnClose = HCS_bit_array[4];
208
hcs301.BtnRing = HCS_bit_array[5];
209
210
hcs301.SerialNum = 0;
211
for
(
int
i = 6; i < 34;i++){
212
hcs301.SerialNum = (hcs301.SerialNum << 1) + HCS_bit_array[i];
213
};
214
215
uint32_t Encript = 0;
216
for
(
int
i = 34; i < 66;i++){
217
Encript = (Encript << 1) + HCS_bit_array[i];
218
};
219
hcs301.Encript = Encript;
220
}
221
}
else
{
222
// поймали хрень какую то, отключаемся
223
HCS_preamble_count = 0;
224
goto
exit;
225
}
226
}
227
}
228
229
exit:;
230
231
//digitalWrite(LED_PIN,cur_status);
232
}
Тут вся фишка в том, что HCS301 имеет "прыгающий" код. Каждая посылка уникальна в пределах что то около 65000 посылок.
Код формируется из кода производителя + серийный номер. Алгоритм KEELOQ вроде взломан, но настолько глубоко я не копал
Получается что даже если "подслушать" посылку и передать её это ничего не даст, второй раз эта посылка не пройдет
А для генерации корректной посылки нужно воспроизводить алгоритм Keeloq
На самом деле никто не взламывал KEELOQ и любой другой шифр не взламывают, да этого и не нужно, плюс ко всему что бы взломать надо тыкать на брелок N сотен раз.
Все верно, что бы организовать защиту от клонирования (копирования) пакета существует счетчик синхранизации:
Данный счетчик (Sync Value) при каждом нажатии на кнопку брелка инкрементируется (увеличивается на 1). В сигнализации помимо серийного номера брелка хранится еще и значение этого счетчика и каждый последующий пакет должен иметь значение счетчика больше чем предыдущий, иначе сигнализация никак не отреагирует на пакет, а может даже и сирену включит "распознав" в этом попытку взлома.
То есть не получится в момент снятия с охраны просто записать пакет брелка и воспроизвести его когда нибудь потом.
Так как как же тогда взламывают? Да очень просто. Вся фича во взломе это - не техничекое оснащение и компьютерная мощь, а немного логики. Для взлома сигнализации вам понадобится естественно еще передатчик.
И так, рассмотрим как это делается на сигнализациях, которые на одну и ту же кнопку снимается и ставится на охрану.
Когда хозяин авто нажимает на кнопку считываем пакет, но при этом глушим его передатчиком, сигнализация данный пакет не принимает - то есть пакет прочитан только нами, сохраняем этот пакет. Далее хозяин авто (так как машина не закрылась) тыкает еще раз, а мы делаем тоже самое. И сразу же отправляем сохраненный ранее пакет. Все! Машина закрыта, хозяин авто уходит, а у нас есть сохраненый пакет от второго нажатия с инкрементированным счетчиком, который и снимет сигналку с охраны.
Тут есть небольшая сложность - это одновременное глушение и прием пакета. Я не знаю как это организованно в грабберах, но на дуине можно организовать так: при приеме части пакета включается передатчик например в момент передачи первых 8 бит серийного номера, а при следущем приеме пакета включается например в момент передачи последних 8 бит серийного номера. Тоесть сигналка не распознает ни одного пакета, а мы можем из двух пакетов собрать правильный серийный номер.
С сигналками, у которых сниятие и постановка на охрану осуществляется разными кнопками все тоже самое только нужно дождаться пока хозяин авто в непонятках начнет тыкать на все кнопки подряд и нажмет на снятие с охраны.
Вот как то так.
Кто-нить может поделиться библиотекой HCS301? Линк с поста 1 дохлый.
Поделюсь, отчего ж нет. Только я её на прерывания переписал и теперь это не библиотека, а просто функция.
001
#define LED_PIN 13
002
003
// Радиобрелки ///////////////////////////////////////////////////////////////////////////////////////
004
#define HCS_RECIEVER_PIN 2 // пин к которому подключен приемник для брелков
005
006
class
HCS301 {
007
public
:
008
unsigned BattaryLow : 1;
// На брелке села батарейка
009
unsigned Repeat : 1;
// повторная посылка
010
unsigned BtnNoSound : 1;
011
unsigned BtnOpen : 1;
012
unsigned BtnClose : 1;
013
unsigned BtnRing : 1;
014
unsigned
long
SerialNum;
015
unsigned
long
Encript;
016
017
void
print();
018
};
019
020
volatile boolean HCS_Listening =
true
;
021
byte
HCS_preamble_count = 0;
022
uint32_t HCS_last_change = 0;
023
//uint32_t HCS_start_preamble = 0;
024
uint8_t HCS_bit_counter;
// счетчик считанных бит данных
025
uint8_t HCS_bit_array[66];
// массив считанных бит данных
026
#define HCS_TE 400 // типичная длительность имульса Te
027
#define HCS_Te2_3 600 // HCS_TE * 3 / 2
028
029
HCS301 hcs301;
030
031
032
void
setup
()
033
{
034
Serial
.begin(9600);
035
036
// Брелки
037
pinMode(HCS_RECIEVER_PIN, INPUT);
038
attachInterrupt(0, HCS_interrupt, CHANGE);
039
040
Serial
.println(
"Setup OK"
);
041
}
042
043
044
void
loop
()
045
{
046
long
CurTime = millis();
047
048
// проверяем наличие команды брелка
049
if
(HCS_Listening ==
false
){
050
051
HCS301 msg;
052
memcpy(&msg,&hcs301,
sizeof
(HCS301));
053
054
// включаем слушанье брелков снова
055
HCS_Listening =
true
;
056
057
Serial
.println(String(
"KeyFb#"
)+String(msg.SerialNum));
058
}
059
060
}
061
062
// Функции класса HCS301 для чтения брелков
063
void
HCS301::print(){
064
String btn;
065
066
if
(BtnRing == 1) btn +=
"Ring"
;
067
if
(BtnClose == 1) btn +=
"Close"
;
068
if
(BtnOpen == 1) btn +=
"Open"
;
069
if
(BtnNoSound == 1) btn +=
"NoSound"
;
070
071
String it2;
072
it2 +=
"Encript "
;
073
it2 += Encript;
074
it2 +=
" Serial "
;
075
it2 += SerialNum;
076
it2 +=
" "
;
077
it2 += btn;
078
it2 +=
" BattaryLow="
;
079
it2 += BattaryLow;
080
it2 +=
" Rep="
;
081
it2 += Repeat;
082
083
Serial
.println(it2);
084
085
}
086
087
void
HCS_interrupt(){
088
089
if
(HCS_Listening ==
false
){
090
return
;
091
}
092
093
uint32_t cur_timestamp = micros();
094
uint8_t cur_status = digitalRead(HCS_RECIEVER_PIN);
095
uint32_t pulse_duration = cur_timestamp - HCS_last_change;
096
HCS_last_change = cur_timestamp;
097
098
// ловим преамбулу
099
if
(HCS_preamble_count < 12){
100
if
(cur_status == HIGH){
101
if
( ((pulse_duration > 150) && (pulse_duration < 500)) || HCS_preamble_count == 0){
102
// начало импульса преамбулы
103
//if(HCS_preamble_count == 0){
104
// HCS_start_preamble = cur_timestamp; // Отметим время старта преамбулы
105
//}
106
}
else
{
107
// поймали какую то фигню, неправильная пауза между импульсами
108
HCS_preamble_count = 0;
// сбрасываем счетчик пойманных импульсов преамбулы
109
goto
exit;
110
111
}
112
}
else
{
113
// конец импульса преамбулы
114
if
((pulse_duration > 300) && (pulse_duration < 600)){
115
// поймали импульс преамбулы
116
HCS_preamble_count ++;
117
if
(HCS_preamble_count == 12){
118
// словили преамбулу
119
//HCS_Te = (cur_timestamp - HCS_start_preamble) / 23; // вычисляем длительность базового импульса Te
120
//HCS_Te2_3 = HCS_Te * 3 / 2;
121
HCS_bit_counter = 0;
122
goto
exit;
123
}
124
}
else
{
125
// поймали какую то фигню
126
HCS_preamble_count = 0;
// сбрасываем счетчик пойманных импульсов преамбулы
127
goto
exit;
128
}
129
}
130
}
131
132
133
// ловим данные
134
if
(HCS_preamble_count == 12){
135
if
(cur_status == HIGH){
136
if
(((pulse_duration > 250) && (pulse_duration < 900)) || HCS_bit_counter == 0){
137
// начало импульса данных
138
}
else
{
139
// неправильная пауза между импульсами
140
HCS_preamble_count = 0;
141
goto
exit;
142
}
143
}
else
{
144
// конец импульса данных
145
if
((pulse_duration > 250) && (pulse_duration < 900)){
146
HCS_bit_array[65 - HCS_bit_counter] = (pulse_duration > HCS_Te2_3) ? 0 : 1;
// импульс больше, чем половина от Те * 3 поймали 0, иначе 1
147
HCS_bit_counter++;
148
if
(HCS_bit_counter == 66){
149
// поймали все биты данных
150
151
HCS_Listening =
false
;
// отключем прослушку приемника, отправляем пойманные данные на обработку
152
HCS_preamble_count = 0;
// сбрасываем счетчик пойманных импульсов преамбулы
153
154
hcs301.Repeat = HCS_bit_array[0];
155
hcs301.BattaryLow = HCS_bit_array[1];
156
hcs301.BtnNoSound = HCS_bit_array[2];
157
hcs301.BtnOpen = HCS_bit_array[3];
158
hcs301.BtnClose = HCS_bit_array[4];
159
hcs301.BtnRing = HCS_bit_array[5];
160
161
hcs301.SerialNum = 0;
162
for
(
int
i = 6; i < 34;i++){
163
hcs301.SerialNum = (hcs301.SerialNum << 1) + HCS_bit_array[i];
164
};
165
166
uint32_t Encript = 0;
167
for
(
int
i = 34; i < 66;i++){
168
Encript = (Encript << 1) + HCS_bit_array[i];
169
};
170
hcs301.Encript = Encript;
171
}
172
}
else
{
173
// поймали хрень какую то, отключаемся
174
HCS_preamble_count = 0;
175
goto
exit;
176
}
177
}
178
}
179
180
exit:;
181
182
//digitalWrite(LED_PIN,cur_status);
183
}
Спасибки огромное!!!
Не за что, если ошибки какие нароешь или доработаешь, скинь сюда пожалуйста
Но в принципе ошибки маловероятны, код уже скоро полгода в работе
Круто, не думали добавить поддержку этих чипов в RCSwitch?
всем привет ! начну свой вопрос с того,что задался целью зделать брелок СЕЗАМ откройся !ну и как обычно это бывает у начинающего,я много и по долгу гуглил И прихожу к такому мнению,что не стоит настолько углубляться ,ВЕДЬ истина лежит на поверхности !мне сегодня приносили пацаны одну такую на ПЯТЁРОЧКИ и я посмотрев повнимательнее понял что к ней в домашних условиях не прикосались !но вот интерестная штука - кварц в ней на 21.4 Мгц в противоположность стандарту 433.92 !,так-жэ некоторые умельцы ставят на 1.0 Мгц ! Вопрос :достаточно ли в брелках замены кварца чтобы из него вышел кодграббер ?
Конечно не достаточно!
Параллельно кварцу нужно еще подстроечный резистор поставить на 100 кОм. Вот именно этим резистором и граббить код
АЛЛЕЛУЯ ! друг скинь схемку а ? я паяльным ремеслом занялся недавно и первое что зделал-жучок !нехочу останавливаться !в инете помоему банят подобные темы-очень трудно чтолибо найти !но я знал что есть пацаны которые не оставят без хлеба других пацанов ! то есть в любом брелке накинуть кудато лапы резистра параллельно любому кварцу ??? вот блин надо было брелок у себя оставить,но и звонить пока не хочу,пока с уверенностью не скажу им что да смогу зделать !
вот чтото наподобие такой схемы да ?
очень нужны любые коментарии к вышепроэллюстрированным схемам !любая инфа !!!!
Клевые схемы, бро!
А если серьезно, то
1. Дело не в схеме, а в "мозгах", т.е. программе
2. Взлом HCS не тривиальная задача, тут описывался способ, но к нему есть серьезные вопросы.
3. Эта задача не для твоего уровня квалификации, это 100%
ну даже если мне придётся взятся за программатор,то посоветуй какой нужен !научимся ёпты .....
а у заводских ведь мозги есть ?!
почитайте http://phreakerclub.com/
satai явно не ваша квалификация, либо вы просто народ троллите...
Какой интересный сайт. И прямо сходу там нашел алгоритм дешифрации посылки Keeloq
http://phreakerclub.com/forum/showthread.php?t=1094
Спасибо за ссылку.
ну да я понимаю ! вы ведь уже родились такими-с програматором в голове !когда права получали вспомните ка с каким призрением на вас автолюбители смотрели-тоже наверное с рулём родились !)))я не оскорбляю,а констатирую факт !полгода назад купил себе ноут и не знал как его включить,а сейчас уже не пользуюсь антивирусами !всё в этом мире познаётся ребята и для вас это может и хобби,но для меня жэ хлеб насущный-от практики перехожу к теорий!я ещё с линеички начинал(40см.)!не ну я конечно жэ понимаю,что можно открыть и прописать ключь !вот только работёнка эта при котороой можно и получить,да хотябы и срок !,да короче давайте расказывайте и объясняйте что по чём.при себе имею комп и паяльник !)))
Не вопрос. Для начала подключи к Ардуине светодиод и попробуй им помигать. Как осилишь - приходи, подскажем дальше
не вопрос !я микроконтроллер сниму с игрушки,у которой светодиоды мигают )))
http://rsataev2014.wordpress.com - я всёравно найду единомышленников !
satai, судя по вашим ответам, вам паяльник эффективней будет для терморектального крипто анализа использовать. Эффективность, в вашем случае, выше будет. А ноут рядом поставте
не ну я могу конечно проАНАЛлизировать ваш внутренний мир глубоко уважаемый roman,но боюсь что вам это может понравится,а я не хотел бы заводить себе поклонников !а то время ,когда пояльником вымогали деньги безвозратно прошло !да и я не из категории быдла,если я иду на преступление,то только от голода и только в адрес тех,кто не прочухает пропажу части денег ! я джентельмен ))) вы лучше просветите меня об новшествах в сфере защиты новых сигналок !
Все привет!
Вскрыл брелок и обнаружил что чип там HCS 201. Подскажите в чем разница между 201 и 301?
Все привет!
Вскрыл брелок и обнаружил что чип там HCS 201. Подскажите в чем разница между 201 и 301?
а Datasheet на чипы что говорит, смотрели?
посмотрел, для меня это пока темный лес, вот к вам и обращаюсь))))), просто хотел узнать можно ли использовать данный брелок с этой библиотекой
да и я не из категории быдла,если я иду на преступление,то только от голода
От нехватки мозгов это. Отсюда и проблемы с чтением даташитов и чувство голода. Поди в вашем голоде и виноват кто угодно, но только не вы (общество, судьба, правильтельство, родители, "жизнь такая")
А "прочухают/не прочухают" - оставте эти самооправдания для себя. Задумали вы гадость и хотите что-бы вам кто-то помогал.
Просветить вас? Да запросто: http://www.youtube.com/watch?v=3qaDlS-EC2w
да 12,6 отсидел и не жалуюсь !вы эту хрень учите учите а я взял и сделал !и мало того завёл свой блог по данной теме
rsataev2014.wordpress.com
здесь инфу черпать бесполезно !эти очкарики научились пользоваться программатором и думают что судьбу за яйца поймали !)))
удачи вам лошары со своими ардуинами !
Нет, недостаточно. Граб это отдельное устройство, которое из общего с брелком имеет только трансивер. НО: трансивер занимается передачами полезной нагрузки, т. о. собственно приёмом/отправкой кода. Принцип граба заключается в приёме открывающего кода, с одновременным недопущением приёма машиной закрывающего кода. Поэтому кроме трансивера ещё нужна глушилка. Так что топаем на http://phreaker.us/ и вдумчиво читаем статьи о кодграбберах, ибо граб - это граб. А брелок - это брелок. И наивно полагать что из одного получится другое. Хотя есть оговорка - из граба, в принципе, возможно сделать брелок. Но процессоров там тогда, скорее всего, будет два.
Нет, недостаточно. Граб это отдельное устройство, которое из общего с брелком имеет только трансивер.
Вы еще не поняли что это просто малолетний троль который только учится "мурчать по понятиям" (или бездарно пытается изобразить подобную роль)?
А ссылки, на сайты.... ну не нужно, а? Ведь действительно для подростков это "заманчиво и романтично", а способности предвидеть последствия - еще ослаблены. Понятно, что "кто хочет тот найдет", только зачем же "вводить во искушение?" :) Разве без этого нет интерестных применений контроллерым знаниям?
Нет, недостаточно. Граб это отдельное устройство, которое из общего с брелком имеет только трансивер.
Вы еще не поняли что это просто малолетний троль который только учится "мурчать по понятиям" (или бездарно пытается изобразить подобную роль)?
А ссылки, на сайты.... ну не нужно, а? Ведь действительно для подростков это "заманчиво и романтично", а способности предвидеть последствия - еще ослаблены. Понятно, что "кто хочет тот найдет", только зачем же "вводить во искушение?" :) Разве без этого нет интерестных применений контроллерым знаниям?