Hola a todos, eh creado este tema para todo aquel que tenga dudas con respecto al protocolo MSN y el uso del mismo en visual basic. Comenzare yo ...
Ya estoy conectado a una cuenta mia de MSN, sincronizados los contactos, perfectamente en funcionamiento el evento "PING" de msn, pero ahora quiero cambiar el nick de esa cuenta y segun el protoclo es asi :
REA TrID tu_cuenta_de_hotmail@hotmail.com nuevo_nick
Y asi lo tengo yo en el evento "Command1_Click"
Private Sub Command1_Click()
SEG.SendData "REA 5 " & Replace(usuario.Text, "@", "%40") & " " & Replace(Text2.Text, " ", "%20") & vbCrLf
End Sub
Entonces cuando envio eso me responde el servidor:
CitarServidor2 >216 5
La verdad no tengo ni ida de que significa esos números. Si alguien sabe la respuesta a esto agradecería que fuera posteada gracias..
CitarSOLUCIONADO:
Pues ahora mismo me di cuenta que el error estaba en la conversion no hace falta poner "cuenta%40hotmail.com" sino de forma "cuenta@hotmail.com" y el servidor deberia enviarles esto:
CitarServidor2 >REA 5 1 cuenta@hotmail.es Locote
Al final quedo así el código:
Private Sub Command1_Click()
SEG.SendData "REA 5 " & usuario.Text & " " & Replace(Text2.Text, " ", "%20") & vbCrLf
End Sub
Evento PING de protocolo MSN:
Para todo aquel que tenga problemas con el cliente que este creando y a los 50 segundos el server lo desconecte, pego este trozo de codigo que es la parte esencial del evento PING de MSN.
Private Sub PING()
Dim BUG1() As String
Dim Fijo As String
Fijo = "Q1P7W2E4J9R8U3S5"
BUG1 = Split(conca, vbCrLf)
conca = BUG1(0) & Fijo
Monitor2.Text = Monitor2.Text & "Cliente > Cargada Variable para cifrar: " & conca & vbCrLf
hmd5 = oMD5.MD5(conca)
SEG.SendData "QRY 1049 msmsgs@msnmsgr.com 32" & vbCrLf
SEG.SendData hmd5
Monitor2.Text = Monitor2.Text & "Cliente > Enviando Codificacion MD5 del PING: " & hmd5 & vbCrLf
Monitor2.Text = Monitor2.Text & "Cliente > Enviando Respuesta QRY despues de 50 seg" & vbCrLf
End Sub
Cualquier duda postear y respondere mientras pueda.
Hola otra vez, tengo problemas para enviar mensajes a un contacto, segun el protocolo tengo que enviar esto:
SEG.SendData "XFR 5 SB" & vbCrLf
A lo que me responde el MSN Server con esto:
XFR 5 SB 65.54.48.118:1863 CKI 1068799700.11777157.105189171
Entonces en teoria despues tengo que conectarme a esa IP y ese Puerto:
Case "XFR"
Dim serverconver As String
Dim subserver() As String
serverconver = sbuff(3)
subserver = Split(serverconver, ":")
Conserver = subserver(0)
Porserver = subserver(1)
Monitor2.Text = Monitor2.Text & "INFO >" & "Iniciando conexion con server de conversación" & vbCrLf
'MsgBox (subserver(0) & subserver(1))
codcon = sbuff(5)
conver.Connect Conserver, Porserver
Una vez conectado enviar esto:
conver.SendData "USR 1 hack.markus@hotmail.es " & codcon & vbCrLf
Citarcodcon = Numero de seguridad 1068799700.11777157.105189171
Entonces si todo sale bien envia esto:
USR 1 OK usuario@hotmail.es Markus
Hasta ahí todo bien, lo malo del tema es que instantáneamente que me envía ese mensaje el servidor pierdo la conexión con la IP de conversación, si alguien conoce el motivo me lo diga no encuentro ejemplos o información por ningún sitio. Gracias
Bueno pues va a ser que a nadie le ah pasado esto. Cuando encuentre la solución la posteo por si en un futuro le sucede a alguien.
CitarSolucionado:
Me faltaba un "espacio" entre dos palabras, por eso me desconectaba.
Hola tengo una interesante pregunta, de como enviar zumbidos desde el cliente que estoy haciendo hacia cualquier otro, supongo que sea un mensaje y que los clientes lo interpreten como un Zumbido, pero no lo encuentro en ninguna parte asi que intentare pedirle a algún contacto mio que le haga zumbido a ver que me envia el server y asi comprobar si yo enviando lo mismo funciona.
Asi esta quedando:
(http://img195.imageshack.us/img195/5179/msnd15bymarkus.jpg)
Hola
Muy interesante tu proyecto!! Se ve muy bien ;-)
¿Podrías postear el código fuente para descargar? :rolleyes:
O aunque sea el protocolo... llevo tiempo buscandolo para hacer algo, encontré varios pero desactualizados. :-\
Saludos!
que interesante tema
muy bueno ;)
salu2
hola buenas
yo estoy intentando acer un autonick cambiante y e intentado utilizar el codigo que puso Markus el primero de todos y nada no me funciona no tengo ni idea de xk es alguien me podria responder????
Salu2
Hola Fary94, pues el para cambiar el nick automático solo debes poner una condicional que cuando conecte envié este mensaje al server:
CitarREA 5 pepe@hotmail.com mi%20super20%nick & vbCrLf
Por ejemplo yo lo tengo puesto el usuario en un Textbox y tengo un Command que cuando le doy click me envia el siguiente comando:
Private Sub Command1_Click()
SEG.SendData "REA 5 " & usuariox.Text & " " & Replace(Text2.Text, " ", "%20") & vbCrLf
End Sub
SEG = Nombre del Sock
usuariox = un Txt con el usuario actualmente conectado al MSN ejemplo : lofj23@hotmail.com
Text2 = Pues eso... ahi pongo el nick que quiero. Ejemplo: loco de locos
Importante: Fijate que se cambia en el nuevo nick el espacio " " por "%20" , pero en el usuario no, en el usuario no cambies la "@" por "%40" simplemente ponla natural.
gracias Marcus aora provare y te comento como me fue....
Salu2!
nose que ago mal pero no me funca.... para empezar esto:
REA 5 pepe@hotmail.com mi%20super20%nick & vbCrLf
me da error en el vb ... ayuda y saludos!
Si te da error el VB explicate que error da o sino sube el codigo fuente, debes saber que para enviar eso es logico que debes estar conectado al servidor de MSN. Un consejo sube el codigo o pegalo aqui asi te ayudo mas rapido sino seria tirar piedras a ciegas.
Hola Marcus mira este trozo no me lo admite el vb
REA 5 pepe@hotmail.com mi%20super20%nick & vbCrLf
y est ees el codigo entero que pongo:
REA 5 pepe@hotmail.com mi%20super20%nick & vbCrLf
Private Sub Command1_Click()
SEG.SendData "REA 5 " & usuario.Text & " " & Replace(Text2.Text, " ", "%20") & vbCrLf
End Sub
pongo un boton y dos textos
haber si ves mi fallo.
Zalu2!
Bueno creo o es idea mia que estas haciendo un form incluyes un boton y nada mas ?
Ese codigo que te eh puesto es el que debes poner una vez conectado POR TU PROGRAMA USANDO EL PROTOCOLO, no desde el "Windows Live messenger" para cambiar el nick de un usuario de hotmail debes hacer estos pasos:
1-) Conectar usando el usuario y contraseña desde protocolo con VB..
2-) Poner el Command y dentro del Command eso que te puse.
Pero para conectar a MSN no es cosa facil, digamos que es algo complicadillo la primera vez, ahi que conectar a varios servidores, enviar autoidentificaciónes encriptadas. De todas formas aqui te paso un tutorial...
www.telefonica.net/web2/telamarinera/docus/protocolo_msn.pdf (http://www.telefonica.net/web2/telamarinera/docus/protocolo_msn.pdf)
En ese tutorial esta todo bien solo hasta la parte que tienes que conectar al servidor "login.live.com" que debes ignorar esa parte y agregar esta función a tu programa.
Public Function Passport() As String
oWinHTTP.Open "GET", "https://nexus.passport.com/rdr/pprdr.asp"
oWinHTTP.send
sFirstResponse = oWinHTTP.getAllResponseHeaders
'sValue = oWinHTTP.getResponseHeader(sHeaderName)
iDaLoginStart = InStr(1, sFirstResponse, "DALogin=") + 8
iDaLoginEnd = InStr(iDaLoginStart, sFirstResponse, ",")
sDaLogin = Mid(sFirstResponse, iDaLoginStart, iDaLoginEnd - iDaLoginStart)
oWinHTTP.Open "GET", "https://" & sDaLogin
oWinHTTP.setRequestHeader "Authorization", "Passport1.4 OrgVerb=GET,OrgURL=http%3A%2F%2Fmessenger%2Emsn%2Ecom,sign-in=" & Replace(usuariox.Text, "@", "%40") & ",pwd=" & pass.Text & "," & Dlogin
oWinHTTP.send
sSecondResponse = oWinHTTP.getAllResponseHeaders
If InStr(1, sSecondResponse, "Location:") > 0 Then
iDaLocaStart = InStr(1, sSecondResponse, "Location: ") + 10
iDaLocaEnd = InStr(iDaLocaStart, sSecondResponse, vbCrLf)
sDaLoca = Mid(sSecondResponse, iDaLocaStart, iDaLocaEnd - iDaLocaStart)
oWinHTTP.Open "GET", sDaLoca
oWinHTTP.setRequestHeader "Authorization", "Passport1.4 OrgVerb=GET,OrgURL=http%3A%2F%2Fmessenger%2Emsn%2Ecom,sign-in=" & Replace(usuariox.Text, "@", "%40") & ",pwd=" & pass.Text & "," & Dlogin
oWinHTTP.send
If (iDaKeyStart = 9) And (iDaKeyEnd = 0) Then
'Cuando la contraseña esta mal
Set oWinHTTP = Nothing
fals = 1
Call Salir
Call Recargar
Exit Function
End If
sThirdResponse = oWinHTTP.getAllResponseHeaders
iDaKeyStart = InStr(1, sThirdResponse, "from-PP=") + 9
iDaKeyEnd = InStr(iDaKeyStart, sThirdResponse, "'")
If (iDaKeyStart = 9) And (iDaKeyEnd = 0) Then
'Cuando la contraseña esta mal
Set oWinHTTP = Nothing
fals = 1
Call Salir
Call Recargar
Exit Function
End If
sDaKey = Mid(sThirdResponse, iDaKeyStart, iDaKeyEnd - iDaKeyStart)
Passport = sDaKey
Else
iDaKeyStart = InStr(1, sSecondResponse, "from-PP=") + 9
iDaKeyEnd = InStr(iDaKeyStart, sSecondResponse, "'")
If (iDaKeyStart = 9) And (iDaKeyEnd = 0) Then
'Cuando la contraseña esta mal
Set oWinHTTP = Nothing
fals = 1
Call Salir
Call Recargar
Exit Function
End If
sDaKey = Mid(sSecondResponse, iDaKeyStart, iDaKeyEnd - iDaKeyStart)
Passport = sDaKey
Text4.BackColor = vbGreen
SEG.SendData "USR 4 TWN S " & Passport & vbCrLf
Call log
End If
End Function
PD: Tienes que crear un objeto y varias variables que ya al leer el codigo te daras cuenta.
Un saludo
oe markus ers un chucho= "Maestro !!!" ;-)
Lei sobr ;-)e este post antes, en una web q por ahora no me acuerdo xq deje eso de programacion maso medio año asi que q mi cerebro se ha oxidado un poco...
la info que brindaste esta re-buena y te felicito... Se puede hacer lo mismo con VB net? xq lei hace tiempo que decian que necesitaba un protocolo o una libreria del msn o algo parecido para hacerlo funkar pero uhm... yo buske esa nota y no lo encontre asi q me rendi y comenze a hacer otro tipos d programas....
Gracias por los alagos
Aquí en la primera pagina ahí un PDF que es un tutorial algo antiguo pero que funcionan muchas cosas y otras yo las explique en la primera pagina, solo debes leer amigo.