Python IOError: Not a gzipped file (Gzip and Blowfish Encrypt/Compress)

Posted by notbad.jpeg on Stack Overflow See other posts from Stack Overflow or by notbad.jpeg
Published on 2012-06-21T22:13:55Z Indexed on 2012/06/22 15:16 UTC
Read the original article Hit count: 275

Filed under:
|
|
|
|

I'm having some problems with python's built-in library gzip. Looked through almost every other stack question about it, and none of them seem to work.

MY PROBLEM IS THAT WHEN I TRY TO DECOMPRESS I GET THE IOError

I'm Getting:

Traceback (most recent call last):
File "mymodule.py", line 61, in
  return gz.read()
File "/usr/lib/python2.7/gzip.py", line 245,
  readself._read(readsize)
File "/usr/lib/python2.7/gzip.py", line 287, in
  _readself._read_gzip_header()
File "/usr/lib/python2.7/gzip.py", line 181, in
  _read_gzip_header
raise IOError, 'Not a gzipped file'IOError: Not a gzipped file

This is my code to send it over SMB, it might not make sense why i do things, but it's normally in a while loop and memory efficient, I just simplified it.

buffer = cStringIO.StringIO(output) #output is from a subprocess call
small_buffer = cStringIO.StringIO()
small_string = buffer.read() #need a string to write to buffer 
gzip_obj = gzip.GzipFile(fileobj=small_buffer,compresslevel=6, mode='wb')
gzip_obj.write(small_string)
compressed_str = small_buffer.getvalue()

blowfish = Blowfish.new('abcd', Blowfish.MODE_ECB)
remainder = '|'*(8 - (len(compressed_str) % 8))
compressed_str += remainder
encrypted = blowfish.encrypt(compressed_str)
#i send it over smb, then retrieve it later

Then this is the code that retrieves it:

#buffer is a cStringIO object filled with data from smb retrieval
decrypter = Blowfish.new('abcd', Blowfish.MODE_ECB)
value = buffer.getvalue()
decrypted = decrypter.decrypt(value)
buff = cStringIO.StringIO(decrypted)
buff.seek(0)
gz = gzip.GzipFile(fileobj=buff)
return gz.read()

Here's the problem

return gz.read()

© Stack Overflow or respective owner

Related posts about python

Related posts about encryption