Captcha con dataid

Iniciado por .:Weeds:., 28 Noviembre 2010, 13:46 PM

0 Miembros y 2 Visitantes están viendo este tema.

.:Weeds:.

Bueno queria que me dierais un poco de orientacion sobre este reto captcha
La web en cuestion es http://www.mysms.es/
El get: nation=0034&number=6********&message=TEXTO+A+ENVIAR&Len=140&gcode=8223&dataid=6ux82x749vvdwu&send=Send+SMS

En el fiddler 2 me sale esto:
http://www.mysms.es/img/image.php?dataid=6ux82x749vvdwu

Esa es la url del captcha, pero no se como aplicarlo a mi programa, alguien que me explique un poco que hacer  :-\

Saludos


.::IT::.

#1
.:Weeds:. como se que usas visual basic

Código (vbnet) [Seleccionar]
Private Function ReadCaptcha() As Image
       Try

           myCookie = New CookieContainer()

           ' Variable que contiene la Url de la funcion que devuelve el captcha
           Dim UrlCaptcha As String = "http://www.mysms.es/img/image.php?dataid=6ux82x749vvdwu"

           ' Declaramos la peticion Http
           Dim _HttpWebRequest As HttpWebRequest = CType(WebRequest.Create(UrlCaptcha), HttpWebRequest)

           ' Aqui asignamos el contenedor de las cookies ese mismo contenedor se
           ' usara cuando se realice la peticion para consultar el numero en el
           ' Procedimiento(GetInfo)
           _HttpWebRequest.CookieContainer = myCookie

           ' cuando un navegador hace una peticion envia sus credenciales que lo
           ' identifican(nombre de navegador,sistema operativo etc) entonces usar
           ' las credenciales por defecto de Internet Explorer
           _HttpWebRequest.Credentials = CredentialCache.DefaultCredentials

           ' Ahora Recuperamos la respuesta del servidor
           Dim _HttpWebResponse As HttpWebResponse = CType(_HttpWebRequest.GetResponse(), HttpWebResponse)

           ' Leer los bytes enviados por el servidor
           Dim _Stream As Stream = _HttpWebResponse.GetResponseStream

           ' Como savemos que los Bytes devueltos son una imagen entonces hacemos la convercion ;
           ' ah veces no son imagenes si no codigo html,binarios etc entonces la siguiente linea retornara error
           ' Ahora para saber que tipo de archivo tienes que leer los primeros bytes pero eso ya es otro cuento
           ' como se que es una imagen entonces lo convierto y eso es todo
           Return Image.FromStream(_Stream)

       Catch ex As Exception
           Throw ex
       End Try
   End Function


Donde myCookie es una variable global de tipo CookieContainer para que puedas usarla en otra peticion(POST GET)

Nota: estoy revisando el codigo fuente del portal y encontre

<input name='dataid' type='hidden' value='p427t7t6336cm4'>

donde value es el id de la imagen entonces primero recoge el cookie container del portal junto con el id de la imagen,

Otro punto por ejemplo si id=6ux82x749vvdwu siempre el codigo captcha es "8223" solo cambia el color de fondo direccion de la imagen,  claro que podria cambiar pero es lo que ahora me eh dado cuenta.
Simplemente .::IT::.

.:Weeds:.

Aaaaa creo que lo empiezo a entender, entonces primero habria que leer el stream y identificar la id, despues de eso formar la imagen con esa id y hacer el get

Pero una cuestion, el fiddler 2 no me encuentras cookies, puede ser que no hagan falta en esta web?

Saludos y gracias por tus sabias respuestas .::IT::.


.::IT::.

#3
jaja esa pagina como  que su reto captcha es muy deprimente basta con enviar el Id y el codigo captcha que se le asigno y eso seria todo no hay cookies tienes razón pero seguro en estos días se dan cuenta y lo arreglan, lo que si me gustaría saber es como hacen para enviar los mensajes gratis  :-\?????

Nota: de repente esos códigos cambian diariamente y talves para mañana o de aquí a unos días ya no sean validos, y tomando en cuenta que no hay cookies pues hombre recoge el html de la pagina con un HttpWebRequest lee el codigo pide la imagen , has tu envio POST-GET(para mi en la practican son lo mismo todo es conseptual,asi otros digan lo contrario jajaja).
Simplemente .::IT::.

.:Weeds:.

Mira llevo esto
Código (vb.net) [Seleccionar]

Dim vCodigoFuente As String = ""
    Dim id As String = ""
    Private Sub sms_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        sacarid()
        PictureBox1.Image = ReadCaptcha()
    End Sub
Public Function sacarid()
        Try
            Dim req As HttpWebRequest = CType(WebRequest.Create("http://www.mysms.es"), HttpWebRequest)
            Dim res As HttpWebResponse = CType(req.GetResponse(), HttpWebResponse)
            If res IsNot Nothing Then
                If res.StatusCode = HttpStatusCode.OK Then
                    Dim stream As Stream = res.GetResponseStream()
                    Using reader As New StreamReader(stream)
                        vCodigoFuente = reader.ReadToEnd()
                    End Using
                End If
                res.Close()
            End If
            Dim Lines() As String = vCodigoFuente.Split(vbNewLine)
            Me.id = Lines(0)
            id = Mid(id, 4898, 14)
        Catch
            MsgBox("Error")
        End Try
    End Function
    Private Function ReadCaptcha() As Image
        Try
            Dim UrlCaptcha As String = "http://www.mysms.es/img/image.php?dataid=" & id
            Dim _HttpWebRequest As HttpWebRequest = CType(WebRequest.Create(UrlCaptcha), HttpWebRequest)
            _HttpWebRequest.Credentials = CredentialCache.DefaultCredentials
            Dim _HttpWebResponse As HttpWebResponse = CType(_HttpWebRequest.GetResponse(), HttpWebResponse)
            Dim _Stream As Stream = _HttpWebResponse.GetResponseStream
            Return Image.FromStream(_Stream)
        Catch ex As Exception
            Throw ex
        End Try
    End Function


La imagen se me muestra correctamente pero no consigo hacer el post, no lo consigo nisiquiera poniendo el get en el chrome(cambiando la id y las letras del captcha), por que me pasa eso?

Saludos


.::IT::.

En el codigo que pusiste arriba veo que solo recoges el id y invocas ah la imagen captcha!!!!!!!

Nota: estas seguro que la pagina puede enviar mensajes gratis??
Simplemente .::IT::.

.:Weeds:.

Cita de: .::IT::. en 28 Noviembre 2010, 19:12 PM
En el codigo que pusiste arriba veo que solo recoges el id y invocas ah la imagen captcha!!!!!!!

Nota: estas seguro que la pagina puede enviar mensajes gratis??

Si que los envia, lo he probado con mi movil

El code de el get se me a olvidao ponerlo jaajajaja, pero lo estaba haciendo asi
Código (vbnet) [Seleccionar]
Dim webClient As System.Net.WebClient = New System.Net.WebClient()
       Dim result As String = webClient.DownloadString("http://www.mysms.es/?nation=0034&number=" & numero.text & "&message=TEXTO&Len=135&gcode=" & captcha.Text & "&dataid=" & id & "&send=Send+SMS")


.::IT::.

#7
usa un HttpWebRequest  en lugar de un webclient prueba ah cambiar

"http://www.mysms.es/?nation=0034&number=" & numero.text & "&message=TEXTO&Len=135&gcode=" & captcha.Text & "&dataid=" & id & "&send=Send+SMS"

por

"http://www.mysms.es/?nation=0034&number=" & numero.text & "&message=TEXTO&Len=135&gcode=" & captcha.Text & "&dataid=" & id


Ahurita tengo que salir has prubas y mas pruebas primero con la url en el navegador ah ver si funciona y de hay ya lo automatizas con un lenguaje de programacion

Nota: analiza bien las limitaciones del portal de repente solo permite un determinado numero de mensajes por ip o por celular.
Simplemente .::IT::.

anikillador

LAMMER, ese programa lo hize yo antes (compromvl) y este cabron me lo quiere poner para ganar pasta con el adsense,

LAMMER,

por supuesto las pruebas,


http://www.gsmspain.com/foros/showthread.php?s=&postid=10564668#post10564668

anikillador

Cita de: .:Weeds:. en 28 Noviembre 2010, 18:41 PM
Mira llevo esto
Código (vb.net) [Seleccionar]

Dim vCodigoFuente As String = ""
    Dim id As String = ""
    Private Sub sms_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        sacarid()
        PictureBox1.Image = ReadCaptcha()
    End Sub
Public Function sacarid()
        Try
            Dim req As HttpWebRequest = CType(WebRequest.Create("http://www.mysms.es"), HttpWebRequest)
            Dim res As HttpWebResponse = CType(req.GetResponse(), HttpWebResponse)
            If res IsNot Nothing Then
                If res.StatusCode = HttpStatusCode.OK Then
                    Dim stream As Stream = res.GetResponseStream()
                    Using reader As New StreamReader(stream)
                        vCodigoFuente = reader.ReadToEnd()
                    End Using
                End If
                res.Close()
            End If
            Dim Lines() As String = vCodigoFuente.Split(vbNewLine)
            Me.id = Lines(0)
            id = Mid(id, 4898, 14)
        Catch
            MsgBox("Error")
        End Try
    End Function
    Private Function ReadCaptcha() As Image
        Try
            Dim UrlCaptcha As String = "http://www.mysms.es/img/image.php?dataid=" & id
            Dim _HttpWebRequest As HttpWebRequest = CType(WebRequest.Create(UrlCaptcha), HttpWebRequest)
            _HttpWebRequest.Credentials = CredentialCache.DefaultCredentials
            Dim _HttpWebResponse As HttpWebResponse = CType(_HttpWebRequest.GetResponse(), HttpWebResponse)
            Dim _Stream As Stream = _HttpWebResponse.GetResponseStream
            Return Image.FromStream(_Stream)
        Catch ex As Exception
            Throw ex
        End Try
    End Function


La imagen se me muestra correctamente pero no consigo hacer el post, no lo consigo nisiquiera poniendo el get en el chrome(cambiando la id y las letras del captcha), por que me pasa eso?

Saludos

acaso entiendes el codigo?'

toca cojones........... eso es un aporte de IT  que te dio en otro hilo, pero vamos me da que no sabes ni lo que es un while.