1168

Мастер-ключ для домофона

Поговорим о ключах-таблетках для домофонов. Они бывают разных видов, но мы сегодня будем говорить о самом распространенном - работающим на 1 wire протоколе - DS-1990 (Dallas Touch Memory DS-90). Это ключи семейства iButton. Они очень просты по устройству, не имеют встроенной памяти, содержат только 64-битный id устройства.

Простота устройства, дешевизна изготовления, надежность (нечему ломаться) привело к тому, что данные ключи стали использоваться повсеместно. Начиная от домофонов и заканчивая автомобильными сигнализациями.

Многие производители считывающих устройств поддерживают так называемые "мастер ключи" - т.е. универсальные коды ключей. Такие обычно выдают обслуживающим организациям для доступа в подъезд. Вот некоторые из них, что можно найти в открытом доступе:

01:BE:40:11:5A:36:00:E1

FF:FF:FF:FF:FF:FF

00:36:5A:11:40:BE

00:00:00:FE:D4:53

00:00:00:00:00:00

00:00:00:01:FF:FF

00:00:09:3С:E4:A9

00:00:FF:FF:FF:FF

00:00:AA:11:BE:00

00:00:0F:2E:B8:76

FF:FF:FF:FF:FF

36:5A:11:40:BE

01:FF:FF:FF:FF

36:5A:39:81:49

00:00:00:00:00

01:FF:FF:FF:FF

56:5A:11:40:BE

36:5A:39:81:49

00:00:00:00:00

0B:57:81:46:01

C9:8E

Соберем программатор для записи ключей. Нам потребуются болванки. В продаже часто встречаются DS1990 и TM2004. TM2004 - можно перезописывать, если не произведена финализация (подача 9 вольт). После финализации ключ сохраняется на вечно.

Программировать будем через Arduino Uno. Подключается ключ на 16 ногу и подтягивается к плюсу. Второй конец ключа на землю.

Скетч программы для Arduino записывает каждый бит отдельно:

include <OneWire.h>
#define pin 10
byte key_to_write[] = { 0x01, 0xBE, 0x40, 0x11, 0x5A, 0x36, 0x00, 0xE1 };
OneWire ds(pin); // pin 10 is 1-Wire interface pin now
void setup(void) {
Serial.begin(9600);
}
void loop(void) {
byte i;
byte data[8];
delay(1000); // 1 sec
ds.reset();
delay(50);
ds.write(0x33); // "READ" command
ds.read_bytes(data, 8);
Serial.print("KEY ");
for( i = 0; i < 8; i++) {
Serial.print(data[i], HEX);
if (i != 7) Serial.print(":");
}
// Check if FF:FF:FF:FF:FF:FF:FF:FF
// If your button is really programmed with FF:FF:FF:FF:FF:FF:FF:FF, then remove this check
if (data[0] & data[1] & data[2] & data[3] & data[4] & data[5] & data[6] & data[7] == 0xFF)
{
Serial.println("...nothing found!");
return;
}
return; // remove when ready to programm
// Check if read key is equal to the one to be programmed
for (i = 0; i < 8; i++)
if (data[i] != key_to_write[i])
break;
else
if (i == 7)
{
Serial.println("...already programmed!");
return;
}
Serial.println();
Serial.print("Programming new key...");
for (uint8_t i = 0; i < 8; i++)
{
ds.reset();
data[0] = 0x3C; // "WRITE" command
data[1] = i; // programming i-th byte
data[2] = 0;
data[3] = key_to_write[i];
ds.write_bytes(data, 4);
Serial.print(".");
uint8_t crc = ds.read();
if (OneWire::crc8(data, 4) != crc) {
Serial.print("error!\r\n");
return;
}
else
Serial.print(".");
send_programming_impulse();
}
Serial.println("done!");
}
void send_programming_impulse()
{
pinMode(pin, OUTPUT);
digitalWrite(pin, HIGH);
delay(60);
digitalWrite(pin, LOW);
delay(5);
digitalWrite(pin, HIGH);
delay(50);
}

Если вы хотите просто считать код ключа, а не программировать его, то закомментируйте строку "remove when ready to programm". При подключении ключа в консоль вывалится считанный код.

Таким образом, можно создать дубликат любого ключа или сделать свой мастер-ключ, если вам известен его код.

TECHNO BROTHER

2.3K поста14.1K подписчиков

Правила сообщества

1-Мы А-политическое сообщество. 2-Запрещено оскорбление: Администрации Пикабу, сообщества, участников сообщества а также родных, близких выше указанных.

3-Категорически запрещается разжигание межнациональной розни или действий, направленных на возбуждение национальной, расовой вражды, унижение национального достоинства, а также высказывания о превосходстве либо неполноценности пользователей по признаку их отношения к национальной принадлежности или политических взглядов. Мат - Нежелателен. Учитесь выражать мысли без матерщины

2
Автор поста оценил этот комментарий

в скетче ошибки, копировать не стоит

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

можете подправить?

5
Автор поста оценил этот комментарий

"Скетч программы для Arduino записывает каждый бит отдельно"

БАЙТЫ же (че-т не увидел ни одной унарной операции для "каждый бит отдельно")

раскрыть ветку (1)
Автор поста оценил этот комментарий

каждый символ - это бит.

показать ответы

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества