diff options
Diffstat (limited to 'test/suite_follow.py')
-rw-r--r-- | test/suite_follow.py | 342 |
1 files changed, 342 insertions, 0 deletions
diff --git a/test/suite_follow.py b/test/suite_follow.py new file mode 100644 index 00000000..3916330c --- /dev/null +++ b/test/suite_follow.py @@ -0,0 +1,342 @@ +# +# Wireshark tests +# +# Copyright (c) 2018 Peter Wu <peter@lekensteyn.nl> +# +# SPDX-License-Identifier: GPL-2.0-or-later +# +'''Follow Stream tests''' + +import subprocess +import pytest + + +class TestFollowTcp: + def test_follow_tcp_bad_conditions(self, cmd_tshark, capture_file): + '''Checks whether Follow TCP correctly handles lots of edge cases.''' + # Edge cases include: + # 1. two sequential segments + # 2. out-of-order (swapped two sequential segments) + # 3. Bad overlap (second overlap with different data should be ignored) + # 4. Ignore bad retransmitted data, but extend with remaining data. + # 5. Check handling of overlapping data while fragments are incomplete + # (out-of-order - cannot add fragments to stream) + # 6. lost but acked segments + # 7. lost 3/5 fragments, but acked + # Not checked: lost and not acked (currently truncated, is that OK?) + proc_stdout = subprocess.check_output((cmd_tshark, + '-r', capture_file('tcp-badsegments.pcap'), + '-qz', 'follow,tcp,hex,0', + ), encoding='utf-8') + + assert """\ +=================================================================== +Follow: tcp,hex +Filter: tcp.stream eq 0 +Node 0: 10.0.0.1:32323 +Node 1: 10.0.0.2:80 +00000000 47 45 54 20 2f 20 48 54 54 50 2f 31 2e 31 0d 0a GET / HT TP/1.1.. +00000010 48 6f 73 74 3a 6c 6f 63 61 6c 68 6f 73 74 0d 0a Host:loc alhost.. +00000020 58 2d 53 77 61 70 70 65 64 3a 20 31 73 74 0d 0a X-Swappe d: 1st.. +00000030 58 2d 53 77 61 70 70 65 64 3a 20 32 6e 64 0d 0a X-Swappe d: 2nd.. +00000040 58 2d 4f 76 65 72 6c 61 70 2d 50 61 63 6b 65 74 X-Overla p-Packet +00000050 3a 20 65 78 74 72 61 20 64 61 74 61 2d 2d 0d 0a : extra data--.. +00000060 58 2d 4f 6f 4f 2d 4f 76 65 72 6c 61 70 3a 20 74 X-OoO-Ov erlap: t +00000070 68 69 73 20 69 73 20 64 65 6c 61 79 65 64 0d 0a his is d elayed.. +00000080 58 2d 4f 6f 4f 2d 4f 76 65 72 6c 61 70 32 3a 20 X-OoO-Ov erlap2: +00000090 73 65 63 6f 6e 64 20 64 65 6c 61 79 65 64 0d 0a second d elayed.. +000000A0 58 2d 4f 6f 4f 2d 4f 76 65 72 6c 61 70 33 3a 65 X-OoO-Ov erlap3:e +000000B0 78 74 65 6e 64 20 66 72 61 67 6d 65 6e 74 0d 0a xtend fr agment.. +000000C0 5b 33 32 20 62 79 74 65 73 20 6d 69 73 73 69 6e [32 byte s missin +000000D0 67 20 69 6e 20 63 61 70 74 75 72 65 20 66 69 6c g in cap ture fil +000000E0 65 5d 00 e]. +000000E3 58 2d 4d 69 73 73 69 6e 67 2d 42 75 74 2d 41 63 X-Missin g-But-Ac +000000F3 6b 65 64 2d 50 72 65 76 69 6f 75 73 3a 31 0d 0a ked-Prev ious:1.. +00000103 5b 31 36 20 62 79 74 65 73 20 6d 69 73 73 69 6e [16 byte s missin +00000113 67 20 69 6e 20 63 61 70 74 75 72 65 20 66 69 6c g in cap ture fil +00000123 65 5d 00 e]. +00000126 3a : +00000127 5b 31 33 20 62 79 74 65 73 20 6d 69 73 73 69 6e [13 byte s missin +00000137 67 20 69 6e 20 63 61 70 74 75 72 65 20 66 69 6c g in cap ture fil +00000147 65 5d 00 e]. +0000014A 0d . +0000014B 5b 31 20 62 79 74 65 73 20 6d 69 73 73 69 6e 67 [1 bytes missing +0000015B 20 69 6e 20 63 61 70 74 75 72 65 20 66 69 6c 65 in capt ure file +0000016B 5d 00 ]. +0000016D 58 2d 4d 69 73 73 69 6e 67 2d 33 2d 4f 75 74 2d X-Missin g-3-Out- +0000017D 4f 66 2d 35 2d 42 75 74 2d 41 43 4b 3a 59 0d 0a Of-5-But -ACK:Y.. +0000018D 0d 0a .. +=================================================================== +""".replace("\r\n", "\n") in proc_stdout + + def test_follow_websocket(self, cmd_tshark, capture_file): + '''Checks whether Follow Websocket correctly handles masked data.''' + proc_stdout = subprocess.check_output((cmd_tshark, + '-r', capture_file('websocket.pcapng.gz'), + '-qz', 'follow,websocket,hex,0', + ), encoding='utf-8') + + assert """\ +=================================================================== +Follow: websocket,hex +Filter: tcp.stream eq 0 +Node 0: 127.0.0.1:44380 +Node 1: 127.0.0.1:8080 +00000000 7b 22 74 79 70 65 22 3a 22 72 65 71 75 65 73 74 {"type": "request +00000010 22 2c 22 64 61 74 61 22 3a 22 31 32 36 35 33 30 ","data" :"126530 +00000020 37 34 34 37 34 30 39 34 39 39 30 31 38 22 7d 0a 74474094 99018"}. + 00000000 7b 22 74 79 70 65 22 3a 22 72 65 73 70 6f 6e 73 {"type": "respons + 00000010 65 22 2c 22 64 61 74 61 22 3a 22 31 32 36 35 33 e","data ":"12653 + 00000020 30 37 34 34 37 34 30 39 34 39 39 30 31 38 22 7d 07447409 499018"} + 00000030 0a . +00000030 7b 22 74 79 70 65 22 3a 22 72 65 71 75 65 73 74 {"type": "request +00000040 22 2c 22 64 61 74 61 22 3a 22 37 38 32 30 36 32 ","data" :"782062 +00000050 33 35 30 33 34 38 39 32 35 35 35 31 31 22 7d 0a 35034892 55511"}. + 00000031 7b 22 74 79 70 65 22 3a 22 72 65 73 70 6f 6e 73 {"type": "respons + 00000041 65 22 2c 22 64 61 74 61 22 3a 22 37 38 32 30 36 e","data ":"78206 + 00000051 32 33 35 30 33 34 38 39 32 35 35 35 31 31 22 7d 23503489 255511"} + 00000061 0a . +00000060 7b 22 74 79 70 65 22 3a 22 72 65 71 75 65 73 74 {"type": "request +00000070 22 2c 22 64 61 74 61 22 3a 22 31 34 32 36 39 33 ","data" :"142693 +00000080 39 37 32 39 33 36 33 37 39 36 30 39 39 22 7d 0a 97293637 96099"}. + 00000062 7b 22 74 79 70 65 22 3a 22 72 65 73 70 6f 6e 73 {"type": "respons + 00000072 65 22 2c 22 64 61 74 61 22 3a 22 31 34 32 36 39 e","data ":"14269 + 00000082 33 39 37 32 39 33 36 33 37 39 36 30 39 39 22 7d 39729363 796099"} + 00000092 0a . +00000090 7b 22 74 79 70 65 22 3a 22 72 65 71 75 65 73 74 {"type": "request +000000A0 22 2c 22 64 61 74 61 22 3a 22 31 30 33 30 31 37 ","data" :"103017 +000000B0 37 39 31 35 36 35 32 31 34 34 31 31 36 22 7d 0a 79156521 44116"}. + 00000093 7b 22 74 79 70 65 22 3a 22 72 65 73 70 6f 6e 73 {"type": "respons + 000000A3 65 22 2c 22 64 61 74 61 22 3a 22 31 30 33 30 31 e","data ":"10301 + 000000B3 37 37 39 31 35 36 35 32 31 34 34 31 31 36 22 7d 77915652 144116"} + 000000C3 0a . +=================================================================== +""".replace("\r\n", "\n") in proc_stdout + + def test_follow_websocket_fragmented(self, cmd_tshark, capture_file): + '''Checks whether Follow Websocket correctly handles fragmented data.''' + proc_stdout = subprocess.check_output((cmd_tshark, + '-r', capture_file('websocket-fragmented.pcapng.gz'), + '-qz', 'follow,websocket,hex,0', + ), encoding='utf-8') + + assert """\ +=================================================================== +Follow: websocket,hex +Filter: tcp.stream eq 0 +Node 0: 127.0.0.1:59700 +Node 1: 127.0.0.1:8080 +00000000 7b 22 74 79 70 65 22 3a 22 72 65 71 75 65 73 74 {"type": "request +00000010 22 2c 22 64 61 74 61 22 3a 22 37 34 35 33 36 33 ","data" :"745363 +00000020 31 36 30 32 33 33 38 32 37 33 33 37 32 36 32 32 16023382 73372622 +00000030 38 33 38 32 34 39 31 36 39 38 32 35 39 39 39 38 83824916 98259998 +00000040 37 30 30 36 32 36 34 37 36 33 37 35 34 39 30 35 70062647 63754905 +00000050 31 36 34 32 34 32 32 33 33 37 39 37 30 31 37 38 16424223 37970178 +00000060 37 32 36 30 38 33 38 32 31 36 35 33 32 37 33 35 72608382 16532735 +00000070 31 39 32 38 39 33 32 39 31 36 36 33 35 38 37 36 19289329 16635876 +00000080 36 34 37 35 30 30 31 39 32 36 32 30 33 38 31 37 64750019 26203817 +00000090 33 30 37 34 31 36 31 32 33 36 36 38 35 38 31 30 30741612 36685810 +000000A0 33 32 36 34 32 36 35 31 38 37 37 31 34 33 31 38 32642651 87714318 +000000B0 31 22 7d 0a 1"}. + 00000000 7b 22 74 79 70 65 22 3a 22 72 65 73 70 6f 6e 73 {"type": "respons + 00000010 65 22 2c 22 64 61 74 61 22 3a 22 37 34 35 33 36 e","data ":"74536 + 00000020 33 31 36 30 32 33 33 38 32 37 33 33 37 32 36 32 31602338 27337262 + 00000030 32 38 33 38 32 34 39 31 36 39 38 32 35 39 39 39 28382491 69825999 + 00000040 38 37 30 30 36 32 36 34 37 36 33 37 35 34 39 30 87006264 76375490 + 00000050 35 31 36 34 32 34 32 32 33 33 37 39 37 30 31 37 51642422 33797017 + 00000060 38 37 32 36 30 38 33 38 32 31 36 35 33 32 37 33 87260838 21653273 + 00000070 35 31 39 32 38 39 33 32 39 31 36 36 33 35 38 37 51928932 91663587 + 00000080 36 36 34 37 35 30 30 31 39 32 36 32 30 33 38 31 66475001 92620381 + 00000090 37 33 30 37 34 31 36 31 32 33 36 36 38 35 38 31 73074161 23668581 + 000000A0 30 33 32 36 34 32 36 35 31 38 37 37 31 34 33 31 03264265 18771431 + 000000B0 38 31 22 7d 0a 81"}. +000000B4 7b 22 74 79 70 65 22 3a 22 72 65 71 75 65 73 74 {"type": "request +000000C4 22 2c 22 64 61 74 61 22 3a 22 35 30 30 30 37 39 ","data" :"500079 +000000D4 37 37 35 32 38 33 33 37 32 35 36 31 33 38 30 30 77528337 25613800 +000000E4 36 36 30 36 30 39 30 35 37 30 30 37 38 35 35 38 66060905 70078558 +000000F4 35 30 39 38 31 35 35 33 31 36 36 39 30 34 38 34 50981553 16690484 +00000104 30 34 39 39 31 36 31 38 34 38 37 37 34 34 39 33 04991618 48774493 +00000114 32 35 34 34 35 36 38 31 32 35 30 36 37 37 30 39 25445681 25067709 +00000124 35 38 32 38 35 34 30 36 39 36 36 34 34 36 32 30 58285406 96644620 +00000134 30 34 38 34 38 34 32 39 35 39 34 34 34 35 34 33 04848429 59444543 +00000144 31 39 33 39 39 39 32 35 39 32 39 38 37 32 31 38 19399925 92987218 +00000154 39 34 36 38 31 38 33 33 30 35 33 38 33 38 36 30 94681833 05383860 +00000164 32 38 22 7d 0a 28"}. + 000000B5 7b 22 74 79 70 65 22 3a 22 72 65 73 70 6f 6e 73 {"type": "respons + 000000C5 65 22 2c 22 64 61 74 61 22 3a 22 35 30 30 30 37 e","data ":"50007 + 000000D5 39 37 37 35 32 38 33 33 37 32 35 36 31 33 38 30 97752833 72561380 + 000000E5 30 36 36 30 36 30 39 30 35 37 30 30 37 38 35 35 06606090 57007855 + 000000F5 38 35 30 39 38 31 35 35 33 31 36 36 39 30 34 38 85098155 31669048 + 00000105 34 30 34 39 39 31 36 31 38 34 38 37 37 34 34 39 40499161 84877449 + 00000115 33 32 35 34 34 35 36 38 31 32 35 30 36 37 37 30 32544568 12506770 + 00000125 39 35 38 32 38 35 34 30 36 39 36 36 34 34 36 32 95828540 69664462 + 00000135 30 30 34 38 34 38 34 32 39 35 39 34 34 34 35 34 00484842 95944454 + 00000145 33 31 39 33 39 39 39 32 35 39 32 39 38 37 32 31 31939992 59298721 + 00000155 38 39 34 36 38 31 38 33 33 30 35 33 38 33 38 36 89468183 30538386 + 00000165 30 32 38 22 7d 0a 028"}. +=================================================================== +""".replace("\r\n", "\n") in proc_stdout + + def test_follow_websocket_compressed(self, cmd_tshark, capture_file): + '''Checks whether Follow Websocket correctly handles compressed data.''' + proc_stdout = subprocess.check_output((cmd_tshark, + '-r', capture_file('websocket-compressed.pcapng.gz'), + '-qz', 'follow,websocket,hex,0', + ), encoding='utf-8') + + assert """\ +=================================================================== +Follow: websocket,hex +Filter: tcp.stream eq 0 +Node 0: 127.0.0.1:55256 +Node 1: 127.0.0.1:8080 +00000000 7b 22 74 79 70 65 22 3a 22 72 65 71 75 65 73 74 {"type": "request +00000010 22 2c 22 64 61 74 61 22 3a 22 33 38 35 37 34 34 ","data" :"385744 +00000020 35 34 33 35 38 33 37 32 39 37 33 30 37 33 38 37 54358372 97307387 +00000030 31 35 33 32 32 35 32 38 37 39 34 30 34 34 32 38 15322528 79404428 +00000040 36 30 33 38 36 31 34 30 38 33 30 33 36 33 38 36 60386140 83036386 +00000050 36 34 38 37 30 39 36 33 31 39 36 30 32 36 33 34 64870963 19602634 +00000060 39 36 38 30 37 36 34 31 33 30 33 35 35 39 30 30 96807641 30355900 +00000070 37 30 37 36 36 30 33 33 31 35 32 33 34 36 32 33 70766033 15234623 +00000080 34 30 33 39 35 39 34 37 35 30 36 39 31 35 39 34 40395947 50691594 +00000090 38 34 34 35 37 36 37 39 38 38 34 30 30 33 34 34 84457679 88400344 +000000A0 36 39 32 35 38 36 32 36 33 30 39 34 34 32 35 36 69258626 30944256 +000000B0 32 22 7d 0a 2"}. + 00000000 7b 22 74 79 70 65 22 3a 22 72 65 73 70 6f 6e 73 {"type": "respons + 00000010 65 22 2c 22 64 61 74 61 22 3a 22 33 38 35 37 34 e","data ":"38574 + 00000020 34 35 34 33 35 38 33 37 32 39 37 33 30 37 33 38 45435837 29730738 + 00000030 37 31 35 33 32 32 35 32 38 37 39 34 30 34 34 32 71532252 87940442 + 00000040 38 36 30 33 38 36 31 34 30 38 33 30 33 36 33 38 86038614 08303638 + 00000050 36 36 34 38 37 30 39 36 33 31 39 36 30 32 36 33 66487096 31960263 + 00000060 34 39 36 38 30 37 36 34 31 33 30 33 35 35 39 30 49680764 13035590 + 00000070 30 37 30 37 36 36 30 33 33 31 35 32 33 34 36 32 07076603 31523462 + 00000080 33 34 30 33 39 35 39 34 37 35 30 36 39 31 35 39 34039594 75069159 + 00000090 34 38 34 34 35 37 36 37 39 38 38 34 30 30 33 34 48445767 98840034 + 000000A0 34 36 39 32 35 38 36 32 36 33 30 39 34 34 32 35 46925862 63094425 + 000000B0 36 32 22 7d 0a 62"}. +000000B4 7b 22 74 79 70 65 22 3a 22 72 65 71 75 65 73 74 {"type": "request +000000C4 22 2c 22 64 61 74 61 22 3a 22 36 31 37 30 30 39 ","data" :"617009 +000000D4 33 36 30 38 33 33 38 33 34 38 39 30 37 31 39 38 36083383 48907198 +000000E4 34 39 33 35 35 38 38 38 33 31 30 35 30 36 32 31 49355888 31050621 +000000F4 33 38 31 33 35 39 31 38 30 38 34 37 33 39 36 32 38135918 08473962 +00000104 35 31 36 37 35 37 33 34 30 31 31 36 36 31 34 37 51675734 01166147 +00000114 38 34 34 34 33 31 33 30 39 31 35 30 33 33 35 37 84443130 91503357 +00000124 31 31 36 35 38 37 39 34 32 36 34 32 30 34 36 34 11658794 26420464 +00000134 37 39 38 39 30 33 39 30 37 31 39 30 34 35 35 39 79890390 71904559 +00000144 33 31 37 35 37 30 31 34 31 33 33 31 35 33 33 34 31757014 13315334 +00000154 31 34 30 35 39 32 38 36 34 37 33 30 35 32 31 38 14059286 47305218 +00000164 39 32 22 7d 0a 92"}. + 000000B5 7b 22 74 79 70 65 22 3a 22 72 65 73 70 6f 6e 73 {"type": "respons + 000000C5 65 22 2c 22 64 61 74 61 22 3a 22 36 31 37 30 30 e","data ":"61700 + 000000D5 39 33 36 30 38 33 33 38 33 34 38 39 30 37 31 39 93608338 34890719 + 000000E5 38 34 39 33 35 35 38 38 38 33 31 30 35 30 36 32 84935588 83105062 + 000000F5 31 33 38 31 33 35 39 31 38 30 38 34 37 33 39 36 13813591 80847396 + 00000105 32 35 31 36 37 35 37 33 34 30 31 31 36 36 31 34 25167573 40116614 + 00000115 37 38 34 34 34 33 31 33 30 39 31 35 30 33 33 35 78444313 09150335 + 00000125 37 31 31 36 35 38 37 39 34 32 36 34 32 30 34 36 71165879 42642046 + 00000135 34 37 39 38 39 30 33 39 30 37 31 39 30 34 35 35 47989039 07190455 + 00000145 39 33 31 37 35 37 30 31 34 31 33 33 31 35 33 33 93175701 41331533 + 00000155 34 31 34 30 35 39 32 38 36 34 37 33 30 35 32 31 41405928 64730521 + 00000165 38 39 32 22 7d 0a 892"}. +=================================================================== +""".replace("\r\n", "\n") in proc_stdout + + def test_follow_websocket_compressed_fragmented(self, cmd_tshark, capture_file): + '''Checks whether Follow Websocket correctly handles compressed and fragmented data.''' + proc_stdout = subprocess.check_output((cmd_tshark, + '-r', capture_file('websocket-compressed-fragmented.pcapng.gz'), + '-qz', 'follow,websocket,hex,0', + ), encoding='utf-8') + + assert """\ +=================================================================== +Follow: websocket,hex +Filter: tcp.stream eq 0 +Node 0: 127.0.0.1:39964 +Node 1: 127.0.0.1:8080 +00000000 7b 22 74 79 70 65 22 3a 22 72 65 71 75 65 73 74 {"type": "request +00000010 22 2c 22 64 61 74 61 22 3a 22 36 30 36 32 39 36 ","data" :"606296 +00000020 32 34 35 35 32 37 33 39 33 32 32 35 33 36 35 33 24552739 32253653 +00000030 38 37 33 33 35 37 37 37 30 39 37 32 36 31 38 36 87335777 09726186 +00000040 36 34 38 38 36 32 39 32 30 34 31 32 30 38 36 37 64886292 04120867 +00000050 34 32 30 33 38 33 39 38 33 33 35 32 34 35 31 35 42038398 33524515 +00000060 35 32 38 34 33 39 36 36 35 31 36 36 39 35 31 37 52843966 51669517 +00000070 36 34 37 35 35 30 35 39 39 37 36 34 30 32 38 33 64755059 97640283 +00000080 35 31 39 34 33 35 35 34 39 34 30 38 36 33 38 37 51943554 94086387 +00000090 34 34 37 31 35 33 35 33 31 37 33 34 33 33 38 34 44715353 17343384 +000000A0 31 35 31 30 37 35 37 30 35 39 37 33 37 37 30 39 15107570 59737709 +000000B0 39 39 30 30 34 31 36 38 38 38 38 38 35 32 38 30 99004168 88885280 +000000C0 32 36 34 35 38 32 36 35 35 32 39 36 38 33 35 38 26458265 52968358 +000000D0 38 39 30 37 33 35 31 31 37 36 36 31 36 33 31 38 89073511 76616318 +000000E0 39 33 31 31 33 33 39 38 33 39 34 30 30 37 39 36 93113398 39400796 +000000F0 32 33 38 38 38 39 33 34 31 37 35 35 36 34 36 35 23888934 17556465 +00000100 37 35 30 38 33 37 39 32 36 39 35 31 36 31 33 37 75083792 69516137 +00000110 32 34 38 38 38 30 33 33 39 33 32 31 35 37 32 34 24888033 93215724 +00000120 38 34 38 36 31 36 39 39 30 30 33 38 31 36 31 35 84861699 00381615 +00000130 34 38 35 34 34 38 33 39 34 30 34 37 37 35 34 35 48544839 40477545 +00000140 33 32 36 33 36 35 39 33 22 7d 0a 32636593 "}. + 00000000 7b 22 74 79 70 65 22 3a 22 72 65 73 70 6f 6e 73 {"type": "respons + 00000010 65 22 2c 22 64 61 74 61 22 3a 22 36 30 36 32 39 e","data ":"60629 + 00000020 36 32 34 35 35 32 37 33 39 33 32 32 35 33 36 35 62455273 93225365 + 00000030 33 38 37 33 33 35 37 37 37 30 39 37 32 36 31 38 38733577 70972618 + 00000040 36 36 34 38 38 36 32 39 32 30 34 31 32 30 38 36 66488629 20412086 + 00000050 37 34 32 30 33 38 33 39 38 33 33 35 32 34 35 31 74203839 83352451 + 00000060 35 35 32 38 34 33 39 36 36 35 31 36 36 39 35 31 55284396 65166951 + 00000070 37 36 34 37 35 35 30 35 39 39 37 36 34 30 32 38 76475505 99764028 + 00000080 33 35 31 39 34 33 35 35 34 39 34 30 38 36 33 38 35194355 49408638 + 00000090 37 34 34 37 31 35 33 35 33 31 37 33 34 33 33 38 74471535 31734338 + 000000A0 34 31 35 31 30 37 35 37 30 35 39 37 33 37 37 30 41510757 05973770 + 000000B0 39 39 39 30 30 34 31 36 38 38 38 38 38 35 32 38 99900416 88888528 + 000000C0 30 32 36 34 35 38 32 36 35 35 32 39 36 38 33 35 02645826 55296835 + 000000D0 38 38 39 30 37 33 35 31 31 37 36 36 31 36 33 31 88907351 17661631 + 000000E0 38 39 33 31 31 33 33 39 38 33 39 34 30 30 37 39 89311339 83940079 + 000000F0 36 32 33 38 38 38 39 33 34 31 37 35 35 36 34 36 62388893 41755646 + 00000100 35 37 35 30 38 33 37 39 32 36 39 35 31 36 31 33 57508379 26951613 + 00000110 37 32 34 38 38 38 30 33 33 39 33 32 31 35 37 32 72488803 39321572 + 00000120 34 38 34 38 36 31 36 39 39 30 30 33 38 31 36 31 48486169 90038161 + 00000130 35 34 38 35 34 34 38 33 39 34 30 34 37 37 35 34 54854483 94047754 + 00000140 35 33 32 36 33 36 35 39 33 22 7d 0a 53263659 3"}. +0000014B 7b 22 74 79 70 65 22 3a 22 72 65 71 75 65 73 74 {"type": "request +0000015B 22 2c 22 64 61 74 61 22 3a 22 34 31 30 35 32 30 ","data" :"410520 +0000016B 34 31 33 30 36 36 36 36 32 32 30 38 32 35 33 31 41306666 22082531 +0000017B 36 36 33 34 37 39 32 39 32 31 31 39 39 37 32 35 66347929 21199725 +0000018B 35 38 35 38 37 39 32 32 30 39 31 36 31 38 37 39 58587922 09161879 +0000019B 36 38 36 37 32 36 33 32 34 35 39 35 34 35 39 35 68672632 45954595 +000001AB 34 31 31 32 38 31 36 32 39 38 37 33 31 31 32 32 41128162 98731122 +000001BB 31 36 39 38 31 38 35 37 32 33 38 34 36 37 39 34 16981857 23846794 +000001CB 37 36 36 33 30 38 38 36 34 39 33 36 36 37 34 35 76630886 49366745 +000001DB 32 37 37 39 39 33 31 37 34 37 32 33 39 37 37 39 27799317 47239779 +000001EB 38 38 39 30 31 32 33 39 33 33 37 37 35 30 35 36 88901239 33775056 +000001FB 31 34 30 34 37 38 31 32 39 32 30 36 31 30 34 32 14047812 92061042 +0000020B 35 30 34 38 35 39 34 35 34 37 35 33 30 39 34 35 50485945 47530945 +0000021B 37 32 35 30 35 33 34 33 39 32 31 36 34 35 37 35 72505343 92164575 +0000022B 37 34 39 30 34 33 30 36 35 38 32 31 39 36 39 35 74904306 58219695 +0000023B 37 37 37 34 32 39 35 39 39 32 34 32 37 38 32 32 77742959 92427822 +0000024B 37 38 38 31 37 33 36 38 38 38 39 31 37 37 32 31 78817368 88917721 +0000025B 36 39 38 30 35 31 38 38 35 39 32 32 32 32 34 37 69805188 59222247 +0000026B 32 36 31 37 39 38 35 36 32 31 34 33 30 38 33 35 26179856 21430835 +0000027B 38 38 38 38 39 36 38 33 39 38 33 38 33 34 31 33 88889683 98383413 +0000028B 31 35 34 35 35 33 22 7d 0a 154553"} . + 0000014C 7b 22 74 79 70 65 22 3a 22 72 65 73 70 6f 6e 73 {"type": "respons + 0000015C 65 22 2c 22 64 61 74 61 22 3a 22 34 31 30 35 32 e","data ":"41052 + 0000016C 30 34 31 33 30 36 36 36 36 32 32 30 38 32 35 33 04130666 62208253 + 0000017C 31 36 36 33 34 37 39 32 39 32 31 31 39 39 37 32 16634792 92119972 + 0000018C 35 35 38 35 38 37 39 32 32 30 39 31 36 31 38 37 55858792 20916187 + 0000019C 39 36 38 36 37 32 36 33 32 34 35 39 35 34 35 39 96867263 24595459 + 000001AC 35 34 31 31 32 38 31 36 32 39 38 37 33 31 31 32 54112816 29873112 + 000001BC 32 31 36 39 38 31 38 35 37 32 33 38 34 36 37 39 21698185 72384679 + 000001CC 34 37 36 36 33 30 38 38 36 34 39 33 36 36 37 34 47663088 64936674 + 000001DC 35 32 37 37 39 39 33 31 37 34 37 32 33 39 37 37 52779931 74723977 + 000001EC 39 38 38 39 30 31 32 33 39 33 33 37 37 35 30 35 98890123 93377505 + 000001FC 36 31 34 30 34 37 38 31 32 39 32 30 36 31 30 34 61404781 29206104 + 0000020C 32 35 30 34 38 35 39 34 35 34 37 35 33 30 39 34 25048594 54753094 + 0000021C 35 37 32 35 30 35 33 34 33 39 32 31 36 34 35 37 57250534 39216457 + 0000022C 35 37 34 39 30 34 33 30 36 35 38 32 31 39 36 39 57490430 65821969 + 0000023C 35 37 37 37 34 32 39 35 39 39 32 34 32 37 38 32 57774295 99242782 + 0000024C 32 37 38 38 31 37 33 36 38 38 38 39 31 37 37 32 27881736 88891772 + 0000025C 31 36 39 38 30 35 31 38 38 35 39 32 32 32 32 34 16980518 85922224 + 0000026C 37 32 36 31 37 39 38 35 36 32 31 34 33 30 38 33 72617985 62143083 + 0000027C 35 38 38 38 38 39 36 38 33 39 38 33 38 33 34 31 58888968 39838341 + 0000028C 33 31 35 34 35 35 33 22 7d 0a 3154553" }. +=================================================================== +""".replace("\r\n", "\n") in proc_stdout |