Add Promag analyzer

This commit is contained in:
RichardG867
2022-03-18 16:25:30 -03:00
parent 0c0434fde0
commit 7e4868ebe5
2 changed files with 21 additions and 0 deletions

View File

@@ -507,6 +507,7 @@ def analyze_process(queue, formatter, scan_base):
analyzers.MRAnalyzer(),
analyzers.MylexAnalyzer(),
analyzers.OlivettiAnalyzer(),
analyzers.PromagAnalyzer(),
analyzers.SchneiderAnalyzer(),
analyzers.SystemSoftAnalyzer(),
analyzers.TandonAnalyzer(),

View File

@@ -2183,6 +2183,26 @@ class PhoenixAnalyzer(Analyzer):
self.signon = self._found_signon_tandy
class PromagAnalyzer(Analyzer):
def __init__(self, *args, **kwargs):
super().__init__('Promag', *args, **kwargs)
self._version_pattern = re.compile(b'''\\(C\\) PROMAG SYSTEM BOARD VER\\. ([^ ]+) [^\\n]+\\n([\\r\\n\\x20-\\x7E]+)''')
def can_handle(self, file_data, header_data):
match = self._version_pattern.search(file_data)
if not match:
return False
# Extract version.
self.version = match.group(1).decode('cp437', 'ignore')
# Extract sign-on.
self.signon = match.group(2).decode('cp437', 'ignore').replace('\r', '')
return True
class QuadtelAnalyzer(Analyzer):
def __init__(self, *args, **kwargs):
super().__init__('Quadtel', *args, **kwargs)