+def detect_version(fname):
+ with open(fname, 'r') as f:
+ ver_pattern = re.compile("# Linux/.* Kernel Configuration")
+ if not json_mode:
+ print('[+] Trying to detect kernel version in "{}"...'.format(fname))
+ for line in f.readlines():
+ if ver_pattern.match(line):
+ line = line.strip()
+ if not json_mode:
+ print('[+] Found version line: "{}"'.format(line))
+ parts = line.split()
+ ver_str = parts[2]
+ ver_numbers = ver_str.split('.')
+ if len(ver_numbers) < 3 or not ver_numbers[0].isdigit() or not ver_numbers[1].isdigit():
+ msg = 'failed to parse the version "' + ver_str + '"'
+ return None, msg
+ else:
+ return (int(ver_numbers[0]), int(ver_numbers[1])), None
+ return None, 'no kernel version detected'
+
+