diff options
author | Sachin Kelkar <sachinkel19@gmail.com> | 2017-02-10 10:56:50 +0530 |
---|---|---|
committer | Sachin Kelkar <sachinkel19@gmail.com> | 2017-02-10 11:16:23 +0530 |
commit | c4e141a00087edb457df342884d147c5be8168a9 (patch) | |
tree | 41681d8814507cddef6c967225f18455f969f15e /mitmproxy/contentviews | |
parent | 5dd54ef012c95c6b20899f3d94b2dc65f634636d (diff) | |
download | mitmproxy-c4e141a00087edb457df342884d147c5be8168a9.tar.gz mitmproxy-c4e141a00087edb457df342884d147c5be8168a9.tar.bz2 mitmproxy-c4e141a00087edb457df342884d147c5be8168a9.zip |
Add jpeg app0 sof0 com parsing
Diffstat (limited to 'mitmproxy/contentviews')
-rw-r--r-- | mitmproxy/contentviews/image/image_parser.py | 18 | ||||
-rw-r--r-- | mitmproxy/contentviews/image/view.py | 5 |
2 files changed, 23 insertions, 0 deletions
diff --git a/mitmproxy/contentviews/image/image_parser.py b/mitmproxy/contentviews/image/image_parser.py index b104d105..dd47c11d 100644 --- a/mitmproxy/contentviews/image/image_parser.py +++ b/mitmproxy/contentviews/image/image_parser.py @@ -5,6 +5,7 @@ from kaitaistruct import KaitaiStream from mitmproxy.contrib.kaitaistruct import png from mitmproxy.contrib.kaitaistruct import gif +from mitmproxy.contrib.kaitaistruct import jpeg Metadata = typing.List[typing.Tuple[str, str]] @@ -55,3 +56,20 @@ def parse_gif(data: bytes) -> Metadata: if comment is not b'': parts.append(('comment', str(comment))) return parts + + +def parse_jpeg(data: bytes) -> Metadata: + img = jpeg.Jpeg(KaitaiStream(io.BytesIO(data))) + parts = [ + ('Format', 'JPEG (ISO 10918)') + ] + for segment in img.segments: + if segment.marker._name_ == 'sof0': + parts.append(('Size', "{0} x {1} px".format(segment.data.image_width, segment.data.image_height))) + if segment.marker._name_ == 'app0': + parts.append(('jfif_version', "({0}, {1})".format(segment.data.version_major, segment.data.version_minor))) + parts.append(('jfif_density', "({0}, {1})".format(segment.data.density_x, segment.data.density_y))) + parts.append(('jfif_unit', str(segment.data.density_units._value_))) + if segment.marker._name_ == 'com': + parts.append(('comment', str(segment.data))) + return parts diff --git a/mitmproxy/contentviews/image/view.py b/mitmproxy/contentviews/image/view.py index 9caf9a6c..e3c9bbd3 100644 --- a/mitmproxy/contentviews/image/view.py +++ b/mitmproxy/contentviews/image/view.py @@ -33,6 +33,11 @@ class ViewImage(base.View): parts = image_parser.parse_gif(data) fmt = base.format_dict(multidict.MultiDict(parts)) return "%s image" % f, fmt + elif image_type == 'jpeg': + f = "JPEG" + parts = image_parser.parse_jpeg(data) + fmt = base.format_dict(multidict.MultiDict(parts)) + return "%s image" % f, fmt try: img = Image.open(io.BytesIO(data)) except IOError: |