MCPcopy Create free account
hub / github.com/USArmyResearchLab/Dshell / sshmessage

Class sshmessage

dshell/plugins/ssh/ssh-pubkey.py:117–146  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

115
116
117class sshmessage:
118
119 def __init__(self, rawdata):
120 self.__parse_raw(rawdata)
121
122 def __parse_raw(self, data):
123 datalen = len(data)
124 if datalen < 6:
125 raise ValueError
126
127 (self.packet_len, self.padding_len,
128 self.message_code) = struct.unpack(">IBB", data[0:6])
129 if datalen < self.packet_len + 4:
130 raise ValueError
131 self.body = data[6:4+self.packet_len]
132
133 # ECDH Kex Reply
134 if self.message_code == 31 or self.message_code == 33:
135 host_key_len = struct.unpack(">I", self.body[0:4])[0]
136 full_key_net = self.body[4:4+host_key_len]
137 key_type_name_len = struct.unpack(">I", full_key_net[0:4])[0]
138 key_type_name = full_key_net[4:4+key_type_name_len]
139 key_data = full_key_net[4+key_type_name_len:]
140 if key_type_name_len > 50:
141 # something went wrong
142 # this probably isn't a code 31
143 self.message_code = 0
144 else:
145 self.host_pub_key = "%s %s" % (key_type_name.decode(
146 'utf-8'), base64.b64encode(full_key_net).decode('utf-8'))
147
148
149def key_fingerprint(ssh_pubkey, hashfunction=hashlib.sha256):

Callers 1

messagefactoryFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected