Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - UDP network-plugin (dev)

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    - √ - UDP network-plugin (dev)

    Hallo,
    es gibt da ein Tool Namens "Remote Shutdown", bei dem man über UDP PC`s runterfahren kann.
    Dabei muß das Tool natürlich auf dem Rechner gestartet sein. Das Toll hört dabei auf Port 1982.
    Via Android-Tab klappt das auch gut. Man sendet an die IP-Adresse und Port z.B. 0xEFBEADDE0x00

    OK...nun häng ich aber etwas bei der Umsetzung des ganze auch via sh.py.
    Anbei mal der entsprechende Auszug aus der plugin.conf, dem item und dem log.

    die plugin.conf
    Code:
    # plugin.conf
    [nw]
       class_name = Network
       class_path = plugins.network
        # ip = 0.0.0.0
        # port = 2727
        # tcp = yes
        # tcp_acl= 127.0.0.1
        udp = yes
        udp_acl= 127.0.0.1 | 192.168.1.170 | 192.168.1.172
    das item
    Code:
    [shutdown]
        [[office]]
            type = str
            visu_acl = rw
            enforce_updates = yes        
            nw_udp_send = 192.168.1.172:1982=0xEFBEADDE0x00
    das log
    Code:
    2014-03-16 21:51:16,785 DEBUG    Main         Plugin: nw -- plugin.py:__init__:43
    2014-03-16 21:51:16,803 DEBUG    Main         Adding listener on: udp:0.0.0.0:2727 -- __init__.py:add_listener:151
    2014-03-16 21:51:16,892 DEBUG    Main         UDPDispatcher: binding to 0.0.0.0:2727 (UDP) -- connection.py:connect:161
    2014-03-16 21:54:36,751 DEBUG    Main         192.168.1.104:61579 sent '{"cmd":"item","id":"shutdown.office","val":"1"}' -- __init__.py:json_parse:270
    2014-03-16 21:54:36,760 DEBUG    Main         UDP: Sending data to 192.168.1.172:1982[COLOR=Red]:[/COLOR] 0xEFBEADDE0x00 -- __init__.py:udp:147
    So wie es aussieht wird das 0xEFBEADDE0x00 auch gesendet.
    Leider nicht mit dem gewünschten Erfolg.
    Wird der rote Doppelpunkt (s.log) eigentlich mit gesendet?
    Hat jemand eine Idee. Firewall-Problem kann ich ausschließen.

    Danke
    Angehängte Dateien

    #2
    Hi Marco,

    zuerst einmal nein es wird kein Doppelpunkt mitgesendet.

    Wie kommst Du eigentlich auf die Payload von 0xEFBEADDE0x00 ?

    Das ist eine Hexadezimalcodierte Zahl mit einem Nullbyte am Ende. Wenn das Nullbyte nicht währe, dann könnte man die Zahl auch einfach Dezimal darstellen und verschicken. Leider kann der Configparser mit diesem Umstand nicht umgehen. Daher bleibt Dir nur der Weg über eine kleine Logik.

    Code:
    import socket
    
    payload = bytearray.fromhex("EFBEADDE00")
    host = '192.168.1.172'
    port = 1982
    
    try:
        family, type, proto, canonname, sockaddr = socket.getaddrinfo(host, port)[0]
        sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        sock.sendto(payload, (sockaddr[0], sockaddr[1]))
        sock.close()
        del(sock)
    except Exception as e:
        logger.warning("UDP: Problem sending data to {}:{}: {}".format(host, port, e))
        pass
    else:
        logger.debug("UDP: Sending data to {}:{}: {}".format(host, port, payload))
    Bis bald

    Marcus

    Kommentar


      #3
      Zitat von mknx Beitrag anzeigen
      Wie kommst Du eigentlich auf die Payload von 0xEFBEADDE0x00 ?
      Hallo Marcus,
      da das WOL-Plugin ja super funktioniert, bin ich bei der Suche nach einer Shutdown-Möglichkeit auf folgendes gestoßen.
      https://knx-user-forum.de/366694-post1.html

      Dort ist auch beschrieben warum in diesem Fall das Nullbyte am Ende sein muß.

      Das ist ein kleines Progrämmchen, das per UDP-Telegramm auf Port 1982 den Rechner z.B. herunterfährt. Dabei fordert es sogar ein Passwort (standardmäßig 0xEFBEADDE, per Hexeditor in der dat-Datei änderbar) für die Aktion Shutdown (0x00) ..............
      Nun schickt man die 4 Passwort-Bytes mit dem Befehls-Byte 0x00 und Nullterminierung (also sendudp und nicht sendudparray) an den PC.
      Danke für Deinen Logik-Code. Werde am Wochenende testen und berichten.

      Kommentar


        #4
        Zitat von macflei Beitrag anzeigen
        Danke für Deinen Logik-Code. Werde am Wochenende testen und berichten.
        Hat auf Anhieb geklappt.
        Besten Dank

        Kommentar

        Lädt...
        X