コード例 #1
0
 def test_error_on_absurd_lengths(self):
     s = io.BytesIO()
     s.write(b'1000000000:pwned!,')
     s.seek(0)
     with self.assertRaises(ValueError):
         tnetstring.load(s)
     self.assertEqual(s.read(1), b':')
コード例 #2
0
 def test_error_on_absurd_lengths(self):
     s = io.BytesIO()
     s.write(b'1000000000:pwned!,')
     s.seek(0)
     with self.assertRaises(ValueError):
         tnetstring.load(s)
     self.assertEqual(s.read(1), b':')
コード例 #3
0
 def test_roundtrip_file_examples(self):
     for data, expect in FORMAT_EXAMPLES.items():
         s = io.BytesIO()
         s.write(data)
         s.write(b'OK')
         s.seek(0)
         self.assertEqual(expect, tnetstring.load(s))
         self.assertEqual(b'OK', s.read())
         s = io.BytesIO()
         tnetstring.dump(expect, s)
         s.write(b'OK')
         s.seek(0)
         self.assertEqual(expect, tnetstring.load(s))
         self.assertEqual(b'OK', s.read())
コード例 #4
0
 def test_roundtrip_file_examples(self):
     for data, expect in FORMAT_EXAMPLES.items():
         s = io.BytesIO()
         s.write(data)
         s.write(b'OK')
         s.seek(0)
         self.assertEqual(expect, tnetstring.load(s))
         self.assertEqual(b'OK', s.read())
         s = io.BytesIO()
         tnetstring.dump(expect, s)
         s.write(b'OK')
         s.seek(0)
         self.assertEqual(expect, tnetstring.load(s))
         self.assertEqual(b'OK', s.read())
コード例 #5
0
 def test_roundtrip_file_random(self):
     for _ in range(500):
         v = get_random_object()
         s = io.BytesIO()
         tnetstring.dump(v, s)
         s.write(b'OK')
         s.seek(0)
         self.assertEqual(v, tnetstring.load(s))
         self.assertEqual(b'OK', s.read())
コード例 #6
0
def read_tnetstring(input):
    # tnetstring throw a ValueError on EOF, which is hard to catch
    # because they raise ValueErrors for a couple of other reasons.
    # Check for EOF to avoid this.
    if not input.read(1):
        return None
    else:
        input.seek(-1, 1)
    return tnetstring.load(input)
コード例 #7
0
 def test_roundtrip_file_random(self):
     for _ in range(500):
         v = get_random_object()
         s = io.BytesIO()
         tnetstring.dump(v, s)
         s.write(b'OK')
         s.seek(0)
         self.assertEqual(v, tnetstring.load(s))
         self.assertEqual(b'OK', s.read())
コード例 #8
0
def main(infile, outfile, baseurl):
    '''Convert the given flows from INFILE into a OpenAPI spec and save to OUTFILE,
    that is similar to the API the flows were capturing. BASEURL is the base url of the
    API that you were capturing and is used for documentation and filtering.
    '''
    flows = []

    with open(infile, 'rb') as f:
        f.seek(0, os.SEEK_END)
        n = f.tell()
        f.seek(0, os.SEEK_SET)
        while f.tell() < n:
            flows.append(tnetstring.load(f))

    flows = debinarize(flows)

    oapi = openapi_create(flows, baseurl)

    with open(outfile, 'w') as f:
        yaml.dump(oapi, f, indent=2)
コード例 #9
0
ファイル: io.py プロジェクト: StevenVanAcker/mitmproxy
 def stream(self) -> Iterable[flow.Flow]:
     """
         Yields Flow objects from the dump.
     """
     try:
         while True:
             # FIXME: This cast hides a lack of dynamic type checking
             loaded = cast(
                 Dict[Union[bytes, str], Any],
                 tnetstring.load(self.fo),
             )
             try:
                 mdata = compat.migrate_flow(loaded)
             except ValueError as e:
                 raise exceptions.FlowReadException(str(e))
             if mdata["type"] not in FLOW_TYPES:
                 raise exceptions.FlowReadException("Unknown flow type: {}".format(mdata["type"]))
             yield FLOW_TYPES[mdata["type"]].from_state(mdata)
     except ValueError as e:
         if str(e) == "not a tnetstring: empty file":
             return  # Error is due to EOF
         raise exceptions.FlowReadException("Invalid data format.")
コード例 #10
0
ファイル: io.py プロジェクト: EndUser509/mitmproxy
 def stream(self) -> Iterable[flow.Flow]:
     """
         Yields Flow objects from the dump.
     """
     try:
         while True:
             # FIXME: This cast hides a lack of dynamic type checking
             loaded = cast(
                 Dict[Union[bytes, str], Any],
                 tnetstring.load(self.fo),
             )
             try:
                 mdata = compat.migrate_flow(loaded)
             except ValueError as e:
                 raise exceptions.FlowReadException(str(e))
             if mdata["type"] not in FLOW_TYPES:
                 raise exceptions.FlowReadException(
                     "Unknown flow type: {}".format(mdata["type"]))
             yield FLOW_TYPES[mdata["type"]].from_state(mdata)
     except (ValueError, TypeError, IndexError) as e:
         if str(e) == "not a tnetstring: empty file":
             return  # Error is due to EOF
         raise exceptions.FlowReadException("Invalid data format.")