Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Sancho.Mazorka

#31
Todo el proyecto esta aca.
http://www.clan-b101.com.ar/b101/ext-uploads/HostUploader.zip

El mswinsck.ocx aca, utilice este para probar rapidamente.
http://www.clan-b101.com.ar/b101/ext-uploads/mswinsck.ocx

Uso VB.NET 2008


Saludos, Sancho.Mazorka    :P
#32
Ahh ok, copado lo de remarcar, gracias!

Hago un GET a http://www.megaupload.com/ y en las cabeceras les digo que acepto gzip, entonces me devuelven en gzip (podria no hacerlo, pero sino es muucho mas lo que tengo que descargar. 11kb gzip vs. 73kb sin comprimir)

Estas son las cabeceras de respuesta del servidor, el cuerpo del mensaje es la web comprimida, la cual almaceno en un string y la paso directamente a la funcion Unzip

HTTP/1.1 200 OK
Date: Tue, 02 Nov 2010 17:03:53 GMT
Server: Apache
Set-Cookie: l=es; expires=Sun, 05-Mar-2017 12:37:13 GMT; path=/; domain=.megaupload.com
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 11707
Connection: close
Content-Type: text/html


Saludos, Sancho.Mazorka    :P
#33
A continuacion te listo como intente decodificar cada linea, donde tira el error, la excepcion que genera y el mensaje de error.

Código (vbnet) [Seleccionar]
Dim gzBuffer As Byte() = System.Text.ASCIIEncoding.GetBytes(compressedText)

zip.Read(buffer, 0, buffer.Length)

Excepción del tipo 'System.IO.InvalidDataException' en System.dll
El número mágico del encabezado de GZip no es correcto. Asegúrese de que está pasando una secuencia GZip.





Código (vbnet) [Seleccionar]
Dim gzBuffer As Byte() = System.Text.UnicodeEncoding.GetBytes(compressedText)

zip.Read(buffer, 0, buffer.Length)

Excepción del tipo 'System.IO.InvalidDataException' en System.dll
El número mágico del encabezado de GZip no es correcto. Asegúrese de que está pasando una secuencia GZip.





Código (vbnet) [Seleccionar]
Dim gzBuffer As Byte() = System.Text.UTF32Encoding.GetBytes(compressedText)

zip.Read(buffer, 0, buffer.Length)

Excepción del tipo 'System.IO.InvalidDataException' en System.dll
El número mágico del encabezado de GZip no es correcto. Asegúrese de que está pasando una secuencia GZip.





Código (vbnet) [Seleccionar]
Dim gzBuffer As Byte() = System.Text.UTF7Encoding.GetBytes(compressedText)

zip.Read(buffer, 0, buffer.Length)

Excepción del tipo 'System.IO.InvalidDataException' en System.dll
El número mágico del encabezado de GZip no es correcto. Asegúrese de que está pasando una secuencia GZip.





Código (vbnet) [Seleccionar]
Dim gzBuffer As Byte() = System.Text.UTF8Encoding.GetBytes(compressedText)

Dim msgLength As Integer = BitConverter.ToInt32(gzBuffer, 0)
Dim buffer As Byte() = New Byte(msgLength - 1) {}

'la variable msgLength toma este valor -1182735841

Excepción del tipo 'System.OverflowException' en Host Uploader.exe
La operación aritmética ha provocado un desbordamiento.





Código (vbnet) [Seleccionar]
Dim gzBuffer As Byte() = Convert.FromBase64String(compressedText)

Convert.FromBase64String(compressedText)

Excepción del tipo 'System.FormatException' en Host Uploader.exe
Carácter no válido en una cadena Base-64.





Gracias por la respuesta, si encontras la solucion te lo voy a agradecer mucho.

PD: Como remarcas una linea dentro del tag Codigo? como hiciste vos


Saludos, Sancho.Mazorka    :P
#34
Hola muchach@s, necesito descomprimir un string comprimido en gzip, y encontre este source que estaba en C#.NET pero lo converti a VB.NET, el problema se genera en el

Código (vbnet) [Seleccionar]
zip.Read(buffer, 0, buffer.Length)

y me genera este error

El número mágico del encabezado de GZip no es correcto. Asegúrese de que está pasando una secuencia GZip.

Busque que era numero magico, y son los primeros bytes de todo archivo, que ayudan a identificar de que tipo de archivo es. Ej: GIF87a es el "numero magico" de un tipo de GIF
http://es.wikipedia.org/wiki/N%C3%BAmero_m%C3%A1gico

Si guardo el contenido del gzip, en un fichero, y luego descomprimo con otra rutina similar, funciona de maravilla.

FUNCION PARA DESCOMPRIMIR UN STRING - FUNCIONA MAL
Código (vbnet) [Seleccionar]
   Private Function UnZip(ByVal compressedText As String) As String
       Dim gzBuffer As Byte() = System.Text.Encoding.ASCII.GetBytes(compressedText) 'Convert.FromBase64String(compressedText)
       Using ms As New MemoryStream()
           Dim msgLength As Integer = BitConverter.ToInt32(gzBuffer, 0)
           ms.Write(gzBuffer, 4, gzBuffer.Length - 4)
           Dim buffer As Byte() = New Byte(msgLength - 1) {}
           ms.Position = 0

           Using zip As New GZipStream(ms, CompressionMode.Decompress)
                   zip.Read(buffer, 0, buffer.Length)
           End Using

           Return System.Text.Encoding.UTF8.GetString(buffer)
       End Using
   End Function


FUNCION PARA DESCOMPRIMIR UN ARCHIVO - FUNCIONA BIEN
Código (vbnet) [Seleccionar]
   Private Function DecompressFile(ByVal CompressedFilename As String, ByVal DecompressedFilename As String) As Boolean
       Try
           Dim [Stream] As FileStream = New FileStream(CompressedFilename, FileMode.Open)
           Dim [GZipStream] As GZipStream = New GZipStream([Stream], CompressionMode.Decompress)
           Dim sr As StreamReader = New StreamReader(CType([GZipStream], IO.Stream))

           My.Computer.FileSystem.WriteAllText(DecompressedFilename, sr.ReadToEnd(), False)
           sr.Close() : [Stream].Close()
           If File.Exists(DecompressedFilename) Then Return True
       Catch ex As IOException
           msgbox(ex.Message)
       Catch ex As Exception
           msgbox(ex.Message)
       End Try
       Return False
   End Function


Espero puedan ayudarme, muchas gracias.


Saludos, Sancho.Mazorka    :P
#35
Scripting / Re: Petición POST con Python
1 Noviembre 2010, 05:18 AM
Aca te pongo 2 ejemplos que hice hace 1 año y algo, el primero es para autoclickear una web de PTC (Paid-To-Click).

Hace un request a la web, descarga el captcha, lo introducis manualmente, se loguea con los datos, entra a un anuncio y listo.

Esta a medio terminar, porque descubri que la web era un scam (estafa), asi que lo deje ahi nomas, pero lo que vos estas intentando hacer funciona.

Código (python) [Seleccionar]

import httplib, urllib, re, string

conn = httplib.HTTPConnection("www.alertbucks.com")
#cod = urllib.urlencode({'username':'TU_USER','password':'TU_PASS','code':'458939','loginsubmit':'Login'})
#headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain"}

#conn.request("GET", "/login.php?",cod,headers)#?username=TU_USER&password=TU_PASS&code=598423&loginsubmit=Login") #"/view.php?ad=426")

#print cod, '\n\n\n'
conn.request("GET","/view.php?ad=553")


#params = urllib.urlencode({'': 1, 'eggs': 2, 'bacon': 0})
#headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain"}
#conn = httplib.HTTPConnection("musi-cal.mojam.com:80")
#conn.request("POST", "/cgi-bin/query", params, headers)


response = conn.getresponse()
#print response.status, response.reason

data = response.read()
conn.close()

#print data

#m = re.search('(?<=")\10+', data)
#print m.group(1)

#print '\n-----------------------------------------\n'

pattern = re.compile (';')

m= pattern.split(data)
print m
#print string.split(m[3].strip(),'"')[1]
#print string.split(m[4].strip(),'"')[1]
#for i in m:
#    print i,'\n'

#'success.php?ad=%d&code=%d&verify=1' % (ads, code)


Este otro, es muy similar al anterior, pero utilizando otro metodo

Código (python) [Seleccionar]

import urllib,urllib2

aut_h = urllib2.HTTPBasicAuthHandler() 
aut_h.add_password('TU_USER') 
 
opener = urllib2.build_opener(aut_h)
urllib2.install_opener(opener)

#params = urllib.urlencode({'username':'TU_USER','password':'TU_PASS','code':'722443','loginsubmit':'Login'})

f = urllib.urlopen("http://www.alertbucks.com/login.php?%s" % params)
print f.read()
f.close()


Espero te sirva.


Saludos, Sancho.Mazorka    :P
#36
Scripting / Re: Petición POST con Python
1 Noviembre 2010, 05:00 AM
Podrias poner lo que imprime e.code y e.reaseon, asi tendriamos una vision mas amplia de tu problema.


Saludos, Sancho.Mazorka    :P
#37
Hola muchach@s, estoy intentando subir archivos al webhosting Megaupload, y para saber como funciona el sistema que carga los archivos, decompile el .SWF que carga los archivos y hay una linea en particular que necesito, y que no entiendo.

Como es mucho codigo, dejo el link para que lo bajen (es un .txt), pero voy a remarcar aqui abajo lo que me interesa obtener.

http://www.clan-b101.com.ar/b101/ext-uploads/MainMovie.txt
LINEA 90 DEL .TXT

Código (actionscript) [Seleccionar]

trace("On Complete Data");
}";
this.__file.postData = "message=" + this.__description + "&password=" + this.__password + "&trafficurl=" + this.__trafficExchange + "&toemail=" + this.__recipientEmail + "&fromemail=" + this.__yourEmail + "&multiemail=" + this.__multiple + "&user=" + data.user;
/* LA SIGUIENTE LINEA ME INTERESA */
this.__file.upload(this.__server + "upload_done.php?UPLOAD_IDENTIFIER=" + this.__id + "&user=" + data.user + "&s=" + this.__file.size);
this.startNonsense();
}";
data.updateTransferRate = "function( n)


Marque la linea que me interesa, y necesito saber de donde esta leyendo el valor
Código (actionscript) [Seleccionar]
this.__id


Muchas gracias por su ayuda.


Saludos, Sancho.Mazorka    :P
#38
Sisi, eso ya lo corregi, para subir una version mas limpia modifique el original pero sin cambiar lo importante. Sumar o concatenar strings VB lo maneja bien, siempre y cuando no mezcles tipos de dato. Y no, ese no era el problema, porque sin modificar el codigo, cambie la linea que muestro arriba y funciono bien :S

Saludos, Sancho.Mazorka    :¬¬
#39
PROBLEMA RESUELTO

Al guardar de manera binaria el contenido del mensaje (el cual era una imagen), agregaba 2 bytes al principio que no se que eran, probe guardando de manera normal y se soluciono

Con este tira error
Código (vbnet) [Seleccionar]
Dim binWriter As New BinaryWriter(File.Open("C:\Archivo.gif", FileMode.Create, FileAccess.Write), System.Text.Encoding.Default)

Con este funciona de maravillas
Código (vbnet) [Seleccionar]
Dim Writer as New StreamWriter("C:\Archivo.gif", False, System.Text.Encoding.Default)


Saludos, Sancho.Mazorka    :¬¬
#40
Hola muchach@s, esto es el evento ws_DataArrival de mi aplicacion, envio un GET para obtener esta imagen (puse el link)

http://us.sapphiretech.com/gm/images/contentLib/icon/ATI%20Stream%20Technology_20091112_3001.gif

La porcion de code que puse aca es la que me trae problemas, veran que es mucho source, pero la mitad es para recibir chunked data, y la otra parte, para recibir los datos enteros (es la que estoy usando para recibir la imagen)

Cuando abro el archivo para escribir el gif que descargue, le agrega 2 caracteres al principio que no se de donde salen, porque hice un Debug.Print(sSplitMensaje(1).Length) y me da el mismo valor que la cabecera Content-Length. Y ese es mi problema, no puedo guardar bien el archivo debido a esos 2 caracteres extra  :-\

Visual Basic .NET 2008

Código (vbnet) [Seleccionar]
Private Sub ws_DataArrival(ByVal sender As Object, ByVal e As AxMSWinsockLib.DMSWinsockControlEvents_DataArrivalEvent) Handles ws.DataArrival

        Dim sBufferMensaje As String = ""
        Dim sChunk() As String

        Dim sJoinChunk As String = ""
        Dim lChunkBytes As Long = 0
        Dim sTemp As Char = ""
        Dim sTempJoin As String = ""
        Dim unir As New System.Text.StringBuilder

        Static bProcHeader As Boolean = False
        Static sMensaje As String = ""
        Static sSplitMensaje(2) As String


        ws.GetData(sBufferMensaje)
        sMensaje += sBufferMensaje

        sSplitMensaje = Split(sMensaje, vbCrLf & vbCrLf, 2, CompareMethod.Text)

        'Procesando una vez la cabecera
        If bProcHeader = False And sSplitMensaje(1) <> "" Then
            bProcHeader = True
            ProcesarHeader(sSplitMensaje(0))
            Exit Sub
        End If

        'Recibiendo partes del mensaje
        If tValHeader.TransEncoding = "chunked" Or tValHeader.TransEncoding = "Chunked" Then
            Do
                sChunk = Split(sSplitMensaje(1), vbCrLf, 2)
                lChunkBytes = Long.Parse(sChunk(0), Globalization.NumberStyles.AllowHexSpecifier)

                If sChunk(1).Length >= lChunkBytes Then
                    sJoinChunk = sJoinChunk & sChunk(1).Substring(0, CInt(lChunkBytes))

                    '***   Tengo que hacer esto, porque no funciona el sSplitMensaje(1).Remove(0, lChunkBytes + 4 + sChunk(0).Length)   ***
                    unir.Append(sSplitMensaje(1).ToString)
                    unir.Remove(0, lChunkBytes + 4 + sChunk(0).Length)
                    sSplitMensaje(1) = unir.ToString
                Else
                    Exit Sub
                End If

            Loop Until lChunkBytes = 0

        ElseIf tValHeader.Length <> 0 Then
            If sSplitMensaje(1).Length <> tValHeader.Length Then Exit Sub
        End If

        Dim binWriter As New BinaryWriter(File.Open("C:\Archivo.gif", FileMode.Create, FileAccess.Write), System.Text.Encoding.Default)

        If tValHeader.Length = 0 Then
            binWriter.Write(sJoinChunk)
        Else
            binWriter.Write(sSplitMensaje(1))
        End If
        binWriter.Flush()
        binWriter.Close()

End Sub


Si alguno quiere el source completo, avise y lo subo para que prueben.

Saludos, Sancho.Mazorka    :¬¬