|
32
|
Programación / .NET (C#, VB.NET, ASP) / Re: GZipStream: Problema con numero magico
|
en: 2 Noviembre 2010, 18:07 pm
|
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
|
|
|
33
|
Programación / .NET (C#, VB.NET, ASP) / Re: GZipStream: Problema con numero magico
|
en: 2 Noviembre 2010, 17:02 pm
|
A continuacion te listo como intente decodificar cada linea, donde tira el error, la excepcion que genera y el mensaje de error.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.
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.
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.
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.
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 -1182735841Excepción del tipo 'System.OverflowException' en Host Uploader.exe La operación aritmética ha provocado un desbordamiento.
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
|
|
|
34
|
Programación / .NET (C#, VB.NET, ASP) / GZipStream: Problema con numero magico
|
en: 2 Noviembre 2010, 07:28 am
|
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 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 GIFhttp://es.wikipedia.org/wiki/N%C3%BAmero_m%C3%A1gicoSi 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 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 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.
|
|
|
35
|
Programación / Scripting / Re: Petición POST con Python
|
en: 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. 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 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.
|
|
|
37
|
Programación / Programación General / [ActionScript] Ayuda para entender codigo
|
en: 1 Noviembre 2010, 03:36 am
|
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.txtLINEA 90 DEL .TXT 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 this.__id
Muchas gracias por su ayuda.
|
|
|
38
|
Programación / Programación Visual Basic / Re: [Solucionado] Error al guardar datos binarios
|
en: 26 Octubre 2010, 04:12 am
|
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
|
|
|
39
|
Programación / Programación Visual Basic / Re: Error al guardar datos binarios
|
en: 26 Octubre 2010, 02:34 am
|
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 Dim binWriter As New BinaryWriter (File. Open("C:\Archivo.gif", FileMode. Create, FileAccess. Write), System. Text. Encoding. Default)
Con este funciona de maravillas Dim Writer as New StreamWriter("C:\Archivo.gif", False, System.Text.Encoding.Default)
|
|
|
40
|
Programación / Programación Visual Basic / [Solucionado] Error al guardar datos binarios
|
en: 25 Octubre 2010, 08:47 am
|
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.gifLa 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 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.
|
|
|
|
|
|
|