Esempio n. 1
0
    def dnscrypt(self):
        parser = argparse.ArgumentParser(description='Create DNSCrypt stamp')
        self.append_common_arguments(parser)

        parser.add_argument(
            '-k',
            '--public_key',
            required=True,
            type=str,
            help=
            "the DNSCrypt public key (e.g.: CB6A:DC5C:29F9:5510:0B65:BF12:94FE:5684:579A:B349:9CC9:798F:00D0:1BB5:C1A9:A2C7)"
        )
        parser.add_argument(
            '-n',
            '--provider_name',
            required=True,
            type=str,
            help=
            "the DNSCrypt provider name (e.g.: 2.dnscrypt-cert.example.com)")

        args = parser.parse_args(sys.argv[2:])

        options = []
        if args.dnssec:
            options.append(Option.DNSSEC)
        if args.logs:
            options.append(Option.NO_LOGS)
        if args.filter:
            options.append(Option.NO_FILTERS)
        parameter = dnsstamps.prepare_dnscrypt(
            "" if args.address is None else args.address, args.public_key,
            args.provider_name, options)
        dnsstamps.format(parameter)
Esempio n. 2
0
    def doh_target(self):
        parser = argparse.ArgumentParser(description='Create DoH target stamp')
        self.append_common_arguments(parser)

        parser.add_argument(
            '-n',
            '--hostname',
            required=True,
            type=str,
            help=
            "the server hostname which will also be used as a SNI name (e.g.: doh-target.example.com)"
        )
        parser.add_argument('-p',
                            '--path',
                            required=True,
                            type=str,
                            help="the absolute URI path (e.g.: /dns-query)")

        args = parser.parse_args(sys.argv[2:])

        options = []
        if args.dnssec:
            options.append(Option.DNSSEC)
        if args.logs:
            options.append(Option.NO_LOGS)
        if args.filter:
            options.append(Option.NO_FILTERS)
        parameter = dnsstamps.prepare_doh_target(args.hostname, args.path,
                                                 options)
        dnsstamps.format(parameter)
 def test_format_doh_stamp(self):
     address = "[fe80::6d6d:f72c:3ad:60b8]"
     hashes = ["3e1a1a0f6c53f3e97a492d57084b5b9807059ee057ab1505876fd83fda3db838"]
     hostname = "doh.example.com"
     path = "/dns-query"
     parameter = dnsstamps.prepare_doh(address, hashes, hostname, path)
     dnsstamps.format(parameter)
Esempio n. 4
0
    def doh(self):
        parser = argparse.ArgumentParser(description='Create DNS over HTTPS stamp')
        self.append_common_arguments(parser)

        parser.add_argument('-t', '--hashes',
                            type=str,
                            help="a comma-separated list of tbs certificate hashes (e.g.: 3e1a1a0f6c53f3e97a492d57084b5b9807059ee057ab1505876fd83fda3db838)")
        parser.add_argument('-n', '--hostname',
                            required=True,
                            type=str,
                            help="the server hostname which will also be used as a SNI name (e.g.: doh.example.com)")
        parser.add_argument('-p', '--path',
                            required=True,
                            type=str,
                            help="the absolute URI path (e.g.: /dns-query)")
        parser.add_argument('-b', '--bootstrap_ips',
                            type=str,
                            help="a comma-separated list of bootstrap ips (e.g.: 1.1.1.1,1.0.0.1)")

        args = parser.parse_args(sys.argv[2:])

        options = []
        if args.dnssec:
            options.append(Option.DNSSEC)
        if args.logs:
            options.append(Option.NO_LOGS)
        if args.filter:
            options.append(Option.NO_FILTERS)
        parameter = dnsstamps.prepare_doh("" if args.address is None else args.address,
                                          [] if args.hashes is None else args.hashes.split(','), args.hostname,
                                          args.path, options,
                                          [] if args.bootstrap_ips is None else args.bootstrap_ips.split(','))
        dnsstamps.format(parameter)
 def test_format_with_invalid_parameter_type(self):
     with self.assertRaises(Exception) as context:
         dnsstamps.format(None)
     self.assertEqual(
         "Invalid parameter type <class 'NoneType'>",
         str(context.exception),
         "Invalid parameter type")
 def test_format_dnscrypt_stamp(self):
     address = "[fe80::6d6d:f72c:3ad:60b8]"
     public_key = "CB6A:DC5C:29F9:5510:0B65:BF12:94FE:5684:579A:B349:9CC9:798F:00D0:1BB5:C1A9:A2C7"
     provider_name = "2.dnscrypt-cert.example.com"
     parameter = dnsstamps.prepare_dnscrypt(address, public_key,
                                            provider_name)
     dnsstamps.format(parameter)
Esempio n. 7
0
    def relay(self):
        parser = argparse.ArgumentParser(description='Create DNSCrypt relay stamp')
        self.append_common_arguments(parser)

        args = parser.parse_args(sys.argv[2:])

        parameter = dnsstamps.prepare_dnscrypt_relay("" if args.address is None else args.address)
        dnsstamps.format(parameter)
Esempio n. 8
0
    def parse(self):
        parser = argparse.ArgumentParser(description='Parse DNS stamp.')

        parser.add_argument('stamp', type=str, help='The stamp to parse.')

        args = parser.parse_args(sys.argv[2:])

        try:
            parameter = dnsstamps.parse(args.stamp)
            dnsstamps.format(parameter)
        except:
            print("Unable to parse DNS stamp <%s>" % args.stamp)
Esempio n. 9
0
    def plain(self):
        parser = argparse.ArgumentParser(description='Create plain stamp')
        self.append_common_arguments(parser)

        args = parser.parse_args(sys.argv[2:])

        options = []
        if args.dnssec:
            options.append(Option.DNSSEC)
        if args.logs:
            options.append(Option.NO_LOGS)
        if args.filter:
            options.append(Option.NO_FILTERS)
        parameter = dnsstamps.prepare_plain("" if args.address is None else args.address, options)
        dnsstamps.format(parameter)
Esempio n. 10
0
 def test_format_dnscrypt_relay_stamp(self):
     address = "[fe80::6d6d:f72c:3ad:60b8]:433"
     parameter = dnsstamps.prepare_dnscrypt_relay(address)
     dnsstamps.format(parameter)
Esempio n. 11
0
 def test_format_plain_stamp(self):
     address = "[fe80::6d6d:f72c:3ad:60b8]"
     parameter = dnsstamps.prepare_plain(address)
     dnsstamps.format(parameter)
 def test_format_doh_target_stamp(self):
     hostname = "doh-target.example.com"
     path = "/dns-query"
     parameter = dnsstamps.prepare_doh_target(hostname, path)
     dnsstamps.format(parameter)