次のように、1-WireタブレットDS1990で動作するインターコムについて説明します。
インターネットでは、それらからの情報の読み方に関する多くの資料を見つけることができます。 ただし、これらのタブレットは読み取り専用ではありません。 キーを紛失するのは人間の性質であり、現在、DS1990クローンサービスの失速は地下通路にあります。 記録には、元のキーと互換性があるが、追加のコマンドを備えたディスクを使用します。 次に、それらをプログラムする方法を学びます。
なぜこれが必要なのですか? 明らかに悪いオプションを拒否する場合、最も簡単なことは、古いインターホンから蓄積され不要になったクローンタブレットを再プログラムすることです。
すぐに、説明で「主題」にある人のほとんどに明らかないくつかのポイントを省略しますが、ここで検索エンジンからさまよい単純な人が手順を繰り返すことを許可しない場合があります。 これは意図的に行われます。 私は情報の公開を目的としていますが、すべての脆弱性に関する情報はできるだけ早く一般に公開する必要があると考えていますが、それでも問題なく私の入り口を訪れたい人はいません。
ちょっとした理論。
ご存じのように、DS1990の特徴は、一般的な場合、1つのパラメーター-独自の識別番号です。 8バイトで構成され、タブレットの表面に適用されます。 また、1-wireの要求に応じて発行されます。 実際、これらのバイトの1つはデバイスのタイプの識別子であり、もう1つはチェックサムですが、私たちにとってこれは重要ではありません。 彼に知られているすべてのキーはインターコムのメモリに登録されており、インターコムを管理している会社のみがこのセットを変更できます。 しかし、メモリに明示的に記録されたキーに加えて、インターコムは、このメーカー、このシリーズ、このインストーラーのインターコムに共通のいわゆるマスターキーに反応することがあります。 彼らはマスターキーコードを秘密にしようとしますが、時々漏れます。 5分間のグーグル検索で、さまざまなインターコムから約20個のマスターキーを見つけることができます。 私は「訪問」しているので、選択はキー01:BE:40:11:5A:36:00:E1にかかっています。
キーのクローンが作成されるディスクにはさまざまな種類があります。 私たちの都市で最も一般的なのはTM2004です。 説明によると、それらはファイナライズをサポートし、その後、最も一般的なDS1990として上書きおよび機能する能力を失います。 しかし、何らかの理由で、コピーを作成する職人が常にファイナライズを実行するとは限りません。 おそらく、市場に出回っているプログラマーの大部分がかなり前に購入されており、そのような機能を持っていないためでしょう。 知りません しかし、私が実験した4つのキーのうち、確定したキーは1つだけです。 残りの部分では、コードを好きなように簡単に変更できました。
練習。
Arduino Unoでプログラマーを組み立てます。これは、ワンタイムクラフトのプロトタイピングと組み立てに最適です。 回路はシンプルな1-Wireおよび1-Wireです。
妄想ボード上のデバイスの組み立て時間が5分を超えない
スケッチコード。 記録アルゴリズム自体はここで取得されます-domofon-master2009.narod.ru/publ/rabota_s_kljuchom_tm_2004/1-1-0-5
確かに、8バイトすべてを連続して書き込むことができると書かれていますが、私にとってはうまくいきませんでした。 したがって、各バイトは、0x3Cコマンドを使用して個別に書き込まれます。
#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); }
起動後、プログラムは1-Wireインタフェースを1秒間にポーリングし、そこから読み取ったコードをシリアルポートに発行します。 FF:FF:FF:FF:FF:FF:FF:FFの場合、何も接続されていないと考えられます。 一般的な場合、これはもちろん正しくありません。たとえば、TM2004などの一部のディスクでは8 0xFFをキー識別子に書き込むことができるため、タブレットにこのようなコードをステッチした場合、チェックを削除する必要があります。
操作手順:開始し、コードを見つけたいキーを接続します。結果の値はkey_to_write配列のハードコードです。 コメントでマークされたリターンを削除します。 ディスクを起動して再接続します。新しいキーでフラッシュする必要があります。 当然、既知のコード(マスターキーなど)を記録するために、最初の手順は必要ありません。
最初のバイトの書き込み中にエラーが発生した場合、キーは書き換えできません。 エラーが最初ではなく、次のバイトのいくつかにある場合は、タブレットとarduinoの間の接触を確認します。
成功した書き込みログは次のようになります。
KEY FF:FF:FF:FF:FF:FF:FF:FF...nothing found! KEY FF:FF:FF:FF:FF:FF:FF:FF...nothing found! KEY FF:FF:FF:FF:FF:FF:FF:FF...nothing found! KEY 1:98:2C:CD:C:0:0:EB Programming new key...................done! KEY 1:BE:40:11:5A:36:0:E1...already programmed!
私たちは通りに降りて、次の入り口を開けようとします。 動作します!
道徳的および倫理的問題。
広める価値はありましたか? 突然、ホームレスの人が私のポーチに入り、そこに住み始めることができますか?
まあ、まず、それに直面しましょう-マスターキーはごくわずかなお金でどんな移行でもあなたのためにプログラムされます。 はい、インターネットはたくさん提供しています。 この点で、1。5年のhabrozhitel、私の経験を繰り返します-これは海の低下です。
第二に、私はまだ初心者がデバイスを起動するのを妨げるかなり基本的な問題をいくつか意図的に逃しました。 まあ、上級者がポーチに来てそこで寝たり、わいせつを作ったりすることはまずありません。
したがって、私はわずかな疑いもなく出版しています。 それを使用してください!