[tor-commits] [spec/master] Update the specifications of DNS and Scapy

art at torproject.org art at torproject.org
Mon May 9 17:57:26 UTC 2016


commit 7c59c2fb301e79803db8ff5fb339e45d37e8da77
Author: Arturo Filastò <arturo at filasto.net>
Date:   Wed Jan 27 13:04:55 2016 +0100

    Update the specifications of DNS and Scapy
---
 data-formats/df-002-dnst.md  | 268 ++++++++++++------
 data-formats/df-003-scapy.md | 661 ++++++++++++++++++++++++++++++++++++-------
 2 files changed, 748 insertions(+), 181 deletions(-)

diff --git a/data-formats/df-002-dnst.md b/data-formats/df-002-dnst.md
index a3e7909..4e1ac26 100644
--- a/data-formats/df-002-dnst.md
+++ b/data-formats/df-002-dnst.md
@@ -1,6 +1,6 @@
 # DNSTest template data format
 
-Data Format Version: df-001-dnst-000
+Data Format Version: 0.2.0
 
 This is the specification of the data format that every test that is
 based on ooni.templates.dnst.DNSTest shall be using.
@@ -10,97 +10,193 @@ data format.
 
 ## Specification
 
-    queries:
-      `list` of DNS query and answers for this testing session
+```
+"queries": [
+    {
+        "failure": "null or a string representing the failure",
 
-Every DNS query is formatted as follows:
+        "hostname":
+            "The hostname used in the DNS query. For PTR lookups this will be the reversed "
+            "ipv4 address in the form: xxx.xxx.xxx.xxx.in-addr.arpa.",
 
-    addrs:
-      `list` present if the DNS query is question is of A type and will include
-      the IPv4 addresses of the answer.
+        "query_type": "A | MX | PTR | SOA",
 
-    answers:
-    - [`string` representation of the Resource Record of the answer (repr),
-       `string` representation of the answer payload (python repr)]
-    - [etc. etc.]
+        "resolver_hostname":
+            "The hostname of the DNS resolver being used",
 
-    query:
-      `string` that is the representation (python repr) of the DNS querie(s)
-      that where performed.
-      This string can be passed to an instance of `twisted.names.client.Resolver`
-      and it will reproduce the DNS query of this report.
-      The Query object is described in `twisted.names.dns.Query`.
+        "resolver_port":
+            "The port of the DNS resolver being used"
 
-    query_type:
-      `string` the name of the DNS query that is being performed.
+        "answers": [
+            {
+                "answer_type": "A | MX | PTR | SOA | CNAME",
 
-    resolver: [`string` resolver IP address, `int` resolver port number]
+                "ipv4":
+                    "(only for A answers) The dotted quad of the IPV4 address",
 
-## Example output
+                "ttl": "The ttl of the Returned resource record",
+
+                "hostname":
+                    "(only for PTR, SOA and CNAME answers)"
+                    "For PTR lookups it is the hostname that points back to the queried IP."
+                    "For CNAME lookups it is the hostname of the alias for the IP."
+                    "For SOA answers it is the hostname of the nameserver "
+                    "responsible for the data of this zone."
+
+                "responsible_name":
+                    "(only for SOA answers) The mailbox of the person responsible "
+                    "for this zone."
+
+                "serial_number":
+                    "(only for SOA answers) Version number of the original copy of "
+                    "the zone."
+
+                "refresh_interval":
+                    "(only for SOA answers) The time interval before which this "
+                    "zone should be refreshed."
+
+                "retry_interval":
+                    "(only for SOA answers) The time interval that should be "
+                    "elapsed before the zone should be retried in case of failure."
 
-    input: example.com
-    queries:
-    - addrs: [203.0.113.2]
-      answers:
-      - [<RR name=example.com type=A class=IN ttl=2562s auth=False>, <A address=203.0.113.2
-          ttl=2562>]
-      query: '[Query(''example.com'', 1, 1)]'
-      query_type: A
-      resolver: *id001
-    - addrs: [203.0.113.2]
-      answers:
-      - [<RR name=example.com type=A class=IN ttl=7200s auth=False>, <A address=203.0.113.2
-          ttl=7200>]
-      query: '[Query(''example.com'', 1, 1)]'
-      query_type: A
-      resolver: [203.0.113.3, 53]
-    - addrs: [203.0.113.2]
-      answers:
-      - [<RR name=example.com type=A class=IN ttl=4007s auth=False>, <A address=203.0.113.2
-          ttl=4007>]
-      query: '[Query(''example.com'', 1, 1)]'
-      query_type: A
-      resolver: [203.0.113.4, 53]
-    - addrs: [203.0.113.2]
-      answers:
-      - [<RR name=example.com type=A class=IN ttl=7200s auth=False>, <A address=203.0.113.2
-          ttl=7200>]
-      query: '[Query(''example.com'', 1, 1)]'
-      query_type: A
-      resolver: [203.0.113.5, 53]
-    - addrs: [203.0.113.2]
-      answers:
-      - [<RR name=example.com type=A class=IN ttl=7200s auth=False>, <A address=203.0.113.2
-          ttl=7200>]
-      query: '[Query(''example.com'', 1, 1)]'
-      query_type: A
-      resolver: [203.0.113.6, 53]
-    - addrs: [203.0.113.2]
-      answers:
-      - [<RR name=example.com type=A class=IN ttl=7200s auth=False>, <A address=203.0.113.2
-          ttl=7200>]
-      query: '[Query(''example.com'', 1, 1)]'
-      query_type: A
-      resolver: [203.0.113.7, 53]
-    - addrs: [203.0.113.2]
-      answers:
-      - [<RR name=example.com type=A class=IN ttl=7200s auth=False>, <A address=203.0.113.2
-          ttl=7200>]
-      query: '[Query(''example.com'', 1, 1)]'
-      query_type: A
-      resolver: [203.0.113.8, 53]
-    - query: '[Query(''example.com'', 1, 1)]'
-      query_type: A
-      resolver: [203.0.113.9, 53]
-    - query: '[Query(''example.com'', 1, 1)]'
-      query_type: A
-      resolver: [203.0.113.1, 53]
-    - failure: deferred_timeout_error
-      query: '[Query(''example.com'', 1, 1)]'
-      query_type: A
-      resolver: [203.0.113.10, 53]
-    test_name: test_a_lookup
-    test_runtime: 2.6424369812011719
-    test_started: 1357167921.0688701
-    ...
+                "minimum_ttl":
+                    "(only for SOA answers) The minimum ttl to be exported with "
+                    "any record from this zone."
+
+                "expiration_limit":
+                    "(only for SOA answers) The time after which this zone should "
+                    "no longer be authoritative."
+            }
+        ],
+
+
+    }
+]
+```
+
+## Example output
 
+```
+{
+    "bucket_date": "2015-11-23",
+    "data_format_version": "0.2.0",
+    "id": "e6f6257f-e7c2-48fa-8345-b7ed055ab1d2",
+    "input": "198.175.124.185",
+    "options": [
+        "-f",
+        "citizenlab-urls-global.txt",
+        "-T",
+        "dns-server-jo.txt"
+    ],
+    "probe_asn": "AS8376",
+    "probe_cc": "JO",
+    "probe_ip": "127.0.0.1",
+    "report_filename": "2015-11-23/20151123T161428Z-JO-AS8376-dns_consistency-F1KI1WusW4c1T6OGyQDgHJjaSQ1bfpqV2G39bpmuHiLAJnse8R1F44vdRuTz6nO4-0.1.0-probe.json",
+    "report_id": "F1KI1WusW4c1T6OGyQDgHJjaSQ1bfpqV2G39bpmuHiLAJnse8R1F44vdRuTz6nO4",
+    "software_name": "ooniprobe",
+    "software_version": "1.3.1",
+    "test_helpers": {
+        "backend": "8.8.8.8:53"
+    },
+    "input_hashes": [
+        "0055f0881fba857d8b48123017d7aec83014e89f057e44b66107f657ec5e2eab"
+    ],
+    "probe_city": null,
+    "backend_version": "1.1.4",
+    "test_keys": {
+        "control_resolver": "8.8.8.8:53",
+        "errors": {
+            "212.118.0.1": "no_answer",
+            "212.118.0.2": "no_answer",
+            "212.38.128.3": "dns_lookup_error",
+            "217.144.6.6": "no_answer",
+            "8.8.8.8:53": "no_answer",
+            "80.90.160.135": "dns_lookup_error",
+            "80.90.160.172": "dns_lookup_error",
+            "81.28.112.2": "dns_lookup_error"
+        },
+        "failed": [
+            "80.90.160.172",
+            "8.8.8.8:53",
+            "212.118.0.2",
+            "80.90.160.135",
+            "212.38.128.3",
+            "212.118.0.1",
+            "217.144.6.6",
+            "81.28.112.2"
+        ],
+        "queries": [
+            {
+                "answers": [],
+                "failure": "no_answer",
+                "hostname": "198.175.124.185",
+                "query_type": "A",
+                "resolver_hostname": "8.8.8.8",
+                "resolver_port": 53
+            },
+            {
+                "answers": [],
+                "failure": "deferred_timeout_error",
+                "hostname": "198.175.124.185",
+                "query_type": "A",
+                "resolver_hostname": "212.38.128.3",
+                "resolver_port": 53
+            },
+            {
+                "answers": [],
+                "failure": "no_answer",
+                "hostname": "198.175.124.185",
+                "query_type": "A",
+                "resolver_hostname": "217.144.6.6",
+                "resolver_port": 53
+            },
+            {
+                "answers": [],
+                "failure": "deferred_timeout_error",
+                "hostname": "198.175.124.185",
+                "query_type": "A",
+                "resolver_hostname": "81.28.112.2",
+                "resolver_port": 53
+            },
+            {
+                "answers": [],
+                "failure": "deferred_timeout_error",
+                "hostname": "198.175.124.185",
+                "query_type": "A",
+                "resolver_hostname": "80.90.160.135",
+                "resolver_port": 53
+            },
+            {
+                "answers": [],
+                "failure": "deferred_timeout_error",
+                "hostname": "198.175.124.185",
+                "query_type": "A",
+                "resolver_hostname": "80.90.160.172",
+                "resolver_port": 53
+            },
+            {
+                "answers": [],
+                "failure": "no_answer",
+                "hostname": "198.175.124.185",
+                "query_type": "A",
+                "resolver_hostname": "212.118.0.1",
+                "resolver_port": 53
+            },
+            {
+                "answers": [],
+                "failure": "no_answer",
+                "hostname": "198.175.124.185",
+                "query_type": "A",
+                "resolver_hostname": "212.118.0.2",
+                "resolver_port": 53
+            }
+        ],
+        "start_time": 1448291668.0,
+        "successful": []
+    },
+    "test_name": "dns_consistency",
+    "test_runtime": 0.0837070942,
+    "test_start_time": "2015-11-23 16:14:28",
+    "test_version": "0.6"
+}
+```
diff --git a/data-formats/df-003-scapy.md b/data-formats/df-003-scapy.md
index c1db4fb..cae1972 100644
--- a/data-formats/df-003-scapy.md
+++ b/data-formats/df-003-scapy.md
@@ -1,113 +1,586 @@
 # ScapyTest data format
 
-Data Format Version: df-003-scapy-000
+Data Format Version: 0.2.0
 
 This specifies the data format for tests that are based on
 ooni.templates.scapyt.ScapyTest.
 
 ## Specification
 
-    answer_flags:
-      `list` of options that are set for determining how to understand if a
-      received packet is answer to a sent packet (these only apply to ICMP
-      messages)
+**sent_packets** are the packets that have been generated and sent over the
+network by the probe.
 
-      'ipsrc' means that we check to see if the src and destination ports in
-      the ICMP IP citation match.
+**answered_packets** are the packets that match up as answers according to the
+rules defined in the **answers_flags** options.
 
-      'ipid' means that we look at the IPID in the response to match it up
-      to sent packets.
+```
+{
+    "answer_flags": [
+          "List of options that are set for determining how to understand if a"
+          "received packet is answer to a sent packet (these only apply to ICMP"
+          "messages)"
 
-      'seqack' means that we check if TCP sequence number and ACK match in
-      the ICMP citation when processing TCP inside of ICMP.
+          "'ipsrc' means that we check to see if the src and destination ports in"
+          "the ICMP IP citation match."
 
-    sent_packets:
-      This contains the list of packets that have been sent.
+          "'ipid' means that we look at the IPID in the response to match it up"
+          "to sent packets."
 
-    - raw_packet:
-        `string` BASE64Encoding of packet the packet inclusive of IP
-        headers
+          "'seqack' means that we check if TCP sequence number and ACK match in"
+          "the ICMP citation when processing TCP inside of ICMP."
 
-      summary:
-        `string` human readable representation of the packet as is the
-        output of scapy.packet.summary().
-
-    - etc. etc.
-
-  answered_packets:
-    This contains the list of packets that are considered to be the
-    answer of the above sent packets.
-
-    - raw_packet:
-        `string` BASE64Encoding of packet the packet inclusive of IP
-        headers
-
-      summary:
-        `string` human readable representation of the packet as is the
-        output of scapy.packet.summary().
-
-    - etc. etc.
+    ],
+    "answered_packets": [
+        {
+            "raw_packet": {
+                "data": "Encoding of packet the packet inclusive of IP header. "
+                    "The type of encoding is specified in the format field."
+                "format": "The encoding of the data field. Currently only supports base64."
+            },
+            "summary":
+                "A human readable representation of the packet as is the output "
+                "of repr on the scapy.packet object."
+        },
+    ],
+    "sent_packets": [
+        {
+            "raw_packet": {
+                "data": "Encoding of packet the packet inclusive of IP header. "
+                    "The type of encoding is specified in the format field."
+                "format": "The encoding of the data field. Currently only supports base64."
+            },
+            "summary":
+                "A human readable representation of the packet as is the output "
+                "of repr on the scapy.packet object."
+        },
+    ],
+}
+```
 
 ## Example output
 
-    answer_flags: [ipsrc]
-    answered_packets:
-    - - raw_packet: !!binary |
-          RQAAqI08AACAATC61Lw2eX8AAAELACiDAAAAAEUAABzCJ0AAARGEQMCosIAuppOaG2gBuwAIr1EA
-          AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-          AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIACQ/gAIAQFM9wEB
-        summary: IP / ICMP 212.188.54.121 > 127.0.0.1 time-exceeded ttl-zero-during-transit
-          / IPerror / UDPerror / Padding
-    - - raw_packet: !!binary |
-          RQAAqI09AACAAUoF1LwdLX8AAAELACiDAAAAAEUAABzCJ0AAARGEQMCosIAuppOaG2gBuwAIr1EA
-          AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-          AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIACL1wAIAQFSHgEB
-        summary: IP / ICMP 212.188.29.45 > 127.0.0.1 time-exceeded ttl-zero-during-transit
-          / IPerror / UDPerror / Padding
-    - - raw_packet: !!binary |
-          RQAAOI0+AACAAUn71Lwdpn8AAAELACiDAAAAAEUAABzCJ0AAARGEQMCosIAuppOaG2gBuwAIr1E=
-        summary: IP / ICMP 212.188.29.166 > 127.0.0.1 time-exceeded ttl-zero-during-transit
-          / IPerror / UDPerror
-    - - raw_packet: !!binary |
-          RQAAqI0/AACAAUrm1LwcSn8AAAELACiDAAAAAEUAABzCJ0AAARGEQMCosIAuppOaG2gBuwAIr1EA
-          AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-          AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIACLtwAIAQFOPgUB
-        summary: IP / ICMP 212.188.28.74 > 127.0.0.1 time-exceeded ttl-zero-during-transit
-          / IPerror / UDPerror / Padding
-    - - raw_packet: !!binary |
-          RQAAOI1BAACAAT4U1Lwpin8AAAELACiDAAAAAEUAABzCJ0AAARGEQMCosIAuppOaG2gBuwAIr1E=
-        summary: IP / ICMP 212.188.41.138 > 127.0.0.1 time-exceeded ttl-zero-during-transit
-          / IPerror / UDPerror
-    - - raw_packet: !!binary |
-          RQAAOI1CAACAAYzr2cfVpn8AAAELACiDAAAAAEUAABzCJ0AAARGEQMCosIAuppOaG2gBuwAIr1E=
-        summary: IP / ICMP 217.199.213.166 > 127.0.0.1 time-exceeded ttl-zero-during-transit
-          / IPerror / UDPerror
-    - - raw_packet: !!binary |
-          RQAAOI1DAACAAXqrLqaTB38AAAELACiDAAAAAEUAABzCJ0AAARGEQMCosIAuppOaG2gBuwAIr1E=
-        summary: IP / ICMP 46.166.147.7 > 127.0.0.1 time-exceeded ttl-zero-during-transit
-          / IPerror / UDPerror
-    sent_packets:
-    - - raw_packet: !!binary |
-          RQAAHH1NAAABEftCfwAAAS6mk5obaAG7AAiheQ==
-        summary: IP / UDP 127.0.0.1:7016 > 46.166.147.154:https
-    - - raw_packet: !!binary |
-          RQAAHG71AAACEQibfwAAAS6mk5obaAG7AAiheQ==
-        summary: IP / UDP 127.0.0.1:7016 > 46.166.147.154:https
-    - - raw_packet: !!binary |
-          RQAAHAUlAAADEXFrfwAAAS6mk5obaAG7AAiheQ==
-        summary: IP / UDP 127.0.0.1:7016 > 46.166.147.154:https
-    - - raw_packet: !!binary |
-          RQAAHBqUAAAEEVr8fwAAAS6mk5obaAG7AAiheQ==
-        summary: IP / UDP 127.0.0.1:7016 > 46.166.147.154:https
-    - - raw_packet: !!binary |
-          RQAAHPuMAAAFEXkDfwAAAS6mk5obaAG7AAiheQ==
-        summary: IP / UDP 127.0.0.1:7016 > 46.166.147.154:https
-    - - raw_packet: !!binary |
-          RQAAHK4cAAAGEcVzfwAAAS6mk5obaAG7AAiheQ==
-        summary: IP / UDP 127.0.0.1:7016 > 46.166.147.154:https
-    - - raw_packet: !!binary |
-          RQAAHFyiAAAHERXufwAAAS6mk5obaAG7AAiheQ==
-        summary: IP / UDP 127.0.0.1:7016 > 46.166.147.154:https
+```
+{
+    "bucket_date": "2015-11-13",
+    "data_format_version": "0.2.0",
+    "id": "ea9f588b-49ca-4261-babf-0111307877c4",
+    "input": null,
+    "options": [],
+    "probe_asn": "AS8048",
+    "probe_cc": "VE",
+    "probe_ip": "127.0.0.1",
+    "report_filename": "2015-11-13/20151113T104654Z-VE-AS8048-multi_protocol_traceroute-iq0hFnbx4ex7bAvysJBenb9uJAuh7LT02BhDrvIhK6Lpwe7PdCvJ7BHFzm4voYe7-0.1.0-probe.json",
+    "report_id": "iq0hFnbx4ex7bAvysJBenb9uJAuh7LT02BhDrvIhK6Lpwe7PdCvJ7BHFzm4voYe7",
+    "software_name": "ooniprobe",
+    "software_version": "1.3.1",
+    "test_helpers": {
+        "backend": "213.138.109.232"
+    },
+    "backend_version": "1.1.4",
+    "input_hashes": [],
+    "probe_city": null,
+    "test_keys": {
+        "answer_flags": [
+            "ipsrc"
+        ],
+        "answered_packets": [
+            {
+                "raw_packet": {
+                    "data": "RcAAOFqPAAAwAeD/1Ypt6AoAAQQDA6VKAAAAAEUAABxEnwAAAREmvAoAAQTVim3oXIYAFgAI+w0=",
+                    "format": "base64"
+                },
+                "summary": "[<IP  version=4L ihl=5L tos=0xc0 len=56 id=23183 flags= frag=0L ttl=48 proto=icmp chksum=0xe0ff src=213.138.109.232 dst=10.0.1.4 options=[] |<ICMP  type=dest-unreach code=port-unreachable chksum=0xa54a unused=0 |<IPerror  version=4L ihl=5L tos=0x0 len=28 id=17567 flags= frag=0L ttl=1 proto=udp chksum=0x26bc src=10.0.1.4 dst=213.138.109.232 options=[] |<UDPerror  sport=23686 dport=ssh len=8 chksum=0xfb0d |>>>>]"
+            },
+            {
+                "raw_packet": {
+                    "data": "RQAAOBGSAAD/AZQuCgABAQoAAQQLAEOQAAAAAEUAABzCWAAAARGpAgoAAQTVim3ocGMAFwAIQO0=",
+                    "format": "base64"
+                },
+                "summary": "[<IP  version=4L ihl=5L tos=0x0 len=56 id=4498 flags= frag=0L ttl=255 proto=icmp chksum=0x942e src=10.0.1.1 dst=10.0.1.4 options=[] |<ICMP  type=time-exceeded code=ttl-zero-during-transit chksum=0x4390 unused=0 |<IPerror  version=4L ihl=5L tos=0x0 len=28 id=49752 flags= frag=0L ttl=1 proto=udp chksum=0xa902 src=10.0.1.4 dst=213.138.109.232 options=[] |<UDPerror  sport=28771 dport=telnet len=8 chksum=0x40ed |>>>>]"
+            },
+            {
+                "raw_packet": {
+                    "data": "RcAAOD57AADvAetXW986TwoAAQQLAJ1NAAAAAEUAABwySQAAARE5EgoAAQTVim3ogEgANQAI1yw=",
+                    "format": "base64"
+                },
+                "summary": "[<IP  version=4L ihl=5L tos=0xc0 len=56 id=15995 flags= frag=0L ttl=239 proto=icmp chksum=0xeb57 src=91.223.58.79 dst=10.0.1.4 options=[] |<ICMP  type=time-exceeded code=ttl-zero-during-transit chksum=0x9d4d unused=0 |<IPerror  version=4L ihl=5L tos=0x0 len=28 id=12873 flags= frag=0L ttl=1 proto=udp chksum=0x3912 src=10.0.1.4 dst=213.138.109.232 options=[] |<UDPerror  sport=32840 dport=domain len=8 chksum=0xd72c |>>>>]"
+            },
+            {
+                "raw_packet": {
+                    "data": "RcAAOCLEAAAwARjL1Ypt6AoAAQQDA6VKAAAAAEUAABwa6wAACxFGcAoAAQTVim3oZO4AFgAI8qU=",
+                    "format": "base64"
+                },
+                "summary": "[<IP  version=4L ihl=5L tos=0xc0 len=56 id=8900 flags= frag=0L ttl=48 proto=icmp chksum=0x18cb src=213.138.109.232 dst=10.0.1.4 options=[] |<ICMP  type=dest-unreach code=port-unreachable chksum=0xa54a unused=0 |<IPerror  version=4L ihl=5L tos=0x0 len=28 id=6891 flags= frag=0L ttl=11 proto=udp chksum=0x4670 src=10.0.1.4 dst=213.138.109.232 options=[] |<UDPerror  sport=25838 dport=ssh len=8 chksum=0xf2a5 |>>>>]"
+            },
+            {
+                "raw_packet": {
+                    "data": "RQAAOBGYAAD/AZQoCgABAQoAAQQLAEOQAAAAAEUAABxnSAAAAREEEwoAAQTVim3oU6f//wAIXcA=",
+                    "format": "base64"
+                },
+                "summary": "[<IP  version=4L ihl=5L tos=0x0 len=56 id=4504 flags= frag=0L ttl=255 proto=icmp chksum=0x9428 src=10.0.1.1 dst=10.0.1.4 options=[] |<ICMP  type=time-exceeded code=ttl-zero-during-transit chksum=0x4390 unused=0 |<IPerror  version=4L ihl=5L tos=0x0 len=28 id=26440 flags= frag=0L ttl=1 proto=udp chksum=0x413 src=10.0.1.4 dst=213.138.109.232 options=[] |<UDPerror  sport=21415 dport=65535 len=8 chksum=0x5dc0 |>>>>]"
+            },
+            {
+                "raw_packet": {
+                    "data": "RcAAOEz9AADvAdzVW986TwoAAQQLAJ1NAAAAAEUAABxiIAAAAREJOwoAAQTVim3o9N4fkAAIQzs=",
+                    "format": "base64"
+                },
+                "summary": "[<IP  version=4L ihl=5L tos=0xc0 len=56 id=19709 flags= frag=0L ttl=239 proto=icmp chksum=0xdcd5 src=91.223.58.79 dst=10.0.1.4 options=[] |<ICMP  type=time-exceeded code=ttl-zero-during-transit chksum=0x9d4d unused=0 |<IPerror  version=4L ihl=5L tos=0x0 len=28 id=25120 flags= frag=0L ttl=1 proto=udp chksum=0x93b src=10.0.1.4 dst=213.138.109.232 options=[] |<UDPerror  sport=62686 dport=http_alt len=8 chksum=0x433b |>>>>]"
+            },
+            {
+                "raw_packet": {
+                    "data": "RcAAOHZYAADvAbN6W986TwoAAQQLAJ1NAAAAAEUAABwZDgAAARFSTQoAAQTVim3ou3kAUAAIm+A=",
+                    "format": "base64"
+                },
+                "summary": "[<IP  version=4L ihl=5L tos=0xc0 len=56 id=30296 flags= frag=0L ttl=239 proto=icmp chksum=0xb37a src=91.223.58.79 dst=10.0.1.4 options=[] |<ICMP  type=time-exceeded code=ttl-zero-during-transit chksum=0x9d4d unused=0 |<IPerror  version=4L ihl=5L tos=0x0 len=28 id=6414 flags= frag=0L ttl=1 proto=udp chksum=0x524d src=10.0.1.4 dst=213.138.109.232 options=[] |<UDPerror  sport=47993 dport=http len=8 chksum=0x9be0 |>>>>]"
+            },
+            {
+                "raw_packet": {
+                    "data": "RQAAqAJHAAD5AalDCpYAMQoAAQQLAH/9AAAABEUAABxL8AAAAhEeawoAAQTVim3oxtsAFgAIkLiqqgAWAAjHuqqqABYACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAD5AwAIAQED8+H/",
+                    "format": "base64"
+                },
+                "summary": "[<IP  version=4L ihl=5L tos=0x0 len=168 id=583 flags= frag=0L ttl=249 proto=icmp chksum=0xa943 src=10.150.0.49 dst=10.0.1.4 options=[] |<ICMP  type=time-exceeded code=ttl-zero-during-transit chksum=0x7ffd unused=4 |<IPerror  version=4L ihl=5L tos=0x0 len=28 id=19440 flags= frag=0L ttl=2 proto=udp chksum=0x1e6b src=10.0.1.4 dst=213.138.109.232 options=[] |<UDPerror  sport=50907 dport=ssh len=8 chksum=0x90b8 |<Padding  load='\\xaa\\xaa\\x00\\x16\\x00\\x08\\xc7\\xba\\xaa\\xaa\\x00\\x16\\x00\\x08\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00 \\x00\\xf9\\x03\\x00\\x08\\x01\\x01\\x03\
 \xf3\\xe1\\xff' |>>>>>]"
+            },
+            {
+                "raw_packet": {
+                    "data": "RQAAOFaJAAD4AVoOx6g/gQoAAQQLAJ1NAAAAAEUAABw/wAAAARErmwoAAQTVim3o3yEAFgAIeHI=",
+                    "format": "base64"
+                },
+                "summary": "[<IP  version=4L ihl=5L tos=0x0 len=56 id=22153 flags= frag=0L ttl=248 proto=icmp chksum=0x5a0e src=199.168.63.129 dst=10.0.1.4 options=[] |<ICMP  type=time-exceeded code=ttl-zero-during-transit chksum=0x9d4d unused=0 |<IPerror  version=4L ihl=5L tos=0x0 len=28 id=16320 flags= frag=0L ttl=1 proto=udp chksum=0x2b9b src=10.0.1.4 dst=213.138.109.232 options=[] |<UDPerror  sport=57121 dport=ssh len=8 chksum=0x7872 |>>>>]"
+            }
+        ],
+        "sent_packets": [
+            {
+                "raw_packet": {
+                    "data": "RQAAKIc9AAABBuQcCgABBNWKbeiRQgAAAACVawAAAABQAiAAGr4AAA==",
+                    "format": "base64"
+                },
+                "summary": "[<IP  id=34621 frag=0 ttl=1 proto=tcp dst=213.138.109.232 |<TCP  sport=37186 dport=0 seq=38251 flags=S |>>]"
+            },
+            {
+                "raw_packet": {
+                    "data": "RQAAKADhAAABBmp5CgABBNWKbehsSAAWAACbxwAAAABQAiAAOUYAAA==",
+                    "format": "base64"
+                },
+                "summary": "[<IP  id=225 frag=0 ttl=1 proto=tcp dst=213.138.109.232 |<TCP  sport=27720 dport=ssh seq=39879 flags=S |>>]"
+            },
+            {
+                "raw_packet": {
+                    "data": "RQAAKO9JAAABBnwQCgABBNWKbeg1bwAXAAApTwAAAABQAiAA4pYAAA==",
+                    "format": "base64"
+                },
+                "summary": "[<IP  id=61257 frag=0 ttl=1 proto=tcp dst=213.138.109.232 |<TCP  sport=13679 dport=telnet seq=10575 flags=S |>>]"
+            },
+            {
+                "raw_packet": {
+                    "data": "RQAAKNKoAAABBpixCgABBNWKbeixRwA1AABobwAAAABQAiAAJ4AAAA==",
+                    "format": "base64"
+                },
+                "summary": "[<IP  id=53928 frag=0 ttl=1 proto=tcp dst=213.138.109.232 |<TCP  sport=45383 dport=domain seq=26735 flags=S |>>]"
+            },
+            {
+                "raw_packet": {
+                    "data": "RQAAKPzTAAABBm6GCgABBNWKbejCJwBQAACA3wAAAABQAiAA/hQAAA==",
+                    "format": "base64"
+                },
+                "summary": "[<IP  id=64723 frag=0 ttl=1 proto=tcp dst=213.138.109.232 |<TCP  sport=49703 dport=http seq=32991 flags=S |>>]"
+            },
+            {
+                "raw_packet": {
+                    "data": "RQAAKNzQAAABBo6JCgABBNWKbejZyAB7AAD+NQAAAABQAiAAaPIAAA==",
+                    "format": "base64"
+                },
+                "summary": "[<IP  id=56528 frag=0 ttl=1 proto=tcp dst=213.138.109.232 |<TCP  sport=55752 dport=ntp seq=65077 flags=S |>>]"
+            }
+        ],
+        "test_icmp_traceroute": {
+            "hops": [
+                {
+                    "address": "141.136.98.238",
+                    "rtt": 2.039386034,
+                    "ttl": 10
+                },
+                {
+                    "address": "91.223.58.79",
+                    "rtt": 2.2439029217,
+                    "ttl": 11
+                },
+                {
+                    "address": "213.138.109.232",
+                    "rtt": 2.4453678131,
+                    "ttl": 12
+                }
+            ]
+        },
+        "test_tcp_traceroute": {
+            "hops_0": [
+                {
+                    "address": "141.136.98.238",
+                    "rtt": 2.0464248657,
+                    "sport": 34854,
+                    "ttl": 10
+                },
+                {
+                    "address": "91.223.58.79",
+                    "rtt": 2.2470018864,
+                    "sport": 10415,
+                    "ttl": 11
+                },
+                {
+                    "address": "213.138.109.232",
+                    "rtt": 2.4521570206,
+                    "sport": 0,
+                    "ttl": 12
+                }
+            ],
+            "hops_123": [
+                {
+                    "address": "141.136.98.238",
+                    "rtt": 2.0381779671,
+                    "sport": 50988,
+                    "ttl": 10
+                },
+                {
+                    "address": "91.223.58.79",
+                    "rtt": 2.240860939,
+                    "sport": 7867,
+                    "ttl": 11
+                },
+                {
+                    "address": "213.138.109.232",
+                    "rtt": 2.4443869591,
+                    "sport": 123,
+                    "ttl": 12
+                }
+            ],
+            "hops_22": [
+                {
+                    "address": "141.136.98.238",
+                    "rtt": 2.0354959965,
+                    "sport": 36980,
+                    "ttl": 10
+                },
+                {
+                    "address": "91.223.58.79",
+                    "rtt": 2.2357189655,
+                    "sport": 26447,
+                    "ttl": 11
+                },
+                {
+                    "address": "213.138.109.232",
+                    "rtt": 2.4381670952,
+                    "sport": 22,
+                    "ttl": 12
+                }
+            ],
+            "hops_23": [
+                {
+                    "address": "141.136.98.238",
+                    "rtt": 2.0388379097,
+                    "sport": 4690,
+                    "ttl": 10
+                },
+                {
+                    "address": "91.223.58.79",
+                    "rtt": 2.2384901047,
+                    "sport": 51177,
+                    "ttl": 11
+                },
+                {
+                    "address": "213.138.109.232",
+                    "rtt": 2.4421479702,
+                    "sport": 23,
+                    "ttl": 12
+                }
+            ],
+            "hops_443": [
+                {
+                    "address": "141.136.98.238",
+                    "rtt": 2.0386300087,
+                    "sport": 11218,
+                    "ttl": 10
+                },
+                {
+                    "address": "91.223.58.79",
+                    "rtt": 2.240696907,
+                    "sport": 26319,
+                    "ttl": 11
+                },
+                {
+                    "address": "213.138.109.232",
+                    "rtt": 2.4430809021,
+                    "sport": 443,
+                    "ttl": 12
+                }
+            ],
+            "hops_53": [
+                {
+                    "address": "141.136.98.238",
+                    "rtt": 2.0381169319,
+                    "sport": 36901,
+                    "ttl": 10
+                },
+                {
+                    "address": "91.223.58.79",
+                    "rtt": 2.2402248383,
+                    "sport": 60900,
+                    "ttl": 11
+                },
+                {
+                    "address": "213.138.109.232",
+                    "rtt": 2.4425189495,
+                    "sport": 53,
+                    "ttl": 12
+                }
+            ],
+            "hops_65535": [
+                {
+                    "address": "141.136.98.238",
+                    "rtt": 2.0387971401,
+                    "sport": 57248,
+                    "ttl": 10
+                },
+                {
+                    "address": "91.223.58.79",
+                    "rtt": 2.2455801964,
+                    "sport": 52285,
+                    "ttl": 11
+                },
+                {
+                    "address": "213.138.109.232",
+                    "rtt": 2.4457411766,
+                    "sport": 65535,
+                    "ttl": 12
+                }
+            ],
+            "hops_80": [
+                {
+                    "address": "141.136.108.130",
+                    "rtt": 1.8421959877,
+                    "sport": 23745,
+                    "ttl": 9
+                },
+                {
+                    "address": "141.136.98.238",
+                    "rtt": 2.0382699966,
+                    "sport": 22618,
+                    "ttl": 10
+                },
+                {
+                    "address": "91.223.58.79",
+                    "rtt": 2.2403969765,
+                    "sport": 45566,
+                    "ttl": 11
+                },
+                {
+                    "address": "213.138.109.232",
+                    "rtt": 2.4452321529,
+                    "sport": 80,
+                    "ttl": 12
+                }
+            ],
+            "hops_8080": [
+                {
+                    "address": "141.136.98.238",
+                    "rtt": 2.0389461517,
+                    "sport": 57892,
+                    "ttl": 10
+                },
+                {
+                    "address": "91.223.58.79",
+                    "rtt": 2.2410969734,
+                    "sport": 51593,
+                    "ttl": 11
+                },
+                {
+                    "address": "213.138.109.232",
+                    "rtt": 2.4440560341,
+                    "sport": 8080,
+                    "ttl": 12
+                }
+            ]
+        },
+        "test_udp_traceroute": {
+            "hops_0": [],
+            "hops_123": [
+                {
+                    "address": "141.136.108.130",
+                    "rtt": 1.920017004,
+                    "sport": 57583,
+                    "ttl": 9
+                },
+                {
+                    "address": "91.223.58.79",
+                    "rtt": 2.24168396,
+                    "sport": 18721,
+                    "ttl": 11
+                },
+                {
+                    "address": "213.138.109.232",
+                    "rtt": 2.4463579655,
+                    "sport": 25517,
+                    "ttl": 12
+                }
+            ],
+            "hops_22": [
+                {
+                    "address": "141.136.108.130",
+                    "rtt": 1.9136769772,
+                    "sport": 45625,
+                    "ttl": 9
+                },
+                {
+                    "address": "141.136.98.238",
+                    "rtt": 2.0372998714,
+                    "sport": 50609,
+                    "ttl": 10
+                },
+                {
+                    "address": "91.223.58.79",
+                    "rtt": 2.2419588566,
+                    "sport": 14160,
+                    "ttl": 11
+                },
+                {
+                    "address": "213.138.109.232",
+                    "rtt": 2.4428777695,
+                    "sport": 23686,
+                    "ttl": 12
+                }
+            ],
+            "hops_23": [
+                {
+                    "address": "141.136.108.130",
+                    "rtt": 1.9202280045,
+                    "sport": 58718,
+                    "ttl": 9
+                },
+                {
+                    "address": "141.136.98.238",
+                    "rtt": 2.0369830132,
+                    "sport": 39310,
+                    "ttl": 10
+                },
+                {
+                    "address": "91.223.58.79",
+                    "rtt": 2.2406070232,
+                    "sport": 9348,
+                    "ttl": 11
+                },
+                {
+                    "address": "213.138.109.232",
+                    "rtt": 2.4436769485,
+                    "sport": 56507,
+                    "ttl": 12
+                }
+            ],
+            "hops_443": [
+                {
+                    "address": "141.136.108.130",
+                    "rtt": 1.9194400311,
+                    "sport": 61062,
+                    "ttl": 9
+                },
+                {
+                    "address": "141.136.98.238",
+                    "rtt": 2.0356152058,
+                    "sport": 57814,
+                    "ttl": 10
+                },
+                {
+                    "address": "91.223.58.79",
+                    "rtt": 2.2425971031,
+                    "sport": 36493,
+                    "ttl": 11
+                },
+                {
+                    "address": "213.138.109.232",
+                    "rtt": 2.4469130039,
+                    "sport": 20708,
+                    "ttl": 12
+                }
+            ],
+            "hops_53": [
+                {
+                    "address": "141.136.108.130",
+                    "rtt": 1.9192700386,
+                    "sport": 63309,
+                    "ttl": 9
+                },
+                {
+                    "address": "141.136.98.238",
+                    "rtt": 2.0371799469,
+                    "sport": 44259,
+                    "ttl": 10
+                },
+                {
+                    "address": "91.223.58.79",
+                    "rtt": 2.2417399883,
+                    "sport": 32840,
+                    "ttl": 11
+                },
+                {
+                    "address": "213.138.109.232",
+                    "rtt": 2.4441540241,
+                    "sport": 6946,
+                    "ttl": 12
+                }
+            ],
+            "hops_65535": [
+                {
+                    "address": "141.136.108.130",
+                    "rtt": 1.9188029766,
+                    "sport": 16637,
+                    "ttl": 9
+                },
+                {
+                    "address": "91.223.58.79",
+                    "rtt": 2.2441849709,
+                    "sport": 56282,
+                    "ttl": 11
+                }
+            ],
+            "hops_80": [
+                {
+                    "address": "141.136.108.130",
+                    "rtt": 1.9194018841,
+                    "sport": 26666,
+                    "ttl": 9
+                },
+                {
+                    "address": "91.223.58.79",
+                    "rtt": 2.2409110069,
+                    "sport": 47993,
+                    "ttl": 11
+                },
+                {
+                    "address": "213.138.109.232",
+                    "rtt": 2.4452769756,
+                    "sport": 43930,
+                    "ttl": 12
+                }
+            ],
+            "hops_8080": [
+                {
+                    "address": "141.136.108.130",
+                    "rtt": 1.9188380241,
+                    "sport": 53083,
+                    "ttl": 9
+                },
+                {
+                    "address": "91.223.58.79",
+                    "rtt": 2.2436709404,
+                    "sport": 62686,
+                    "ttl": 11
+                }
+            ]
+        }
+    },
+    "test_name": "multi_protocol_traceroute",
+    "test_runtime": 57.7884280682,
+    "test_start_time": "2015-11-13 10:46:54",
+    "test_version": "0.3"
+}
+```
 
 ## Privacy considerations
 
@@ -121,5 +594,3 @@ the packet they are referring to and it will contain the non anonymized user IP
 address).
 On this specific issue there is an open ticket here:
 https://trac.torproject.org/projects/tor/ticket/7933.
-
-





More information about the tor-commits mailing list