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

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

Мастер-ключ для домофона Arduino, Скетч, Программатор, Домофон, Длиннопост, Текст, Программирование

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

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

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, Скетч, Программатор, Домофон, Длиннопост, Текст, Программирование
Мастер-ключ для домофона Arduino, Скетч, Программатор, Домофон, Длиннопост, Текст, Программирование

Скетч программы для 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". При подключении ключа в консоль вывалится считанный код.

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

Мастер-ключ для домофона Arduino, Скетч, Программатор, Домофон, Длиннопост, Текст, Программирование

TECHNO BROTHER

1.7K постов12.5K подписчиков

Добавить пост

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

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

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