Winsock irc?

Iniciado por visualfree, 4 Junio 2007, 22:30 PM

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

visualfree

quisiera saber si se puede conectar por winsock a un servidor de irc como dalnet o otros etc y si el tipo de conexion es la misma a la normal o ahi que hacer algo especial , agradeceria su ayuda saludos amigos....

byebye

si se puede. la conexion es la normal, lo unico que hay que hacer de especial es interpretar el protocolo que es bastante sencillo. si buscas en google seguro que das con el.

Mad Antrax

Si, es sencillo. Y espero que no uses eso para crear un bot por irc o botnets :¬¬

Suerte
No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.

~~

Para el protocolo te recomiendo q te leas la revista de Hack x Crack numero... numero 11 creo q era (estoy casi seguro  :P)
Viene muy bien expicadito todo

visualfree


visualfree

Cita de: ||MadAntrax|| en  5 Junio 2007, 14:13 PM
Si, es sencillo. Y espero que no uses eso para crear un bot por irc o botnets :¬¬

Suerte

porlovisto tu ya lo has hecho enrelidad no quiero hacer bot , solo quiero tener mi propio cliente de irc y todavia no encuentro la info =S ,interpretar el protocolo eso es lo que debo buscar? ¿como interpretar el protocolo de irc mediante visual basic?
haci lo busco o ando medio perdido...?

MazarD

Si quieres mirartelo por ti mismo y currartelo mucho busca en rfc-es.org y encontrarás la especificación técnica completa del protocolo.
Y si quieres hacerlo rápido y fácil, abres el mirc y escribes /debug @debug luego conectas a un server y todo lo que te vaya apareciendo en esa ventana según lo que hagas es lo que debes imitar desde tu programa.
-Learn as if you were to live forever, live as if you were to die tomorrow-

http://www.mazard.info
http://twitter.com/MazarD
irc://irc.freenode.org/elhacker.net

Tengu


Encuentros por Video y Chat !!

Tengu

o....echa un vistaso a esto, esta en frances pero se entiendeOption Explicit

Private Type tConnect
    lgRequestID As Long
    stPseudo As String
End Type

' Tableau des connexions courantes
Private tabConnect() As tConnect
' Taille du tableau
Private lgConnect As Long

' Pseudo de l'utilisateur courant
Private stPseudo As String

' Port de connexion au serveur
Private Const WSK_PORT = 6667

Private Sub cmdConnect_Click()
' Démarre une connexion au serveur, ou lance un serveur.
' Ferme une connexion, ou arrête le serveur
' En fonction de l'état du bouton...
Dim lgTmp As Long
cmdConnect.Enabled = False
If cmdConnect.Caption = "&Démarrer" Then
    fraConnexion.Enabled = False
    If optConnect(0).Value Then
' Démarre un serveur
        wskIRC(0).LocalPort = WSK_PORT
        wskIRC(0).Listen
        stPseudo = "Serveur"
    Else
' Démarre une connexion cliente
        On Error GoTo ErrConnectClient
        lgTmp = wskIRC(0).LocalPort
ResConnectClient:
        If wskIRC(0).State <> sckClosed Then wskIRC(0).Close
        wskIRC(0).LocalPort = lgTmp
        wskIRC(0).Connect txtServeur.Text, WSK_PORT
    End If
    cmdConnect.Caption = "A&rreter"
    txtMot.Enabled = True
    txtMot.SetFocus
Else
    If optConnect(0).Value Then
' Arrête le serveur courant
        wskIRC(0).Close
        For lgTmp = 1 To lgConnect
            If (tabConnect(lgTmp).lgRequestID > 0) Then
                wskIRC(lgTmp).Close
                Unload wskIRC(lgTmp)
                DoEvents
            End If
        Next lgTmp
        lgConnect = 0
    Else
' Arrête la connexion cliente courante
        wskIRC(0).Close
    End If
    stPseudo = vbNullString
    fraConnexion.Enabled = True
    cmdConnect.Caption = "&Démarrer"
    txtMot.Enabled = False
End If
cmdConnect.Enabled = True
Exit Sub
' Gestion d'erreur, pour permettre des tests en local
ErrConnectClient:
If Err.Number = 40020 Or Err.Number = 10048 Then
    lgTmp = lgTmp - 1
    Resume ResConnectClient
End If
End Sub
Private Sub cmdQuitter_Click()
' Quitte l'application
Unload Me
End Sub
Private Sub Form_Load()
' Initialisation des zones
lblIP.Caption = "Adresse IP : " & wskIRC(0).LocalIP
rtbForum.Text = vbNullString
txtMot.Text = vbNullString
' Initialisation des variables
lgConnect = 0
End Sub

Private Sub optConnect_Click(Index As Integer)
If Index = 1 Then txtServeur.SetFocus
End Sub

Private Sub txtMot_KeyPress(KeyAscii As Integer)
' Gestion des phrases à afficher
Dim lgFor As Long
Dim stEnvoi As String
If KeyAscii = vbKeyReturn Then
    If Left$(txtMot.Text, 1) = "/" Then
' Envoi d'un mot clé
        stEnvoi = txtMot.Text & vbCrLf
    Else
' Envoi d'un message standard
        stEnvoi = "[" & stPseudo & "] " & txtMot.Text & vbCrLf
' Affichage du message
        rtbWrite stEnvoi
    End If
    If optConnect(0).Value Then
' Cas SERVEUR - pour tous les clients
        Call Distribution(stEnvoi)
    Else
' Cas CLIENT - pour le serveur
        wskIRC(0).SendData stEnvoi
    End If
    txtMot.Text = vbNullString
End If
End Sub

Private Sub txtServeur_Click()
optConnect(1).Value = True
End Sub

Private Sub txtServeur_GotFocus()
' Sélection de l'ensemble du texte
txtServeur.SelStart = 0
txtServeur.SelLength = Len(txtServeur.Text)
End Sub

Private Sub rtbWrite(stTexte As String, Optional blGras As Boolean = False, Optional blItalique As Boolean = False, Optional blSouligne As Boolean = False, Optional vColor As OLE_COLOR = vbBlack)
' Ecrit un texte dans le contrôle RichTextBox avec les options souhaitées
rtbForum.SelStart = Len(rtbForum.Text)
rtbForum.SelText = rtbForum.SelText & stTexte
rtbForum.SelStart = Len(rtbForum.Text) - Len(stTexte)
rtbForum.SelLength = Len(stTexte)
rtbForum.SelBold = blGras
rtbForum.SelItalic = blItalique
rtbForum.SelUnderline = blSouligne
rtbForum.SelColor = vColor
rtbForum.SelStart = Len(rtbForum)
End Sub
Private Sub wskIRC_Close(Index As Integer)
' Fermeture d'une connexion
Dim lgFor As Long
Dim stEnvoi As String
wskIRC(Index).Close
If optConnect(0).Value Then
' Cas SERVEUR - Déconnexion + avertissement pour départ du participant
    stEnvoi = tabConnect(Index).stPseudo & " a quitté VBIRC." & vbCrLf
    rtbWrite stEnvoi
    tabConnect(Index).lgRequestID = -1
    tabConnect(Index).stPseudo = vbNullString
    Call Distribution(stEnvoi)
Else
' Cas CLIENT
    rtbWrite "Le serveur a fermé la connexion..." & vbCrLf, True, , , vbRed
    fraConnexion.Enabled = True
    cmdConnect.Caption = "&Démarrer"
    txtMot.Enabled = False
    wskIRC(0).Close
End If
End Sub
Private Sub wskIRC_Connect(Index As Integer)
rtbWrite "Connexion sur " & txtServeur.Text & " acceptée..." & vbCrLf, True, , , vbRed
End Sub
Private Sub wskIRC_ConnectionRequest(Index As Integer, ByVal requestID As Long)
Dim lgFor As Long
Dim stEnvoi As String
' Recherche du premier indice de connexion disponible
For lgFor = 1 To lgConnect
    If tabConnect(lgFor).lgRequestID < 0 Then Exit For
Next lgFor
If lgFor > lgConnect Then
' Augmente le tableau des connexions
    ReDim Preserve tabConnect(lgFor) As tConnect
' Création d'un nouveau WinSock de dialogue
    Load wskIRC(lgFor)
    lgConnect = lgFor
End If
' Enregistrement du requestId
tabConnect(lgFor).lgRequestID = requestID
' Accepte la connexion
wskIRC(lgFor).Accept requestID
tabConnect(lgFor).stPseudo = Pseudo
wskIRC(lgFor).SendData "/PSEUDO " & tabConnect(lgFor).stPseudo & vbCrLf
' Avertissement pour l'arrivée d'un participant
stEnvoi = tabConnect(lgFor).stPseudo & " arrive sur VBIRC." & vbCrLf
rtbWrite stEnvoi
Call Distribution(stEnvoi, lgFor)
End Sub
Private Sub wskIRC_DataArrival(Index As Integer, ByVal bytesTotal As Long)
' Réception de données
Dim stTmp As String, stEnvoi As String
Dim lgFor As Long
Dim tabTmp, tabLst
' Récupère les données
wskIRC(Index).GetData stTmp, vbString
If optConnect(0).Value Then
' Cas SERVEUR - on redistribue à tous les autres clients (sauf à l'expéditeur)
' Réception d'un commande
    tabLst = Split(stTmp, vbCrLf)
    For lgFor = 0 To UBound(tabLst) - 1
        tabTmp = Split(tabLst(lgFor), " ")
        Select Case UCase$(tabTmp(0))
            Case "/PSEUDO"
                stEnvoi = tabTmp(1)
                If PseudoExiste(stEnvoi) Then
                    wskIRC(Index).SendData "Ce pseudo est déjà utilisé..." & vbCrLf
                Else
                    stEnvoi = tabConnect(Index).stPseudo & " s'appelle maintenant " & tabTmp(1) & vbCrLf
                    tabConnect(Index).stPseudo = tabTmp(1)
                    rtbWrite stEnvoi
                    wskIRC(Index).SendData "/PSEUDO " & tabTmp(1) & vbCrLf
                    DoEvents
                    Call Distribution(stEnvoi, CLng(Index))
                End If
            Case Else
    ' Réception d'un texte quelconque
                stEnvoi = tabLst(lgFor) & vbCrLf
                rtbWrite stEnvoi
                Call Distribution(stEnvoi, CLng(Index))
        End Select
    Next lgFor
Else
' Cas CLIENT
' Réception d'une commande serveur
    tabLst = Split(stTmp, vbCrLf)
' Décompose le texte reçu en lignes de texte
    For lgFor = 0 To UBound(tabLst) - 1
        tabTmp = Split(tabLst(lgFor), " ")
        Select Case UCase$(tabTmp(0))
        ' Mot clé reconnu
            Case "/PSEUDO"
                stPseudo = tabTmp(1)
                rtbWrite "Votre pseudo est " & stPseudo & ", pour le changer /pseudo <NouveauPseudo>" & vbCrLf
            Case Else
        ' Réception d'un message standard
                stEnvoi = tabLst(lgFor) & vbCrLf
        ' Ecrit les données
                rtbWrite stEnvoi
        End Select
    Next lgFor
End If
End Sub
Private Function Distribution(stTexte As String, Optional lgSauf As Long = -1)
' Envoi un texte à l'ensemble des connectés
' On peut éventuellement enlever une personne en donnant son
' indice dans le tableau
Dim lgFor As Long
For lgFor = 1 To lgConnect
    If (tabConnect(lgFor).lgRequestID > 0) And lgFor <> lgSauf Then
        wskIRC(lgFor).SendData stTexte
        DoEvents
    End If
Next lgFor
End Function
Private Function Pseudo() As String
' Création d'un pseudo temporaire pour les nouveaux connectés
Dim lgFor As Long
Dim blOK As Boolean
Dim stTmp As String
stTmp = "00"
Do
    blOK = True
' Incrémente au fur et à mesure Nouveau01, Nouveau02, Nouveau03, ...
    stTmp = "Nouveau" & Format(Val(Right$(stTmp, 2)) + 1, "00")
    For lgFor = 1 To lgConnect
        If tabConnect(lgFor).stPseudo = stTmp Then
            blOK = False
            Exit For
        End If
    Next lgFor
Loop Until blOK
Pseudo = stTmp
End Function
Private Function PseudoExiste(stPseudoReq As String) As Boolean
' Verifie l'existence d'un pseudo
Dim lgFor As Long
Dim blOK As Boolean
' Il ne faut qu'il soit vide ou pareil à celui du serveur
blOK = Not ((stPseudoReq <> vbNullString) And (UCase$(stPseudoReq) <> UCase$(stPseudo)))
For lgFor = 1 To lgConnect
    If UCase$(tabConnect(lgFor).stPseudo) = UCase$(stPseudoReq) Then
        blOK = True
        Exit For
    End If
Next lgFor
PseudoExiste = blOK
End Function

Encuentros por Video y Chat !!