mirror of
				https://github.com/jtesta/ssh-audit.git
				synced 2025-11-04 03:02:15 +01:00 
			
		
		
		
	Since text could be empty or client-only.
This commit is contained in:
		
							
								
								
									
										13
									
								
								ssh-audit.py
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								ssh-audit.py
									
									
									
									
									
								
							@@ -87,6 +87,7 @@ class AuditConf(object):
 | 
				
			|||||||
	def ssh2(self, v):
 | 
						def ssh2(self, v):
 | 
				
			||||||
		self.__ssh2 = v
 | 
							self.__ssh2 = v
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class Output(object):
 | 
					class Output(object):
 | 
				
			||||||
	LEVELS = ['info', 'warn', 'fail']
 | 
						LEVELS = ['info', 'warn', 'fail']
 | 
				
			||||||
	COLORS = {'head': 36, 'good': 32, 'warn': 33, 'fail': 31}
 | 
						COLORS = {'head': 36, 'good': 32, 'warn': 33, 'fail': 31}
 | 
				
			||||||
@@ -1046,9 +1047,17 @@ def get_ssh_timeframe(kex):
 | 
				
			|||||||
def get_alg_since_text(alg_desc):
 | 
					def get_alg_since_text(alg_desc):
 | 
				
			||||||
	tv = []
 | 
						tv = []
 | 
				
			||||||
	versions = alg_desc[0]
 | 
						versions = alg_desc[0]
 | 
				
			||||||
 | 
						if len(versions) == 0 or versions[0] is None:
 | 
				
			||||||
 | 
							return None
 | 
				
			||||||
	for v in versions[0].split(','):
 | 
						for v in versions[0].split(','):
 | 
				
			||||||
		ssh_prefix, ssh_version = get_ssh_version(v)
 | 
							ssh_prefix, ssh_version = get_ssh_version(v)
 | 
				
			||||||
 | 
							if not ssh_version:
 | 
				
			||||||
 | 
								continue
 | 
				
			||||||
 | 
							if ssh_version.endswith('C'):
 | 
				
			||||||
 | 
								ssh_version = '{0} (client only)'.format(ssh_version[:-1])
 | 
				
			||||||
		tv.append('{0} {1}'.format(ssh_prefix, ssh_version))
 | 
							tv.append('{0} {1}'.format(ssh_prefix, ssh_version))
 | 
				
			||||||
 | 
						if len(tv) == 0:
 | 
				
			||||||
 | 
							return None
 | 
				
			||||||
	return 'available since ' + ', '.join(tv).rstrip(', ')
 | 
						return 'available since ' + ', '.join(tv).rstrip(', ')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1073,7 +1082,9 @@ def output_algorithm(alg_type, alg_name, alg_max_len=0):
 | 
				
			|||||||
		ldesc = len(alg_desc)
 | 
							ldesc = len(alg_desc)
 | 
				
			||||||
		for idx, level in enumerate(['fail', 'warn', 'info']):
 | 
							for idx, level in enumerate(['fail', 'warn', 'info']):
 | 
				
			||||||
			if level == 'info':
 | 
								if level == 'info':
 | 
				
			||||||
				texts.append((level, get_alg_since_text(alg_desc)))
 | 
									since_text = get_alg_since_text(alg_desc)
 | 
				
			||||||
 | 
									if since_text:
 | 
				
			||||||
 | 
										texts.append((level, since_text))
 | 
				
			||||||
			idx = idx + 1
 | 
								idx = idx + 1
 | 
				
			||||||
			if ldesc > idx:
 | 
								if ldesc > idx:
 | 
				
			||||||
				for t in alg_desc[idx]:
 | 
									for t in alg_desc[idx]:
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user