Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB.NET: vbs autologin

Sivun loppuun

Spewed [06.01.2006 16:03:51]

#

Skripti, joka hakee ReturnHMTL:llä verkkopäätteen web-pohjaisesta hallinnasta ADSL statuksen toimii muuten ok, mutta esteenä on verkkopäätteen hallintaan pääsyyn vaadittu admin login.

Miten Visual Basicillä määritellään nk. autologin? Eli kun skripti noutaa lähiverkon osoitteesta http://192.168.1.1 halutut tiedot, kirjaudutaan kohteeseen ensin tietyllä käyttäjätunnuksella ja salasanalla.

P.S. Login -ruutu on normaali Windowsin pop-up login -ikkuna, mikäli sillä on merkitystä.

Spewed [07.01.2006 16:39:54]

#

Tuollasta kokeilin, ei tunnu toimivan, osaako joku sano miksei?

Dim postData As String
postData = "username=admin&password=1234"
Dim request As HttpWebRequest
request = CType(WebRequest.Create("http://192.168.1.1"), HttpWebRequest)
request.Method = "POST"

Meitsi [07.01.2006 16:44:38]

#

Ainakaan tuota post dataa ei tuon koodin mukaan liitetä mihinkään. Pastea vähän lisää koodia niin asia selkenee.

EDIT: Voithan lähettää vaikka winsockilla oman http requestin, jolloin ainakin saat juuri haluamasi datan lähtemään.

Spewed [07.01.2006 16:49:46]

#

No, lisää koodia tuohon login -osioon ei ole. :) Mitenkäs post data tulisi liittää?

Meitsi [07.01.2006 17:55:13]

#

En tiedä käyttämästäsi http systeemistä tuon koodin perusteella kun ei ole tullut vb:tä käytettyä aikoihin, eikä sitä nyt ole mulla edes koneella asennettuna. Webbrowser kontrolli?

Mutta enivei, putkassa on winsock koodivinkkejä, ja googlella luulisi http-requesteista löytyvän runsaasti tietoa.

Tällaisella http-requestilla luulisi saavan siltä boksilta etusivun:

Dim request As String
request = "GET / HTTP/1.1" & VbCrLf & "Connection: close" & VbCrLf & "Accept: */*" & VbCrLf & VbCrLf

Sitten winsockilla lähetät tuon "request"-stringin sinne boksille.

EDIT: ...ja se etusivu tulee sitten "paluupostissa" sieltä servulta kun olet lähettänyt tuon requestin, eli muista myös vastaanottaa data mitä winsock antaa.

Spewed [07.01.2006 18:17:17]

#

Juu pitääpä tonkia noita koodivinkkejä. Tälläseen koodipohjaan törmäsin. Ajaako tuo haluamani asian kirjautumisen suhteen, kun en noista streameista ymmärrä hölkäsen pöläystä?

Dim postData As String
postData = "username=MyUserName&password=mysecretpassword1234"
Dim request As HttpWebRequest
Dim response As HttpWebResponse
request = CType(WebRequest.Create("http://10.0.0.1"), HttpWebRequest)
request.ContentType = "application/x-www-form-urlencoded"
request.ContentLength = postData.Length
request.Method = "POST"

Dim requestStream As Stream = request.GetRequestStream()
Dim postBytes As Byte() = Encoding.ASCII.GetBytes(postData)
requestStream.Write(postBytes, 0, postBytes.Length)
requestStream.Close()
response = CType(request.GetResponse(), HttpWebResponse)

Console.WriteLine(New StreamReader(response.GetResponseStream()).ReadToEnd())
Console.WriteLine("Headers:")
Console.WriteLine(response.Headers.ToString())

Ja tässä vielä esimerkki yhdestä funktiosta. Eli tuon ReturnHTML:n yhteyteen pitäisi login vielä saada.

Function HaeDownstreamSNR
	dim htmlResult,fs,f,result
	htmlResult = ReturnHTML("http://10.0.0.2/doc/adsl.htm")
	result = NULL

	relnext = instr(htmlResult, "var st_dw_snr_margin = ")
	if relnext > 0 then
		for i = 1 to 1
			aloitus = instr( relnext, htmlResult, "var st_dw_snr_margin = ") + 24
			if aloitus > 1 then
				lopetus = instr( aloitus, htmlResult, """;")
				if lopetus > aloitus then
					relnext = lopetus
					result = result & mid( htmlResult, aloitus, lopetus-aloitus )

				end if
			else
				exit for
			end if
	result = result & chr(13) & chr(10)
		next
	end if

	result = replace(result, "å", "å")
	result = replace(result, "ä", "ä")
	result = replace(result, "ö", "ö")
	result = replace(result, "Å", "Å")
	result = replace(result, "Ä", "Ä")
	result = replace(result, "Ö", "Ö")
	result = replace(result, "'", "'")
	result = replace(result, " ", " ")
	result = replace(result, "  ", " ")
	result = replace(result, """, chr(34))

	htmlResult = NULL

	if WRITEFILE = "Yes" then
		set fs=CreateObject("Scripting.FileSystemObject")
		set f=fs.CreateTextFile("n.tmp",true)
		f.write(result)
		f.close
		set f=nothing
		set fs=nothing
	else
		HaeDownstreamSNR = result
	end if

End Function

Meitsi [07.01.2006 18:53:52]

#

Tuo Encoding.ascii tuossa pisti silmään, onko tuo vb.net:iä? VB.net ei mulla ainakaan ole kovin hyvin hallussa... No emt, tuosta on huono sanoa kun en pääse kokeilemaan, mutta voisi toimiakin.

EDIT: eikun hmm, VBS? meinaatko VB Scriptiä? No siitä minulla ei ole tietoja.

Spewed [07.01.2006 19:32:09]

#

Visual Basic Scriptiä nimenomaan. ;) Joo huomasin itekkin että tuo login -pätkä minkä löysin on vb.netiä, sitä ei taine saada mitenkään fiksusti yhdisteltyä vb scriptiin, mutta kiitos kuitenkin avusta, lisää ehdotuksia otetaan vastaan. :)


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta