Source code for tests.default_templates
from .test import *
from honeypots.honeypot import ScanFailure
[docs]class DefaultTemplateFileTest(Test):
name = "Default Template File Test"
description = "Tests usage of default running templates"
karma_value = 100
doc_file = 'default_template.html'
[docs] def run(self):
"""Check if content matches any known content"""
target_ports = self.target_honeypot.get_service_ports('iso-tsap', 'tcp')
target_ports += self.target_honeypot.get_service_ports('s7-comm', 'tcp')
if not target_ports:
self.set_result(TestResult.NOT_APPLICABLE, "iso-tsap / s7-comm service not present in scan results")
for port in target_ports:
try:
info = self.target_honeypot.run_nmap_script('s7-info.nse', port)
except ScanFailure:
self.set_result(TestResult.UNKNOWN, "Failed to run s7-info.nse script")
return
parsed = info.split('\n ')[1:]
default1 = ['Version: 0.0', 'System Name: Technodrome',
'Module Type: Siemens, SIMATIC, S7-200',
'Serial Number: 88111222',
'Plant Identification: Mouser Factory',
'Copyright: Original Siemens Equipment']
matched = 0
for a, b in zip(parsed, default1):
if a == b:
matched += 1
if matched > 0:
self.set_result(TestResult.WARNING, "Template used for s7-comm service matches default ",
matched/len(default1)*100, "percent")
return
self.set_result(TestResult.OK, "s7-comm service does not match any default configurations")