Ejemplo n.º 1
0
 def test_fuzz(self, data):
     f = io.BytesIO(data)
     reader = FlowReader(f)
     try:
         for _ in reader.stream():
             pass
     except exceptions.FlowReadException:
         pass  # should never raise anything else.
Ejemplo n.º 2
0
    def load_saved_flow(self, flow_path, third_party=False, set_self=True):
        flow = []

        with open(flow_path, 'rb') as flowfile:
            freader = FlowReader(flowfile)

            for msg in freader.stream():
                if third_party:
                    pass
                elif '.uber.' not in msg.request.host:
                    continue

                flow.append(msg)

        if set_self:
            self.orig_flow = flow
        else:
            return flow
Ejemplo n.º 3
0
 def load_flows(self, fr: io.FlowReader) -> int:
     """
         Load flows from a FlowReader object.
     """
     cnt = 0
     for i in fr.stream():
         cnt += 1
         self.load_flow(i)
     return cnt
Ejemplo n.º 4
0
 def load_flows(self, fr: io.FlowReader) -> int:
     """
         Load flows from a FlowReader object.
     """
     cnt = 0
     for i in fr.stream():
         cnt += 1
         self.load_flow(i)
     return cnt
Ejemplo n.º 5
0
 def test_unknown_type(self):
     with pytest.raises(exceptions.FlowReadException,
                        match="Unknown flow type"):
         weird_flow = tnetstring.dumps({
             "type":
             "unknown",
             "version":
             version.FLOW_FORMAT_VERSION
         })
         for _ in FlowReader(io.BytesIO(weird_flow)).stream():
             pass
Ejemplo n.º 6
0
from mitmproxy.io import FlowReader
from Request_Constraint import Request_Constraints
#Source: https://avilpage.com/2018/08/parsing-and-transforming-mitmproxy-request-flows.html

filename = 'dump.txt'
request_obj_list = []
with open(filename, 'rb') as fp:
    reader = FlowReader(fp)
    #param_length_per_visit = {}
    #max_param = 0
    #param_chars = {}

    for flow in reader.stream():
        request = flow.request
        url = request.url.split("?")[0]

        #Check if an Request_Constraints obj exists already for the url
        exists = False
        request_obj = None
        idx = -1
        for i in range(len(request_obj_list)):
            tmp = request_obj_list[i].url
            if (request_obj_list[i].url == url):
                exists = True
                idx = i
                request_obj = request_obj_list[i]

        if (not exists):
            request_obj = Request_Constraints(url)
            #check GET # of params
            if (request.method == "GET"):
Ejemplo n.º 7
0
 def test_cannot_migrate(self):
     with pytest.raises(
             exceptions.FlowReadException,
             match="cannot read files with flow format version 0"):
         for _ in FlowReader(io.BytesIO(b"14:7:version;1:0#}")).stream():
             pass
Ejemplo n.º 8
0
 def test_empty(self):
     assert list(FlowReader(io.BytesIO(b"")).stream()) == []