MCPcopy
hub / github.com/jtesta/ssh-audit / get_banner

Method get_banner

src/ssh_audit/ssh_socket.py:176–203  ·  view source on GitHub ↗
(self, sshv: int = 2)

Source from the content-addressed store, hash-verified

174 return '[exception] {}'.format(errm)
175
176 def get_banner(self, sshv: int = 2) -> Tuple[Optional['Banner'], List[str], Optional[str]]:
177 self.__outputbuffer.d('Getting banner...', write_now=True)
178
179 if self.__sock is None:
180 return self.__banner, self.__header, 'not connected'
181 if self.__banner is not None:
182 return self.__banner, self.__header, None
183
184 banner = SSH_HEADER.format('1.5' if sshv == 1 else '2.0')
185 if self.__state < self.SM_BANNER_SENT:
186 self.send_banner(banner)
187
188 s = 0
189 e = None
190 while s >= 0:
191 s, e = self.recv()
192 if s < 0:
193 continue
194 while self.unread_len > 0:
195 line = self.read_line()
196 if len(line.strip()) == 0:
197 continue
198 self.__banner = Banner.parse(line)
199 if self.__banner is not None:
200 return self.__banner, self.__header, None
201 self.__header.append(line)
202
203 return self.__banner, self.__header, e
204
205 def recv(self, size: int = 2048) -> Tuple[int, Optional[str]]:
206 if self.__sock is None:

Callers 4

auditFunction · 0.95
reconnectMethod · 0.80
perform_testMethod · 0.80

Calls 5

send_bannerMethod · 0.95
recvMethod · 0.95
dMethod · 0.80
read_lineMethod · 0.80
parseMethod · 0.45

Tested by 3

reconnectMethod · 0.64
perform_testMethod · 0.64