Skip to content

Commit 21a93cb

Browse files
committed
Condition must be a boolean fixes.
1 parent 0d555d4 commit 21a93cb

File tree

2 files changed

+44
-41
lines changed

2 files changed

+44
-41
lines changed

ssh-audit.py

Lines changed: 43 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ def usage(err=None):
5555
uout = Output()
5656
p = os.path.basename(sys.argv[0])
5757
uout.head('# {0} {1}, [email protected]\n'.format(p, VERSION))
58-
if err is not None:
58+
if err is not None and len(err) > 0:
5959
uout.fail('\n' + err)
6060
uout.info('usage: {0} [-1246pbnvl] <host>\n'.format(p))
6161
uout.info(' -h, --help print this help')
@@ -92,10 +92,10 @@ def __setattr__(self, name, value):
9292
# type: (str, Union[str, int, bool, Sequence[int]]) -> None
9393
valid = False
9494
if name in ['ssh1', 'ssh2', 'batch', 'colors', 'verbose']:
95-
valid, value = True, True if value else False
95+
valid, value = True, True if bool(value) else False
9696
elif name in ['ipv4', 'ipv6']:
9797
valid = False
98-
value = True if value else False
98+
value = True if bool(value) else False
9999
ipv = 4 if name == 'ipv4' else 6
100100
if value:
101101
value = tuple(list(self.ipvo) + [ipv])
@@ -916,7 +916,7 @@ def compare_version(self, other):
916916
else:
917917
other = str(other)
918918
mx = re.match(r'^([\d\.]+\d+)(.*)$', other)
919-
if mx is not None:
919+
if bool(mx):
920920
oversion, opatch = mx.group(1), mx.group(2).strip()
921921
else:
922922
oversion, opatch = other, ''
@@ -933,10 +933,10 @@ def compare_version(self, other):
933933
elif self.product == SSH.Product.OpenSSH:
934934
mx1 = re.match(r'^p\d(.*)', opatch)
935935
mx2 = re.match(r'^p\d(.*)', spatch)
936-
if not (mx1 and mx2):
937-
if mx1 is not None:
936+
if not (bool(mx1) and bool(mx2)):
937+
if bool(mx1):
938938
opatch = mx1.group(1)
939-
if mx2 is not None:
939+
if bool(mx2):
940940
spatch = mx2.group(1)
941941
if spatch < opatch:
942942
return -1
@@ -946,28 +946,28 @@ def compare_version(self, other):
946946

947947
def between_versions(self, vfrom, vtill):
948948
# type: (str, str) -> bool
949-
if vfrom and self.compare_version(vfrom) < 0:
949+
if bool(vfrom) and self.compare_version(vfrom) < 0:
950950
return False
951-
if vtill and self.compare_version(vtill) > 0:
951+
if bool(vtill) and self.compare_version(vtill) > 0:
952952
return False
953953
return True
954954

955955
def display(self, full=True):
956956
# type: (bool) -> str
957-
r = '{0} '.format(self.vendor) if self.vendor else ''
957+
r = '{0} '.format(self.vendor) if bool(self.vendor) else ''
958958
r += self.product
959-
if self.version:
959+
if bool(self.version):
960960
r += ' {0}'.format(self.version)
961961
if full:
962962
patch = self.patch or ''
963963
if self.product == SSH.Product.OpenSSH:
964964
mx = re.match(r'^(p\d)(.*)$', patch)
965-
if mx is not None:
965+
if bool(mx):
966966
r += mx.group(1)
967967
patch = mx.group(2).strip()
968-
if patch:
968+
if bool(patch):
969969
r += ' ({0})'.format(patch)
970-
if self.os:
970+
if bool(self.os):
971971
r += ' running on {0}'.format(self.os)
972972
return r
973973

@@ -977,16 +977,13 @@ def __str__(self):
977977

978978
def __repr__(self):
979979
# type: () -> str
980-
r = 'vendor={0}'.format(self.vendor) if self.vendor else ''
981-
if self.product:
982-
if self.vendor:
983-
r += ', '
984-
r += 'product={0}'.format(self.product)
985-
if self.version:
980+
r = 'vendor={0}, '.format(self.vendor) if bool(self.vendor) else ''
981+
r += 'product={0}'.format(self.product)
982+
if bool(self.version):
986983
r += ', version={0}'.format(self.version)
987-
if self.patch:
984+
if bool(self.patch):
988985
r += ', patch={0}'.format(self.patch)
989-
if self.os:
986+
if bool(self.os):
990987
r += ', os={0}'.format(self.os)
991988
return '<{0}({1})>'.format(self.__class__.__name__, r)
992989

@@ -1009,19 +1006,19 @@ def _extract_os_version(cls, c):
10091006
if c is None:
10101007
return None
10111008
mx = re.match(r'^NetBSD(?:_Secure_Shell)?(?:[\s-]+(\d{8})(.*))?$', c)
1012-
if mx is not None:
1009+
if bool(mx):
10131010
d = cls._fix_date(mx.group(1))
10141011
return 'NetBSD' if d is None else 'NetBSD ({0})'.format(d)
10151012
mx = re.match(r'^FreeBSD(?:\slocalisations)?[\s-]+(\d{8})(.*)$', c)
1016-
if mx is None:
1013+
if not bool(mx):
10171014
mx = re.match(r'^[^@]+@FreeBSD\.org[\s-]+(\d{8})(.*)$', c)
1018-
if mx is not None:
1015+
if bool(mx):
10191016
d = cls._fix_date(mx.group(1))
10201017
return 'FreeBSD' if d is None else 'FreeBSD ({0})'.format(d)
10211018
w = ['RemotelyAnywhere', 'DesktopAuthority', 'RemoteSupportManager']
10221019
for win_soft in w:
10231020
mx = re.match(r'^in ' + win_soft + r' ([\d\.]+\d)$', c)
1024-
if mx is not None:
1021+
if bool(mx):
10251022
ver = mx.group(1)
10261023
return 'Microsoft Windows ({0} {1})'.format(win_soft, ver)
10271024
generic = ['NetBSD', 'FreeBSD']
@@ -1037,35 +1034,35 @@ def parse(cls, banner):
10371034
software = str(banner.software)
10381035
mx = re.match(r'^dropbear_([\d\.]+\d+)(.*)', software)
10391036
v = None # type: Optional[str]
1040-
if mx is not None:
1037+
if bool(mx):
10411038
patch = cls._fix_patch(mx.group(2))
10421039
v, p = 'Matt Johnston', SSH.Product.DropbearSSH
10431040
v = None
10441041
return cls(v, p, mx.group(1), patch, None)
10451042
mx = re.match(r'^OpenSSH[_\.-]+([\d\.]+\d+)(.*)', software)
1046-
if mx is not None:
1043+
if bool(mx):
10471044
patch = cls._fix_patch(mx.group(2))
10481045
v, p = 'OpenBSD', SSH.Product.OpenSSH
10491046
v = None
10501047
os_version = cls._extract_os_version(banner.comments)
10511048
return cls(v, p, mx.group(1), patch, os_version)
10521049
mx = re.match(r'^libssh-([\d\.]+\d+)(.*)', software)
1053-
if mx is not None:
1050+
if bool(mx):
10541051
patch = cls._fix_patch(mx.group(2))
10551052
v, p = None, SSH.Product.LibSSH
10561053
os_version = cls._extract_os_version(banner.comments)
10571054
return cls(v, p, mx.group(1), patch, os_version)
10581055
mx = re.match(r'^RomSShell_([\d\.]+\d+)(.*)', software)
1059-
if mx is not None:
1056+
if bool(mx):
10601057
patch = cls._fix_patch(mx.group(2))
10611058
v, p = 'Allegro Software', 'RomSShell'
10621059
return cls(v, p, mx.group(1), patch, None)
10631060
mx = re.match(r'^mpSSH_([\d\.]+\d+)', software)
1064-
if mx is not None:
1061+
if bool(mx):
10651062
v, p = 'HP', 'iLO (Integrated Lights-Out) sshd'
10661063
return cls(v, p, mx.group(1), None, None)
10671064
mx = re.match(r'^Cisco-([\d\.]+\d+)', software)
1068-
if mx is not None:
1065+
if bool(mx):
10691066
v, p = 'Cisco', 'IOS/PIX sshd'
10701067
return cls(v, p, mx.group(1), None, None)
10711068
return None
@@ -1107,27 +1104,27 @@ def __str__(self):
11071104
r = 'SSH-{0}.{1}'.format(self.protocol[0], self.protocol[1])
11081105
if self.software is not None:
11091106
r += '-{0}'.format(self.software)
1110-
if self.comments:
1107+
if bool(self.comments):
11111108
r += ' {0}'.format(self.comments)
11121109
return r
11131110

11141111
def __repr__(self):
11151112
# type: () -> str
11161113
p = '{0}.{1}'.format(self.protocol[0], self.protocol[1])
11171114
r = 'protocol={0}'.format(p)
1118-
if self.software:
1115+
if self.software is not None:
11191116
r += ', software={0}'.format(self.software)
1120-
if self.comments:
1117+
if bool(self.comments):
11211118
r += ', comments={0}'.format(self.comments)
11221119
return '<{0}({1})>'.format(self.__class__.__name__, r)
11231120

11241121
@classmethod
11251122
def parse(cls, banner):
1126-
# type: (text_type) -> SSH.Banner
1123+
# type: (text_type) -> Optional[SSH.Banner]
11271124
valid_ascii = utils.is_print_ascii(banner)
11281125
ascii_banner = utils.to_print_ascii(banner)
11291126
mx = cls.RX_BANNER.match(ascii_banner)
1130-
if mx is None:
1127+
if not bool(mx):
11311128
return None
11321129
protocol = min(re.findall(cls.RX_PROTOCOL, mx.group(1)))
11331130
protocol = (int(protocol[0]), int(protocol[1]))
@@ -1814,7 +1811,7 @@ def output_algorithm(alg_db, alg_type, alg_name, alg_max_len=0):
18141811
if level == 'info':
18151812
versions = alg_desc[0]
18161813
since_text = SSH.Algorithm.get_since_text(versions)
1817-
if since_text:
1814+
if since_text is not None and len(since_text) > 0:
18181815
texts.append((level, since_text))
18191816
idx = idx + 1
18201817
if ldesc > idx:
@@ -1951,7 +1948,10 @@ def output_recommendations(algs, software, padlen=0):
19511948
fm = '(rec) {0}{1}{2}-- {3} algorithm to {4} {5}'
19521949
fn(fm.format(sg, name, p, alg_type, an, b))
19531950
if len(obuf) > 0:
1954-
title = '(for {0})'.format(software.display(False)) if software else ''
1951+
if software is not None:
1952+
title = '(for {0})'.format(software.display(False))
1953+
else:
1954+
title = ''
19551955
out.head('# algorithm recommendations {0}'.format(title))
19561956
obuf.flush()
19571957
out.sep()
@@ -2150,7 +2150,10 @@ def audit(aconf, sshv=None):
21502150
packet_type, payload = s.read_packet(sshv)
21512151
if packet_type < 0:
21522152
try:
2153-
payload_txt = payload.decode('utf-8') if payload else u'empty'
2153+
if payload is not None and len(payload) > 0:
2154+
payload_txt = payload.decode('utf-8')
2155+
else:
2156+
payload_txt = u'empty'
21542157
except UnicodeDecodeError:
21552158
payload_txt = u'"{0}"'.format(repr(payload).lstrip('b')[1:-1])
21562159
if payload_txt == u'Protocol major versions differ.':

tox.ini

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ warn_redundant_casts = True
107107
warn_return_any = True
108108
warn_unused_ignores = True
109109
strict_optional = True
110-
#strict_boolean = True
110+
strict_boolean = True
111111

112112
[pylint]
113113
reports = no

0 commit comments

Comments
 (0)