PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Theorie] Hilfe !



bolloys
17.08.2010, 14:08
Huhu bin grad dabei ne Programmier-Sprache zu erlenen, hab dann ma in Gedanken gehabt einen Steam-Account-Checker zu coden.

Ich versuche erstma die Theorie klar zu stellen und dann das coden deswegen frage ich euch ob das nun so richtig ist *gg*

Also fangen wa an ist ja auch sehr kurzhatig.

So Ich mache 2 Textboxen, nen Button und Schreibe nen Code der nur die Theorie so befasst!

Wenn man "Button1" klickt liest er also die Textbox1 (Loginname) und Textbox2 (Passwort") durch, ,navigiert dann damit zu https://store.steampowered.com/login/ und setzt diese dort in die Felder ein ...Loggt sich demnach an und gibt eine Meldung zurück, z.b wenn Inkorrekt ist = Fehler Login (z.b) und wenns Korrekt ist = Login erfolgreich (z.b) , so nachdem dies getan wurde , muss sich natürlich das Programm auf https://store.steampowered.com/logout/ natürlich wieder ausloggen!

Soweit zur Theorie !
Dennoch , ist dies die richtige Vorstellung oder fehlt da was? Natürlich muss man sich noch was überlegen wie man die 3 inkorrekte Logins dann umgeht. !

Hoffe ma ihr gebt mir so in der Art Tipps.
Und nein mag mir keine Source Codes angucken.

100
17.08.2010, 14:15
Evntl. könnte man sich mal den Datenverkehr zwischen dem Steam Client und dem Steam Server anschauen, da man diesen unter Umständen faken könnte. Sprich dein Programm tut so als sei es der Steam Client und versucht sich einzuloggen. Das würde jedenfalls schneller gehen, als wenn du dich erst auf einer Internetseite anmeldest.

Nun gibt es zwei unterschiedliche Möglichkeiten, wie du dein Login auf der Internetseite durchführen kannst. Vb.net hat afaik eine eigene Webbrowser Komponente, mit welcher man ganz einfach eine Internetseite aufrufen, Aktionen durchführen und die Ergebnisse auslesen kann. Nachteil hier ist allerdings, dass du gar nicht die ganze Seite brauchst, das interessiert nicht und kostet nur Zeit. Deswegen solltest du dein Vorhaben komplett über eigene HTTP Requests lösen. Da kann ich dich jetzt aber erstmal nur an Google verweisen :)

Jury
17.08.2010, 14:17
Ich kenne mich mit .Net nicht aus, aber die Theorie hört sich gut an. Was mir noch einfällt ist, dass dein Tool gleich 2 Listen erstellen könnte:
1. Gültig
2. Ungültig
Das würde einem eine Menge Arbeit ersparen.

gf0x
17.08.2010, 14:43
Du solltest evtl. noch überlegen, an was dein Programm die True & False Login's erkennt ;)

Bonkers
17.08.2010, 15:28
Du solltest evtl. noch überlegen, an was dein Programm die True & False Login's erkennt ;)

Einfach per RegEX oder
if bla.contains("Login Fehlgeschlagen") (Aus der Hüfte :D )

Ich kann mich 100 nur anschließen, poste den Müll einfach per Webrequest zum Server und vermeide um jeden Preis die blöde Webbrowser-Componente.

bolloys
17.08.2010, 16:30
Hm check das nonet so ganze aber bissi funzt ja schonma *hust*

Also mein Code

Imports System.IO, System.Net, System.Text
Public Class Form1


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim User = TextBox1.Text, Pwd = TextBox2.Text
Dim Request As HttpWebRequest = CType(WebRequest.Create("https://store.steampowered.com/login/"), HttpWebRequest)
'Dim Request As HttpWebRequest = CType(WebRequest.Create("https://store.steampowered.com/login/"), HttpWebRequest)
Request.Method = "POST"
Request.ContentType = "application/x-www-form-urlencoded"
Dim Post As String = "email=" & User & "&pass=" & Pwd & "&step=1&submit=&as_fid=1"
Dim byteArray() As Byte = Encoding.UTF8.GetBytes(Post)
Request.ContentLength = byteArray.Length
Dim DataStream As Stream = Request.GetRequestStream()
DataStream.Write(byteArray, 0, byteArray.Length)
DataStream.Close()
Dim Response As HttpWebResponse = Request.GetResponse()
DataStream = Response.GetResponseStream()
Dim reader As New StreamReader(DataStream)
Dim ServerResponse As String = reader.ReadToEnd()
reader.Close()
DataStream.Close()
Response.Close()

If InStr(ServerResponse, "Thank you for logging in") Then
MessageBox.Show("Erfolgreich eingeloggt")
Else
MessageBox.Show("Nicht erfolgreich!")
End If
End Sub
End Class

Dennoch bekomme ich IMMER auch wenn die Login Daten richtig oder falsch sind die Msg Nicht Erfolgreich..

Hm was machen? :(

k0rxxx
17.08.2010, 16:39
z.B. mit wireshark mal schauen was dein browser an requests sendet und was dein tool sendet

dann vergleichen

PancakeBear
17.08.2010, 17:07
Du hast geschrieben:

If InStr(ServerResponse, "Thank you for logging in") Then
MessageBox.Show("Erfolgreich eingeloggt")
Else
MessageBox.Show("Nicht erfolgreich!")
End If
Machs doch so:

If ServerResponse.tostring.contains("Thank you for logging in") Then
MessageBox.Show("Erfolgreich eingeloggt")
Else
MessageBox.Show("Nicht erfolgreich!")
End If

Ich hoffe das funktioniert.

Mfg Chillerz

bolloys
17.08.2010, 17:14
Leider funktioniert dies nicht ..

PancakeBear
17.08.2010, 17:34
Du startest folgenden Http Request:


https://store.steampowered.com/login/index.php?email=blabla&pass=haha&step=1&submit=&as_fid=1


Aber eig. werden die Daten so an den Steam Login gesendet:


https://store.steampowered.com/login/index.php?username=blabla&password=haha&redir=


Mfg Chillerz.

bolloys
17.08.2010, 17:46
selbiger Fehler =(

k0rxxx
17.08.2010, 23:15
Vorsicht wenn du meinen Rat befolgst könntest du eventuell noch was lernen.

Warte lieber bis dir jemand funktionierenden Code postet.

diSturbia
18.08.2010, 01:08
..

Imports System.IO, System.Net, System.Text
Public Class Form1


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim User = TextBox1.Text, Pwd = TextBox2.Text
Dim Request As HttpWebRequest = CType(WebRequest.Create("https://store.steampowered.com/login/"), HttpWebRequest)
'Dim Request As HttpWebRequest = CType(WebRequest.Create("https://store.steampowered.com/login/"), HttpWebRequest)
Request.Method = "POST"
Request.ContentType = "application/x-www-form-urlencoded"
Dim Post As String = "email=" & User & "&pass=" & Pwd & "&step=1&submit=&as_fid=1"
Dim byteArray() As Byte = Encoding.UTF8.GetBytes(Post)
Request.ContentLength = byteArray.Length
Dim DataStream As Stream = Request.GetRequestStream()
DataStream.Write(byteArray, 0, byteArray.Length)
DataStream.Close()
Dim Response As HttpWebResponse = Request.GetResponse()
DataStream = Response.GetResponseStream()
Dim reader As New StreamReader(DataStream)
Dim ServerResponse As String = reader.ReadToEnd()
reader.Close()
DataStream.Close()
Response.Close()

If InStr(ServerResponse, "Thank you for logging in") Then
MessageBox.Show("Erfolgreich eingeloggt")
Else
MessageBox.Show("Nicht erfolgreich!")
End If
End Sub
End Class..

Den Source hast du dir auch nur zusammengesucht.. Da fehlen mindestens zwei wichtige Sachen. Da die Steamseite nicht dumm geschrieben wurde achten diese auch auf ein paar Sachen. Baue dies mal ein:


Du ignorierst fein die Cookies! Füge zu deinem WebRequest einen CookieContainer hinzu. Wenn du nur diesen einen Source auf der Steamseite nutzt (also nicht das Cookie behalten willst), dann gebe dem CookieContainer einfach den Wert eines neuen CookieContainers.
Mindestens genauso wichtig ist der Useragent. ( Dies identifiziert deinen Browser. ). Packe einfach den Useragent von FireFox hin:
Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8
Dies wäre der vom aktuellen FireFox für Windows..
Falls es immer noch nicht geht packe noch einen Refferer hinzu ( von dieser Seite kommt der Surfer ).
Wenn es jetzt immer noch nicht klappt installiere dir das FireFox- AddOn Live HTTPHeaders. Damit kannst du jede Verbindung mitlesen und siehst genau was du per WebRequest simulieren musst.


Nun sollte es klappen.
Mit freundlichen Grüßen,
diSturbia