aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorStanislav Boboň2020-10-15 08:46:23 +0200
committerStanislav Boboň2020-10-15 09:19:58 +0200
commitc702d77f31719e34ae80be7c81cade94b5fa3128 (patch)
tree076b36160d567fd076d1d427458a0f1dfba73285
parentf8deb9d06b7109f225a93475667d4ce2e4fad2a7 (diff)
downloadsec-certs-c702d77f31719e34ae80be7c81cade94b5fa3128.tar.gz
sec-certs-c702d77f31719e34ae80be7c81cade94b5fa3128.tar.zst
sec-certs-c702d77f31719e34ae80be7c81cade94b5fa3128.zip
major changes
-rw-r--r--src/extract_certificates.py231
1 files changed, 142 insertions, 89 deletions
diff --git a/src/extract_certificates.py b/src/extract_certificates.py
index 940269b1..5e822de8 100644
--- a/src/extract_certificates.py
+++ b/src/extract_certificates.py
@@ -12,8 +12,8 @@ from analyze_certificates import is_in_dict
from cert_rules import rules
from enum import Enum
import matplotlib.pyplot as plt
-plt.rcdefaults()
+plt.rcdefaults()
# if True, then exception is raised when unexpect intermediate number is obtained
# Used as sanity check during development to detect sudden drop in number of extracted features
@@ -22,7 +22,7 @@ APPEND_DETAILED_MATCH_MATCHES = False
VERBOSE = False
FILE_ERRORS_STRATEGY = 'surrogateescape'
'replace'
-#FILE_ERRORS_STRATEGY = 'strict'
+# FILE_ERRORS_STRATEGY = 'strict'
CC_WEB_URL = 'https://www.commoncriteriaportal.org'
PDF2TEXT_CONVERT = 'pdftotext -raw'
@@ -137,7 +137,8 @@ def set_match_string(items, key_name, new_value):
key_name, old_value, new_value))
-def parse_cert_file(file_name, search_rules, fips_items=None, limit_max_lines=-1, line_separator=LINE_SEPARATOR, should_censure_right_away=False):
+def parse_cert_file(file_name, search_rules, limit_max_lines=-1, line_separator=LINE_SEPARATOR,
+ should_censure_right_away=False, fips_items=None, ):
whole_text, whole_text_with_newlines, was_unicode_decode_error = load_cert_file(
file_name, limit_max_lines, line_separator)
@@ -167,7 +168,7 @@ def parse_cert_file(file_name, search_rules, fips_items=None, limit_max_lines=-1
for x in fips_items[file_name]['fips_algorithms']]
match_cert_id = ''.join(filter(str.isdigit, match))
-# if file_name == '/home/stan/sec-certs-master/files/fips/security_policies/3676.html.txt':
+ # if file_name == '/home/stan/sec-certs-master/files/fips/security_policies/3676.html.txt':
for fips_cert in certs:
for actual_cert in fips_cert:
@@ -190,7 +191,7 @@ def parse_cert_file(file_name, search_rules, fips_items=None, limit_max_lines=-1
# estimate line in original text file
# line_number = get_line_number(lines, line_length_compensation, match_span[0])
# start index, end index, line number
- #items_found[rule][match][TAG_MATCH_MATCHES].append([match_span[0], match_span[1], line_number])
+ # items_found[rule][match][TAG_MATCH_MATCHES].append([match_span[0], match_span[1], line_number])
if APPEND_DETAILED_MATCH_MATCHES:
items_found[rule][match][TAG_MATCH_MATCHES].append(
[match_span[0], match_span[1]])
@@ -291,7 +292,7 @@ def estimate_cert_id(frontpage_scan, keywords_scan, file_name):
matches = re.findall(rule, file_name_no_suff)
if len(matches) > 0:
# we found cert id directly in name
- #print(' -> cert id found directly in certificate name: {}'.format(matches[0]))
+ # print(' -> cert id found directly in certificate name: {}'.format(matches[0]))
filename_cert_id = matches[0]
if VERBOSE:
@@ -376,7 +377,7 @@ def search_only_headers_bsi(walk_dir):
file_ext = file_name[file_name.rfind('.'):]
if file_ext != '.txt':
continue
-# print('*** {} ***'.format(file_name))
+ # print('*** {} ***'.format(file_name))
no_match_yet = True
#
@@ -410,7 +411,8 @@ def search_only_headers_bsi(walk_dir):
from_keyword_len = len(from_keyword)
if certified_item.find(from_keyword) != -1:
print(
- 'string **{}** detected in certified item - shall not be here, fixing...'.format(from_keyword))
+ 'string **{}** detected in certified item - shall not be here, fixing...'.format(
+ from_keyword))
certified_item_first = certified_item[:certified_item.find(
from_keyword)]
developer = certified_item[certified_item.find(
@@ -488,58 +490,98 @@ def search_only_headers_anssi(walk_dir):
HEADER_DUPLICITIES = 4
rules_certificate_preface = [
- (HEADER_TYPE.HEADER_FULL, 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.*)Conformité à un profil de protection(.+)Critères d\'évaluation et version(.+)Niveau d\'évaluation(.+)Développeurs(.+)Centre d\'évaluation(.+)Accords de reconnaissance applicables'),
- (HEADER_TYPE.HEADER_FULL, 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.*)Conformité à un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeurs(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables'),
- (HEADER_TYPE.HEADER_FULL, 'Référence du rapport de certification(.+)Nom du produit(.+)()Conformité à un profil de protection(.+)Critères d\'évaluation et version(.+)Niveau d\'évaluation(.+)Développeur (.+)Centre d\'évaluation(.+)Accords de reconnaissance applicables'),
- (HEADER_TYPE.HEADER_FULL, 'Référence du rapport de certification(.+)Nom des produits(.+)Référence/version des produits(.+)Conformité à un profil de protection(.+)Critères d\'évaluation et version(.+)Niveau d\'évaluation(.+)Développeur\(s\)(.+)Centre d\'évaluation(.+)Accords de reconnaissance applicables'),
- (HEADER_TYPE.HEADER_FULL, 'Référence du rapport de certification(.+)Nom des produits(.+)Référence/version des produits(.+)Conformité à un profil de protection(.+)Critères d\'évaluation et version(.+)Niveau d\'évaluation(.+)Développeur (.+)Centre d\'évaluation(.+)Accords de reconnaissance'),
- (HEADER_TYPE.HEADER_FULL, 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité aux profils de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur\(s\)(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables'),
- (HEADER_TYPE.HEADER_FULL, 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité à un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur\(s\)(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables'),
- (HEADER_TYPE.HEADER_FULL, 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité à un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur (.+)Centre d’évaluation(.+)Accords de reconnaissance applicables'),
- (HEADER_TYPE.HEADER_FULL, 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité à des profils de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeurs(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables'),
- (HEADER_TYPE.HEADER_FULL, 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité aux profils de protection(.+)Critères d\’évaluation et version(.+)Niveau d\’évaluation(.+)Développeurs(.+)Centre d\’évaluation(.+)Accords de reconnaissance applicables'),
- (HEADER_TYPE.HEADER_FULL, 'Référence du rapport de certification(.+)Nom du produit \(référence/version\)(.+)Nom de la TOE \(référence/version\)(.+)Conformité à un profil de protection(.+)Critères d\’évaluation et version(.+)Niveau d\’évaluation(.+)Développeurs(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables'),
- (HEADER_TYPE.HEADER_FULL, 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité aux profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur\(s\)(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables'),
- (HEADER_TYPE.HEADER_FULL, 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité à un profil de protection(.+)Critères d\'évaluation et version(.+)Niveau d\'évaluation(.+)Développeur\(s\)(.+)Centre d\'évaluation(.+)Accords de reconnaissance applicables'),
- (HEADER_TYPE.HEADER_FULL, 'Référence du rapport de certification(.+)Nom du produit \(référence/version\)(.+)Nom de la TOE \(référence/version\)(.+)Conformité à un profil de protection(.+)Critères d\'évaluation et version(.+)Niveau d\'évaluation(.+)Développeurs(.+)Centre d\'évaluation(.+)Accords de reconnaissance applicables'),
- (HEADER_TYPE.HEADER_FULL, 'Référence du rapport de certification(.+)Nom du produit(.+)Référence du produit(.+)Conformité à un profil de protection(.+)Critères d\'évaluation et version(.+)Niveau d\'évaluation(.+)Développeurs(.+)Centre d\'évaluation(.+)Accords de reconnaissance applicables'),
- (HEADER_TYPE.HEADER_FULL, 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité aux profils de protection(.+)Critères d\'évaluation et version(.+)Niveau d\'évaluation(.+)Développeurs(.+)Centre d\'évaluation(.+)Accords de reconnaissance applicables'),
+ (HEADER_TYPE.HEADER_FULL,
+ 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.*)Conformité à un profil de protection(.+)Critères d\'évaluation et version(.+)Niveau d\'évaluation(.+)Développeurs(.+)Centre d\'évaluation(.+)Accords de reconnaissance applicables'),
+ (HEADER_TYPE.HEADER_FULL,
+ 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.*)Conformité à un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeurs(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables'),
+ (HEADER_TYPE.HEADER_FULL,
+ 'Référence du rapport de certification(.+)Nom du produit(.+)()Conformité à un profil de protection(.+)Critères d\'évaluation et version(.+)Niveau d\'évaluation(.+)Développeur (.+)Centre d\'évaluation(.+)Accords de reconnaissance applicables'),
+ (HEADER_TYPE.HEADER_FULL,
+ 'Référence du rapport de certification(.+)Nom des produits(.+)Référence/version des produits(.+)Conformité à un profil de protection(.+)Critères d\'évaluation et version(.+)Niveau d\'évaluation(.+)Développeur\(s\)(.+)Centre d\'évaluation(.+)Accords de reconnaissance applicables'),
+ (HEADER_TYPE.HEADER_FULL,
+ 'Référence du rapport de certification(.+)Nom des produits(.+)Référence/version des produits(.+)Conformité à un profil de protection(.+)Critères d\'évaluation et version(.+)Niveau d\'évaluation(.+)Développeur (.+)Centre d\'évaluation(.+)Accords de reconnaissance'),
+ (HEADER_TYPE.HEADER_FULL,
+ 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité aux profils de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur\(s\)(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables'),
+ (HEADER_TYPE.HEADER_FULL,
+ 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité à un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur\(s\)(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables'),
+ (HEADER_TYPE.HEADER_FULL,
+ 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité à un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur (.+)Centre d’évaluation(.+)Accords de reconnaissance applicables'),
+ (HEADER_TYPE.HEADER_FULL,
+ 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité à des profils de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeurs(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables'),
+ (HEADER_TYPE.HEADER_FULL,
+ 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité aux profils de protection(.+)Critères d\’évaluation et version(.+)Niveau d\’évaluation(.+)Développeurs(.+)Centre d\’évaluation(.+)Accords de reconnaissance applicables'),
+ (HEADER_TYPE.HEADER_FULL,
+ 'Référence du rapport de certification(.+)Nom du produit \(référence/version\)(.+)Nom de la TOE \(référence/version\)(.+)Conformité à un profil de protection(.+)Critères d\’évaluation et version(.+)Niveau d\’évaluation(.+)Développeurs(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables'),
+ (HEADER_TYPE.HEADER_FULL,
+ 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité aux profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur\(s\)(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables'),
+ (HEADER_TYPE.HEADER_FULL,
+ 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité à un profil de protection(.+)Critères d\'évaluation et version(.+)Niveau d\'évaluation(.+)Développeur\(s\)(.+)Centre d\'évaluation(.+)Accords de reconnaissance applicables'),
+ (HEADER_TYPE.HEADER_FULL,
+ 'Référence du rapport de certification(.+)Nom du produit \(référence/version\)(.+)Nom de la TOE \(référence/version\)(.+)Conformité à un profil de protection(.+)Critères d\'évaluation et version(.+)Niveau d\'évaluation(.+)Développeurs(.+)Centre d\'évaluation(.+)Accords de reconnaissance applicables'),
+ (HEADER_TYPE.HEADER_FULL,
+ 'Référence du rapport de certification(.+)Nom du produit(.+)Référence du produit(.+)Conformité à un profil de protection(.+)Critères d\'évaluation et version(.+)Niveau d\'évaluation(.+)Développeurs(.+)Centre d\'évaluation(.+)Accords de reconnaissance applicables'),
+ (HEADER_TYPE.HEADER_FULL,
+ 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité aux profils de protection(.+)Critères d\'évaluation et version(.+)Niveau d\'évaluation(.+)Développeurs(.+)Centre d\'évaluation(.+)Accords de reconnaissance applicables'),
- (HEADER_TYPE.HEADER_FULL, 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité à un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeurs(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables'),
- (HEADER_TYPE.HEADER_FULL, 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité à un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur\(s\)(.+)d’évaluation(.+)Accords de reconnaissance applicables'),
- (HEADER_TYPE.HEADER_FULL, 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité à un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur (.+)Centre d’évaluation(.+)Accords de reconnaissance applicables'),
- (HEADER_TYPE.HEADER_FULL, 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité à des profils de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeurs(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables'),
- (HEADER_TYPE.HEADER_FULL, 'Référence du rapport de certification(.+)Nom du produit \(référence/version\)(.+)Nom de la TOE \(référence/version\)(.+)Conformité à un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeurs(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables'),
- (HEADER_TYPE.HEADER_FULL, 'Certification Report(.+)Nom du produit(.+)Référence/version du produit(.*)Conformité à un profil de protection(.+)Critères d\'évaluation et version(.+)Niveau d\'évaluation(.+)Développeurs(.+)Centre d\'évaluation(.+)Accords de reconnaissance applicables'),
- (HEADER_TYPE.HEADER_FULL, 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité aux profisl de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeurs(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables'),
- (HEADER_TYPE.HEADER_FULL, 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité à un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur (.+)Centres d’évaluation(.+)Accords de reconnaissance applicables'),
- (HEADER_TYPE.HEADER_FULL, 'Référence du rapport de certification(.+)Nom du produit(.+)Version du produit(.+)Conformité à un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur (.+)Centre d’évaluation(.+)Accords de reconnaissance applicables'),
- (HEADER_TYPE.HEADER_FULL, 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité aux profils de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur\(s\)(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables'),
- (HEADER_TYPE.HEADER_FULL, 'Référence du rapport de certification(.+)Nom du produit(.+)Versions du produit(.+)Conformité à un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur (.+)Centre d’évaluation(.+)Accords de reconnaissance applicables'),
- (HEADER_TYPE.HEADER_FULL, 'Référence du rapport de certification(.+)Nom du produit(.+)Référence du produit(.+)Conformité à un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeurs(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables'),
- (HEADER_TYPE.HEADER_FULL, 'Certification report reference(.+)Product name(.+)Product reference(.+)Protection profile conformity(.+)Evaluation criteria and version(.+)Evaluation level(.+)Developer (.+)Evaluation facility(.+)Recognition arrangements'),
- (HEADER_TYPE.HEADER_FULL, 'Certification report reference(.+)Product name(.+)Product reference(.+)Protection profile conformity(.+)Evaluation criteria and version(.+)Evaluation level(.+)Developer (.+)Evaluation facility(.+)Mutual Recognition Agreements'),
- (HEADER_TYPE.HEADER_FULL, 'Certification report reference(.+)Product name(.+)Product reference(.+)Protection profile conformity(.+)Evaluation criteria and version(.+)Evaluation level(.+)Developers(.+)Evaluation facility(.+)Recognition arrangements'),
- (HEADER_TYPE.HEADER_FULL, 'Certification report reference(.+)Product name(.+)Product reference(.+)Protection profile conformity(.+)Evaluation criteria and version(.+)Evaluation level(.+)Developer\(s\)(.+)Evaluation facility(.+)Recognition arrangements'),
- (HEADER_TYPE.HEADER_FULL, 'Certification report reference(.+)Products names(.+)Products references(.+)protection profile conformity(.+)Evaluation criteria and version(.+)Evaluation level(.+)Developers(.+)Evaluation facility(.+)Recognition arrangements'),
- (HEADER_TYPE.HEADER_FULL, 'Certification report reference(.+)Product name \(reference / version\)(.+)TOE name \(reference / version\)(.+)Protection profile conformity(.+)Evaluation criteria and version(.+)Evaluation level(.+)Developers(.+)Evaluation facility(.+)Recognition arrangements'),
- (HEADER_TYPE.HEADER_FULL, 'Certification report reference(.+)TOE name(.+)Product\'s reference/ version(.+)TOE\'s reference/ version(.+)Conformité à un profil de protection(.+)Evaluation criteria and version(.+)Evaluation level(.+)Developer (.+)Evaluation facility(.+)Recognition arrangements'),
+ (HEADER_TYPE.HEADER_FULL,
+ 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité à un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeurs(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables'),
+ (HEADER_TYPE.HEADER_FULL,
+ 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité à un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur\(s\)(.+)d’évaluation(.+)Accords de reconnaissance applicables'),
+ (HEADER_TYPE.HEADER_FULL,
+ 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité à un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur (.+)Centre d’évaluation(.+)Accords de reconnaissance applicables'),
+ (HEADER_TYPE.HEADER_FULL,
+ 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité à des profils de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeurs(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables'),
+ (HEADER_TYPE.HEADER_FULL,
+ 'Référence du rapport de certification(.+)Nom du produit \(référence/version\)(.+)Nom de la TOE \(référence/version\)(.+)Conformité à un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeurs(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables'),
+ (HEADER_TYPE.HEADER_FULL,
+ 'Certification Report(.+)Nom du produit(.+)Référence/version du produit(.*)Conformité à un profil de protection(.+)Critères d\'évaluation et version(.+)Niveau d\'évaluation(.+)Développeurs(.+)Centre d\'évaluation(.+)Accords de reconnaissance applicables'),
+ (HEADER_TYPE.HEADER_FULL,
+ 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité aux profisl de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeurs(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables'),
+ (HEADER_TYPE.HEADER_FULL,
+ 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité à un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur (.+)Centres d’évaluation(.+)Accords de reconnaissance applicables'),
+ (HEADER_TYPE.HEADER_FULL,
+ 'Référence du rapport de certification(.+)Nom du produit(.+)Version du produit(.+)Conformité à un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur (.+)Centre d’évaluation(.+)Accords de reconnaissance applicables'),
+ (HEADER_TYPE.HEADER_FULL,
+ 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité aux profils de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur\(s\)(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables'),
+ (HEADER_TYPE.HEADER_FULL,
+ 'Référence du rapport de certification(.+)Nom du produit(.+)Versions du produit(.+)Conformité à un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur (.+)Centre d’évaluation(.+)Accords de reconnaissance applicables'),
+ (HEADER_TYPE.HEADER_FULL,
+ 'Référence du rapport de certification(.+)Nom du produit(.+)Référence du produit(.+)Conformité à un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeurs(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables'),
+ (HEADER_TYPE.HEADER_FULL,
+ 'Certification report reference(.+)Product name(.+)Product reference(.+)Protection profile conformity(.+)Evaluation criteria and version(.+)Evaluation level(.+)Developer (.+)Evaluation facility(.+)Recognition arrangements'),
+ (HEADER_TYPE.HEADER_FULL,
+ 'Certification report reference(.+)Product name(.+)Product reference(.+)Protection profile conformity(.+)Evaluation criteria and version(.+)Evaluation level(.+)Developer (.+)Evaluation facility(.+)Mutual Recognition Agreements'),
+ (HEADER_TYPE.HEADER_FULL,
+ 'Certification report reference(.+)Product name(.+)Product reference(.+)Protection profile conformity(.+)Evaluation criteria and version(.+)Evaluation level(.+)Developers(.+)Evaluation facility(.+)Recognition arrangements'),
+ (HEADER_TYPE.HEADER_FULL,
+ 'Certification report reference(.+)Product name(.+)Product reference(.+)Protection profile conformity(.+)Evaluation criteria and version(.+)Evaluation level(.+)Developer\(s\)(.+)Evaluation facility(.+)Recognition arrangements'),
+ (HEADER_TYPE.HEADER_FULL,
+ 'Certification report reference(.+)Products names(.+)Products references(.+)protection profile conformity(.+)Evaluation criteria and version(.+)Evaluation level(.+)Developers(.+)Evaluation facility(.+)Recognition arrangements'),
+ (HEADER_TYPE.HEADER_FULL,
+ 'Certification report reference(.+)Product name \(reference / version\)(.+)TOE name \(reference / version\)(.+)Protection profile conformity(.+)Evaluation criteria and version(.+)Evaluation level(.+)Developers(.+)Evaluation facility(.+)Recognition arrangements'),
+ (HEADER_TYPE.HEADER_FULL,
+ 'Certification report reference(.+)TOE name(.+)Product\'s reference/ version(.+)TOE\'s reference/ version(.+)Conformité à un profil de protection(.+)Evaluation criteria and version(.+)Evaluation level(.+)Developer (.+)Evaluation facility(.+)Recognition arrangements'),
# corrupted text (duplicities)
- (HEADER_TYPE.HEADER_DUPLICITIES, 'Référencce du rapport de d certification n(.+)Nom du p produit(.+)Référencce/version du produit(.+)Conformiité à un profil de d protection(.+)Critères d d’évaluation ett version(.+)Niveau d’’évaluation(.+)Développ peurs(.+)Centre d’’évaluation(.+)Accords d de reconnaisssance applicab bles'),
+ (HEADER_TYPE.HEADER_DUPLICITIES,
+ 'Référencce du rapport de d certification n(.+)Nom du p produit(.+)Référencce/version du produit(.+)Conformiité à un profil de d protection(.+)Critères d d’évaluation ett version(.+)Niveau d’’évaluation(.+)Développ peurs(.+)Centre d’’évaluation(.+)Accords d de reconnaisssance applicab bles'),
# rules without product version
- (HEADER_TYPE.HEADER_MISSING_CERT_ITEM_VERSION, 'Référence du rapport de certification(.+)Nom et version du produit(.+)Conformité à un profil de protection(.+)Critères d\'évaluation et version(.+)Niveau d\'évaluation(.+)Développeurs(.+)Centre d\'évaluation(.+)Accords de reconnaissance applicables'),
- (HEADER_TYPE.HEADER_MISSING_CERT_ITEM_VERSION, 'Référence du rapport de certification(.+)Nom et version du produit(.+)Conformité à un profil de protection(.+)Critères d\'évaluation et version(.+)Niveau d\'évaluation(.+)Développeur (.+)Centre d\'évaluation(.+)Accords de reconnaissance applicables'),
- (HEADER_TYPE.HEADER_MISSING_CERT_ITEM_VERSION, 'Référence du rapport de certification(.+)Nom du produit(.+)Conformité à un profil de protection(.+)Critères d\'évaluation et version(.+)Niveau d\'évaluation(.+)Développeurs(.+)Centre d\'évaluation(.+)Accords de reconnaissance applicables'),
+ (HEADER_TYPE.HEADER_MISSING_CERT_ITEM_VERSION,
+ 'Référence du rapport de certification(.+)Nom et version du produit(.+)Conformité à un profil de protection(.+)Critères d\'évaluation et version(.+)Niveau d\'évaluation(.+)Développeurs(.+)Centre d\'évaluation(.+)Accords de reconnaissance applicables'),
+ (HEADER_TYPE.HEADER_MISSING_CERT_ITEM_VERSION,
+ 'Référence du rapport de certification(.+)Nom et version du produit(.+)Conformité à un profil de protection(.+)Critères d\'évaluation et version(.+)Niveau d\'évaluation(.+)Développeur (.+)Centre d\'évaluation(.+)Accords de reconnaissance applicables'),
+ (HEADER_TYPE.HEADER_MISSING_CERT_ITEM_VERSION,
+ 'Référence du rapport de certification(.+)Nom du produit(.+)Conformité à un profil de protection(.+)Critères d\'évaluation et version(.+)Niveau d\'évaluation(.+)Développeurs(.+)Centre d\'évaluation(.+)Accords de reconnaissance applicables'),
# rules without protection profile
- (HEADER_TYPE.HEADER_MISSING_PROTECTION_PROFILES, 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Critères d\'évaluation et version(.+)Niveau d\'évaluation(.+)Développeurs(.+)Centre d\'évaluation(.+)Accords de reconnaissance applicables'),
+ (HEADER_TYPE.HEADER_MISSING_PROTECTION_PROFILES,
+ 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Critères d\'évaluation et version(.+)Niveau d\'évaluation(.+)Développeurs(.+)Centre d\'évaluation(.+)Accords de reconnaissance applicables'),
]
-# rules_certificate_preface = [
-# (HEADER_TYPE.HEADER_FULL, 'ddddd'),
-# ]
+ # rules_certificate_preface = [
+ # (HEADER_TYPE.HEADER_FULL, 'ddddd'),
+ # ]
# statistics about rules success rate
num_rules_hits = {}
@@ -555,7 +597,7 @@ def search_only_headers_anssi(walk_dir):
file_ext = file_name[file_name.rfind('.'):]
if file_ext != '.txt':
continue
-# print('*** {} ***'.format(file_name))
+ # print('*** {} ***'.format(file_name))
whole_text, whole_text_with_newlines, was_unicode_decode_error = load_cert_file(
file_name)
@@ -736,7 +778,7 @@ def search_pp_only_headers(walk_dir):
# 'Direction centrale de la sécurité des systèmes d\’information(.+)?Date[ ]*:(.+)?Reference[ ]*:(.+)?Version[ ]*:(.+)?Courtesy Translation[ ]*Courtesy translation.+?under the reference (DCSSI-PP-[0-9/]+)?\.[ ]*Page'),
(HEADER_TYPE.FRONT_DCSSI_TYPE4,
'Direction centrale de la sécurité des systèmes d’information (.+)?(?:Creation date|Date)[ ]*:(.+)?Reference[ ]*:(.+)?Version[ ]*:(.+)?Courtesy Translation[ ]*Courtesy translation.+?under the reference (DCSSI-PP-[0-9/]+)?\.[ ]*Page'),
- #'Direction centrale de la sécurité des systèmes d’information Time-stamping System Protection Profile Date : July 18, 2008 Reference : PP-SH-CCv3.1 Version : 1.7 Courtesy Translation Courtesy translation of the protection profile registered and certified by the French Certification Body under the reference DCSSI-PP-2008/07. Page'
+ # 'Direction centrale de la sécurité des systèmes d’information Time-stamping System Protection Profile Date : July 18, 2008 Reference : PP-SH-CCv3.1 Version : 1.7 Courtesy Translation Courtesy translation of the protection profile registered and certified by the French Certification Body under the reference DCSSI-PP-2008/07. Page'
(HEADER_TYPE.DCSSI_TYPE5,
'Protection Profile identification[ ]*Title[ ]*[:]*(.+)?Author[ ]*[:]*(.+)?Version[ ]*[:]*(.+)?,(.+)?Sponsor[ ]*[:]*(.+)?CC version[ ]*[:]*(.+)?(?:Context|Protection Profile introduction)'),
(HEADER_TYPE.DCSSI_TYPE6,
@@ -753,7 +795,7 @@ def search_pp_only_headers(walk_dir):
file_ext = file_name[file_name.rfind('.'):]
if file_ext != '.txt':
continue
-# print('*** {} ***'.format(file_name))
+ # print('*** {} ***'.format(file_name))
#
# Process page with more detailed protection profile info
@@ -1065,13 +1107,14 @@ def extract_protectionprofiles_frontpage(walk_dir, write_output_file=True):
return pp_items_found
-def extract_certificates_keywords(walk_dir, fragments_dir, file_prefix, fips_items=None, write_output_file=True, should_censure_right_away=False):
+def extract_certificates_keywords(walk_dir, fragments_dir, file_prefix, write_output_file=True,
+ should_censure_right_away=False, fips_items=None):
# ensure existence of fragments folder
if not os.path.exists(fragments_dir):
os.makedirs(fragments_dir)
print("***EXTRACT KEYWORDS***")
all_items_found = {}
- cert_id = {}
+ # cert_id = {}
for file_name in search_files(walk_dir):
if not os.path.isfile(file_name):
continue
@@ -1079,17 +1122,17 @@ def extract_certificates_keywords(walk_dir, fragments_dir, file_prefix, fips_ite
if file_ext != '.txt':
continue
-# print('*** {} ***'.format(file_name))
+ # print('*** {} ***'.format(file_name))
file_cert_name = os.path.splitext(
os.path.splitext(os.path.basename(file_name))[0])[0]
# parse certificate, return all matches
all_items_found[file_cert_name], modified_cert_file = parse_cert_file(
- file_name, rules, fips_items, -1, should_censure_right_away=should_censure_right_away)
+ file_name, rules, -1, should_censure_right_away=should_censure_right_away, fips_items=fips_items)
# try to establish the certificate id of the current certificate
- cert_id[file_cert_name] = estimate_cert_id(
- None, all_items_found[file_cert_name], file_name)
+ # cert_id[file_cert_name] = estimate_cert_id(
+ # None, all_items_found[file_cert_name], file_name)
# save report text with highlighted/replaced matches into \\fragments\\ directory
base_path = file_name[:file_name.rfind('/')]
@@ -1104,13 +1147,13 @@ def extract_certificates_keywords(walk_dir, fragments_dir, file_prefix, fips_ite
write_file.write(json.dumps(
all_items_found, indent=4, sort_keys=True))
- print('\nTotal matches found in separate files:')
+ # print('\nTotal matches found in separate files:')
# print_total_matches_in_files(all_items_found_count)
- print('\nFile name and estimated certificate ID:')
+ # print('\nFile name and estimated certificate ID:')
# print_guessed_cert_id(cert_id)
- #depricated_print_dot_graph_keywordsonly(['rules_cert_id'], all_items_found, cert_id, walk_dir, 'certid_graph_from_keywords.dot', True)
+ # depricated_print_dot_graph_keywordsonly(['rules_cert_id'], all_items_found, cert_id, walk_dir, 'certid_graph_from_keywords.dot', True)
total_items_found = 0
for file_name in all_items_found:
@@ -1127,11 +1170,11 @@ def extract_certificates_keywords(walk_dir, fragments_dir, file_prefix, fips_ite
for match in items_found[rule]:
if match not in all_matches:
print(match)
-# all_matches.append(match)
+ # all_matches.append(match)
sorted_all_matches = sorted(all_matches)
-# for match in sorted_all_matches:
-# print(match)
+ # for match in sorted_all_matches:
+ # print(match)
# verify total matches found
print('\nTotal matches found: {}'.format(total_items_found))
@@ -1150,7 +1193,7 @@ def extract_certificates_pdfmeta(walk_dir, file_prefix, write_output_file=True):
continue
print("***EXTRACT PDFMETA***")
-# print('*** {} ***'.format(file_name))
+ # print('*** {} ***'.format(file_name))
item = {}
item['pdf_file_size_bytes'] = os.path.getsize(file_name)
@@ -1180,7 +1223,8 @@ def extract_certificates_pdfmeta(walk_dir, file_prefix, write_output_file=True):
if counter % 100 == 0:
# store results into file with fixed name
- with open("{}_data_pdfmeta_{}.json".format(file_prefix, counter), "w", errors=FILE_ERRORS_STRATEGY) as write_file:
+ with open("{}_data_pdfmeta_{}.json".format(file_prefix, counter), "w",
+ errors=FILE_ERRORS_STRATEGY) as write_file:
write_file.write(json.dumps(
all_items_found, indent=4, sort_keys=True))
counter += 1
@@ -1204,11 +1248,10 @@ def parse_product_updates(updates_chunk, link_files_updates):
maintenance_reports = []
rule_with_maintainance_ST = '.*?([0-9]+?-[0-9]+?-[0-9]+?) (.+?)\<br style=' \
- '.*?\<a href="(.+?)" title="Maintenance Report' \
- '.*?\<a href="(.+?)" title="Maintenance ST'
+ '.*?\<a href="(.+?)" title="Maintenance Report' \
+ '.*?\<a href="(.+?)" title="Maintenance ST'
rule_without_maintainance_ST = '.*?([0-9]+?-[0-9]+?-[0-9]+?) (.+?)\<br style=' \
- '.*?\<a href="(.+?)" title="Maintenance Report'\
-
+ '.*?\<a href="(.+?)" title="Maintenance Report'
if updates_chunk.find('Maintenance Report(s)') != -1:
start_pos = updates_chunk.find('Maintenance Report(s)</div>')
start_pos = updates_chunk.find('<li>', start_pos)
@@ -1252,7 +1295,8 @@ def parse_product_updates(updates_chunk, link_files_updates):
items_found['link_security_target_file_name'] = st_file_name
link_files_updates.append(
- (items_found['maintenance_link_cert_report'], cert_file_name, items_found['maintenance_link_security_target'], st_file_name))
+ (items_found['maintenance_link_cert_report'], cert_file_name,
+ items_found['maintenance_link_security_target'], st_file_name))
maintenance_reports.append(items_found)
@@ -1284,7 +1328,7 @@ def extract_certificates_metadata_html(file_name):
items_found_all = {}
download_files_certs = []
download_files_updates = []
-# print('*** {} ***'.format(file_name))
+ # print('*** {} ***'.format(file_name))
whole_text = load_cert_html_file(file_name)
@@ -1321,7 +1365,8 @@ def extract_certificates_metadata_html(file_name):
# IMPORTANT: order regexes based on their specificity - the most specific goes first
rules_cc_html = [
- (HEADER_TYPE.HEADER_FULL, '\<tr class=(?:""|"even")\>[ ]+\<td class="b"\>(.+?)\<a name="(.+?)" style=.+?\<!-- \<a href="(.+?)" title="Vendor\'s web site" target="_blank"\>(.+?)</a> -->'
+ (HEADER_TYPE.HEADER_FULL,
+ '\<tr class=(?:""|"even")\>[ ]+\<td class="b"\>(.+?)\<a name="(.+?)" style=.+?\<!-- \<a href="(.+?)" title="Vendor\'s web site" target="_blank"\>(.+?)</a> -->'
'.+?\<a href="(.+?)" title="Certification Report:.+?" target="_blank" class="button2"\>Certification Report\</a\>'
'.+?\<a href="(.+?)" title="Security Target:.+?" target="_blank" class="button2">Security Target</a>'
'.+?\<!-- ------ ------ ------ Product Updates ------ ------ ------ --\>'
@@ -1331,7 +1376,8 @@ def extract_certificates_metadata_html(file_name):
'.+?\<td style="text-align:center"\>(.*?)\</td\>'
'[ ]+?\<td>(.+?)\</td\>'),
- (HEADER_TYPE.HEADER_MISSING_VENDOR_WEB, '\<tr class=(?:""|"even")\>[ ]+\<td class="b"\>(.+?)\<a name="(.+?)" style=.+?'
+ (HEADER_TYPE.HEADER_MISSING_VENDOR_WEB,
+ '\<tr class=(?:""|"even")\>[ ]+\<td class="b"\>(.+?)\<a name="(.+?)" style=.+?'
'.+?\<a href="(.+?)" title="Certification Report:.+?" target="_blank" class="button2"\>Certification Report\</a\>'
'.+?\<a href="(.+?)" title="Security Target:.+?" target="_blank" class="button2">Security Target</a>'
'.+?\<!-- ------ ------ ------ Product Updates ------ ------ ------ --\>'
@@ -1345,7 +1391,7 @@ def extract_certificates_metadata_html(file_name):
no_match_yet = True
for rule in rules_cc_html:
if not no_match_yet:
- continue # search only the first match
+ continue # search only the first match
rule_and_sep = rule[1]
@@ -1359,7 +1405,7 @@ def extract_certificates_metadata_html(file_name):
# insert rule if at least one match for it was found
# if rule not in items_found[TAG_HEADER_MATCH_RULES]:
- # items_found[TAG_HEADER_MATCH_RULES].append(rule[1])
+ # items_found[TAG_HEADER_MATCH_RULES].append(rule[1])
match_groups = m.groups()
@@ -1390,7 +1436,8 @@ def extract_certificates_metadata_html(file_name):
items_found['link_security_target'])
items_found['link_security_target_file_name'] = st_file_name
download_files_certs.append(
- (items_found['link_cert_report'], cert_file_name, items_found['link_security_target'], st_file_name))
+ (
+ items_found['link_cert_report'], cert_file_name, items_found['link_security_target'], st_file_name))
index_next_item += 1
items_found['maintainance_updates'] = parse_product_updates(
@@ -1452,7 +1499,7 @@ def extract_certificates_metadata_csv(file_name):
for row in csv_reader:
if line_count == 0:
expected_columns = len(row)
- #print(f'Column names are {", ".join(row)}')
+ # print(f'Column names are {", ".join(row)}')
line_count += 1
else:
if no_further_maintainance:
@@ -1460,8 +1507,9 @@ def extract_certificates_metadata_csv(file_name):
if len(row) == 0:
break
if len(row) != expected_columns:
- print('WARNING: Incorrect number of columns in row {} (likely separator , in item name), going to fix...'.format(
- line_count))
+ print(
+ 'WARNING: Incorrect number of columns in row {} (likely separator , in item name), going to fix...'.format(
+ line_count))
# trying to fix
if row[4].find('EAL') == -1:
row[1] = row[1] + row[2] # fix name
@@ -1611,8 +1659,9 @@ def extract_pp_metadata_csv(file_name):
if len(row) == 0:
break
if len(row) != expected_columns:
- print('WARNING: Incorrect number of columns in row {} (likely separator , in item name), going to fix...'.format(
- line_count))
+ print(
+ 'WARNING: Incorrect number of columns in row {} (likely separator , in item name), going to fix...'.format(
+ line_count))
# trying to fix
if len(row) == expected_columns + 2:
row[9] = row[9] + row[10] + row[11]
@@ -2011,7 +2060,7 @@ def collate_certificates_data(all_html, all_csv, all_front, all_keywords, all_pd
file_name_pdf = file_name[:file_name.rfind('__')]
file_name_txt = file_name_pdf[:file_name_pdf.rfind('.')] + '.txt'
- #file_name_st = all_csv[file_name]['csv_scan']['link_security_target_file_name']
+ # file_name_st = all_csv[file_name]['csv_scan']['link_security_target_file_name']
if is_in_dict(all_csv, [file_name, 'csv_scan', 'link_security_target']):
file_name_st = extract_file_name_from_url(
all_csv[file_name]['csv_scan']['link_security_target'])
@@ -2038,16 +2087,19 @@ def collate_certificates_data(all_html, all_csv, all_front, all_keywords, all_pd
all_cert_items[file_name]['frontpage_scan'] = all_front[file_name_to_front_name_mapping[file_name_txt]]
frontpage_scan = all_front[file_name_to_front_name_mapping[file_name_txt]]
if file_name_txt in file_name_to_keywords_name_mapping.keys():
- all_cert_items[file_name]['keywords_scan'] = all_keywords[file_name_to_keywords_name_mapping[file_name_txt][0]]
+ all_cert_items[file_name]['keywords_scan'] = all_keywords[
+ file_name_to_keywords_name_mapping[file_name_txt][0]]
# was paired
file_name_to_keywords_name_mapping[file_name_txt][1] = 1
keywords_scan = all_keywords[file_name_to_keywords_name_mapping[file_name_txt][0]]
if file_name_st_txt in file_name_to_keywords_name_mapping.keys():
- all_cert_items[file_name]['st_keywords_scan'] = all_keywords[file_name_to_keywords_name_mapping[file_name_st_txt][0]]
+ all_cert_items[file_name]['st_keywords_scan'] = all_keywords[
+ file_name_to_keywords_name_mapping[file_name_st_txt][0]]
# was paired
file_name_to_keywords_name_mapping[file_name_st_txt][1] = 1
if file_name_pdf in file_name_to_pdfmeta_name_mapping.keys():
- all_cert_items[file_name]['pdfmeta_scan'] = all_pdf_meta[file_name_to_pdfmeta_name_mapping[file_name_pdf][0]]
+ all_cert_items[file_name]['pdfmeta_scan'] = all_pdf_meta[
+ file_name_to_pdfmeta_name_mapping[file_name_pdf][0]]
# was paired
file_name_to_pdfmeta_name_mapping[file_name_pdf][1] = 1
else:
@@ -2094,7 +2146,8 @@ def collate_certificates_data(all_html, all_csv, all_front, all_keywords, all_pd
if file_name_keyword_txt == file_name_st_txt:
if file_name_st_txt in file_name_to_keywords_name_mapping.keys():
- update['st_keywords_scan'] = all_keywords[file_name_to_keywords_name_mapping[file_name_st_txt][0]]
+ update['st_keywords_scan'] = all_keywords[
+ file_name_to_keywords_name_mapping[file_name_st_txt][0]]
if file_name_to_keywords_name_mapping[file_name_st_txt][1] == 1:
print('WARNING: {} already paired'.format(
file_name_to_keywords_name_mapping[file_name_st_txt][0]))