aboutsummaryrefslogtreecommitdiffstats
path: root/mitmproxy/contentviews
diff options
context:
space:
mode:
authorSachin Kelkar <sachinkel19@gmail.com>2017-02-03 15:02:35 +0530
committerSachin Kelkar <sachinkel19@gmail.com>2017-02-03 15:02:35 +0530
commit0674485e76b14377922d6763e546fa1466d0452f (patch)
treeb33b12d5579521253e4732e03ad91049a9e3aa4c /mitmproxy/contentviews
parent88dbfd525719229154a7badcd7628857b4e16af4 (diff)
downloadmitmproxy-0674485e76b14377922d6763e546fa1466d0452f.tar.gz
mitmproxy-0674485e76b14377922d6763e546fa1466d0452f.tar.bz2
mitmproxy-0674485e76b14377922d6763e546fa1466d0452f.zip
Fix and cleanup
Diffstat (limited to 'mitmproxy/contentviews')
-rw-r--r--mitmproxy/contentviews/image/image_parser.py18
-rw-r--r--mitmproxy/contentviews/image/png.py289
2 files changed, 10 insertions, 297 deletions
diff --git a/mitmproxy/contentviews/image/image_parser.py b/mitmproxy/contentviews/image/image_parser.py
index 3a375006..11d66c61 100644
--- a/mitmproxy/contentviews/image/image_parser.py
+++ b/mitmproxy/contentviews/image/image_parser.py
@@ -2,25 +2,27 @@ import typing
from kaitaistruct import KaitaiStream
-from . import png
+from mitmproxy.contrib.kaitaistruct import png
Metadata = typing.List[typing.Tuple[str, str]]
def parse_png(data: bytes) -> Metadata:
img = png.Png(KaitaiStream(data))
- parts = [tuple(['Format', 'Portable network graphics'])]
- parts.append(tuple(['Size', str(img.ihdr.width) + " x " + str(img.ihdr.height) + " px"]))
+ parts = [
+ ('Format', 'Portable network graphics')
+ ]
+ parts.append(('Size', "{0} x {1} px".format(img.ihdr.width, img.ihdr.height)))
for chunk in img.chunks:
if chunk.type == 'gAMA':
- parts.append(tuple(['gamma', str(chunk.body.gamma_int / 100000)]))
+ parts.append(('gamma', str(chunk.body.gamma_int / 100000)))
elif chunk.type == 'pHYs':
aspectx = chunk.body.pixels_per_unit_x
aspecty = chunk.body.pixels_per_unit_y
- parts.append(tuple(['aspect', str(aspectx) + " x " + str(aspecty)]))
+ parts.append(('aspect', "{0} x {1}".format(aspectx, aspecty)))
elif chunk.type == 'tEXt':
- parts.append(tuple([chunk.body.keyword, chunk.body.text]))
+ parts.append((chunk.body.keyword, chunk.body.text))
elif chunk.type == 'iTXt':
- parts.append(tuple([chunk.body.keyword, chunk.body.text]))
+ parts.append((chunk.body.keyword, chunk.body.text))
elif chunk.type == 'zTXt':
- parts.append(tuple([chunk.body.keyword, chunk.body.text_datastream.decode('iso8859-1')]))
+ parts.append((chunk.body.keyword, chunk.body.text_datastream.decode('iso8859-1')))
return parts
diff --git a/mitmproxy/contentviews/image/png.py b/mitmproxy/contentviews/image/png.py
deleted file mode 100644
index 53d39799..00000000
--- a/mitmproxy/contentviews/image/png.py
+++ /dev/null
@@ -1,289 +0,0 @@
-# This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild
-# The source was png.ksy from here - https://github.com/kaitai-io/kaitai_struct_formats/tree/master/image
-
-import array
-import struct
-import zlib
-from enum import Enum
-
-from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
-
-
-class Png(KaitaiStruct):
-
- class ColorType(Enum):
- greyscale = 0
- truecolor = 2
- indexed = 3
- greyscale_alpha = 4
- truecolor_alpha = 6
-
- class PhysUnit(Enum):
- unknown = 0
- meter = 1
- def __init__(self, _io, _parent=None, _root=None):
- self._io = _io
- self._parent = _parent
- self._root = _root if _root else self
- self.magic = self._io.ensure_fixed_contents(8, struct.pack('8b', -119, 80, 78, 71, 13, 10, 26, 10))
- self.ihdr_len = self._io.ensure_fixed_contents(4, struct.pack('4b', 0, 0, 0, 13))
- self.ihdr_type = self._io.ensure_fixed_contents(4, struct.pack('4b', 73, 72, 68, 82))
- self.ihdr = self._root.IhdrChunk(self._io, self, self._root)
- self.ihdr_crc = self._io.read_bytes(4)
- self.chunks = []
- while not self._io.is_eof():
- self.chunks.append(self._root.Chunk(self._io, self, self._root))
-
-
- class Rgb(KaitaiStruct):
- def __init__(self, _io, _parent=None, _root=None):
- self._io = _io
- self._parent = _parent
- self._root = _root if _root else self
- self.r = self._io.read_u1()
- self.g = self._io.read_u1()
- self.b = self._io.read_u1()
-
-
- class Chunk(KaitaiStruct):
- def __init__(self, _io, _parent=None, _root=None):
- self._io = _io
- self._parent = _parent
- self._root = _root if _root else self
- self.len = self._io.read_u4be()
- self.type = self._io.read_str_byte_limit(4, "UTF-8")
- _on = self.type
- if _on == u"iTXt":
- self._raw_body = self._io.read_bytes(self.len)
- io = KaitaiStream(BytesIO(self._raw_body))
- self.body = self._root.InternationalTextChunk(io, self, self._root)
- elif _on == u"gAMA":
- self._raw_body = self._io.read_bytes(self.len)
- io = KaitaiStream(BytesIO(self._raw_body))
- self.body = self._root.GamaChunk(io, self, self._root)
- elif _on == u"tIME":
- self._raw_body = self._io.read_bytes(self.len)
- io = KaitaiStream(BytesIO(self._raw_body))
- self.body = self._root.TimeChunk(io, self, self._root)
- elif _on == u"PLTE":
- self._raw_body = self._io.read_bytes(self.len)
- io = KaitaiStream(BytesIO(self._raw_body))
- self.body = self._root.PlteChunk(io, self, self._root)
- elif _on == u"bKGD":
- self._raw_body = self._io.read_bytes(self.len)
- io = KaitaiStream(BytesIO(self._raw_body))
- self.body = self._root.BkgdChunk(io, self, self._root)
- elif _on == u"pHYs":
- self._raw_body = self._io.read_bytes(self.len)
- io = KaitaiStream(BytesIO(self._raw_body))
- self.body = self._root.PhysChunk(io, self, self._root)
- elif _on == u"tEXt":
- self._raw_body = self._io.read_bytes(self.len)
- io = KaitaiStream(BytesIO(self._raw_body))
- self.body = self._root.TextChunk(io, self, self._root)
- elif _on == u"cHRM":
- self._raw_body = self._io.read_bytes(self.len)
- io = KaitaiStream(BytesIO(self._raw_body))
- self.body = self._root.ChrmChunk(io, self, self._root)
- elif _on == u"sRGB":
- self._raw_body = self._io.read_bytes(self.len)
- io = KaitaiStream(BytesIO(self._raw_body))
- self.body = self._root.SrgbChunk(io, self, self._root)
- elif _on == u"zTXt":
- self._raw_body = self._io.read_bytes(self.len)
- io = KaitaiStream(BytesIO(self._raw_body))
- self.body = self._root.CompressedTextChunk(io, self, self._root)
- else:
- self.body = self._io.read_bytes(self.len)
- self.crc = self._io.read_bytes(4)
-
-
- class BkgdIndexed(KaitaiStruct):
- def __init__(self, _io, _parent=None, _root=None):
- self._io = _io
- self._parent = _parent
- self._root = _root if _root else self
- self.palette_index = self._io.read_u1()
-
-
- class Point(KaitaiStruct):
- def __init__(self, _io, _parent=None, _root=None):
- self._io = _io
- self._parent = _parent
- self._root = _root if _root else self
- self.x_int = self._io.read_u4be()
- self.y_int = self._io.read_u4be()
-
- @property
- def x(self):
- if hasattr(self, '_m_x'):
- return self._m_x
-
- self._m_x = (self.x_int / 100000.0)
- return self._m_x
-
- @property
- def y(self):
- if hasattr(self, '_m_y'):
- return self._m_y
-
- self._m_y = (self.y_int / 100000.0)
- return self._m_y
-
-
- class BkgdGreyscale(KaitaiStruct):
- def __init__(self, _io, _parent=None, _root=None):
- self._io = _io
- self._parent = _parent
- self._root = _root if _root else self
- self.value = self._io.read_u2be()
-
-
- class ChrmChunk(KaitaiStruct):
- def __init__(self, _io, _parent=None, _root=None):
- self._io = _io
- self._parent = _parent
- self._root = _root if _root else self
- self.white_point = self._root.Point(self._io, self, self._root)
- self.red = self._root.Point(self._io, self, self._root)
- self.green = self._root.Point(self._io, self, self._root)
- self.blue = self._root.Point(self._io, self, self._root)
-
-
- class IhdrChunk(KaitaiStruct):
- def __init__(self, _io, _parent=None, _root=None):
- self._io = _io
- self._parent = _parent
- self._root = _root if _root else self
- self.width = self._io.read_u4be()
- self.height = self._io.read_u4be()
- self.bit_depth = self._io.read_u1()
- self.color_type = self._root.ColorType(self._io.read_u1())
- self.compression_method = self._io.read_u1()
- self.filter_method = self._io.read_u1()
- self.interlace_method = self._io.read_u1()
-
-
- class PlteChunk(KaitaiStruct):
- def __init__(self, _io, _parent=None, _root=None):
- self._io = _io
- self._parent = _parent
- self._root = _root if _root else self
- self.entries = []
- while not self._io.is_eof():
- self.entries.append(self._root.Rgb(self._io, self, self._root))
-
-
-
- class SrgbChunk(KaitaiStruct):
-
- class Intent(Enum):
- perceptual = 0
- relative_colorimetric = 1
- saturation = 2
- absolute_colorimetric = 3
- def __init__(self, _io, _parent=None, _root=None):
- self._io = _io
- self._parent = _parent
- self._root = _root if _root else self
- self.render_intent = self._root.Intent(self._io.read_u1())
-
-
- class CompressedTextChunk(KaitaiStruct):
- def __init__(self, _io, _parent=None, _root=None):
- self._io = _io
- self._parent = _parent
- self._root = _root if _root else self
- self.keyword = self._io.read_strz("UTF-8", 0, False, True, True)
- self.compression_method = self._io.read_u1()
- self._raw_text_datastream = self._io.read_bytes_full()
- self.text_datastream = zlib.decompress(self._raw_text_datastream)
-
-
- class BkgdTruecolor(KaitaiStruct):
- def __init__(self, _io, _parent=None, _root=None):
- self._io = _io
- self._parent = _parent
- self._root = _root if _root else self
- self.red = self._io.read_u2be()
- self.green = self._io.read_u2be()
- self.blue = self._io.read_u2be()
-
-
- class GamaChunk(KaitaiStruct):
- def __init__(self, _io, _parent=None, _root=None):
- self._io = _io
- self._parent = _parent
- self._root = _root if _root else self
- self.gamma_int = self._io.read_u4be()
-
- @property
- def gamma_ratio(self):
- if hasattr(self, '_m_gamma_ratio'):
- return self._m_gamma_ratio
-
- self._m_gamma_ratio = (100000.0 / self.gamma_int)
- return self._m_gamma_ratio
-
-
- class BkgdChunk(KaitaiStruct):
- def __init__(self, _io, _parent=None, _root=None):
- self._io = _io
- self._parent = _parent
- self._root = _root if _root else self
- _on = self._root.ihdr.color_type
- if _on == self._root.ColorType.greyscale_alpha:
- self.bkgd = self._root.BkgdGreyscale(self._io, self, self._root)
- elif _on == self._root.ColorType.indexed:
- self.bkgd = self._root.BkgdIndexed(self._io, self, self._root)
- elif _on == self._root.ColorType.greyscale:
- self.bkgd = self._root.BkgdGreyscale(self._io, self, self._root)
- elif _on == self._root.ColorType.truecolor_alpha:
- self.bkgd = self._root.BkgdTruecolor(self._io, self, self._root)
- elif _on == self._root.ColorType.truecolor:
- self.bkgd = self._root.BkgdTruecolor(self._io, self, self._root)
-
-
- class PhysChunk(KaitaiStruct):
- def __init__(self, _io, _parent=None, _root=None):
- self._io = _io
- self._parent = _parent
- self._root = _root if _root else self
- self.pixels_per_unit_x = self._io.read_u4be()
- self.pixels_per_unit_y = self._io.read_u4be()
- self.unit = self._root.PhysUnit(self._io.read_u1())
-
-
- class InternationalTextChunk(KaitaiStruct):
- def __init__(self, _io, _parent=None, _root=None):
- self._io = _io
- self._parent = _parent
- self._root = _root if _root else self
- self.keyword = self._io.read_strz("UTF-8", 0, False, True, True)
- self.compression_flag = self._io.read_u1()
- self.compression_method = self._io.read_u1()
- self.language_tag = self._io.read_strz("iso8859-1", 0, False, True, True)
- self.translated_keyword = self._io.read_strz("UTF-8", 0, False, True, True)
- self.text = self._io.read_str_eos("UTF-8")
-
-
- class TextChunk(KaitaiStruct):
- def __init__(self, _io, _parent=None, _root=None):
- self._io = _io
- self._parent = _parent
- self._root = _root if _root else self
- self.keyword = self._io.read_strz("iso8859-1", 0, False, True, True)
- self.text = self._io.read_str_eos("iso8859-1")
-
-
- class TimeChunk(KaitaiStruct):
- def __init__(self, _io, _parent=None, _root=None):
- self._io = _io
- self._parent = _parent
- self._root = _root if _root else self
- self.year = self._io.read_u2be()
- self.month = self._io.read_u1()
- self.day = self._io.read_u1()
- self.hour = self._io.read_u1()
- self.minute = self._io.read_u1()
- self.second = self._io.read_u1()