PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : HS-Webabfage: passwortgeschützte Seite tut dumm...



Benutzer
31.05.06, 08:55
Hi!

Bastel grad an ner Webabfrage zu dem Rittal Überwachungsystem mit embedded Webserver.

Die Seite ist mit einem .htacess Passwortschutz versehen (denk ich zumindest, da das Popup-eingabefenster so aussieht.)

Tja, so wie es aussieht lässt der mich nicht rein.
Das sagt der Debugger:


Senden:
GET /cmcget.cgi?0000 HTTP/1.1 Authorization: Basic Y21jOmNtYw== Host: 172.16.X.XXX Connection: Close

Empfangen:
HTTP/1.1 401 Unauthorized Server: Mbedthis-AppWeb/1.2.2 Date: Tue, 30 May 2006 17:09:43 GMT Connection: close Content-Type: text/html WWW-Authenticate: Digest realm="CMC-TC/PU2", domain="172.16.X.XXX
(Gesamt: 5) (Work: 2) (Typ: Liste) (OK: 0)


In der Hilfe steht was von HTTP Passwortschutz. kann der eventuell gar kein htaccess?

Im Expertengebe ich einfach Passwort und Benutzername ein, URL Qouting ist nicht aktiviert

Hat schon mal einer passwortgeschützte Seiten abgerufen? (Bestimmt...;) )

Gruß
Ralf

Matthias Schmidt
31.05.06, 09:05
Die erste Zeile deiner Abfrage hat jedenfalls funktioniert (WORK: 2!). Vielleicht liegt es ja nicht am Passwort, sondern an der Abfrage selbst....

Benutzer
31.05.06, 09:15
Heisst dies, dass der zweite Block funktioniert hat, oder ob der zweite den Fehler gebracht hat?
Block Nr:

Beliebige Daten
Freier Text->
id=bb18r style="color:#
Auswahlliste->
009900">=0
FF9900">=1
FF0000">=2
Wert als Klartext
Freiertext ->
</td>hier der WebCode-Fetzen


<TD id=bb14c>1&nbsp;</TD>
<TD id=bb14l><A HREF="cmcget.cgi?3101">Temperatur Sensor </A></TD>
<TD><IMG SRC="ok.gif" BORDER=0></TD>
<TD id=bb18r style="color:#009900">27</TD>
<TD id=bb18l>°C</TD>

Matthias Schmidt
31.05.06, 09:25
Heißt, bei der zweiten Zeile hängt es. Da die erste aber freier Text ist, weiß man jetzt nicht so genau, ob die Abfrage nicht passt oder der Zugriff auf die Seite.

P.S: Du denkst daran, dass "BENUTZERNAME:PASSWORT" als ein Ausdruck in base64 encoded werden muss?

Benutzer
31.05.06, 09:30
P.S: Du denkst daran, dass "BENUTZERNAME:PASSWORT" als ein Ausdruck in base64 encoded werden muss?

Sorry, jetzt macht es grad "Tuuht tuuht, Bahnhof, Abfahrt 7:30, Gleis 3, Kofferklau..."

Benutzer
31.05.06, 09:47
Ok, ich weis jetzt was das ist. Google sei dank.

Hier der Link zu nem Encoder/Decoder
http://makcoder.sourceforge.net/demo/base64.php

Aber:
Ich mache ne einfache auswertung, und da geb ich einfach inden Feldern mein benutzername uncodiert an.

So wie es scheint, codierert das der Experte selber. pass und Benutzername sind beides mal cmc.

Die Debugseite gibt codiert das aus:Y21jOmNtYw==
macht dekodiert cmc:cmc
also das was Matthias gesagt hat.

Scheint so net zu funzen, nur warum?

Edit:
hab mal die Abfrage via Telnet gemacht.
Hier die komplette Antwort:




HTTP/1.1 401 Unauthorized
Server: Mbedthis-AppWeb/1.2.2
Date: Wed, 31 May 2006 09:53:38 GMT
Connection: close
Content-Type: text/html
WWW-Authenticate: Digest realm="CMC-TC/PU2", domain="172.16.x.xxx:80", qop="auth
", nonce="721d487dbd5ddbb6f493bf4b8a34ee2d", opaque=""9a-18624-42edea29"", algor
ithm="MD5", stale="FALSE"
Content-length: 192
<HTML><HEAD>
<TITLE>Authentication Error: Access Denied, Authorization required.<
/TITLE>
</HEAD>
<BODY><H2>Authentication Error: Access Denied, Authorization required.</H2></BOD
Y>
</HTML>

Verbindung zu Host verloren.
U:\

Fazit, der lässt mich wirklich nicht rein...


Access Denied
Hat ein großes "D"
Das bekomm ich im IE nur wenn der Benutzername richtig ist, aber das Passwort falsch
--> Er erkennt das Passwort falsch
muss ich da was beachten?

Michel
31.05.06, 10:44
Ich bin jetzt etwas verwirrt :confused: .

Was machst du denn jetzt genau? Eine einfache Webseitenabfrage oder mit "Datenblöcke senden"?

Bei der ersten Variante gilt: Benutzername und Passwort uncodiert in die Felder eintragen, bei Datenblöcken senden läuft das etwas anders:
der HTTP-Abruf einer Passwortgeschützten Seite lautet:
GET URL HTTP/1.1
Authorization: Basic BENUTZERNAME:PASSWORT
Host: IP-ADRESSE
Connection: Close
... und hier Benutzername:Passwort Base64 codiert.
Aber: an das Skript wird von dir noch ein Parameter übergeben?
cmcget.cgi?3101 bzw. cmcget.cgi?0000Wofür stehen die 4 Ziffern?
Poste am besten mal Screenshots von deiner kompletten Abfrage.

Tipp: Es gibt schöne Tools wie Packetyzer oder HTTPLook.
Starten, Webseite erfolgreich im IE abrufen, Protokoll öffnen und die einzelnen Schritte einfach im Experten eintragen.;)

Benutzer
31.05.06, 11:35
Ich mache eine einfache Webabfrage.
gebe auch das Passwort normal ein: cmc und cmc

Das Get-Zeug steht in der Debugseite drin.

Das andere hab ich nur mal mit Telnet gemacht, um zu sehen, was da überhaupt ab geht


cmcget.cgi?3101 bzw. cmcget.cgi?0000

-->cmcget.cgi?0000 ist der Seitenaufruf
-->cmcget.cgi?3101 ruft dementsprechend eine andere seite auf (steht uach nur im Web-Fetzen drin, und nicht in der Abfrage)

also, die aufgerufenen Seite heisst: "cmcget.cgi?0000"

Screenshots hängen an.

Benutzer
31.05.06, 11:52
hab grad mal das Tool HTTPLock ausprobiert
-->Super Teil!

in Telnet funktioniert das mit dieser Abfrage


GET /cmcget.cgi?0000 HTTP/1.1
Host: 172.16.x.xxx
Connection: Close
Authorization: Digest username="cmc", realm="CMC-TC/PU2", qop="auth", algorithm="MD5", uri="/cmcget.cgi", nonce="4b21fad0c93a7ee5900ef0d80d87d041", nc=00000001, cnonce="1c5ef305f0c2b92201124265bc93a2bc", opaque=""9a-18624-42edea29"", response="c9f88863ac36fa922214bf5ef4446a37"

Die Authoriszierung ist nur anderst...
versuch es mal mit "Datenblöcke senden" und schick dem mal die ganze Wurst.

Benutzer
31.05.06, 13:53
So, hab mich mal etwas schlau gemacht.
Es gibt die Authorisierungsmethoden BASIC und DIGEST.
http://www.cs.wisc.edu/~cao/digest-rfc2069.html#2

Mein Server will Digest, und so wie das aussieht kann das der Homeserver nicht automatisch.

Jetzt wollt ich das ganze mit "Datenblöcke senden" machen.

Leider bekomm ich nun gar keine Antwort mehr vom Server.
Ich sende
4 Blöcke

GET /cmcget.cgi?0000 HTTP/1.1
Host: 172.16.x.xxx
Authorization: Digest username="cmc", realm="CMC-TC/PU2", qop="auth", algorithm="MD5", uri="/cmcget.cgi", nonce="4b21fad0c93a7ee5900ef0d80d87d041", nc=00000001, cnonce="1c5ef305f0c2b92201124265bc93a2bc", opaque=""9a-18624-42edea29"", response="c9f88863ac36fa922214bf5ef4446a37"
Connection: CloseAlles als Freier Text und jeden Block mit CRLF angehängt.

Mach ich da was grundlegendes falsch, weil der nicht mal mehr antwortet.

Gruß
Ralf

Benutzer
31.05.06, 14:32
Ok, habs,

da hat ein weiterer Block nur mit
"CRLF" am Ende gefehlt.

Jetzt kann ich mal meine eigendliche abfrage debuggen.

Denke sowas könnt mer in die FAQ machen...
tweky ich meld mich...:D

hm.. war fast ein Ein-Mann-Thread....Sorry
Gruß
Ralf

Michel
31.05.06, 14:36
Poste mal den Quelltext der abzufragenden Webseite und den HTTPLook-Auszug einer erfolgreichen Abfrage via Explorer.

Ich habe nämlich den Verdacht, daß das Problem nicht im Zugriff auf die Seite, sondern in deiner Abfrage liegt. Stichwort: Auswahlliste.

Markieren des abzufragenden Wertes bitte nicht vergessen!

Benutzer
31.05.06, 14:46
Ich beschränke mich mal auf nen Auszug

HTTPLook


<TR HEIGHT=30 style="background-color:#CCCCCC">
<TD id=bb14c>1&nbsp;</TD>
<TD id=bb14l><A HREF="cmcget.cgi?3101">Temperatur Sensor </A></TD>
<TD><IMG SRC="ok.gif" BORDER=0></TD>
<TD id=bb18r style="color:#009900">27</TD>
<TD id=bb18l>°C</TD>
</TR>


Webseite


<TR HEIGHT=30 style="background-color:#CCCCCC">
<TD id=bb14c>1&nbsp;</TD>
<TD id=bb14l><A HREF="cmcget.cgi?3101">Temperatur Sensor </A></TD>
<TD><IMG SRC="ok.gif" BORDER=0></TD>
<TD id=bb18r style="color:#009900">27</TD>
<TD id=bb18l>°C</TD>
</TR>


Du hast recht und unrecht :D
Also der Zugriff funktioniert jetzt, das lag sicher am BASIC<->DIGEST Problem

Aber wie du schon richtig geraten hast, hängt der nun, allerdings in Block 4
Das ist der Wert in Klartext.
Zahlenformat Standard
internes KO 8bit -127...127

Michel
31.05.06, 14:59
Es hakt an deiner Auswahlliste! Schau dir dazu nochmal die Hilfe im Experten an (ist aber für diese Abfrage nicht notwendig, ich erkläre aber bei Bedarf gerne die Funktion ;) ).

Lösche im Experte die Auswahlliste und ergänze Schritt 2 mit 009900">

-> freier Text: id=bb18r style="color:#009900">

Die letzte Abfrage sollte ok sein.

Matthias Schmidt
31.05.06, 15:02
Ich würde mal den Text der Auswahlliste:

009900">

nur auf 00900" reduzieren

dann Text ">"

und dann "Wert als Klartext"

Benutzer
31.05.06, 15:14
OK! Danke ihr beiden!

Beide Methoden funktionieren.
@Michel: Die Farbe der Tempanzeige ändert sich bei Warnung und Alarm.
Da dachte ich ich nimm ne Auswahlliste, dann kann ich das auch grad noch abfragen :cool:

Aber klar, zum testen hät ich schon erst mal deine Methode nehmen können...

und..OK, du hattest Recht, es lag (auch) an der Abfrage :rolleyes:

@Matthias:-->Einwandfrei: Farben werden erkannt und angezeigt.
Warum tut der wegen dem > so dumm?
ist ja nirgends als Sonderzeichen erwähnt...

Dank und Gruß
Ralf

Michel
31.05.06, 15:17
Wenn sich die Farbe ändern kann, dann statt freier Text: id=bb18r style="color:#009900">

freier Text: id=bb18r style="color:#
beliebiger Text
freier Text: ">

Dann sollte das funktionieren.

Benutzer
31.05.06, 15:19
oder so...aber wenn ich die Farben schon haben kann, dann nehm ich die auch noch mit :p

Ach ja, die Temp wird natürlich auch angezeigt!

Michel
31.05.06, 15:22
oder so...aber wenn ich die Farben schon haben kann, dann nehm ich die auch noch mit :pZu spät gesehen. :eek:

Ich dachte, du würdest die Farben "nur" zur Erkennung der richtigen Position verwenden.

Hauptsache, es funktioniert jetzt!:)