aboutsummaryrefslogtreecommitdiffstats
path: root/mitmproxy/contentviews
diff options
context:
space:
mode:
authorSachin Kelkar <sachinkel19@gmail.com>2017-02-10 10:56:50 +0530
committerSachin Kelkar <sachinkel19@gmail.com>2017-02-10 11:16:23 +0530
commitc4e141a00087edb457df342884d147c5be8168a9 (patch)
tree41681d8814507cddef6c967225f18455f969f15e /mitmproxy/contentviews
parent5dd54ef012c95c6b20899f3d94b2dc65f634636d (diff)
downloadmitmproxy-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.py18
-rw-r--r--mitmproxy/contentviews/image/view.py5
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: