#!/usr/bin/perl -w use MIME::Base64; while(<>) { my ($n,$x,$i); my @a = split /\s+/; my ($host,$type,$data) = @a; $host =~ s/,.*$//; $data = decode_base64($data); $data =~ s/^(.{4})//s || die; $n = unpack("N",$1); $data =~ s/^(.{$n})//s || die; $type eq $1 || die "type mismatch"; if($type eq "ssh-dss" || $type eq "ssh-rsa") { print $type eq "ssh-dss" ? "dss" : "rsa2","\@22:$host "; for($i=0;$i<($type eq "ssh-dss" ? 4 : 2);$i++) { $data =~ s/^(.{4})//s || die; my $count = unpack("N",$1) || die; $count-- if($data =~ s/^\0//s); print "," if($i); print "0x"; for(;$count;$count--) { $data =~ s/^(.)//s || die; printf("%02x",unpack("C",$1)); } } die if($data); print "\n"; } else { die "unknown key type: $type"; } }