diff --git a/plugins/Linkrewriter.py b/plugins/Linkrewriter.py new file mode 100644 index 0000000..5e87801 --- /dev/null +++ b/plugins/Linkrewriter.py @@ -0,0 +1,48 @@ +#There probably is a better way of doing this + +import logging, re, sys, os +from plugins.plugin import Plugin + +class LinkRw(Plugin): + name = "Link Re-Writer" + optname = "linkrw" + implements = ["handleResponse"] + has_opts = True + desc = "Rewrites all href attributes to a specified url" + + def initialize(self, options): + '''Called if plugin is enabled, passed the options namespace''' + self.options = options + self.url = options.url + + self.mime = "text/html" + + print "[*] Link Re-Writer plugin online" + + + def handleResponse(self, request, data): + ip,hn,mime = self._get_req_info(request) + if mime.find(self.mime)!=-1: + + data = self.repl_hrefs(data) + logging.info("%s [%s] Re-wrote hrefs" % (request.client.getClientIP(), request.headers['host'])) + return {'request':request,'data':data} + else: + return + + def add_options(self, options): + options.add_argument("--url", type=str, help="URL to re-write") + + def _get_req_info(self, request): + ip = request.client.getClientIP() + hn = request.client.getRequestHostname() + mime = request.client.headers['Content-Type'] + return (ip,hn,mime) + + def repl_hrefs(self, data): + + regex = [re.compile(r"href=[\'\"]http[s]?://.+[\'\"]", re.I)] + + for i,r in enumerate(regex): + data=re.sub(r, "href=" + self.url, data) + return data