Reverse-Engineering von RF-Paketen

Ich habe einen PowerCost Monitor von Blue Line Innovations . Es sendet Pakete über eine 433,92-MHz-HF-Verbindung an eine Anzeigeeinheit. Es gibt Code ( Power Monitor , unvollständig), um diese Pakete mit einem RF Link 4800bps-Empfänger und einem Arduino zu erkennen.

Ich bekomme definitiv etwas vom Sender, aber die Pakete scheinen keinen Sinn zu machen. Wie könnte man Daten von einem solchen Gerät systematisch entschlüsseln?

( Update/Aside 2014-07: Ein Github-Benutzer hat das Protokoll vollständig entschlüsselt und das rtl_433-Paket für SDR-Dongles geforkt, um es zu lesen: radredgreen/rtl_433 .)

( Update/Aside 2014-08: Ein anderer Github-Benutzer hat dies auf Arduino implementiert: CapnBry/Powermon433 )

Beachten Sie, dass der PowerCost Monitor mit dem erwähnten Black & Decker-Gerät identisch ist.

Antworten (2)

Das Problem, auf das Sie dort wahrscheinlich stoßen, ist also, dass nicht lizenziertes Funkspektrum verrauscht ist. Es gibt viele Dinge, die dort senden, insbesondere billige drahtlose Elektronik wie drahtlose Türklingeln, drahtlose LED-Controller und diesen "Stromkosten" -Monitor, den Sie sich ansehen. Bist du sicher, dass du nicht nur im Lärm überschwemmt bist? Der Empfänger, mit dem Sie verbunden sind, skaliert automatisch, sodass Rauschen wie ein Signal aussieht. Was kommt heraus, wenn der Power Monitor nicht angeschlossen ist? Wenn es immer noch wie das gleiche Kauderwelsch aussieht, das Sie bekommen haben, gibt es Ihr Problem.

Sie werden die massive Anzahl von Beschwerden unter diesem Empfänger von Leuten bemerken, die sagen: "Ich kann ihn nicht verbinden!" oder "es gibt Mülldaten!" und eine ganze Menge mehr, die Ratschläge geben, wie man es repariert. Wahrscheinlich hat das Gerät, das Sie lesen möchten, ein ähnliches Schema entwickelt, um seine Daten richtig zu codieren.


Für den tatsächlichen Versuch, das Protokoll "reverse engineering" zu machen, ist dies normalerweise langweilig und langsam, aber methodisch und logisch.

Nehmen Sie zunächst einfach den Empfänger, den Sie haben, und schließen Sie ihn im One-Shot-Modus an so etwas wie ein Oszilloskop an, und schließen Sie dann den Empfänger an, der mit Ihrem Monitor geliefert wurde. Wenn das codierte Paket dann vom Kostenmonitor kommt, speichern Sie die Wellenform von Ihrem Oszilloskop und was sie aus der Softwareausgabe entspricht. Wenn dann das nächste Paket durchkommt, vergleichen Sie, was sich in der Wellenform geändert hat, mit den Daten, die Sie empfangen haben. Langsam sollten Sie in der Lage sein, herauszufinden, was los ist.

Im Allgemeinen ist der Grund, warum Sie nicht zu viele Amateur-Reverse-Engineering-Jobs sehen, der, dass beim Reverse-Engineering dieser Dinge viel Intuition im Spiel ist. Zum Beispiel: Sie werden wahrscheinlich feststellen, dass selbst bei einer einzigen Änderung der Daten (dh ein neues Paket kommt mit nur einer Temperaturänderung von 1 Grad) mehrere Änderungen im Paket auftreten können. Dies könnte aus einem Prüfsummenpaket stammen, aber wie wurde es gebildet? Ist es ein CRC16? Oder einfach eine Summe aller Bits im Paket?

Ein Werkzeug, das helfen könnte, wäre ein billiger Logikanalysator .

Viel Glück! Ich hoffe das hilft.

Dies ist eine Teilantwort, da ich die Pakete noch nicht entschlüsselt habe, aber im letzten Jahr viel darüber gelernt habe, wie einfache HF-Karten funktionieren.

Während der Kommentar von Kit Scuzz zu Logikanalysatoren hilfreich ist, sind sie es hier vielleicht weniger:

  1. Die 433,92-MHz-Empfänger wenden AGC auf das Eingangssignal an und verstärken es so, dass die Platine alle paar Millisekunden ein Hoch ausgibt. Dies würde das Setzen eines Triggers auf einem Logikanalysator sehr schwierig machen.
  2. Die Pakete kommen etwa alle 32 Sekunden an. Kein Logikanalysator, den ich mir leisten kann, kann so lange Lücken zwischen Paketen erfassen.

Das Tool, das ich am nützlichsten fand, ist Protocol Analyzer . Es verwendet Ihre Soundkarte als einkanaliges, langsames Datenerfassungsgerät. Es hat einige Einschränkungen (die Genauigkeit wird durch die minimale Abtastbreite der Soundkarte von etwa 22 µs begrenzt) und einige lästige Fehler, aber es ist so wie es ist verwendbar.

Ich wünschte, ich hätte zu Beginn mehr über Manchester-Codierung gewusst. Die Atmel Application Note „ Manchester Coding Basics “ ist sehr hilfreich. Es war auch sehr lehrreich, einen anderen Leistungsmesser kaufen und auseinander nehmen zu können, da ich dann Signale direkt von den µc- Pins des Senders nehmen konnte .

Wenn die Pakete 4800 bps haben, können Sie sich absolut einen Logikanalysator leisten, der im Grunde für immer kontinuierlich erfassen kann: Ein Arduino! Es sollte möglich sein, den Pin-Zustand bei > 10 kHz abzutasten und über die serielle Verbindung zu streamen, ohne zu viel Optimierung vornehmen zu müssen. Alternativ kann die 150-Dollar-Saleae-Logik im Grunde genommen für immer mit 24 MSPS abtasten (oder bis Ihr PC auf jeden Fall keinen RAM mehr hat).
Wenn Sie 1. nur die Pins direkt lesen (zB kein digitalRead()Mist) und 2. 8 Samples in jedes serielle Byte packen, sollte das Sampling bei 10 kHz nicht schwer sein. Möglicherweise möchten Sie Ihr Sampling jedoch durch einen Interrupt auslösen, um ein deterministisches Timing zu erhalten.