me.mello Posted June 15, 2011 Report Posted June 15, 2011 Deci daca merge pe RST dati o bere. Articolul original e de ceva vreme modificat de la phpBB3 MyBB si viceversa:))...a trecut prin multi leecheri insa e foarte folositor, daca ai idee ce sa faci cu el, asa ca o sa zic:Author: AnonimI've approached a slightly OOP way to code this. I used different classes and an abstract class named 'Forum'. Simple webrequests are used for the connections. Comments are welcomeAt this moment, it is possible to login to:- phpBB2- phpBB3- myBB- vBulletin (latest version)- IPB2I'll add IPBv3 & SMF later onIf you want me to add more forums, just reply Class 'Forum''Written by Webhouse @ HF, please add credits if you use this.Public MustInherit Class Forum Private _logindata As String Private _loginUrl As String Private _url As String Private _username As String Private _defaultCookieName As String Private _defaultCookieSearch As String Public Sub New(ByVal url As String, ByVal loginUrl As String, ByVal username As String, ByVal cookieName As String, _ ByVal cookieSearch As String, Optional ByVal data As String = "") Me._url = url Me.loginUrl = loginUrl Me.logindata = data Me.username = username Me._defaultCookieName = cookieName Me._defaultCookieSearch = cookieSearch End Sub Public MustOverride Function isLoggedIn(ByVal cookies As System.Net.CookieContainer) As Boolean Public Property logindata As String Get Return Me._logindata End Get Set(ByVal value As String) Me._logindata = value End Set End Property Public Property url As String Get Return Me._url End Get Set(ByVal value As String) Me._url = value End Set End Property Public Property loginUrl As String Get Return Me._loginUrl End Get Set(ByVal value As String) Me._loginUrl = value End Set End Property Public Property username As String Get Return Me._username End Get Set(ByVal value As String) Me._username = value End Set End Property Public Property defaultCookieName As String Get Return Me._defaultCookieName End Get Set(ByVal value As String) Me._defaultCookieName = value End Set End Property Public Property defaultCookieSearch As String Get Return Me._defaultCookieSearch End Get Set(ByVal value As String) Me._defaultCookieSearch = value End Set End PropertyEnd ClassClass 'HTTPWorker''Written by Webhouse @ HF, please add credits if you use this.Imports System.NetImports System.TextImports System.IO.CompressionPublic Class HTTPWorker Public Shared cookies As CookieContainer Private data As Byte() Public Function login(ByVal forumInstance As Forum) As Boolean Dim request As HttpWebRequest Dim response As HttpWebResponse Dim stream As IO.Stream cookies = New CookieContainer Try request = WebRequest.Create(forumInstance.loginUrl) setConnectionParameters(request) data = Encoding.ASCII.GetBytes(forumInstance.logindata) request.ContentLength = data.Length stream = request.GetRequestStream() stream.Write(data, 0, data.Length) stream.Flush() stream.Close() response = request.GetResponse() If forumInstance.isLoggedIn(cookies) Then Return True End If Catch ex As Exception 'do something with the exception End Try Return False End Function Public Sub setConnectionParameters(ByRef request As HttpWebRequest) With request .Method = "POST" .Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" .ContentType = "application/x-www-form-urlencoded" .Proxy = Nothing .CookieContainer = cookies .KeepAlive = True .ServicePoint.Expect100Continue = False .UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8) Gecko/20051111 Firefox/1.5; FBI-version/0.07" '.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate") if you want to speed up the steam reading (most boards support this) End With End Sub 'this function not implemented, it is added to show how to link the cookies from the login Public Sub navTo() 'Dim request As HttpWebRequest 'request.CookieContainer = cookies 'etcetc: you could set idletime, speed if you simultaniously want to fire requests, headers, method (get/post), etc End Sub 'Note: to read the result in login() '--If you want to read the result (using compression techniques to speed it up-- 'Dim responseStream As IO.Stream = response.GetResponseStream() 'If (response.ContentEncoding.ToLower().Contains("gzip")) Then ' responseStream = New GZipStream(responseStream, CompressionMode.Decompress) 'ElseIf (response.ContentEncoding.ToLower().Contains("deflate")) Then ' responseStream = New DeflateStream(responseStream, CompressionMode.Decompress) 'End If 'Dim streamReader As IO.StreamReader = New IO.StreamReader(responseStream, Encoding.Default) 'Dim result As String = streamReader.ReadToEnd().Trim() 'streamReader.Close() '--End ClassClass 'phpBB2''Written by Webhouse @ HF, please add credits if you use this.Imports System.NetPublic Class phpBB2 Inherits Forum Public Sub New(ByVal url As String, ByVal username As String, ByVal password As String) MyBase.New(url, url & "/login.php", username, "phpBB_WBB_data", "userid%22%3Bi%3A-1%3B%7D", "&username=" + _ username + "&password=" + password + "&autologin=on&login=Log+in") End Sub Public Overrides Function isLoggedIn(ByVal cookies As System.Net.CookieContainer) As Boolean If Not cookies.GetCookies(New Uri(url)).Item(defaultCookieName).Value.Contains(defaultCookieSearch) Then Return True End If Return False End FunctionEnd ClassClass 'phpBB3''Written by Webhouse @ HF, please add credits if you use this.Imports System.NetPublic Class phpBB3 Inherits Forum Public Sub New(ByVal url As String, ByVal username As String, ByVal password As String) MyBase.New(url, url & "/ucp.php?mode=login", username, "phpbb3_1fh61_u", "1", _ "username=" + username + "&password=" + password + "&redirect=&sid=&redirect=&login=Login") End Sub Public Overrides Function isLoggedIn(ByVal cookies As System.Net.CookieContainer) As Boolean If Not cookies.GetCookies(New Uri(url)).Item(defaultCookieName).Value.Equals(defaultCookieSearch) Then Return True End If Return False End FunctionEnd ClassClass 'myBB''Written by Webhouse @ HF, please add credits if you use this.Imports System.NetPublic Class myBB Inherits Forum Public Sub New(ByVal url As String, ByVal username As String, ByVal password As String) MyBase.New(url, url & "/member.php?action=login", username, "mybbuser", "", "username=" + username & "&password=" + password & "&submit=Login&action=do_login&url=") End Sub Public Overrides Function isLoggedIn(ByVal cookies As System.Net.CookieContainer) As Boolean If Not IsNothing(cookies.GetCookies(New Uri(url)).Item(defaultCookieName)) Then Return True End If Return False End FunctionEnd ClassClass 'vBulletin''Written by Webhouse @ HF, please add credits if you use this.Public Class vBulletin Inherits Forum Public Sub New(ByVal url As String, ByVal username As String, _ ByVal password As String) MyBase.New(url, url & "/login.php?do=login", username, "vbseo_loggedin", "yes") MyBase.logindata = "vb_login_username=" + username + "&vb_login_password=" + password + _ "&cookieuser=1&s=&securitytoken=guest&do=login&vb_login_md5password=" + Md5String(password) + _ "&vb_login_md5password_utf=" + Md5String(password) End Sub Public Overrides Function isLoggedIn(ByVal cookies As System.Net.CookieContainer) As Boolean If Not IsNothing(cookies.GetCookies(New Uri(url)).Item(defaultCookieName)) Then If cookies.GetCookies(New Uri(url)).Item(defaultCookieName).Value.Contains(defaultCookieSearch) Then Return True End If End If Return False End Function Private Function Md5String(ByVal v As String) As String Dim myProv As New System.Security.Cryptography.MD5CryptoServiceProvider Dim b As Byte() = System.Text.Encoding.ASCII.GetBytes(v) b = myProv.ComputeHash( Dim str As String = "" Dim i As Integer For i = 0 To b.Length - 1 str = (str & b(i).ToString("x2").ToLower) Next i Return str End FunctionEnd ClassClass 'IPB2'Public Class IPBoard2 Inherits Forum Public Sub New(ByVal url As String, ByVal username As String, ByVal password As String) MyBase.New(url, url & "/index.php?act=Login&CODE=01", username, "ipb_username", "", _ "&referer=" + url + "&UserName=" + username + "&PassWord=" + password + "&CookieDate=1") End Sub Public Overrides Function isLoggedIn(ByVal cookies As System.Net.CookieContainer) As Boolean If Not IsNothing(cookies.GetCookies(New Uri(url)).Item(defaultCookieName)) Then Return True End If Return False End FunctionEnd ClassNotes:The only reason I have put the actual forums in different classes is because:- A different version can have different functionalities you want to implement- The post string is different (I could have put a string container though for all the classes, but I didn't ~ see previous point)If you want to add different types of forums, just let your forum inherit from the class 'Forum', you'll want to include a cookie name (and maybe value) to verify if the user is logged in. You'll always will need to override the isLoggedIn() method aswell. I don't read the actual html from the response because it is just timewaiste, checking cookies is much faster.You can easily change the sync webrequests into async ones if you would want to login to different sites simulaniously. I might post a tutorial later on about this.Examples to add forumobjects and login:Dim wrkr As New HTTPWorker()'Dim phpBB2Forum As New phpBB2("http://www.myurl.com", "username", "pass")wrkr.login(wbb)Dim vBulletinForum As New vBulletin("http://www.myurl.com", "username", "pass")wrkr.login(cf)Dim myBBForum As New myBB("http://www.myurl.com", "username", "pass")wrkr.login(bb)Dim phpBB3Forum As New phpBB3("http://www.myurl.com", "username", "pass")wrkr.login(phpBB3Forum)Va mai zic odata All credits to the original poster!!Acum sa ridice mana care nu s-a gandit deja la un brute forcer=)) Quote
Paul4games Posted June 15, 2011 Report Posted June 15, 2011 Nus tiu daca merge bruteforce ca va aparea captcha... Quote