X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/8a646d926c4bfb1848cbd660e5218dea04a1bd63..HEAD:/contrib/kh2reg.py diff --git a/contrib/kh2reg.py b/contrib/kh2reg.py index 98f4868c..4872aec8 100755 --- a/contrib/kh2reg.py +++ b/contrib/kh2reg.py @@ -1,6 +1,6 @@ #! /usr/bin/env python -# $Id: kh2reg.py,v 1.3 2003/10/21 13:26:12 jacob Exp $ +# $Id$ # Convert OpenSSH known_hosts and known_hosts2 files to "new format" PuTTY # host keys. # usage: @@ -87,7 +87,7 @@ for line in fileinput.input(args): # is second field entirely decimal digits? if re.match (r"\d*$", fields[1]): - # Treat as SSH1-type host key. + # Treat as SSH-1-type host key. # Format: hostpat bits10 exp10 mod10 comment... # (PuTTY doesn't store the number of bits.) magicnumbers = map (long, fields[2:4]) @@ -95,7 +95,7 @@ for line in fileinput.input(args): else: - # Treat as SSH2-type host key. + # Treat as SSH-2-type host key. # Format: hostpat keytype keyblob64 comment... sshkeytype, blob = fields[1], base64.decodestring (fields[2]) @@ -128,10 +128,17 @@ for line in fileinput.input(args): sys.stderr.write("Skipping wildcard host pattern '%s'\n" % host) continue + elif re.match (r"\|", host): + sys.stderr.write("Skipping hashed hostname '%s'\n" % host) + continue else: - # Slightly bizarre key format: 'type@port:hostname' - # As far as I know, the input never specifies a port. - port = 22 + m = re.match (r"\[([^]]*)\]:(\d*)$", host) + if m: + (host, port) = m.group(1,2) + port = int(port) + else: + port = 22 + # Slightly bizarre output key format: 'type@port:hostname' # XXX: does PuTTY do anything useful with literal IP[v4]s? key = keytype + ("@%d:%s" % (port, host)) value = string.join (map (longtohex, magicnumbers), ',')