[Frage] php-code | udp-Strings strings, netcat | CGI # für Steuerung IP-Steckdose?

tom_de

Mitglied
Mitglied seit
19 Mai 2007
Beiträge
200
Punkte für Reaktionen
0
Punkte
0
Von Anel-Elektronik gibt es eine gute IP-Steckdosenleiste mit ausgereifter Firmware, die auf mehreren Wegen steuerbar ist.

1. Welchen Ansatz könnte ich zur Steuerung der IP-Dose (von der FBF aus, per calllog) wählen? Brauch mal einen Tipp, da ich mich in alle 3 Wege einarbeiten muss... Den Thread Steckdosenleiste mit FB steuern? hab ich erst später gefunden... behandelt aber vorwiegend die Steuerung per USB:

Die genannte IP-Steckdose erlaubt die Steuerung:
A) Per UDP Strings
B) Per PHP Code
C) Per HTTP/WebIF (POST/GET)

zu A) Die UDP - Steuerung der IP-Dose würde z.B folgendes erwarten:
Es sind zwei UDP Kanäle nötig:
Port 75 zum senden.
Port 77 zum empfangen (listen)

Bsp. zum Abfragen der Leiste(n) im Netzwerk:
Port 75 UDP als Broadcast 255.255.255.255
„wer da?“ + CrLf //CrLf=(0x0D)(0x0A)
senden. Darauf kommt die Antwort:

Antwort: Port 77 UDP

2. Kann man solche UDP-Strings von der Fritzbox (via telnet) absenden?
Hab mal folgendes probiert:
Code:
nc -l -u -p 77 # lauschen
echo "wer da?" | nc -u -b -n 255.255.255.255 75 # senden
3. Doch das netcat (nc) auf der FBF scheint auf den ersten Blick für die UDP Steuerung unbrauchbar - gibt es da vielleicht ein anderes binary?

zu B) Steuerung mit PHP - Die Steuerung würde z.B folgendes erwarten:
Code:
<?
$fp = fsockopen("udp://192.168.0.70",75);
fwrite($fp,"Sw_on1user1anel");
fclose($fp);
?>
4. Um PHP-Scripte auszuführen habe ich hier einige Suchtreffer, mir fehlt noch der richtige Einstieg, da ich nicht viel an der FBF selbst ändern möchte. PHP-Binary?

zu C) Die WebIF der IP-Dose per CGI zu bedienen, scheitere an der fehlenden Anmeldung:
Zugriff per wget:
Code:
/usr/bin/wget -q -O - "http://ip_adresse/ctrl.htm"
liefert: get: server returned error: HTTP/1.1 401 Unauthorized

Mit dem folgenden Shell Script hatte ich zwar mal in einer älteren(!) Fritzbox-Firmware das Passwort für die Fritzbox posten können...
Code:
# POST
export REQUEST_METHOD="POST"
export REMOTE_ADDR="ip_adresse"
export CONTENT_TYPE="application/x-www-form-urlencoded"
POST_DATA="login:command/password=$PASSWD"
export CONTENT_LENGTH=${#POST_DATA}
echo -n "$POST_DATA" | /usr/www/html/cgi-bin/webcm > /dev/null
# GET
export REQUEST_METHOD="GET" 
export QUERY_STRING="getpage=SeitenURL"
/usr/www/html/cgi-bin/webcm # zeigte die Seite an

5. ... weiß aber nicht, wie ich das umbauen kann um die basic authentication der Steckdose zu bedienen?

Freu mich sehr über Anregungen zu einem der Punkte 1..5 :)
Danke Tom.
 
Zuletzt bearbeitet:
1:
PHP ist kein Protokoll zur Steuerung, sondern eine Möglichkeit, eines der vorhandenen Protokolle zu nutzen.
2,3:
Abgesehen davon, dass UDP generell unzuverlässig ist, warum ist das netcat auf der Box dafür ungeeignet?
4:
Es gibt PHP für die Boxen, ist aber etwas groß für die Aufgabe hier.

Basic Authentication geht mit GNU wget und vermutlich auch mit aktuellen Versionen von Busybox wget.

5:
Das Beispiel hat mit Basic Authentication oder auch mit HTTP-Zugriffen nichts zu tun.
 
Danke für die Erklärungen.

Das BusyBox meiner 7390: v1.8.2 (2010-07-08 13:23:44 CEST) gibt sowohl beim
lauschen: nc 10.10.10.10 77
als auch beim
senden: echo "wer da?" | nc 10.10.10.10 75
keinerlei Ausgaben. Mach ich hier was falsch oder liegts am netcat (das ja z.B. kein -u(dp) -l(isten usw. beherrscht)?

Dafür bin ich mit dem wget weitergekommen. Mit:
Code:
/usr/bin/wget -q -O - "http://user1:[email protected]:4444/ctrl.htm" # wget incl. Basic Authentication
wird die Seite geliefert. Wie kann ich nun das Kopfdrücken z.B. auf Button 2 der (Lampe 2) irgendwie auslösen/simulieren?

Hier mal der Quelltext der vom wget gelieferten ctrl.htm:
Code:
<html><head><title>ANEL-Elektronik NET-PwrCtrl</title><link href="np.css" rel="stylesheet" type="text/css">
<script type="text/javascript">
function rc(){if(parent.Extern_Sw=='1' && parent.ss==0)f.submit();if(parent.ss>0)if(++parent.ss==5)parent.ss=0;window.setTimeout("rc();",1000);}
function se(){parent.ss=1;return true;}</script>
<body onload="window.setTimeout('rc();',3000);">
<form method=post action=ctrl.htm name=f onsubmit="se();">
<table class=f>
<tr><td colspan=9 class=tb_hd>&nbsp;Steuerung
<tr><td align=center colspan=2><b>Name:</b><td colspan=4>NET-CONTROL    <td align=right colspan=3><input type="submit" value="Reload" style="font-size:8pt;">
<tr><td colspan=9 class=tb_hd>&nbsp;Steckdosen
<tr bgcolor=#DDDDDD align=center><td colspan=3><input type=text readonly value="Lampe 1" class=bi size=16><td colspan=3><input type=text readonly value="Lampe 2" class=bi size=16><td colspan=3><input type=text readonly value="Lampe 3" class=bi size=16>
<tr bgcolor=#EEEEEE align=center><td width=40><td bgcolor=#FF0000><input class=bt type=submit value=O name=F0></td><td width=40><td width=40><td bgcolor=#00DD00><input class=bt type=submit value=I name=F1></td><td width=40><td width=40><td bgcolor=#FF0000><input class=bt type=submit value=O name=F2></td><td width=40>
<tr bgcolor=#CCCCCC align=center><td colspan=3>aus vom Browser<td colspan=3>an vom Browser<td colspan=3>aus vom Browser

</table></form><font color="white">Build: Mar 04 2011 04:09:12</font><br>
<font color="#DDDDDD"><span style="font-size:7pt;">(c) 2009 ANEL-Elektronik AG - NET-PwrCtrl - </span></font></body></html>

Danke...
 
Zuletzt bearbeitet:
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.