diff options
| author | Adam Janovsky | 2022-10-19 15:42:25 +0200 |
|---|---|---|
| committer | Adam Janovsky | 2022-10-19 15:42:25 +0200 |
| commit | 17c7a55b45246d19126f6349239e798d0981eca1 (patch) | |
| tree | c0d50be9519c0296c729936e3d1bf1d4a1d50a38 | |
| parent | ba50b3a6aaba0988621f105a563974f998886fea (diff) | |
| parent | 361d68593b827d2021461acd01826b695a8c7b08 (diff) | |
| download | sec-certs-17c7a55b45246d19126f6349239e798d0981eca1.tar.gz sec-certs-17c7a55b45246d19126f6349239e798d0981eca1.tar.zst sec-certs-17c7a55b45246d19126f6349239e798d0981eca1.zip | |
merge fresh main
| -rw-r--r-- | .pre-commit-config.yaml | 2 | ||||
| -rw-r--r-- | data/cert_id_eval/duplicate_ids.csv | 8 | ||||
| -rw-r--r-- | data/cert_id_eval/missing_ids.csv | 13 | ||||
| -rw-r--r-- | data/cpe_eval/random.csv | 101 | ||||
| -rw-r--r-- | docs/conf.py | 5 | ||||
| -rw-r--r-- | docs/index.md | 9 | ||||
| -rw-r--r-- | notebooks/cc/cpe_eval.ipynb | 148 | ||||
| -rw-r--r-- | notebooks/cc/references.ipynb | 433 | ||||
| -rw-r--r-- | notebooks/cert_id_eval.ipynb | 18 | ||||
| -rw-r--r-- | notebooks/final_run.ipynb | 729 | ||||
| -rw-r--r-- | notebooks/latex_plotting.ipynb | 2 | ||||
| -rw-r--r-- | sec_certs/cert_rules.py | 11 | ||||
| -rw-r--r-- | sec_certs/config/settings.yaml | 4 | ||||
| -rw-r--r-- | sec_certs/dataset/dataset.py | 63 | ||||
| -rw-r--r-- | sec_certs/dataset/fips.py | 5 | ||||
| -rw-r--r-- | sec_certs/model/cpe_matching.py | 111 | ||||
| -rw-r--r-- | sec_certs/model/evaluation.py | 37 | ||||
| -rw-r--r-- | sec_certs/rules.yaml | 2 | ||||
| -rw-r--r-- | sec_certs/sample/cpe.py | 2 | ||||
| -rw-r--r-- | tests/data/settings_test.yaml | 22 | ||||
| -rw-r--r-- | tests/test_fips_oop.py | 6 |
21 files changed, 1296 insertions, 435 deletions
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 2fae957f..60bccb72 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -10,7 +10,7 @@ repos: - id: isort args: ['--check-only'] - repo: https://github.com/pre-commit/mirrors-mypy - rev: 'v0.961' + rev: 'v0.982' hooks: - id: mypy additional_dependencies: diff --git a/data/cert_id_eval/duplicate_ids.csv b/data/cert_id_eval/duplicate_ids.csv index 4e08e6a8..b24bc4f3 100644 --- a/data/cert_id_eval/duplicate_ids.csv +++ b/data/cert_id_eval/duplicate_ids.csv @@ -137,4 +137,10 @@ ANSSI-CC-2018/58,d57c84efd02c4bb7,tp,ANSSI-CC-2018/58,, CCEVS-VR-03-0044,814a2ac0aeae08b1,tp,CCEVS-VR-03-0044,clone, CCEVS-VR-03-0044,02a31d0ed42e4ff1,tp,CCEVS-VR-03-0044,clone, ANSSI-CC-2018/56,6df8f86449e56c05,tp,ANSSI-CC-2018/56,, -ANSSI-CC-2018/56,c5e25f90c7006546,fp,ANSSI-CC-2018/56v2,number of mentions of component certificate higher than actual,frontpage match
\ No newline at end of file +ANSSI-CC-2018/56,c5e25f90c7006546,fp,ANSSI-CC-2018/56v2,number of mentions of component certificate higher than actual,frontpage match +ANSSI-CC-2020/42,dcb259767b98f381,tp,ANSSI-CC-2020/42,, +ANSSI-CC-2020/42,4c017087976d05eb,fp,ANSSI-CC-2020/49,number of mentions of component certificate higher than actual,frontpage match +ANSSI-CC-2021/34,60f31793e1e5f4e1,tp,ANSSI-CC-2021/34,, +ANSSI-CC-2021/34,3cbdd57de3f32ad0,fp,ANSSI-CC-2021/34-R01,number of mentions of component certificate higher than actual,frontpage match +ANSSI-CC-2021/29,6ed3cd21c6a2c9d0,tp,ANSSI-CC-2021/29,, +ANSSI-CC-2021/29,e34879f5664b1908,fp,ANSSI-CC-2021/36,number of mentions of component certificate higher than actual,frontpage match
\ No newline at end of file diff --git a/data/cert_id_eval/missing_ids.csv b/data/cert_id_eval/missing_ids.csv index d9c38f5e..163bc6dc 100644 --- a/data/cert_id_eval/missing_ids.csv +++ b/data/cert_id_eval/missing_ids.csv @@ -30,7 +30,6 @@ b43100f226a61f53,FR,,malformed PDF 0a117ebd82bdfb0c,US,,cert_id missing 95948dc5f3e472fb,IT,,cert_id missing 9253ec0d31264194,US,,cert_id missing -1a8ac8fbe5bfcda9,NO,SERTIT-017,404 for report PDF 3faae83d248da8ba,IT,,cert_id missing ae1b80e9cccec491,JP,C0089,pdf issue 5945cedd8cb01e06,JP,C0120,report and target documents switched @@ -48,9 +47,7 @@ d79ecebfe21f2144,US,,404 for report PDF 5e646214ea5b1044,US,CCEVS-VR-VID11243-2022,has security target uploaded in place of report d399d47f958a80dd,AU,Certificate Number: 2020/126,certificate.pdf + OCR 8b357b0ccdafe13b,AU,Certificate Number: 2019/120,certificate.pdf + OCR -4fb34c6529549e26,JP,C0064,pdf issue c64192c1597a1a14,AU,,cert_id missing -245f78711cfcb537,JP,C0142,pdf issue acd95d9dd4ad410c,AU,Certificate Number: 2019/121,certificate.pdf + OCR 9903c89cbb35eec1,AU,Certificate Number: 2019/123,certificate.pdf + OCR 908128ea95f94b09,AU,Certificate Number: 2020/132,certificate.pdf + OCR @@ -59,9 +56,7 @@ acd95d9dd4ad410c,AU,Certificate Number: 2019/121,certificate.pdf + OCR 5db22161b84ab3d5,AU,Certificate Number: 2020/127,certificate.pdf + OCR 5390c9458174b933,AU,Certificate Number: 2020/129,certificate.pdf + OCR bd7d1fa4b1e938e4,AU,Certificate Number: 2020/128,certificate.pdf + OCR -bd992ce6d76206bf,JP,C0203,pdf issue c74dd9d805e44354,FR,ANSSI-CC-2005/12,pdf issue -ea708fac8f672c0f,JP,C0702,pdf issue 14e28608791e4a82,AU,,cert_id missing 96cf0d5d7f98fbf1,AU,Certificate Number: 2020/130,certificate.pdf + OCR 770f2b13b0723e49,AU,Certificate Number: 2021/134,certificate.pdf + OCR @@ -69,12 +64,14 @@ ea708fac8f672c0f,JP,C0702,pdf issue 7a799fc315ee99da,AU,Certificate Number: 2021/133,certificate.pdf + OCR 5f6946c674c32b30,AU,Certificate Number: 2022/138,certificate.pdf 749fae44017016c5,FR,ANSSI-CC-2005/01,pdf issue -3097b47b6f065ba5,JP,C0062,pdf issue 9a1c767d358eee50,AU,,cert_id missing 5ceb859ce72daecf,AU,Certificate Number: 2021/135,certificate.pdf + OCR fdf20384e73efb57,AU,Certificate Number: 2020/131,certificate.pdf + OCR d2b49eb29a3dcbdc,US,,cert_id missing afcf5263d97159f8,AU,Certificate Number: 2019/125,certificate.pdf + OCR -10d135ab24eab5a8,CA,383-4-270,pdf issue 4408217c4ce524fd,FR,ANSSI-CC-2003/12,pdf issue -c3f8e8ddb1dabb02,FR,ANSSI-CC-2003/12,pdf issue
\ No newline at end of file +c3f8e8ddb1dabb02,FR,ANSSI-CC-2003/12,pdf issue +739d07a9745954b3,TR,14.10.01/11-211,regex issue +57039593f41cb794,SE,CSEC201003,regex issue +cfc4c5b3fbcb0b6f,TR,14.10.01/11-520,regex issue +f8758e4c8ddc1de5,FR,ANSSI-CC-2004/19,regex issue
\ No newline at end of file diff --git a/data/cpe_eval/random.csv b/data/cpe_eval/random.csv new file mode 100644 index 00000000..efc62f45 --- /dev/null +++ b/data/cpe_eval/random.csv @@ -0,0 +1,101 @@ +dgst;cpe_matches;verified_cpe_matches +6ff89f3123a6a98f;{'cpe:2.3:a:infineon:rsa_library:1.02.013:*:*:*:*:*:*:*'};{'cpe:2.3:a:infineon:rsa_library:1.02.013:*:*:*:*:*:*:*'} +3547f0d70f3bba57;{'cpe:2.3:o:huawei:emui:11.0.1:*:*:*:*:*:*:*', 'cpe:2.3:a:huawei:emui:11.0.1:*:*:*:*:*:*:*', 'cpe:2.3:a:huawei:emui:11.0.0:*:*:*:*:*:*:*', 'cpe:2.3:o:huawei:emui:11.0.0:*:*:*:*:*:*:*'};{'cpe:2.3:o:huawei:emui:11.0.1:*:*:*:*:*:*:*', 'cpe:2.3:a:huawei:emui:11.0.1:*:*:*:*:*:*:*', 'cpe:2.3:a:huawei:emui:11.0.0:*:*:*:*:*:*:*', 'cpe:2.3:o:huawei:emui:11.0.0:*:*:*:*:*:*:*'} +bb39ab85191c0877;{'cpe:2.3:o:hp:futuresmart_4:-:*:*:*:*:*:*:*', 'cpe:2.3:h:hp:laserjet_4:-:*:*:*:*:*:*:*'};{'cpe:2.3:o:hp:futuresmart_4:-:*:*:*:*:*:*:*'} +20f3c68a48518839;{'cpe:2.3:h:hp:pagewide_enterprise_color_mfp_586:-:*:*:*:*:*:*:*', 'cpe:2.3:o:hp:laserjet_enterprise_mfp_m725_firmware:-:*:*:*:*:*:*:*', 'cpe:2.3:o:hp:pagewide_enterprise_color_mfp_586_firmware:-:*:*:*:*:*:*:*', 'cpe:2.3:o:hp:futuresmart_4:-:*:*:*:*:*:*:*', 'cpe:2.3:h:hp:laserjet_4:-:*:*:*:*:*:*:*', 'cpe:2.3:o:hp:laserjet_enterprise_flow_mfp_m830_firmware:-:*:*:*:*:*:*:*', 'cpe:2.3:h:hp:laserjet_enterprise_mfp_m725:-:*:*:*:*:*:*:*', 'cpe:2.3:h:hp:laserjet_enterprise_flow_mfp_m830:-:*:*:*:*:*:*:*'};{'cpe:2.3:h:hp:pagewide_enterprise_color_mfp_586:-:*:*:*:*:*:*:*', 'cpe:2.3:o:hp:laserjet_enterprise_mfp_m725_firmware:-:*:*:*:*:*:*:*', 'cpe:2.3:o:hp:pagewide_enterprise_color_mfp_586_firmware:-:*:*:*:*:*:*:*', 'cpe:2.3:o:hp:futuresmart_4:-:*:*:*:*:*:*:*', 'cpe:2.3:o:hp:laserjet_enterprise_flow_mfp_m830_firmware:-:*:*:*:*:*:*:*', 'cpe:2.3:h:hp:laserjet_enterprise_mfp_m725:-:*:*:*:*:*:*:*', 'cpe:2.3:h:hp:laserjet_enterprise_flow_mfp_m830:-:*:*:*:*:*:*:*'} +5cf2fc2f91be00b1;{'cpe:2.3:o:hp:pagewide_enterprise_color_mfp_586_firmware:-:*:*:*:*:*:*:*', 'cpe:2.3:o:hp:futuresmart_4:-:*:*:*:*:*:*:*', 'cpe:2.3:h:hp:pagewide_enterprise_color_mfp_586:-:*:*:*:*:*:*:*', 'cpe:2.3:h:hp:laserjet_4:-:*:*:*:*:*:*:*'};{'cpe:2.3:o:hp:pagewide_enterprise_color_mfp_586_firmware:-:*:*:*:*:*:*:*', 'cpe:2.3:o:hp:futuresmart_4:-:*:*:*:*:*:*:*', 'cpe:2.3:h:hp:pagewide_enterprise_color_mfp_586:-:*:*:*:*:*:*:*'} +9a93835ce90411fe;{'cpe:2.3:h:hp:color_laserjet_enterprise_mfp_m680:-:*:*:*:*:*:*:*', 'cpe:2.3:h:hp:laserjet_enterprise_flow_mfp_m525:-:*:*:*:*:*:*:*', 'cpe:2.3:h:hp:laserjet_enterprise_flow_mfp_m632:-:*:*:*:*:*:*:*', 'cpe:2.3:h:hp:color_laserjet_enterprise_mfp_m682:-:*:*:*:*:*:*:*', 'cpe:2.3:h:hp:color_laserjet_enterprise_flow_mfp_m681z:-:*:*:*:*:*:*:*', 'cpe:2.3:h:hp:color_laserjet_enterprise_flow_mfp_m682z:-:*:*:*:*:*:*:*', 'cpe:2.3:h:hp:laserjet_enterprise_color_flow_mfp_m575:-:*:*:*:*:*:*:*', 'cpe:2.3:h:hp:laserjet_enterprise_flow_mfp_m631:-:*:*:*:*:*:*:*', 'cpe:2.3:h:hp:color_laserjet_enterprise_flow_mfp_m681f:-:*:*:*:*:*:*:*', 'cpe:2.3:h:hp:color_laserjet_enterprise_mfp_m681:-:*:*:*:*:*:*:*', 'cpe:2.3:h:hp:color_laserjet_enterprise_mfp_m577:-:*:*:*:*:*:*:*', 'cpe:2.3:h:hp:laserjet_enterprise_flow_mfp_m633:-:*:*:*:*:*:*:*', 'cpe:2.3:h:hp:laserjet_enterprise_flow_mfp_m830:-:*:*:*:*:*:*:*', 'cpe:2.3:h:hp:laserjet_enterprise_color_flow_mfp_m575c:-:*:*:*:*:*:*:*', 'cpe:2.3:h:hp:laserjet_enterprise_flow_mfp_m630:-:*:*:*:*:*:*:*'}; +d4907ba086d84907;{'cpe:2.3:h:lexmark:cs622:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:ms826:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:cs820:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:ms822:-:*:*:*:*:*:*:*', 'cpe:2.3:o:lexmark:ms822_firmware:-:*:*:*:*:*:*:*', 'cpe:2.3:o:lexmark:cs921_firmware:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:ms622:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:cs923:-:*:*:*:*:*:*:*', 'cpe:2.3:o:lexmark:cs923_firmware:-:*:*:*:*:*:*:*', 'cpe:2.3:o:lexmark:cs622_firmware:-:*:*:*:*:*:*:*', 'cpe:2.3:o:lexmark:cs720_firmware:-:*:*:*:*:*:*:*', 'cpe:2.3:o:lexmark:cs820_firmware:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:cs720:-:*:*:*:*:*:*:*', 'cpe:2.3:o:lexmark:cs725_firmware:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:cs921:-:*:*:*:*:*:*:*', 'cpe:2.3:o:lexmark:ms622_firmware:-:*:*:*:*:*:*:*', 'cpe:2.3:o:lexmark:ms826_firmware:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:cs725:-:*:*:*:*:*:*:*'};{'cpe:2.3:h:lexmark:cs820:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:ms822:-:*:*:*:*:*:*:*', 'cpe:2.3:o:lexmark:cs923_firmware:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:c6160:-:*:*:*:*:*:*:*', 'cpe:2.3:o:lexmark:ms622_firmware:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:ms826:-:*:*:*:*:*:*:*', 'cpe:2.3:o:lexmark:ms822_firmware:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:cs923:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:cs921:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:cs720:-:*:*:*:*:*:*:*', 'cpe:2.3:o:lexmark:ms826_firmware:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:cs622:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:ms622:-:*:*:*:*:*:*:*', 'cpe:2.3:o:lexmark:cs720_firmware:-:*:*:*:*:*:*:*', 'cpe:2.3:o:lexmark:cs820_firmware:-:*:*:*:*:*:*:*', 'cpe:2.3:o:lexmark:cs921_firmware:-:*:*:*:*:*:*:*', 'cpe:2.3:o:lexmark:cs622_firmware:-:*:*:*:*:*:*:*', 'cpe:2.3:o:lexmark:cs725_firmware:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:cs725:-:*:*:*:*:*:*:*'} +17971f10643983c5;{'cpe:2.3:o:hp:color_laserjet_enterprise_mfp_m681_firmware:-:*:*:*:*:*:*:*', 'cpe:2.3:h:hp:color_laserjet_enterprise_mfp_m682:-:*:*:*:*:*:*:*', 'cpe:2.3:o:hp:laserjet_enterprise_mfp_m633_firmware:-:*:*:*:*:*:*:*', 'cpe:2.3:o:hp:color_laserjet_enterprise_mfp_m682_firmware:-:*:*:*:*:*:*:*', 'cpe:2.3:o:hp:futuresmart_4:-:*:*:*:*:*:*:*', 'cpe:2.3:o:hp:laserjet_enterprise_mfp_m632_firmware:-:*:*:*:*:*:*:*', 'cpe:2.3:h:hp:laserjet_4:-:*:*:*:*:*:*:*', 'cpe:2.3:h:hp:laserjet_enterprise_mfp_m633:-:*:*:*:*:*:*:*', 'cpe:2.3:h:hp:color_laserjet_enterprise_mfp_m681:-:*:*:*:*:*:*:*', 'cpe:2.3:h:hp:laserjet_enterprise_mfp_m632:-:*:*:*:*:*:*:*'};{'cpe:2.3:o:hp:color_laserjet_enterprise_mfp_m681_firmware:-:*:*:*:*:*:*:*', 'cpe:2.3:h:hp:color_laserjet_enterprise_mfp_m682:-:*:*:*:*:*:*:*', 'cpe:2.3:o:hp:laserjet_enterprise_mfp_m633_firmware:-:*:*:*:*:*:*:*', 'cpe:2.3:o:hp:color_laserjet_enterprise_mfp_m682_firmware:-:*:*:*:*:*:*:*', 'cpe:2.3:o:hp:futuresmart_4:-:*:*:*:*:*:*:*', 'cpe:2.3:o:hp:laserjet_enterprise_mfp_m632_firmware:-:*:*:*:*:*:*:*', 'cpe:2.3:h:hp:laserjet_enterprise_mfp_m633:-:*:*:*:*:*:*:*', 'cpe:2.3:h:hp:color_laserjet_enterprise_mfp_m681:-:*:*:*:*:*:*:*', 'cpe:2.3:h:hp:laserjet_enterprise_mfp_m632:-:*:*:*:*:*:*:*'} +63df9112e0eacebe;{'cpe:2.3:h:konicaminolta:bizhub_360i:-:*:*:*:*:*:*:*', 'cpe:2.3:h:konicaminolta:bizhub_300i:-:*:*:*:*:*:*:*', 'cpe:2.3:h:konicaminolta:bizhub_c360i:-:*:*:*:*:*:*:*', 'cpe:2.3:h:konicaminolta:bizhub_c300i:-:*:*:*:*:*:*:*', 'cpe:2.3:h:konicaminolta:bizhub_c250i:-:*:*:*:*:*:*:*'};{'cpe:2.3:h:konicaminolta:bizhub_360i:-:*:*:*:*:*:*:*', 'cpe:2.3:h:konicaminolta:bizhub_300i:-:*:*:*:*:*:*:*', 'cpe:2.3:h:konicaminolta:bizhub_c360i:-:*:*:*:*:*:*:*', 'cpe:2.3:h:konicaminolta:bizhub_c300i:-:*:*:*:*:*:*:*', 'cpe:2.3:h:konicaminolta:bizhub_c250i:-:*:*:*:*:*:*:*'} +f11f4287e2f7f64c;{'cpe:2.3:h:fujifilm:docucentre-vii_c7788:-:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:apeosport-vii_c7788:-:*:*:*:*:*:*:*'};{'cpe:2.3:h:fujifilm:docucentre-vii_c7788:-:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:apeosport-vii_c7788:-:*:*:*:*:*:*:*'} +e1c19488d90c7ca8;{'cpe:2.3:h:fujifilm:apeosport-vii_c6673:-:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:apeosport-vii_c4473:-:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:docucentre-vii_c3373:-:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:apeosport-vii_c3372:-:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:docucentre-vii_c7773:-:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:docucentre-vii_c5573:-:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:apeosport-vii_c5573:-:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:apeosport-vii_c3373:-:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:docucentre-vii_c2273:-:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:apeosport-vii_c7773:-:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:apeosport-vii_c2273:-:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:docucentre-vii_c4473:-:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:docucentre-vii_c3372:-:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:docucentre-vii_c6673:-:*:*:*:*:*:*:*'};{'cpe:2.3:h:fujifilm:apeosport-vii_c6673:-:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:apeosport-vii_c4473:-:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:docucentre-vii_c3373:-:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:apeosport-vii_c3372:-:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:docucentre-vii_c7773:-:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:docucentre-vii_c5573:-:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:apeosport-vii_c5573:-:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:apeosport-vii_c3373:-:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:docucentre-vii_c2273:-:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:apeosport-vii_c7773:-:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:apeosport-vii_c2273:-:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:docucentre-vii_c4473:-:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:docucentre-vii_c3372:-:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:docucentre-vii_c6673:-:*:*:*:*:*:*:*'} +ea5383095d7374dd;{'cpe:2.3:h:lexmark:ms826:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:ms822:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:ms622:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:cs923:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:cs921:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:cs622:-:*:*:*:*:*:*:*'};{'cpe:2.3:h:lexmark:ms826:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:ms822:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:ms622:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:cs923:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:cs921:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:cs622:-:*:*:*:*:*:*:*'} +64a3d95217c71a6b;{'cpe:2.3:o:lexmark:mx522_firmware:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:mx622:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:mx522:-:*:*:*:*:*:*:*'};{'cpe:2.3:o:lexmark:mx522_firmware:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:mx622:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:mx522:-:*:*:*:*:*:*:*'} +8ba02dba3c3b45ff;{'cpe:2.3:h:lexmark:ms622:-:*:*:*:*:*:*:*', 'cpe:2.3:o:lexmark:ms622_firmware:-:*:*:*:*:*:*:*'};{'cpe:2.3:h:lexmark:ms622:-:*:*:*:*:*:*:*', 'cpe:2.3:o:lexmark:ms622_firmware:-:*:*:*:*:*:*:*'} +18d11694e405a950;{'cpe:2.3:h:lexmark:cx622:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:cx625:-:*:*:*:*:*:*:*'};{'cpe:2.3:h:lexmark:cx622:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:cx625:-:*:*:*:*:*:*:*'} +c88bd544ed401cf5;{'cpe:2.3:h:lexmark:mx521:-:*:*:*:*:*:*:*', 'cpe:2.3:o:lexmark:mx521_firmware:-:*:*:*:*:*:*:*', 'cpe:2.3:o:lexmark:mx421_firmware:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:mx622:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:mx421:-:*:*:*:*:*:*:*'};{'cpe:2.3:h:lexmark:mx521:-:*:*:*:*:*:*:*', 'cpe:2.3:o:lexmark:mx521_firmware:-:*:*:*:*:*:*:*', 'cpe:2.3:o:lexmark:mx421_firmware:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:mx622:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:mx421:-:*:*:*:*:*:*:*'} +fb53eb74fd90b906;{'cpe:2.3:h:xerox:versalink_b405:-:*:*:*:*:*:*:*'};{'cpe:2.3:h:xerox:versalink_b405:-:*:*:*:*:*:*:*'} +fcf40b433f92515b;{'cpe:2.3:h:xerox:versalink_b7030:-:*:*:*:*:*:*:*', 'cpe:2.3:h:xerox:versalink_b7035:-:*:*:*:*:*:*:*', 'cpe:2.3:h:xerox:versalink_b7025:-:*:*:*:*:*:*:*'};{'cpe:2.3:h:xerox:versalink_b7030:-:*:*:*:*:*:*:*', 'cpe:2.3:h:xerox:versalink_b7035:-:*:*:*:*:*:*:*', 'cpe:2.3:h:xerox:versalink_b7025:-:*:*:*:*:*:*:*'} +f4dcd3bf50996535;{'cpe:2.3:h:lexmark:cs820:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:c6160:-:*:*:*:*:*:*:*'};{'cpe:2.3:h:lexmark:cs820:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:c6160:-:*:*:*:*:*:*:*'} +c1ee495d416bde7d;{'cpe:2.3:h:lexmark:cx725:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:xc4140:-:*:*:*:*:*:*:*'};{'cpe:2.3:h:lexmark:cx725:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:xc4140:-:*:*:*:*:*:*:*'} +9903c89cbb35eec1;{'cpe:2.3:o:juniper:junos:19.2:r3-s3:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:19.2:r1-s4:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:19.2:r1-s3:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:19.2:r2-s1:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:19.2:r1-s5:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:19.2:r1-s7:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:19.2:r1-s9:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:19.2:r1-s6:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:19.2:r1-s2:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:19.2:r3-s1:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:19.2:r3-s5:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:19.2:r3:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:19.2:r1-s8:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:19.2:r2:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:19.2:r1-s1:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:19.2:r1:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:19.2:r3-s4:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:19.2:r3-s2:*:*:*:*:*:*'};{'cpe:2.3:o:juniper:junos:19.2:r3-s3:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:19.2:r1-s4:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:19.2:r1-s3:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:19.2:r2-s1:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:19.2:r1-s5:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:19.2:r1-s7:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:19.2:r1-s9:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:19.2:r1-s6:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:19.2:r1-s2:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:19.2:r3-s1:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:19.2:r3-s5:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:19.2:r3:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:19.2:r1-s8:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:19.2:r2:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:19.2:r1-s1:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:19.2:r1:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:19.2:r3-s4:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:19.2:r3-s2:*:*:*:*:*:*'} +5360e7547186859e;{'cpe:2.3:a:fortinet:fortiproxy:1.0.2:*:*:*:*:*:*:*', 'cpe:2.3:a:fortinet:fortiproxy:1.0.7:*:*:*:*:*:*:*', 'cpe:2.3:a:fortinet:fortiproxy:1.0.0:*:*:*:*:*:*:*', 'cpe:2.3:a:fortinet:fortiproxy:1.0.1:*:*:*:*:*:*:*', 'cpe:2.3:a:fortinet:fortiproxy:1.0.6:*:*:*:*:*:*:*', 'cpe:2.3:a:fortinet:fortiproxy:1.0.3:*:*:*:*:*:*:*', 'cpe:2.3:a:fortinet:fortiproxy:1.0.5:*:*:*:*:*:*:*', 'cpe:2.3:a:fortinet:fortiproxy:1.0.4:*:*:*:*:*:*:*'};{'cpe:2.3:a:fortinet:fortiproxy:1.0.2:*:*:*:*:*:*:*', 'cpe:2.3:a:fortinet:fortiproxy:1.0.7:*:*:*:*:*:*:*', 'cpe:2.3:a:fortinet:fortiproxy:1.0.0:*:*:*:*:*:*:*', 'cpe:2.3:a:fortinet:fortiproxy:1.0.1:*:*:*:*:*:*:*', 'cpe:2.3:a:fortinet:fortiproxy:1.0.6:*:*:*:*:*:*:*', 'cpe:2.3:a:fortinet:fortiproxy:1.0.3:*:*:*:*:*:*:*', 'cpe:2.3:a:fortinet:fortiproxy:1.0.5:*:*:*:*:*:*:*', 'cpe:2.3:a:fortinet:fortiproxy:1.0.4:*:*:*:*:*:*:*'} +ff1ba60ef1586921;{'cpe:2.3:o:juniper:junos:18.1:r2-s4:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3-s13:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r2-s2:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r2:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3-s8:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3-s5:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3-s9:*:*:*:*:*:*', 'cpe:2.3:a:juniper:junos:18.1:r2:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r4:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3-s3:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3-s2:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3-s4:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3-s1:*:*:*:*:*:*', 'cpe:2.3:a:juniper:junos:18.1:r1:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r1:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3-s7:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3-s10:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r2-s1:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3-s6:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3-s12:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3-s11:*:*:*:*:*:*'};{'cpe:2.3:o:juniper:junos:18.1:r2-s4:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3-s13:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r2-s2:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r2:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3-s8:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3-s5:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3-s9:*:*:*:*:*:*', 'cpe:2.3:a:juniper:junos:18.1:r2:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r4:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3-s3:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3-s2:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3-s4:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3-s1:*:*:*:*:*:*', 'cpe:2.3:a:juniper:junos:18.1:r1:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r1:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3-s7:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3-s10:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r2-s1:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3-s6:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3-s12:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3-s11:*:*:*:*:*:*'} +657cfb3718522983;{'cpe:2.3:h:huawei:ne5000e:-:*:*:*:*:*:*:*'};{'cpe:2.3:h:huawei:ne5000e:-:*:*:*:*:*:*:*'} +6d63f645e797669e;{'cpe:2.3:o:redhat:enterprise_linux_for_real_time_tus:8.2:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_for_ibm_z_systems_eus:8.2:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_for_real_time_for_nfv_tus:8.2:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_server_aus:8.2:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_for_power_little_endian_eus:8.2:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_for_real_time_for_nfv_eus:8.2:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_server_for_power_little_endian_update_services_for_sap_solutions:8.2:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_tus:8.2:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_server_tus:8.2:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_aus:8.2:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_server_update_services_for_sap_solutions:8.2:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_for_real_time_eus:8.2:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_for_ibm_z_systems_eus_s390x:8.2:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_eus:8.2:*:*:*:*:*:*:*'};{'cpe:2.3:o:redhat:enterprise_linux_for_real_time_tus:8.2:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_for_ibm_z_systems_eus:8.2:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_for_real_time_for_nfv_tus:8.2:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_server_aus:8.2:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_for_power_little_endian_eus:8.2:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_for_real_time_for_nfv_eus:8.2:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_server_for_power_little_endian_update_services_for_sap_solutions:8.2:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_tus:8.2:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_server_tus:8.2:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_aus:8.2:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_server_update_services_for_sap_solutions:8.2:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_for_real_time_eus:8.2:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_for_ibm_z_systems_eus_s390x:8.2:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_eus:8.2:*:*:*:*:*:*:*'} +8f85d66508aa4148;{'cpe:2.3:o:redhat:enterprise_linux_eus:8.1:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_for_ibm_z_systems_eus:8.1:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_server_update_services_for_sap_solutions:8.1:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_server_for_power_little_endian_update_services_for_sap_solutions:8.1:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_for_ibm_z_systems_eus_s390x:8.1:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux:8.1:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_for_power_little_endian_eus:8.1:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_server_eus:8.1:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_server:8.1:*:*:*:*:*:*:*'};{'cpe:2.3:o:redhat:enterprise_linux_eus:8.1:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_for_ibm_z_systems_eus:8.1:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_server_update_services_for_sap_solutions:8.1:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_server_for_power_little_endian_update_services_for_sap_solutions:8.1:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_for_ibm_z_systems_eus_s390x:8.1:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux:8.1:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_for_power_little_endian_eus:8.1:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_server_eus:8.1:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_server:8.1:*:*:*:*:*:*:*'} +e3231fac88242d81;{'cpe:2.3:a:redhat:linux:7.1:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux:7.1:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:linux:7.1:*:*:*:*:*:*:*'};{'cpe:2.3:a:redhat:linux:7.1:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux:7.1:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:linux:7.1:*:*:*:*:*:*:*'} +f0dca1485a2b2746;{'cpe:2.3:h:veritas:netbackup_appliance:3.2:maintenance_release3:*:*:*:*:*:*'};{'cpe:2.3:h:veritas:netbackup_appliance:3.2:maintenance_release3:*:*:*:*:*:*'} +fc0cf7f2abf128e4;{'cpe:2.3:a:dell:emc_avamar:18.1:*:*:*:*:*:*:*', 'cpe:2.3:a:dell:emc_avamar_server:18.1:*:*:*:*:*:*:*'};{'cpe:2.3:a:dell:emc_avamar:18.1:*:*:*:*:*:*:*', 'cpe:2.3:a:dell:emc_avamar_server:18.1:*:*:*:*:*:*:*'} +91cc0d74e99141f0;{'cpe:2.3:a:rsa:archer:6.5:*:*:*:*:*:*:*'};{'cpe:2.3:a:rsa:archer:6.5:*:*:*:*:*:*:*'} +3357c28c91cc2ed1;{'cpe:2.3:h:st:st33tphf2espi:-:*:*:*:*:*:*:*'};{'cpe:2.3:h:st:st33tphf2espi:-:*:*:*:*:*:*:*'} +1172a88e009dc248;{'cpe:2.3:a:citrix:xenapp:7.6:*:*:*:*:*:*:*', 'cpe:2.3:a:citrix:xenapp:7.6.0.0:*:*:*:*:*:*:*'};{'cpe:2.3:a:citrix:xenapp:7.6:*:*:*:*:*:*:*', 'cpe:2.3:a:citrix:xenapp:7.6.0.0:*:*:*:*:*:*:*'} +482919a6159cf398;{'cpe:2.3:a:hp:p9000_command_view_advanced_edition_software:-:*:*:*:*:*:*:*', 'cpe:2.3:h:hp:9000:-:*:*:*:*:*:*:*'};{'cpe:2.3:a:hp:p9000_command_view_advanced_edition_software:-:*:*:*:*:*:*:*'} +ab9820cc7e3798c7;{'cpe:2.3:h:cisco:adaptive_security_appliance_5520:-:*:*:*:*:*:*:*', 'cpe:2.3:h:cisco:adaptive_security_appliance_5540:-:*:*:*:*:*:*:*', 'cpe:2.3:h:cisco:adaptive_security_appliance_5510:-:*:*:*:*:*:*:*', 'cpe:2.3:h:cisco:adaptive_security_appliance_5550:-:*:*:*:*:*:*:*', 'cpe:2.3:h:cisco:adaptive_security_appliance_5505:-:*:*:*:*:*:*:*'}; +5cc6ace5ef0d7525;{'cpe:2.3:a:ibm:tivoli_identity_manager:5.0.0:*:*:*:*:*:*:*', 'cpe:2.3:a:ibm:tivoli_identity_manager:5.0.0.11:*:*:*:*:*:*:*', 'cpe:2.3:a:ibm:tivoli_identity_manager:5.0.0.14:*:*:*:*:*:*:*', 'cpe:2.3:a:ibm:tivoli_identity_manager:5.0.0.10:*:*:*:*:*:*:*', 'cpe:2.3:a:ibm:tivoli_identity_manager:5.0.0.12:*:*:*:*:*:*:*', 'cpe:2.3:a:ibm:tivoli_identity_manager:5.0.0.13:*:*:*:*:*:*:*', 'cpe:2.3:a:ibm:tivoli_identity_manager:5.0.0.15:*:*:*:*:*:*:*', 'cpe:2.3:a:ibm:tivoli_identity_manager:5.0.0.6:*:*:*:*:*:*:*'};{'cpe:2.3:a:ibm:tivoli_identity_manager:5.0.0:*:*:*:*:*:*:*', 'cpe:2.3:a:ibm:tivoli_identity_manager:5.0.0.11:*:*:*:*:*:*:*', 'cpe:2.3:a:ibm:tivoli_identity_manager:5.0.0.14:*:*:*:*:*:*:*', 'cpe:2.3:a:ibm:tivoli_identity_manager:5.0.0.10:*:*:*:*:*:*:*', 'cpe:2.3:a:ibm:tivoli_identity_manager:5.0.0.12:*:*:*:*:*:*:*', 'cpe:2.3:a:ibm:tivoli_identity_manager:5.0.0.13:*:*:*:*:*:*:*', 'cpe:2.3:a:ibm:tivoli_identity_manager:5.0.0.15:*:*:*:*:*:*:*', 'cpe:2.3:a:ibm:tivoli_identity_manager:5.0.0.6:*:*:*:*:*:*:*'} +11a73a5b4bff867e;{'cpe:2.3:a:ca:etrust_admin:8.0:*:*:*:*:*:*:*'};{'cpe:2.3:a:ca:etrust_admin:8.0:*:*:*:*:*:*:*'} +e569fda0ef20eb24;{'cpe:2.3:o:sonicwall:sonicos:6.2.5.0:*:*:*:*:*:*:*', 'cpe:2.3:o:sonicwall:sonicos:6.2.5.3:*:*:*:*:*:*:*'};{'cpe:2.3:o:sonicwall:sonicos:6.2.5.0:*:*:*:*:*:*:*', 'cpe:2.3:o:sonicwall:sonicos:6.2.5.3:*:*:*:*:*:*:*'} +d6fa68f33a900972;{'cpe:2.3:a:checkpoint:vpn-1:-:*:*:*:*:*:*:*'};{'cpe:2.3:a:checkpoint:vpn-1:-:*:*:*:*:*:*:*'} +63437f397537984b;{'cpe:2.3:h:securecomputing:sidewinder_g2:-:*:*:*:*:*:*:*'};{'cpe:2.3:h:securecomputing:sidewinder_g2:-:*:*:*:*:*:*:*'} +7b7287c13709fe29;{'cpe:2.3:h:securecomputing:sidewinder_g2:-:*:*:*:*:*:*:*'};{'cpe:2.3:h:securecomputing:sidewinder_g2:-:*:*:*:*:*:*:*'} +bb2ddf62a9393e92;{'cpe:2.3:a:checkpoint:vpn-1_firewall_1:-:*:*:*:*:*:*:*', 'cpe:2.3:a:checkpoint:vpn-1_firewall-1_next_generation:-:*:*:*:*:*:*:*', 'cpe:2.3:a:checkpoint:vpn-1:-:*:*:*:*:*:*:*', 'cpe:2.3:a:checkpoint:firewall-1:-:*:*:*:*:*:*:*', 'cpe:2.3:a:checkpoint:vpn-1_firewall-1:-:*:*:*:*:*:*:*'};{'cpe:2.3:a:checkpoint:vpn-1_firewall_1:-:*:*:*:*:*:*:*', 'cpe:2.3:a:checkpoint:vpn-1_firewall-1_next_generation:-:*:*:*:*:*:*:*', 'cpe:2.3:a:checkpoint:vpn-1:-:*:*:*:*:*:*:*', 'cpe:2.3:a:checkpoint:firewall-1:-:*:*:*:*:*:*:*', 'cpe:2.3:a:checkpoint:vpn-1_firewall-1:-:*:*:*:*:*:*:*'} +a426b267ebe7c611;{'cpe:2.3:h:symantec:gateway_security_400:-:*:*:*:*:*:*:*'}; +c10773ac43ca7c2b;{'cpe:2.3:o:cisco:pix_firewall:6.2:*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:pix_firewall:6.2\\(1\\):*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:pix_firewall:6.2\\(3.100\\):*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:pix_firewall:6.2\\(3\\):*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:pix_firewall:6.2\\(2\\):*:*:*:*:*:*:*'};{'cpe:2.3:o:cisco:pix_firewall:6.2:*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:pix_firewall_software:6.2:*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:pix_firewall_software:6.2\\(3\\):*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:pix_firewall_software:6.2\\(2\\):*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:pix_firewall:6.2\\(1\\):*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:pix_firewall:6.2\\(3.100\\):*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:pix_firewall_software:6.2\\(1\\):*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:pix_firewall:6.2\\(3\\):*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:pix_firewall:6.2\\(2\\):*:*:*:*:*:*:*'} +2333fd1226ed1abf;{'cpe:2.3:a:symantec:data_loss_prevention:14.5:*:*:*:*:*:*:*', 'cpe:2.3:a:symantec:data_loss_prevention:14.5:mp1:*:*:*:*:*:*'};{'cpe:2.3:a:symantec:data_loss_prevention:14.5:*:*:*:*:*:*:*', 'cpe:2.3:a:symantec:data_loss_prevention:14.5:mp1:*:*:*:*:*:*'} +172856c5954d49f3;{'cpe:2.3:a:cisco:anyconnect_secure_mobility_client:4.1.06013:*:*:*:*:*:*:*', 'cpe:2.3:a:cisco:anyconnect_secure_mobility_client:4.1.02011:*:*:*:*:*:*:*', 'cpe:2.3:a:cisco:anyconnect_secure_mobility_client:4.1.00028:*:*:*:*:*:*:*', 'cpe:2.3:a:cisco:anyconnect_secure_mobility_client:4.1.08005:*:*:*:*:*:*:*', 'cpe:2.3:a:cisco:anyconnect_secure_mobility_client:4.1.06020:*:*:*:*:*:*:*', 'cpe:2.3:a:cisco:anyconnect_secure_mobility_client:4.1.04011:*:*:*:*:*:*:*'};{'cpe:2.3:a:cisco:anyconnect_secure_mobility_client:4.1.06013:*:*:*:*:*:*:*', 'cpe:2.3:a:cisco:anyconnect_secure_mobility_client:4.1.02011:*:*:*:*:*:*:*', 'cpe:2.3:a:cisco:anyconnect_secure_mobility_client:4.1.00028:*:*:*:*:*:*:*', 'cpe:2.3:a:cisco:anyconnect_secure_mobility_client:4.1.08005:*:*:*:*:*:*:*', 'cpe:2.3:a:cisco:anyconnect_secure_mobility_client:4.1.06020:*:*:*:*:*:*:*', 'cpe:2.3:a:cisco:anyconnect_secure_mobility_client:4.1.04011:*:*:*:*:*:*:*'} +c93ceefca0a81f36;{'cpe:2.3:h:samsung:galaxy_note_4:-:*:*:*:*:*:*:*'};{'cpe:2.3:h:samsung:galaxy_note_4:-:*:*:*:*:*:*:*'} +01799fe195178ed7;{'cpe:2.3:a:emc:networker:8.0.1.4:*:*:*:*:*:*:*', 'cpe:2.3:a:emc:networker:8.0:*:*:*:*:*:*:*'};{'cpe:2.3:a:emc:networker:8.0.1.4:*:*:*:*:*:*:*', 'cpe:2.3:a:emc:networker:8.0:*:*:*:*:*:*:*'} +c896595602779acc;{'cpe:2.3:o:juniper:junos:11.2:*:*:*:*:*:*:*'};{'cpe:2.3:o:juniper:junos:11.2:*:*:*:*:*:*:*'} +26b7973a845a68d6;{'cpe:2.3:o:cisco:asyncos:7.1.5:hot_patch6:*:*:*:*:*:*', 'cpe:2.3:o:cisco:asyncos:7.1.5:hot_patch5:*:*:*:*:*:*', 'cpe:2.3:o:cisco:asyncos:7.3.2:-:*:*:*:*:*:*', 'cpe:2.3:o:cisco:asyncos:7.1.5-102:*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:asyncos:7.3.2:hot_patch:*:*:*:*:*:*', 'cpe:2.3:o:cisco:asyncos:7.1.3:*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:asyncos:7.1.1:*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:email_security_appliance_firmware:7.1.1:*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:asyncos:7.1.2:*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:asyncos:7.3.1:build47:*:*:*:*:*:*', 'cpe:2.3:a:cisco:email_security_appliance:7.1.3:*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:asyncos:7.3.1:hot_patch2:*:*:*:*:*:*', 'cpe:2.3:o:cisco:email_security_appliance_firmware:7.3.1:*:*:*:*:*:*:*', 'cpe:2.3:a:cisco:email_security_appliance:7.1.2:*:*:*:*:*:*:*', 'cpe:2.3:a:cisco:email_security_appliance:7.1.0:*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:email_security_appliance_firmware:7.1.3:*:*:*:*:*:*:*', 'cpe:2.3:a:cisco:email_security_appliance:7.1.1:*:*:*:*:*:*:*', 'cpe:2.3:a:cisco:email_security_appliance:7.3.2:*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:asyncos:7.1.5:-:*:*:*:*:*:*', 'cpe:2.3:o:cisco:asyncos:7.3.2:hot_patch2:*:*:*:*:*:*', 'cpe:2.3:a:cisco:email_security_appliance:7.1.5:*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:asyncos:7.1.5:hot_patch:*:*:*:*:*:*', 'cpe:2.3:o:cisco:asyncos:7.3.1:build101:*:*:*:*:*:*', 'cpe:2.3:a:cisco:email_security_appliance:7.3.1:*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:asyncos:7.1.5:hot_patch4:*:*:*:*:*:*', 'cpe:2.3:a:cisco:email_security_appliance:7.3.0:*:*:*:*:*:*:*', 'cpe:2.3:a:cisco:email_security_appliance:7.1.4:*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:asyncos:7.1.4:*:*:*:*:*:*:*'};{'cpe:2.3:o:cisco:asyncos:7.1.5:hot_patch6:*:*:*:*:*:*', 'cpe:2.3:o:cisco:asyncos:7.1.5:hot_patch5:*:*:*:*:*:*', 'cpe:2.3:o:cisco:asyncos:7.3.2:-:*:*:*:*:*:*', 'cpe:2.3:o:cisco:asyncos:7.1.5-102:*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:asyncos:7.3.2:hot_patch:*:*:*:*:*:*', 'cpe:2.3:o:cisco:asyncos:7.1.3:*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:asyncos:7.1.1:*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:email_security_appliance_firmware:7.1.1:*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:asyncos:7.1.2:*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:asyncos:7.3.1:build47:*:*:*:*:*:*', 'cpe:2.3:a:cisco:email_security_appliance:7.1.3:*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:asyncos:7.3.1:hot_patch2:*:*:*:*:*:*', 'cpe:2.3:o:cisco:email_security_appliance_firmware:7.3.1:*:*:*:*:*:*:*', 'cpe:2.3:a:cisco:email_security_appliance:7.1.2:*:*:*:*:*:*:*', 'cpe:2.3:a:cisco:email_security_appliance:7.1.0:*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:email_security_appliance_firmware:7.1.3:*:*:*:*:*:*:*', 'cpe:2.3:a:cisco:email_security_appliance:7.1.1:*:*:*:*:*:*:*', 'cpe:2.3:a:cisco:email_security_appliance:7.3.2:*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:asyncos:7.1.5:-:*:*:*:*:*:*', 'cpe:2.3:o:cisco:asyncos:7.3.2:hot_patch2:*:*:*:*:*:*', 'cpe:2.3:a:cisco:email_security_appliance:7.1.5:*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:asyncos:7.1.5:hot_patch:*:*:*:*:*:*', 'cpe:2.3:o:cisco:asyncos:7.3.1:build101:*:*:*:*:*:*', 'cpe:2.3:a:cisco:email_security_appliance:7.3.1:*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:asyncos:7.1.5:hot_patch4:*:*:*:*:*:*', 'cpe:2.3:a:cisco:email_security_appliance:7.3.0:*:*:*:*:*:*:*', 'cpe:2.3:a:cisco:email_security_appliance:7.1.4:*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:asyncos:7.1.4:*:*:*:*:*:*:*'} +c96ac4c4015414ad;{'cpe:2.3:a:infineon:rsa_library:1.02.013:*:*:*:*:*:*:*'};{'cpe:2.3:a:infineon:rsa_library:1.02.013:*:*:*:*:*:*:*'} +d3323745a51a604d;{'cpe:2.3:a:infineon:rsa_library:1.02.013:*:*:*:*:*:*:*'};{'cpe:2.3:a:infineon:rsa_library:1.02.013:*:*:*:*:*:*:*'} +dbe20d7c305b24eb;{'cpe:2.3:h:nxp:j3e082_m65:-:*:*:*:*:*:*:*', 'cpe:2.3:h:nxp:j3e120_m65:-:*:*:*:*:*:*:*', 'cpe:2.3:h:nxp:j2e120_m65:-:*:*:*:*:*:*:*', 'cpe:2.3:h:nxp:j2e082_m65:-:*:*:*:*:*:*:*', 'cpe:2.3:h:nxp:j2e145_m64:-:*:*:*:*:*:*:*', 'cpe:2.3:h:nxp:j3e145_m64:-:*:*:*:*:*:*:*'};{'cpe:2.3:h:nxp:j3e082_m65:-:*:*:*:*:*:*:*', 'cpe:2.3:h:nxp:j3e120_m65:-:*:*:*:*:*:*:*', 'cpe:2.3:h:nxp:j2e120_m65:-:*:*:*:*:*:*:*', 'cpe:2.3:h:nxp:j2e082_m65:-:*:*:*:*:*:*:*', 'cpe:2.3:h:nxp:j2e145_m64:-:*:*:*:*:*:*:*', 'cpe:2.3:h:nxp:j3e145_m64:-:*:*:*:*:*:*:*'} +b24a14935edd51ad;{'cpe:2.3:h:nxp:j2d145_m59:-:*:*:*:*:*:*:*', 'cpe:2.3:h:nxp:j2d082_m60:-:*:*:*:*:*:*:*', 'cpe:2.3:h:nxp:j3d145_m59:-:*:*:*:*:*:*:*', 'cpe:2.3:h:nxp:j2d120_m60:-:*:*:*:*:*:*:*', 'cpe:2.3:h:nxp:j3d082_m60:-:*:*:*:*:*:*:*', 'cpe:2.3:h:nxp:j3d120_m60:-:*:*:*:*:*:*:*'};{'cpe:2.3:h:nxp:j2d145_m59:-:*:*:*:*:*:*:*', 'cpe:2.3:h:nxp:j2d082_m60:-:*:*:*:*:*:*:*', 'cpe:2.3:h:nxp:j3d145_m59:-:*:*:*:*:*:*:*', 'cpe:2.3:h:nxp:j2d120_m60:-:*:*:*:*:*:*:*', 'cpe:2.3:h:nxp:j3d082_m60:-:*:*:*:*:*:*:*', 'cpe:2.3:h:nxp:j3d120_m60:-:*:*:*:*:*:*:*'} +c680a7d3de5acc97;{'cpe:2.3:o:google:android:10.0:*:*:*:*:*:*:*'};{'cpe:2.3:o:google:android:10.0:*:*:*:*:*:*:*'} +0eade45a4692d681;{'cpe:2.3:h:lg:v30\\+:-:*:*:*:*:*:*:*'};{'cpe:2.3:h:lg:v30\\+:-:*:*:*:*:*:*:*'} +a82b1fc70b35b2be;{'cpe:2.3:h:xerox:altalink_b8090:-:*:*:*:*:*:*:*', 'cpe:2.3:h:xerox:altalink_b8045:-:*:*:*:*:*:*:*', 'cpe:2.3:h:xerox:altalink_b8075:-:*:*:*:*:*:*:*', 'cpe:2.3:h:xerox:altalink_b8055:-:*:*:*:*:*:*:*', 'cpe:2.3:h:xerox:altalink_b8065:-:*:*:*:*:*:*:*'};{'cpe:2.3:h:xerox:altalink_b8090:-:*:*:*:*:*:*:*', 'cpe:2.3:h:xerox:altalink_b8045:-:*:*:*:*:*:*:*', 'cpe:2.3:h:xerox:altalink_b8075:-:*:*:*:*:*:*:*', 'cpe:2.3:h:xerox:altalink_b8055:-:*:*:*:*:*:*:*', 'cpe:2.3:h:xerox:altalink_b8065:-:*:*:*:*:*:*:*'} +4490eb54a3bab9f9;{'cpe:2.3:h:konicaminolta:bizhub_458:-:*:*:*:*:*:*:*', 'cpe:2.3:h:konicaminolta:bizhub_c458:-:*:*:*:*:*:*:*', 'cpe:2.3:h:konicaminolta:bizhub_558:-:*:*:*:*:*:*:*', 'cpe:2.3:h:konicaminolta:bizhub_c558:-:*:*:*:*:*:*:*', 'cpe:2.3:h:konicaminolta:bizhub_c658:-:*:*:*:*:*:*:*'};{'cpe:2.3:h:konicaminolta:bizhub_458:-:*:*:*:*:*:*:*', 'cpe:2.3:h:konicaminolta:bizhub_c458:-:*:*:*:*:*:*:*', 'cpe:2.3:h:konicaminolta:bizhub_558:-:*:*:*:*:*:*:*', 'cpe:2.3:h:konicaminolta:bizhub_c558:-:*:*:*:*:*:*:*', 'cpe:2.3:h:konicaminolta:bizhub_c658:-:*:*:*:*:*:*:*'} +acb03d5783b624a8;{'cpe:2.3:h:xerox:workcentre_7835:-:*:*:*:*:*:*:*', 'cpe:2.3:h:xerox:workcentre_7830:-:*:*:*:*:*:*:*'};{'cpe:2.3:h:xerox:workcentre_7835:-:*:*:*:*:*:*:*', 'cpe:2.3:h:xerox:workcentre_7830:-:*:*:*:*:*:*:*'} +106928b01fde91a6;{'cpe:2.3:h:xerox:workcentre_7845:-:*:*:*:*:*:*:*', 'cpe:2.3:h:xerox:workcentre_7855:-:*:*:*:*:*:*:*'};{'cpe:2.3:h:xerox:workcentre_7845:-:*:*:*:*:*:*:*', 'cpe:2.3:h:xerox:workcentre_7855:-:*:*:*:*:*:*:*'} +5d95e1a7a8c29054;{'cpe:2.3:h:konicaminolta:bizhub_287:-:*:*:*:*:*:*:*', 'cpe:2.3:h:konicaminolta:bizhub_c227:-:*:*:*:*:*:*:*', 'cpe:2.3:h:konicaminolta:bizhub_227:-:*:*:*:*:*:*:*', 'cpe:2.3:h:konicaminolta:bizhub_c287:-:*:*:*:*:*:*:*'};{'cpe:2.3:h:konicaminolta:bizhub_287:-:*:*:*:*:*:*:*', 'cpe:2.3:h:konicaminolta:bizhub_c227:-:*:*:*:*:*:*:*', 'cpe:2.3:h:konicaminolta:bizhub_227:-:*:*:*:*:*:*:*', 'cpe:2.3:h:konicaminolta:bizhub_c287:-:*:*:*:*:*:*:*'} +90393cad99a3f6f3;{'cpe:2.3:h:kyocera:taskalfa_4501i:-:*:*:*:*:*:*:*'};{'cpe:2.3:h:kyocera:taskalfa_4501i:-:*:*:*:*:*:*:*'} +6de69efb327ecd1e;{'cpe:2.3:h:lexmark:m3150:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:cs510:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:m5163:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:m5170:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:m5155:-:*:*:*:*:*:*:*'};{'cpe:2.3:h:lexmark:m3150:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:cs510:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:m5163:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:m5170:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:m5155:-:*:*:*:*:*:*:*'} +c89c62457d57cad7;{'cpe:2.3:h:ricoh:mp_c6003:-:*:*:*:*:*:*:*'};{'cpe:2.3:h:ricoh:mp_c6003:-:*:*:*:*:*:*:*'} +81b4adf86bae3671;{'cpe:2.3:h:lexmark:x860:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:x658:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:x656:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:x864:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:x466:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:x862:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:x738:-:*:*:*:*:*:*:*'};{'cpe:2.3:h:lexmark:x860:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:x658:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:x656:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:x864:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:x466:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:x862:-:*:*:*:*:*:*:*', 'cpe:2.3:h:lexmark:x738:-:*:*:*:*:*:*:*'} +84dece5614d2db7b;{'cpe:2.3:h:xerox:workcentre_5135:-:*:*:*:*:*:*:*', 'cpe:2.3:h:xerox:workcentre_5150:-:*:*:*:*:*:*:*'};{'cpe:2.3:h:xerox:workcentre_5135:-:*:*:*:*:*:*:*', 'cpe:2.3:h:xerox:workcentre_5150:-:*:*:*:*:*:*:*'} +f0fa5d1487859497;{'cpe:2.3:h:xerox:workcentre_5655:-:*:*:*:*:*:*:*'};{'cpe:2.3:h:xerox:workcentre_5655:-:*:*:*:*:*:*:*', 'cpe:2.3:h:xerox:workcentre:5655:*:*:*:*:*:*:*'} +46639b3712d8a507;{'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r8.0:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r4.0:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r13:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r12.1:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r2:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r7:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r9.1:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r4.3:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r3:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r9.2:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r4:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r9:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r11.0:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:-:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r8.1:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r3.0:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r10.2:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r9.0:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r8.2:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r7.0:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r12.2:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r12:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r11.3:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r11.4:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r2.0:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r8:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r4.2:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r10.0:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r5:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r6:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r11.1:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r6.0:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r1:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r8.4:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r4.1:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r5.0:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r1.0:*:*:*:*:*:*'};{'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r8.0:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r4.0:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r13:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r12.1:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r2:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r7:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r9.1:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r4.3:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r3:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r9.2:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r4:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r9:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r11.0:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:-:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r8.1:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r3.0:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r10.2:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r9.0:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r8.2:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r7.0:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r12.2:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r12:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r11.3:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r11.4:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r2.0:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r8:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r4.2:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r10.0:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r5:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r6:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r11.1:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r6.0:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r1:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r8.4:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r4.1:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r5.0:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:9.1:r1.0:*:*:*:*:*:*'} +fcb0f5e119bbaf40;{'cpe:2.3:o:juniper:junos:18.1:r3-s3:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3-s13:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3-s8:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3-s2:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3-s5:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3-s7:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3-s4:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3-s6:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3-s1:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3-s9:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3-s10:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r4:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3-s12:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3-s11:*:*:*:*:*:*'};{'cpe:2.3:o:juniper:junos:18.1:r3-s3:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3-s13:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3-s8:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3-s2:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3-s5:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3-s7:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3-s4:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3-s6:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3-s1:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3-s9:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3-s10:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r4:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3-s12:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:18.1:r3-s11:*:*:*:*:*:*'} +3c0b7e27c2a6c495;{'cpe:2.3:h:arubanetworks:5400:-:*:*:*:*:*:*:*', 'cpe:2.3:h:arubanetworks:3810:-:*:*:*:*:*:*:*', 'cpe:2.3:h:arubanetworks:2930f:-:*:*:*:*:*:*:*', 'cpe:2.3:h:arubanetworks:aruba_2930f:-:*:*:*:*:*:*:*', 'cpe:2.3:h:arubanetworks:2930:-:*:*:*:*:*:*:*', 'cpe:2.3:h:arubanetworks:5400r:-:*:*:*:*:*:*:*'};{'cpe:2.3:h:arubanetworks:5400:-:*:*:*:*:*:*:*', 'cpe:2.3:h:arubanetworks:3810:-:*:*:*:*:*:*:*', 'cpe:2.3:h:arubanetworks:2930f:-:*:*:*:*:*:*:*', 'cpe:2.3:h:arubanetworks:aruba_2930f:-:*:*:*:*:*:*:*', 'cpe:2.3:h:arubanetworks:2930:-:*:*:*:*:*:*:*', 'cpe:2.3:h:arubanetworks:5400r:-:*:*:*:*:*:*:*'} +5f6c863ef70f35a4;{'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2:r12.0:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2:r1.0:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2:r8.0:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2:r3.1:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2:r5.0:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2:r1:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2:r11.0:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2:r8.2:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2:r7.0:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2:r4.1:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2:r5.1:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2r8.2:*:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2:*:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2:r1.1:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2r8.0:*:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2:r7.2:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2:r6.0:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2:r2.0:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2r7.2:*:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2:r10.0:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2r12.0:*:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2:r3.0:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2rx:*:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2:r4.0:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2:r9.0:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2r11.0:*:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2:r8.1:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2:r7.1:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2r10.0:*:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2r9.0:*:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2r8.1:*:*:*:*:*:*:*'};{'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2:r12.0:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2:r1.0:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2:r8.0:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2:r3.1:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2:r5.0:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2:r1:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2:r11.0:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2:r8.2:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2:r7.0:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2:r4.1:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2:r5.1:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2r8.2:*:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2:*:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2:r1.1:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2r8.0:*:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2:r7.2:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2:r6.0:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2:r2.0:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2r7.2:*:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2:r10.0:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2r12.0:*:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2:r3.0:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2rx:*:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2:r4.0:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2:r9.0:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2r11.0:*:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2:r8.1:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2:r7.1:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2r10.0:*:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2r9.0:*:*:*:*:*:*:*', 'cpe:2.3:a:pulsesecure:pulse_connect_secure:8.2r8.1:*:*:*:*:*:*:*'} +2fa90f695b25b3c0;{'cpe:2.3:o:brocade:fabric_os:8.1.0:*:*:*:*:*:*:*', 'cpe:2.3:o:brocade:fabric_os:8.1.0c:*:*:*:*:*:*:*', 'cpe:2.3:o:brocade:fabric_os:8.1.0b:*:*:*:*:*:*:*', 'cpe:2.3:o:brocade:fabric_os:8.1.0a:*:*:*:*:*:*:*'};{'cpe:2.3:o:brocade:fabric_os:8.1.0:*:*:*:*:*:*:*', 'cpe:2.3:o:brocade:fabric_os:8.1.0c:*:*:*:*:*:*:*', 'cpe:2.3:o:brocade:fabric_os:8.1.0b:*:*:*:*:*:*:*', 'cpe:2.3:o:brocade:fabric_os:8.1.0a:*:*:*:*:*:*:*'} +2ffb389f469d9581;{'cpe:2.3:h:cisco:nexus_2000:-:*:*:*:*:*:*:*', 'cpe:2.3:h:cisco:nexus_9000:-:*:*:*:*:*:*:*', 'cpe:2.3:h:cisco:nexus_9000_in_standalone:-:*:*:*:*:*:*:*'};{'cpe:2.3:h:cisco:nexus_2000:-:*:*:*:*:*:*:*', 'cpe:2.3:h:cisco:nexus_9000:-:*:*:*:*:*:*:*', 'cpe:2.3:h:cisco:nexus_9000_in_standalone:-:*:*:*:*:*:*:*'} +c2d6b741b1090d2c;{'cpe:2.3:a:cisco:adaptive_security_appliance:9.4.4.37:*:*:*:*:*:*:*', 'cpe:2.3:a:cisco:unified_computing_system:5.5\\(203\\):*:*:*:*:*:*:*', 'cpe:2.3:a:cisco:adaptive_security_appliance:9.4.2.11:*:*:*:*:*:*:*', 'cpe:2.3:a:cisco:adaptive_security_appliance:9.4:*:*:*:*:*:*:*'};{'cpe:2.3:a:cisco:adaptive_security_appliance:9.4.4.37:*:*:*:*:*:*:*', 'cpe:2.3:a:cisco:unified_computing_system:5.5\\(203\\):*:*:*:*:*:*:*', 'cpe:2.3:a:cisco:adaptive_security_appliance:9.4.2.11:*:*:*:*:*:*:*', 'cpe:2.3:a:cisco:adaptive_security_appliance:9.4:*:*:*:*:*:*:*'} +c9381d99674d4600;{'cpe:2.3:a:ibm:websphere_mq:6.0.2.0:*:*:*:*:*:*:*'}; +5a22fab9376989ef;{'cpe:2.3:o:cisco:email_security_appliance_firmware:9.1.1-000:*:*:*:*:*:*:*', 'cpe:2.3:a:cisco:email_security_appliance:9.1.1-000:*:*:*:*:*:*:*', 'cpe:2.3:a:cisco:email_security_appliance:9.1.1-036:*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:email_security_appliance_firmware:9.1.1:*:*:*:*:*:*:*', 'cpe:2.3:h:cisco:email_security_appliance:9.1.1-000:*:*:*:*:*:*:*', 'cpe:2.3:a:cisco:email_security_appliance:9.1.0-011:*:*:*:*:*:*:*', 'cpe:2.3:h:cisco:email_security_appliance:9.1.0-032:*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:email_security_appliance_firmware:9.1.2:*:*:*:*:*:*:*', 'cpe:2.3:a:cisco:email_security_appliance:9.1.0:*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:email_security_appliance_firmware:9.1.2-028:*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:email_security_appliance_firmware:9.1:*:*:*:*:*:*:*', 'cpe:2.3:a:cisco:email_security_appliance:9.1.0-101:*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:email_security_appliance_firmware:9.1.2-023:*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:email_security_appliance_firmware:9.1.0-032:*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:email_security_appliance_firmware:9.1.2-036:*:*:*:*:*:*:*', 'cpe:2.3:a:cisco:email_security_appliance:9.1.0-032:*:*:*:*:*:*:*'};{'cpe:2.3:o:cisco:email_security_appliance_firmware:9.1.1-000:*:*:*:*:*:*:*', 'cpe:2.3:a:cisco:email_security_appliance:9.1.1-000:*:*:*:*:*:*:*', 'cpe:2.3:a:cisco:email_security_appliance:9.1.1-036:*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:email_security_appliance_firmware:9.1.1:*:*:*:*:*:*:*', 'cpe:2.3:h:cisco:email_security_appliance:9.1.1-000:*:*:*:*:*:*:*', 'cpe:2.3:a:cisco:email_security_appliance:9.1.0-011:*:*:*:*:*:*:*', 'cpe:2.3:h:cisco:email_security_appliance:9.1.0-032:*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:email_security_appliance_firmware:9.1.2:*:*:*:*:*:*:*', 'cpe:2.3:a:cisco:email_security_appliance:9.1.0:*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:email_security_appliance_firmware:9.1.2-028:*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:email_security_appliance_firmware:9.1:*:*:*:*:*:*:*', 'cpe:2.3:a:cisco:email_security_appliance:9.1.0-101:*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:email_security_appliance_firmware:9.1.2-023:*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:email_security_appliance_firmware:9.1.0-032:*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:email_security_appliance_firmware:9.1.2-036:*:*:*:*:*:*:*', 'cpe:2.3:a:cisco:email_security_appliance:9.1.0-032:*:*:*:*:*:*:*'} +bc31fd0273ab72f8;{'cpe:2.3:o:juniper:junos:12.1:*:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:12.1:-:*:*:*:*:*:*'};{'cpe:2.3:o:juniper:junos:12.1:*:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:12.1:-:*:*:*:*:*:*'} +4df6657c29c83d9d;{'cpe:2.3:o:juniper:junos:13.3:r10:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:13.2:r3:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:13.3:r9:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:13.2:r2:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:13.2:r6:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:13.3:r2:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:13.3:r5:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:13.2:r7-s1:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:13.2:r4:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:13.2:r5:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:13.3:r4:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:13.2:r1:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:13.3:r3:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:13.3:r7:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:13.3:r4-s11:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:13.3:r1:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:13.3:r8:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:13.3:r2-s2:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:13.3:r6:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:13.2:r8:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:13.2:r7-s2:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:13.2:r7:*:*:*:*:*:*'};{'cpe:2.3:o:juniper:junos:13.3:r10:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:13.2:r3:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:13.3:r9:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:13.2:r2:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:13.2:r6:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:13.3:r2:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:13.3:r5:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:13.2:r7-s1:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:13.2:r4:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:13.2:r5:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:13.3:r4:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:13.2:r1:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:13.3:r3:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:13.3:r7:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:13.3:r4-s11:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:13.3:r1:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:13.3:r8:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:13.3:r2-s2:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:13.3:r6:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:13.2:r8:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:13.2:r7-s2:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:13.2:r7:*:*:*:*:*:*'} +5363c965946540d2;{'cpe:2.3:o:arubanetworks:arubaos:6.3.1.7:*:*:*:*:*:*:*', 'cpe:2.3:o:arubanetworks:arubaos:6.3.1.13:*:*:*:*:*:*:*', 'cpe:2.3:o:arubanetworks:arubaos:6.3.1.25:*:*:*:*:*:*:*', 'cpe:2.3:o:arubanetworks:arubaos:6.3.1.6:*:*:*:*:*:*:*', 'cpe:2.3:o:arubanetworks:arubaos:6.3.1.5:*:*:*:*:*:*:*', 'cpe:2.3:o:arubanetworks:arubaos:6.3.1.1:*:*:*:*:*:*:*', 'cpe:2.3:o:arubanetworks:arubaos:6.3.1.9:*:*:*:*:*:*:*', 'cpe:2.3:o:arubanetworks:arubaos:6.3.1.12:*:*:*:*:*:*:*', 'cpe:2.3:o:arubanetworks:arubaos:6.3.1.11:*:*:*:*:*:*:*', 'cpe:2.3:o:arubanetworks:arubaos:6.3.1.10:*:*:*:*:*:*:*', 'cpe:2.3:o:arubanetworks:arubaos:6.3.1.3:*:*:*:*:*:*:*', 'cpe:2.3:o:arubanetworks:arubaos:6.3.1.4:*:*:*:*:*:*:*', 'cpe:2.3:o:arubanetworks:arubaos:6.3.1.8:*:*:*:*:*:*:*', 'cpe:2.3:o:arubanetworks:arubaos:6.3.1:*:*:*:*:*:*:*', 'cpe:2.3:o:arubanetworks:arubaos:6.3.0.0:*:*:*:*:*:*:*', 'cpe:2.3:o:arubanetworks:arubaos:6.3.1.14:*:*:*:*:*:*:*', 'cpe:2.3:o:arubanetworks:arubaos:6.3.1.2:*:*:*:*:*:*:*'};{'cpe:2.3:o:arubanetworks:arubaos:6.3.1.7:*:*:*:*:*:*:*', 'cpe:2.3:o:arubanetworks:arubaos:6.3.1.13:*:*:*:*:*:*:*', 'cpe:2.3:o:arubanetworks:arubaos:6.3.1.25:*:*:*:*:*:*:*', 'cpe:2.3:o:arubanetworks:arubaos:6.3.1.6:*:*:*:*:*:*:*', 'cpe:2.3:o:arubanetworks:arubaos:6.3.1.5:*:*:*:*:*:*:*', 'cpe:2.3:o:arubanetworks:arubaos:6.3.1.1:*:*:*:*:*:*:*', 'cpe:2.3:o:arubanetworks:arubaos:6.3.1.9:*:*:*:*:*:*:*', 'cpe:2.3:o:arubanetworks:arubaos:6.3.1.12:*:*:*:*:*:*:*', 'cpe:2.3:o:arubanetworks:arubaos:6.3.1.11:*:*:*:*:*:*:*', 'cpe:2.3:o:arubanetworks:arubaos:6.3.1.10:*:*:*:*:*:*:*', 'cpe:2.3:o:arubanetworks:arubaos:6.3.1.3:*:*:*:*:*:*:*', 'cpe:2.3:o:arubanetworks:arubaos:6.3.1.4:*:*:*:*:*:*:*', 'cpe:2.3:o:arubanetworks:arubaos:6.3.1.8:*:*:*:*:*:*:*', 'cpe:2.3:o:arubanetworks:arubaos:6.3.1:*:*:*:*:*:*:*', 'cpe:2.3:o:arubanetworks:arubaos:6.3.0.0:*:*:*:*:*:*:*', 'cpe:2.3:o:arubanetworks:arubaos:6.3.1.14:*:*:*:*:*:*:*', 'cpe:2.3:o:arubanetworks:arubaos:6.3.1.2:*:*:*:*:*:*:*'} +ced6a96150257cc8;{'cpe:2.3:o:juniper:junos:12.1x44:d15:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:12.1:-:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:12.1x44:-:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:12.1:*:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:12.1x44:*:*:*:*:*:*:*'};{'cpe:2.3:o:juniper:junos:12.1x44:d15:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:12.1:-:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:12.1x44:-:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:12.1:*:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:12.1x44:*:*:*:*:*:*:*'} +5a32443b7ba2a43c;{'cpe:2.3:h:f5:big-ip_6900:-:*:*:*:*:*:*:*', 'cpe:2.3:h:f5:big-ip_11050:-:*:*:*:*:*:*:*', 'cpe:2.3:a:f5:big-ip_local_traffic_manager:-:*:*:*:*:*:*:*', 'cpe:2.3:h:f5:big-ip_8900:-:*:*:*:*:*:*:*'};{'cpe:2.3:h:f5:big-ip_6900:-:*:*:*:*:*:*:*', 'cpe:2.3:h:f5:big-ip_11050:-:*:*:*:*:*:*:*', 'cpe:2.3:a:f5:big-ip_local_traffic_manager:-:*:*:*:*:*:*:*', 'cpe:2.3:h:f5:big-ip_8900:-:*:*:*:*:*:*:*'} +c00badf009dbc913;{'cpe:2.3:o:juniper:junos:10.4r:*:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:10.4:*:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:10.4s:*:*:*:*:*:*:*'};{'cpe:2.3:o:juniper:junos:10.4r:*:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:10.4:*:*:*:*:*:*:*', 'cpe:2.3:o:juniper:junos:10.4s:*:*:*:*:*:*:*'} +fab63a8edb95a30f;{'cpe:2.3:o:cisco:nx-os:5.2\\(3\\):*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:nx-os:5.2\\(1\\):-:*:*:*:*:*:*', 'cpe:2.3:o:cisco:nx-os:5.1\\(5\\):*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:nx-os:5.1\\(6\\):*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:nx-os:5.2\\(5\\):*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:nx-os:5.1\\(2\\):*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:nx-os:5.1\\(4\\):*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:nx-os:5.1\\(1\\):*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:nx-os:5.2\\(1\\)n1\\(3\\):*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:nx-os:5.2\\(9\\):*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:nx-os:5.2\\\\\\(9\\\\\\):*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:nx-os:5.1.3:*:*:*:*:*:*:*', 'cpe:2.3:a:cisco:secure_access_control_server:5.1:*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:nx-os:5.2\\(1\\):*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:nx-os:5.1\\(3\\):*:*:*:*:*:*:*', 'cpe:2.3:a:cisco:secure_access_control_server:5.2:*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:nx-os:5.2\\(4\\):*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:nx-os:5.2\\(7\\):*:*:*:*:*:*:*'};{'cpe:2.3:o:cisco:nx-os:5.2\\(3\\):*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:nx-os:5.2\\(1\\):-:*:*:*:*:*:*', 'cpe:2.3:o:cisco:nx-os:5.1\\(5\\):*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:nx-os:5.1\\(6\\):*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:nx-os:5.2\\(5\\):*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:nx-os:5.1\\(2\\):*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:nx-os:5.1\\(4\\):*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:nx-os:5.1\\(1\\):*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:nx-os:5.2\\(1\\)n1\\(3\\):*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:nx-os:5.2\\(9\\):*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:nx-os:5.2\\\\\\(9\\\\\\):*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:nx-os:5.1.3:*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:nx-os:5.2\\(1\\):*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:nx-os:5.1\\(3\\):*:*:*:*:*:*:*', 'cpe:2.3:a:cisco:secure_access_control_server:5.2:*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:nx-os:5.2\\(4\\):*:*:*:*:*:*:*', 'cpe:2.3:o:cisco:nx-os:5.2\\(7\\):*:*:*:*:*:*:*'} +8dac72b27b58165d;{'cpe:2.3:h:cisco:1240:-:*:*:*:*:*:*:*', 'cpe:2.3:a:cisco:wireless_lan_controllers:-:*:*:*:*:*:*:*', 'cpe:2.3:h:cisco:catalyst_6500:-:*:*:*:*:*:*:*'};{'cpe:2.3:h:cisco:catalyst_6500:-:*:*:*:*:*:*:*'} +370d590d42b7d9f3;{'cpe:2.3:o:redhat:enterprise_linux_server_aus:7.6:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_for_power_big_endian_eus:7.6_ppc64:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_tus:7.6:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_server_eus:7.6:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux:7.6:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_for_ibm_z_systems_eus:7.6:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_eus:7.6:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_for_power_big_endian_eus:7.6:*:*:*:*:*:*:*', 'cpe:2.3:a:redhat:enterprise_linux_server_update_services_for_sap_solutions:7.6:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_server_update_services_for_sap_solutions:7.6:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_server:7.6:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_for_power_little_endian_eus:7.6:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_server_for_power_little_endian:7.6:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_server_for_power_little_endian_update_services_for_sap_solutions:7.6:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_server_tus:7.6:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_compute_node_eus:7.6:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_aus:7.6:*:*:*:*:*:*:*'};{'cpe:2.3:o:redhat:enterprise_linux_server_aus:7.6:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_for_power_big_endian_eus:7.6_ppc64:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_tus:7.6:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_server_eus:7.6:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux:7.6:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_for_ibm_z_systems_eus:7.6:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_eus:7.6:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_for_power_big_endian_eus:7.6:*:*:*:*:*:*:*', 'cpe:2.3:a:redhat:enterprise_linux_server_update_services_for_sap_solutions:7.6:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_server_update_services_for_sap_solutions:7.6:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_server:7.6:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_for_power_little_endian_eus:7.6:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_server_for_power_little_endian:7.6:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_server_for_power_little_endian_update_services_for_sap_solutions:7.6:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_server_tus:7.6:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_compute_node_eus:7.6:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux_aus:7.6:*:*:*:*:*:*:*'} +c518dd59d12daf17;{'cpe:2.3:o:suse:suse_linux_enterprise_server:12:-:*:*:*:*:*:*', 'cpe:2.3:o:suse:linux_enterprise_server:12:*:*:*:*:*:*:*', 'cpe:2.3:o:suse:linux_enterprise:12.0:*:*:*:*:*:*:*', 'cpe:2.3:o:suse:linux_enterprise_server:12:-:*:*:*:*:*:*', 'cpe:2.3:o:suse:suse_linux_enterprise_server:12:*:*:*:*:*:*:*'};{'cpe:2.3:o:suse:suse_linux_enterprise_server:12:-:*:*:*:*:*:*', 'cpe:2.3:o:suse:linux_enterprise_server:12:*:*:*:*:*:*:*', 'cpe:2.3:o:suse:linux_enterprise:12.0:*:*:*:*:*:*:*', 'cpe:2.3:o:suse:linux_enterprise_server:12:-:*:*:*:*:*:*', 'cpe:2.3:o:suse:suse_linux_enterprise_server:12:*:*:*:*:*:*:*'} +91b4970cffe1bb3f;{'cpe:2.3:a:vmware:workstation:5.5:*:*:*:*:*:*:*', 'cpe:2.3:a:vmware:vsphere_client:5.5:u1:*:*:*:*:*:*', 'cpe:2.3:a:vmware:vsphere_client:5.5:u2:*:*:*:*:*:*', 'cpe:2.3:a:vmware:vsphere_client:5.5:u3b:*:*:*:*:*:*', 'cpe:2.3:a:vmware:workstation:5.5.2:*:*:*:*:*:*:*', 'cpe:2.3:a:vmware:vsphere_server:5.5:u2:*:*:*:*:*:*', 'cpe:2.3:a:vmware:vsphere_server:5.5:u1:*:*:*:*:*:*', 'cpe:2.3:a:vmware:workstation:5.5.5:*:*:*:*:*:*:*', 'cpe:2.3:a:vmware:vsphere_server:5.5:u3b:*:*:*:*:*:*', 'cpe:2.3:a:vmware:vsphere:5.5:*:*:*:*:*:*:*', 'cpe:2.3:a:vmware:vsphere_client:5.5:u3a:*:*:*:*:*:*', 'cpe:2.3:a:vmware:vsphere_server:5.5:u3a:*:*:*:*:*:*'};{'cpe:2.3:a:vmware:vsphere_client:5.5:u2:*:*:*:*:*:*', 'cpe:2.3:a:vmware:vsphere_client:5.5:u3b:*:*:*:*:*:*', 'cpe:2.3:a:vmware:vsphere_server:5.5:u2:*:*:*:*:*:*', 'cpe:2.3:a:vmware:vsphere_server:5.5:u3b:*:*:*:*:*:*', 'cpe:2.3:a:vmware:vsphere_client:5.5:u3a:*:*:*:*:*:*', 'cpe:2.3:a:vmware:vsphere_server:5.5:u3a:*:*:*:*:*:*'} +7f1f7bffe46d4c85;{'cpe:2.3:o:suse:linux_enterprise_server:11:sp3:*:*:*:-:*:*', 'cpe:2.3:o:suse:suse_linux_enterprise_server:11:sp2:*:*:*:*:*:*', 'cpe:2.3:o:suse:suse_linux_enterprise_server:11:sp3:*:*:*:*:*:*', 'cpe:2.3:o:suse:suse_linux_enterprise_server:11:sp4:*:*:*:*:*:*', 'cpe:2.3:o:suse:linux_enterprise_server:11:sp2:*:*:*:-:*:*', 'cpe:2.3:o:suse:linux_enterprise_server:11.0:sp3:*:*:*:-:*:*', 'cpe:2.3:o:suse:linux_enterprise_server:11:sp2:*:*:-:*:*:*', 'cpe:2.3:o:suse:linux_enterprise_java:11:sp2:*:*:*:*:*:*', 'cpe:2.3:o:suse:linux_enterprise_server:11:sp4:*:*:*:*:*:*', 'cpe:2.3:o:suse:linux_enterprise_sdk:11:sp2:*:*:*:*:*:*', 'cpe:2.3:o:suse:suse_linux_enterprise_server:11:sp2:*:*:*:-:*:*', 'cpe:2.3:o:suse:suse_linux_enterprise_server:11:sp3:*:*:*:-:*:*', 'cpe:2.3:o:suse:linux_enterprise_sdk:11:sp3:*:*:*:*:*:*', 'cpe:2.3:o:suse:linux_enterprise_server:11:sp3:*:*:*:*:*:*'};{'cpe:2.3:o:suse:linux_enterprise_server:11:sp3:*:*:*:-:*:*', 'cpe:2.3:o:suse:suse_linux_enterprise_server:11:sp2:*:*:*:*:*:*', 'cpe:2.3:o:suse:suse_linux_enterprise_server:11:sp3:*:*:*:*:*:*', 'cpe:2.3:o:suse:suse_linux_enterprise_server:11:sp4:*:*:*:*:*:*', 'cpe:2.3:o:suse:linux_enterprise_server:11:sp2:*:*:*:-:*:*', 'cpe:2.3:o:suse:linux_enterprise_server:11.0:sp3:*:*:*:-:*:*', 'cpe:2.3:o:suse:linux_enterprise_server:11:sp2:*:*:-:*:*:*', 'cpe:2.3:o:suse:linux_enterprise_java:11:sp2:*:*:*:*:*:*', 'cpe:2.3:o:suse:linux_enterprise_server:11:sp4:*:*:*:*:*:*', 'cpe:2.3:o:suse:linux_enterprise_sdk:11:sp2:*:*:*:*:*:*', 'cpe:2.3:o:suse:suse_linux_enterprise_server:11:sp2:*:*:*:-:*:*', 'cpe:2.3:o:suse:suse_linux_enterprise_server:11:sp3:*:*:*:-:*:*', 'cpe:2.3:o:suse:linux_enterprise_sdk:11:sp3:*:*:*:*:*:*', 'cpe:2.3:o:suse:linux_enterprise_server:11:sp3:*:*:*:*:*:*'} +08e7835ada5a27bc;{'cpe:2.3:o:redhat:enterprise_linux_aus:5.6:*:*:*:*:*:*:*'};{'cpe:2.3:o:redhat:enterprise_linux_aus:5.6:*:*:*:*:*:*:*'} +9c239b3189c3937c;{'cpe:2.3:o:microsoft:windows_mobile:6.0:*:standard:*:*:*:*:*', 'cpe:2.3:o:microsoft:windows_mobile:6.1:*:*:*:*:*:*:*', 'cpe:2.3:o:microsoft:windows_mobile:6.0:*:pro:*:*:*:*:*', 'cpe:2.3:o:microsoft:windows_mobile:6.5:*:*:*:*:*:*:*', 'cpe:2.3:o:microsoft:windows_mobile:6.0:*:*:*:*:*:*:*'};{'cpe:2.3:o:microsoft:windows_mobile:6.0:*:standard:*:*:*:*:*', 'cpe:2.3:o:microsoft:windows_mobile:6.1:*:*:*:*:*:*:*', 'cpe:2.3:o:microsoft:windows-ce:5.2.318:*:*:*:*:*:*:*', 'cpe:2.3:o:microsoft:windows_mobile:6.5:*:*:*:*:*:*:*', 'cpe:2.3:o:microsoft:windows_mobile:6.0:*:*:*:*:*:*:*'} +58bfa78b80ae8716;{'cpe:2.3:o:microsoft:windows-nt:2003:*:*:*:*:*:*:*'};{'cpe:2.3:o:microsoft:windows-nt:2003:*:*:*:*:*:*:*'} +c4e6a655a15144dd;{'cpe:2.3:o:suse:suse_linux:8.0:*:*:*:*:*:*:*', 'cpe:2.3:o:suse:suse_linux:8.2:*:*:*:*:*:*:*', 'cpe:2.3:o:suse:suse_linux:8.1:*:*:*:*:*:*:*', 'cpe:2.3:o:suse:linux_enterprise_server:8:*:*:*:*:*:*:*'}; +5e8e4967caf249ce;{'cpe:2.3:o:redhat:enterprise_linux:3:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:linux:2.0:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:linux:3.0:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:linux:3.0.3:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux:2.1:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux:3.0:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:linux:2.1:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:linux:2.4.2:*:*:*:*:*:*:*', 'cpe:2.3:o:redhat:enterprise_linux:3:ga:*:*:*:*:*:*', 'cpe:2.3:o:redhat:linux:2.6.2:*:*:*:*:*:*:*'}; +496fa9c55e41803f;{'cpe:2.3:h:fujifilm:docucentre-vi_c6671:-:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:apeosport-vi_c7771:-:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:apeosport-vi_c6671:-:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:apeosport-vi_c4471:-:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:docucentre-vi_c3371:-:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:docucentre-vi_c2271:-:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:apeosport-vi_c3371:-:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:docucentre-vi_c4471:-:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:docucentre-vi_c5571:-:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:apeosport-vi_c3370:-:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:apeosport-vi_c5571:-:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:docucentre-vi_c7771:-:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:docucentre-vi_c3370:-:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:apeosport-vi_c2271:-:*:*:*:*:*:*:*'};{'cpe:2.3:h:fujifilm:apeosport-vi_c7771:-:*:*:*:*:*:*:*', 'cpe:2.3:a:fujifilm:apeosport-vi:c7771:*:*:*:*:*:*:*', 'cpe:2.3:a:fujifilm:docucentre-vi:c7771:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:apeosport-vi_c3370:-:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:docucentre-vi_c6671:-:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:apeosport-vi_c4471:-:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:docucentre-vi_c3371:-:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:apeosport-vi_c3371:-:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:docucentre-vi_c5571:-:*:*:*:*:*:*:*', 'cpe:2.3:a:fujifilm:apeosport-vi:c6671:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:apeosport-vi_c5571:-:*:*:*:*:*:*:*', 'cpe:2.3:a:fujifilm:docucentre-vi:c2271:*:*:*:*:*:*:*', 'cpe:2.3:a:fujifilm:docucentre-vi:c5571:*:*:*:*:*:*:*', 'cpe:2.3:a:fujifilm:apeosport-vi:c5571:*:*:*:*:*:*:*', 'cpe:2.3:a:fujifilm:apeosport-vi:c3371:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:docucentre-vi_c3370:-:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:apeosport-vi_c2271:-:*:*:*:*:*:*:*', 'cpe:2.3:a:fujifilm:docucentre-vi:c6671:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:docucentre-vi_c4471:-:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:apeosport-vi_c6671:-:*:*:*:*:*:*:*', 'cpe:2.3:a:fujifilm:apeosport-vi:c4471:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:docucentre-vi_c2271:-:*:*:*:*:*:*:*', 'cpe:2.3:a:fujifilm:apeosport-vi:c2271:*:*:*:*:*:*:*', 'cpe:2.3:h:fujifilm:docucentre-vi_c7771:-:*:*:*:*:*:*:*', 'cpe:2.3:a:fujifilm:docucentre-vi:c4471:*:*:*:*:*:*:*', 'cpe:2.3:a:fujifilm:docucentre-vi:c3371:*:*:*:*:*:*:*'} +6266d99d3b983091;{'cpe:2.3:a:emc:avamar:7.2.1:*:*:*:*:*:*:*', 'cpe:2.3:a:emc:avamar_server:7.2.1-32:*:*:*:*:*:*:*', 'cpe:2.3:a:emc:avamar_server:7.2.1-31:*:*:*:*:*:*:*'};{'cpe:2.3:a:emc:avamar:7.2.1:*:*:*:*:*:*:*', 'cpe:2.3:a:emc:avamar_server:7.2.1-32:*:*:*:*:*:*:*', 'cpe:2.3:a:emc:avamar_server:7.2.1-31:*:*:*:*:*:*:*'} +a2dcbc493cda0cad;{'cpe:2.3:h:samsung:note_10:-:*:*:*:*:*:*:*', 'cpe:2.3:h:samsung:galaxy_note_2:-:*:*:*:*:*:*:*', 'cpe:2.3:h:samsung:galaxy_note_5:-:*:*:*:*:*:*:*', 'cpe:2.3:h:samsung:galaxy_note_4:-:*:*:*:*:*:*:*', 'cpe:2.3:h:samsung:note2:-:*:*:*:*:*:*:*'};{'cpe:2.3:h:samsung:galaxy_note_4:-:*:*:*:*:*:*:*'} +05b00a4641691999;{'cpe:2.3:h:samsung:note_10:-:*:*:*:*:*:*:*', 'cpe:2.3:h:samsung:galaxy_note_4:-:*:*:*:*:*:*:*', 'cpe:2.3:h:samsung:galaxy_note_5:-:*:*:*:*:*:*:*'};{'cpe:2.3:h:samsung:galaxy_note_4:-:*:*:*:*:*:*:*'} +ecec6916d2fa17de;{'cpe:2.3:h:konicaminolta:bizhub_654:-:*:*:*:*:*:*:*', 'cpe:2.3:h:konicaminolta:bizhub_754:-:*:*:*:*:*:*:*'}; +5fdbdcf1ebaca5d0;{'cpe:2.3:h:konicaminolta:bizhub_654:-:*:*:*:*:*:*:*', 'cpe:2.3:h:konicaminolta:bizhub_c654:-:*:*:*:*:*:*:*', 'cpe:2.3:h:konicaminolta:bizhub_c754:-:*:*:*:*:*:*:*', 'cpe:2.3:h:konicaminolta:bizhub_754:-:*:*:*:*:*:*:*'}; +30b2316568486ee4;{'cpe:2.3:a:rapid7:nexpose:-:*:*:*:*:*:*:*'};{'cpe:2.3:a:rapid7:nexpose:-:*:*:*:*:*:*:*'} +b3029fcdde1768b7;{'cpe:2.3:h:fujixerox:docucentre-iv_c2263:-:*:*:*:*:*:*:*'};{'cpe:2.3:h:fujixerox:docucentre-iv_c2263:-:*:*:*:*:*:*:*'} diff --git a/docs/conf.py b/docs/conf.py index d1a81b2f..996e8521 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -18,8 +18,7 @@ from importlib.metadata import version as get_version # -- Project information ----------------------------------------------------- project = "sec-certs" -copyright = "2020-2022, Adam Janovsky, Petr Svenda, Jan Jancar, Jiri Michalik, Stanislav Bobon." -# author = "Adam Janovsky, Petr Svenda, Jan Jancar, Jiri Michalik, Stanislav Bobon" +copyright = "2020-2022" # Note thas this inference won't work from Docker: https://github.com/pypa/setuptools_scm/#usage-from-docker release = ".".join(get_version("sec-certs").split(".")[:3]) @@ -64,7 +63,7 @@ html_logo = "_static/logo.svg" html_favicon = "_static/logo_badge.svg" html_theme_options = { - "repository_url": "https://github.com/crocs-muni/sec-certs", + "repository_url": "https://anonymous.4open.science/r/sec-certs-7A92", "repository_branch": "main", "launch_buttons": {"binderhub_url": "https://mybinder.org"}, "use_fullscreen_button": False, diff --git a/docs/index.md b/docs/index.md index e99208c0..c52706c2 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,5 +1,10 @@ # Sec-certs documentation +```{warning} +This documentation was anonymized but may still contain occasional links back to the non-anonymous GitHub repository. +``` + + Welcome to the technical documentation of *sec-certs* tool for the data analysis of products certified with Common Criteria or FIPS 140 frameworks. If you're looking for general description of the tool, its use cases and capabilites, we refer you to [sec-certs homepage](https://seccerts.org/). If you are looking for more advanced knowledge, e.g. how to mine your own data, how to extend the tool, and so forth, this is the right place. There are three main parts of this documentation. *User's guide* describes high-level use of our tool. Driven by this knowledge, you can progress to *Notebook examples* that showcase some of the API that we use in the form of Jupyter notebooks. The documentation also contains some of the modules documented with `autodoc`, see *API reference*. Still, some dark corners of our codebase are not documented. To inspect the code directly, see the [sec_certs](https://github.com/crocs-muni/sec-certs/tree/main/sec_certs) module. If you want, you can run the notebooks as they are stored in the [project repository](https://github.com/crocs-muni/sec-certs/tree/main/notebooks). If you are interested in contributing to our project or in other aspects of our development, you can consult the relevant *GitHub artifacts* @@ -21,7 +26,7 @@ Each of the notebooks can be launched interactively in MyBinder by clicking on :maxdepth: 1 Seccerts homepage <https://seccerts.org/> Seccerts docs <https://seccerts.org/docs> -GitHub repo <https://github.com/crocs-muni/sec-certs> +GitHub repo <https://anonymous.4open.science/r/sec-certs-7A92/> Seccerts PyPi <https://pypi.org/project/sec-certs/> ``` @@ -60,4 +65,4 @@ readme.md contributing.md code_of_conduct.md license.md -```
\ No newline at end of file +``` diff --git a/notebooks/cc/cpe_eval.ipynb b/notebooks/cc/cpe_eval.ipynb new file mode 100644 index 00000000..751fb8f8 --- /dev/null +++ b/notebooks/cc/cpe_eval.ipynb @@ -0,0 +1,148 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Manual CPE matching evaluation\n", + "\n", + "This notebook assists the manual matching evaluation" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from sec_certs.dataset import CCDataset\n", + "import pandas as pd\n", + "import json" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Prepare the input data for label studio" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Max CPE matches: 37\n" + ] + } + ], + "source": [ + "dset = CCDataset.from_json(\"/Users/adam/phd/projects/certificates/sec-certs/datasets/cc_04_10_2022/cc.json\")\n", + "df = dset.to_pandas()\n", + "\n", + "eval_digests = pd.read_csv(\"./../../data/cpe_eval/random.csv\", sep=\";\").set_index(\"dgst\").index\n", + "eval_certs = df.loc[(df.index.isin(eval_digests)) & (df.cpe_matches.notnull())].copy()\n", + "\n", + "# It may be handy to display max number of assigned cpe matches here\n", + "eval_certs[\"n_cpes\"] = eval_certs.cpe_matches.map(len)\n", + "max_n_cpes = eval_certs.n_cpes.max()\n", + "print(f\"Max CPE matches: {max_n_cpes}\")\n", + "\n", + "# Now you may want to adjust the key `cpe_n_max_matches` config in sec_certs/config/settings.yml according to max_n_cpes\n", + "# This helps to avoid clutter in label studio interface\n", + "\n", + "dset.certs = {x.dgst: x for x in dset if x.dgst in eval_certs.index.tolist()}\n", + "dset.to_label_studio_json(\"./label_studio_input_data.json\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`Now you import this data to label studio and label it`" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Load the data from label studio and show the results" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Evaluated 607 CPE matches in 100 certificates\n", + "In total, 544 (89.62%) are correct (precision of the positive class).\n", + "Also, 81 (81.00%) certificates have perfect matches.\n" + ] + } + ], + "source": [ + "with open(\"/Users/adam/Downloads/final_label.json\", \"r\") as handle:\n", + " data = json.load(handle)\n", + "\n", + "\n", + "results = []\n", + "for sample in data:\n", + " option_keys = [key for key in sample.keys() if \"option_\" in key]\n", + " n_cpe_matches = len([sample[key] for key in option_keys if sample[key] != \"No good match\"])\n", + "\n", + " if not \"verified_cpe_match\" in sample.keys():\n", + " n_wrong = 0\n", + " elif isinstance(sample[\"verified_cpe_match\"], str):\n", + " n_wrong = 1\n", + " else:\n", + " n_wrong = len(sample[\"verified_cpe_match\"][\"choices\"])\n", + "\n", + " results.append((n_cpe_matches, n_wrong))\n", + "\n", + "correct = [x[0] - x[1] for x in results]\n", + "wrong = [x[1] for x in results]\n", + "n_candidates = [x[0] for x in results]\n", + "completely_right = [x == 0 for x in wrong]\n", + "\n", + "print(f\"Evaluated {sum(n_candidates)} CPE matches in {len(results)} certificates\")\n", + "print(f\"In total, {sum(correct)} ({(100 * sum(correct) / sum(n_candidates)):.2f}%) are correct (precision of the positive class).\")\n", + "print(f\"Also, {sum(completely_right)} ({(100 * sum(completely_right) / len(n_candidates)):.2f}%) certificates have perfect matches.\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3.8.13 ('venv': venv)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.13" + }, + "orig_nbformat": 4, + "vscode": { + "interpreter": { + "hash": "a5b8c5b127d2cfe5bc3a1c933e197485eb9eba25154c3661362401503b4ef9d4" + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/notebooks/cc/references.ipynb b/notebooks/cc/references.ipynb index eadddb86..71f4135f 100644 --- a/notebooks/cc/references.ipynb +++ b/notebooks/cc/references.ipynb @@ -82,7 +82,7 @@ "outputs": [], "source": [ "# Initialize\n", - "dset = CCDataset.from_json(\"../../cc_dset/CommonCriteria_dataset.json\")" + "dset = CCDataset.from_json(\"../cc_09_10_2022/cc.json\")" ] }, { @@ -347,7 +347,7 @@ "color_dict = dict(zip(all_schemes, colors))\n", "\n", "figure, axes = plt.subplots(1, 1)\n", - "figure.set_size_inches(4, 5)\n", + "figure.set_size_inches(4, 4)\n", "figure.set_tight_layout(True)\n", "\n", "sankey(exploded.scheme, exploded.ref_scheme, colorDict=color_dict, leftLabels=list(exploded.scheme.unique()), rightLabels=list(exploded.ref_scheme.unique()), fontsize=7, ax=axes)\n", @@ -731,6 +731,433 @@ "execution_count": null, "metadata": {}, "outputs": [], + "source": [ + "import logging\n", + "import warnings\n", + "from collections import defaultdict\n", + "from typing import Any, Dict, List, Optional, Set, Tuple, Union\n", + "\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import pandas as pd\n", + "import seaborn as sns\n", + "from numpy import float64, ndarray\n", + "from pandas.core.frame import DataFrame\n", + "from pandas.core.series import Series\n", + "\n", + "class PySankeyException(Exception):\n", + " \"\"\"Generic PySankey Exception.\"\"\"\n", + "\n", + "\n", + "class NullsInFrame(PySankeyException):\n", + " pass\n", + "\n", + "\n", + "class LabelMismatch(PySankeyException):\n", + " pass\n", + "\n", + "LOGGER = logging.getLogger(__name__)\n", + "\n", + "\n", + "def check_data_matches_labels(\n", + " labels: Union[List[str], Set[str]], data: Series, side: str\n", + ") -> None:\n", + " \"\"\"Check whether data matches labels.\n", + " Raise a LabelMismatch Exception if not.\"\"\"\n", + " if len(labels) > 0:\n", + " if isinstance(data, list):\n", + " data = set(data)\n", + " if isinstance(data, pd.Series):\n", + " data = set(data.unique().tolist())\n", + " if isinstance(labels, list):\n", + " labels = set(labels)\n", + " if labels != data:\n", + " msg = \"\\n\"\n", + " if len(labels) <= 20:\n", + " msg = \"Labels: \" + \",\".join(labels) + \"\\n\"\n", + " if len(data) < 20:\n", + " msg += \"Data: \" + \",\".join(data)\n", + " raise LabelMismatch(f\"{side} labels and data do not match.{msg}\")\n", + "\n", + "\n", + "def sankey(\n", + " left: Union[List, ndarray, Series],\n", + " right: Union[ndarray, Series],\n", + " leftWeight: Optional[ndarray] = None,\n", + " rightWeight: Optional[ndarray] = None,\n", + " colorDict: Optional[Dict[str, str]] = None,\n", + " leftLabels: Optional[List[str]] = None,\n", + " rightLabels: Optional[List[str]] = None,\n", + " aspect: int = 4,\n", + " rightColor: bool = False,\n", + " fontsize: int = 14,\n", + " figureName: Optional[str] = None,\n", + " closePlot: bool = False,\n", + " figSize: Optional[Tuple[int, int]] = None,\n", + " ax: Optional[Any] = None,\n", + ") -> Any:\n", + " \"\"\"\n", + " Make Sankey Diagram showing flow from left-->right\n", + " Inputs:\n", + " left = NumPy array of object labels on the left of the diagram\n", + " right = NumPy array of corresponding labels on the right of the diagram\n", + " len(right) == len(left)\n", + " leftWeight = NumPy array of weights for each strip starting from the\n", + " left of the diagram, if not specified 1 is assigned\n", + " rightWeight = NumPy array of weights for each strip starting from the\n", + " right of the diagram, if not specified the corresponding leftWeight\n", + " is assigned\n", + " colorDict = Dictionary of colors to use for each label\n", + " {'label':'color'}\n", + " leftLabels = order of the left labels in the diagram\n", + " rightLabels = order of the right labels in the diagram\n", + " aspect = vertical extent of the diagram in units of horizontal extent\n", + " rightColor = If true, each strip in the diagram will be be colored\n", + " according to its left label\n", + " figSize = tuple setting the width and height of the sankey diagram.\n", + " Defaults to current figure size\n", + " ax = optional, matplotlib axes to plot on, otherwise uses current axes.\n", + " Output:\n", + " ax : matplotlib Axes\n", + " \"\"\"\n", + " ax, leftLabels, leftWeight, rightLabels, rightWeight = init_values(\n", + " ax,\n", + " closePlot,\n", + " figSize,\n", + " figureName,\n", + " left,\n", + " leftLabels,\n", + " leftWeight,\n", + " rightLabels,\n", + " rightWeight,\n", + " )\n", + " plt.rc(\"text\", usetex=False)\n", + " plt.rc(\"font\", family=\"serif\")\n", + " data_frame = _create_dataframe(left, leftWeight, right, rightWeight)\n", + " # Identify all labels that appear 'left' or 'right'\n", + " all_labels = pd.Series(\n", + " np.r_[data_frame.left.unique(), data_frame.right.unique()]\n", + " ).unique()\n", + " LOGGER.debug(\"Labels to handle : %s\", all_labels)\n", + " leftLabels, rightLabels = identify_labels(data_frame, leftLabels, rightLabels)\n", + " colorDict = create_colors(all_labels, colorDict) # type: ignore\n", + " ns_l, ns_r = determine_widths(data_frame, leftLabels, rightLabels)\n", + " # Determine positions of left label patches and total widths\n", + " leftWidths, topEdge = _get_positions_and_total_widths(\n", + " data_frame, leftLabels, \"left\"\n", + " )\n", + " # Determine positions of right label patches and total widths\n", + " rightWidths, topEdge = _get_positions_and_total_widths(\n", + " data_frame, rightLabels, \"right\"\n", + " )\n", + " # Total vertical extent of diagram\n", + " xMax = topEdge / aspect\n", + " draw_vertical_bars(\n", + " ax,\n", + " colorDict, # type: ignore\n", + " fontsize,\n", + " leftLabels,\n", + " leftWidths,\n", + " rightLabels,\n", + " rightWidths,\n", + " xMax, # type: ignore\n", + " )\n", + " plot_strips(\n", + " ax,\n", + " colorDict, # type: ignore\n", + " data_frame,\n", + " leftLabels,\n", + " leftWidths,\n", + " ns_l,\n", + " ns_r,\n", + " rightColor,\n", + " rightLabels,\n", + " rightWidths,\n", + " xMax,\n", + " )\n", + " if figSize is not None:\n", + " plt.gcf().set_size_inches(figSize)\n", + " save_image(figureName)\n", + " if closePlot:\n", + " plt.close()\n", + " return ax\n", + "\n", + "\n", + "def save_image(figureName: Optional[str]) -> None:\n", + " if figureName is not None:\n", + " file_name = f\"{figureName}.png\"\n", + " plt.savefig(file_name, bbox_inches=\"tight\", dpi=150)\n", + " LOGGER.info(\"Sankey diagram generated in '%s'\", file_name)\n", + "\n", + "\n", + "def identify_labels(\n", + " dataFrame: DataFrame, leftLabels: List[str], rightLabels: List[str]\n", + ") -> Tuple[ndarray, ndarray]:\n", + " # Identify left labels\n", + " if len(leftLabels) == 0:\n", + " leftLabels = pd.Series(dataFrame.left.unique()).unique()\n", + " else:\n", + " check_data_matches_labels(leftLabels, dataFrame[\"left\"], \"left\")\n", + " # Identify right labels\n", + " if len(rightLabels) == 0:\n", + " rightLabels = pd.Series(dataFrame.right.unique()).unique()\n", + " else:\n", + " check_data_matches_labels(rightLabels, dataFrame[\"right\"], \"right\")\n", + " return leftLabels, rightLabels\n", + "\n", + "\n", + "def init_values(\n", + " ax: Optional[Any],\n", + " closePlot: bool,\n", + " figSize: Optional[Tuple[int, int]],\n", + " figureName: Optional[str],\n", + " left: Union[List, ndarray, Series],\n", + " leftLabels: Optional[List[str]],\n", + " leftWeight: Optional[ndarray],\n", + " rightLabels: Optional[List[str]],\n", + " rightWeight: Optional[ndarray],\n", + ") -> Tuple[Any, List[str], ndarray, List[str], ndarray]:\n", + " deprecation_warnings(closePlot, figSize, figureName)\n", + " if ax is None:\n", + " ax = plt.gca()\n", + " if leftWeight is None:\n", + " leftWeight = []\n", + " if rightWeight is None:\n", + " rightWeight = []\n", + " if leftLabels is None:\n", + " leftLabels = []\n", + " if rightLabels is None:\n", + " rightLabels = []\n", + " # Check weights\n", + " if len(leftWeight) == 0:\n", + " leftWeight = np.ones(len(left))\n", + " if len(rightWeight) == 0:\n", + " rightWeight = leftWeight\n", + " return ax, leftLabels, leftWeight, rightLabels, rightWeight\n", + "\n", + "\n", + "def deprecation_warnings(\n", + " closePlot: bool, figSize: Optional[Tuple[int, int]], figureName: Optional[str]\n", + ") -> None:\n", + " warn = []\n", + " if figureName is not None:\n", + " msg = \"use of figureName in sankey() is deprecated\"\n", + " warnings.warn(msg, DeprecationWarning)\n", + " warn.append(msg[7:-14])\n", + " if closePlot is not False:\n", + " msg = \"use of closePlot in sankey() is deprecated\"\n", + " warnings.warn(msg, DeprecationWarning)\n", + " warn.append(msg[7:-14])\n", + " if figSize is not None:\n", + " msg = \"use of figSize in sankey() is deprecated\"\n", + " warnings.warn(msg, DeprecationWarning)\n", + " warn.append(msg[7:-14])\n", + " if warn:\n", + " LOGGER.warning(\n", + " \" The following arguments are deprecated and should be removed: %s\",\n", + " \", \".join(warn),\n", + " )\n", + "\n", + "\n", + "def determine_widths(\n", + " dataFrame: DataFrame, leftLabels: ndarray, rightLabels: ndarray\n", + ") -> Tuple[Dict, Dict]:\n", + " # Determine widths of individual strips\n", + " ns_l: Dict = defaultdict()\n", + " ns_r: Dict = defaultdict()\n", + " for leftLabel in leftLabels:\n", + " left_dict = {}\n", + " right_dict = {}\n", + " for rightLabel in rightLabels:\n", + " left_dict[rightLabel] = dataFrame[\n", + " (dataFrame.left == leftLabel) & (dataFrame.right == rightLabel)\n", + " ].leftWeight.sum()\n", + " right_dict[rightLabel] = dataFrame[\n", + " (dataFrame.left == leftLabel) & (dataFrame.right == rightLabel)\n", + " ].rightWeight.sum()\n", + " ns_l[leftLabel] = left_dict\n", + " ns_r[leftLabel] = right_dict\n", + " return ns_l, ns_r\n", + "\n", + "\n", + "def draw_vertical_bars(\n", + " ax: Any,\n", + " colorDict: Union[Dict[str, Tuple[float, float, float]], Dict[str, str]],\n", + " fontsize: int,\n", + " leftLabels: ndarray,\n", + " leftWidths: Dict,\n", + " rightLabels: ndarray,\n", + " rightWidths: Dict,\n", + " xMax: float64,\n", + ") -> None:\n", + " # Draw vertical bars on left and right of each label's section & print label\n", + " for leftLabel in leftLabels:\n", + " ax.fill_between(\n", + " [-0.02 * xMax, 0],\n", + " 2 * [leftWidths[leftLabel][\"bottom\"]],\n", + " 2 * [leftWidths[leftLabel][\"bottom\"] + leftWidths[leftLabel][\"left\"]],\n", + " color=colorDict[leftLabel],\n", + " alpha=0.99,\n", + " )\n", + " ax.text(\n", + " -0.05 * xMax,\n", + " leftWidths[leftLabel][\"bottom\"] + 0.5 * leftWidths[leftLabel][\"left\"],\n", + " leftLabel,\n", + " {\"ha\": \"right\", \"va\": \"center\"},\n", + " fontsize=fontsize,\n", + " )\n", + " for rightLabel in rightLabels:\n", + " ax.fill_between(\n", + " [xMax, 1.02 * xMax],\n", + " 2 * [rightWidths[rightLabel][\"bottom\"]],\n", + " 2 * [rightWidths[rightLabel][\"bottom\"] + rightWidths[rightLabel][\"right\"]],\n", + " color=colorDict[rightLabel],\n", + " alpha=0.99,\n", + " )\n", + " ax.text(\n", + " 1.05 * xMax,\n", + " rightWidths[rightLabel][\"bottom\"] + 0.5 * rightWidths[rightLabel][\"right\"],\n", + " rightLabel,\n", + " {\"ha\": \"left\", \"va\": \"center\"},\n", + " fontsize=fontsize,\n", + " )\n", + "\n", + "\n", + "def create_colors(\n", + " allLabels: ndarray, colorDict: Optional[Dict[str, str]]\n", + ") -> Union[Dict[str, Tuple[float, float, float]], Dict[str, str]]:\n", + " # If no colorDict given, make one\n", + " if colorDict is None:\n", + " colorDict = {}\n", + " palette = \"hls\"\n", + " colorPalette = sns.color_palette(palette, len(allLabels))\n", + " for i, label in enumerate(allLabels):\n", + " colorDict[label] = colorPalette[i]\n", + " else:\n", + " missing = [label for label in allLabels if label not in colorDict.keys()]\n", + " if missing:\n", + " raise ValueError(\n", + " \"The colorDict parameter is missing values for the following labels : \"\n", + " + \", \".join(missing)\n", + " )\n", + " LOGGER.debug(\"The colordict value are : %s\", colorDict)\n", + " return colorDict\n", + "\n", + "\n", + "def _create_dataframe(\n", + " left: Union[List, ndarray, Series],\n", + " leftWeight: Union[ndarray, Series],\n", + " right: Union[ndarray, Series],\n", + " rightWeight: Union[ndarray, Series],\n", + ") -> DataFrame:\n", + " # Create Dataframe\n", + " if isinstance(left, pd.Series):\n", + " left = left.reset_index(drop=True)\n", + " if isinstance(right, pd.Series):\n", + " right = right.reset_index(drop=True)\n", + " if isinstance(leftWeight, pd.Series):\n", + " leftWeight = leftWeight.reset_index(drop=True)\n", + " if isinstance(rightWeight, pd.Series):\n", + " rightWeight = rightWeight.reset_index(drop=True)\n", + " data_frame = pd.DataFrame(\n", + " {\n", + " \"left\": left,\n", + " \"right\": right,\n", + " \"leftWeight\": leftWeight,\n", + " \"rightWeight\": rightWeight,\n", + " },\n", + " index=range(len(left)),\n", + " )\n", + " if len(data_frame[(data_frame.left.isnull()) | (data_frame.right.isnull())]):\n", + " raise NullsInFrame(\"Sankey graph does not support null values.\")\n", + " return data_frame\n", + "\n", + "\n", + "def plot_strips(\n", + " ax: Any,\n", + " colorDict: Union[Dict[str, Tuple[float, float, float]], Dict[str, str]],\n", + " dataFrame: DataFrame,\n", + " leftLabels: ndarray,\n", + " leftWidths: Dict,\n", + " ns_l: Dict,\n", + " ns_r: Dict,\n", + " rightColor: bool,\n", + " rightLabels: ndarray,\n", + " rightWidths: Dict,\n", + " xMax: float64,\n", + ") -> None:\n", + " # Plot strips\n", + " for leftLabel in leftLabels:\n", + " for rightLabel in rightLabels:\n", + " label_color = leftLabel\n", + " if rightColor:\n", + " label_color = rightLabel\n", + " if (\n", + " len(\n", + " dataFrame[\n", + " (dataFrame.left == leftLabel) & (dataFrame.right == rightLabel)\n", + " ]\n", + " )\n", + " > 0\n", + " ):\n", + " # Create array of y values for each strip, half at left value,\n", + " # half at right, convolve\n", + " ys_d = np.array(\n", + " 50 * [leftWidths[leftLabel][\"bottom\"]]\n", + " + 50 * [rightWidths[rightLabel][\"bottom\"]]\n", + " )\n", + " ys_d = np.convolve(ys_d, 0.05 * np.ones(20), mode=\"valid\")\n", + " ys_d = np.convolve(ys_d, 0.05 * np.ones(20), mode=\"valid\")\n", + " ys_u = np.array(\n", + " 50 * [leftWidths[leftLabel][\"bottom\"] + ns_l[leftLabel][rightLabel]]\n", + " + 50\n", + " * [rightWidths[rightLabel][\"bottom\"] + ns_r[leftLabel][rightLabel]]\n", + " )\n", + " ys_u = np.convolve(ys_u, 0.05 * np.ones(20), mode=\"valid\")\n", + " ys_u = np.convolve(ys_u, 0.05 * np.ones(20), mode=\"valid\")\n", + "\n", + " # Update bottom edges at each label so next strip starts at the\n", + " # right place\n", + " leftWidths[leftLabel][\"bottom\"] += ns_l[leftLabel][rightLabel]\n", + " rightWidths[rightLabel][\"bottom\"] += ns_r[leftLabel][rightLabel]\n", + " ax.fill_between(\n", + " np.linspace(0, xMax, len(ys_d)),\n", + " ys_d,\n", + " ys_u,\n", + " alpha=0.65,\n", + " color=colorDict[label_color],\n", + " )\n", + " ax.axis(\"off\")\n", + "\n", + "\n", + "def _get_positions_and_total_widths(\n", + " df: DataFrame, labels: ndarray, side: str\n", + ") -> Tuple[Dict, float64]:\n", + " \"\"\"Determine positions of label patches and total widths\"\"\"\n", + " widths: Dict = defaultdict()\n", + " for i, label in enumerate(labels):\n", + " label_widths = {}\n", + " label_widths[side] = df[df[side] == label][side + \"Weight\"].sum()\n", + " print(\"a\")\n", + " if i == 0:\n", + " label_widths[\"bottom\"] = 0\n", + " label_widths[\"top\"] = label_widths[side]\n", + " else:\n", + " bottom_width = widths[labels[i - 1]][\"top\"]\n", + " weighted_sum = 0.05 * df[side + \"Weight\"].sum()\n", + " label_widths[\"bottom\"] = bottom_width + weighted_sum\n", + " label_widths[\"top\"] = label_widths[\"bottom\"] + label_widths[side]\n", + " topEdge = label_widths[\"top\"]\n", + " widths[label] = label_widths\n", + " LOGGER.debug(\"%s position of '%s' : %s\", side, label, label_widths)\n", + " return widths, topEdge\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [] } ], @@ -755,4 +1182,4 @@ }, "nbformat": 4, "nbformat_minor": 1 -} +}
\ No newline at end of file diff --git a/notebooks/cert_id_eval.ipynb b/notebooks/cert_id_eval.ipynb index dcd7ae67..65d14225 100644 --- a/notebooks/cert_id_eval.ipynb +++ b/notebooks/cert_id_eval.ipynb @@ -58,17 +58,11 @@ "pycharm": { "name": "#%%\n" }, - "scrolled": true + "scrolled": false }, "outputs": [], "source": [ - "# dset = CCDataset.from_web_latest()\n", - "dset = CCDataset.from_json(\"../cc_dset/CommonCriteria_dataset.json\")\n", - "#dset._download_reports(False)\n", - "#dset._convert_reports_to_txt(False)\n", - "#dset._extract_report_keywords()\n", - "#dset._compute_normalized_cert_ids()\n", - "#dset.to_json()" + "dset = CCDataset.from_json(\"cc_09_10_2022/cc.json\")" ] }, { @@ -131,7 +125,9 @@ "outputs": [], "source": [ "missing_manual = pd.read_csv(\"../data/cert_id_eval/missing_ids.csv\")\n", - "set(missing_manual.id) == missing_id_dgsts" + "print(set(missing_manual.id) == missing_id_dgsts)\n", + "print(set(missing_manual.id).difference(missing_id_dgsts))\n", + "print(set(missing_id_dgsts).difference(missing_manual.id))" ] }, { @@ -304,7 +300,9 @@ "outputs": [], "source": [ "duplicate_manual = pd.read_csv(\"../data/cert_id_eval/duplicate_ids.csv\")\n", - "set(duplicate_manual.id) == duplicate_id_dgsts" + "set(duplicate_manual.id) == duplicate_id_dgsts\n", + "print(set(duplicate_manual.id).difference(duplicate_id_dgsts))\n", + "print(set(duplicate_id_dgsts).difference(duplicate_manual.id))" ] }, { diff --git a/notebooks/final_run.ipynb b/notebooks/final_run.ipynb index 9e9a8b90..5714ad43 100644 --- a/notebooks/final_run.ipynb +++ b/notebooks/final_run.ipynb @@ -9,7 +9,21 @@ "from sec_certs.dataset import CCDataset\n", "from pathlib import Path\n", "import shutil\n", - "import subprocess" + "import subprocess\n", + "from sec_certs.utils import helpers\n", + "from urllib.parse import unquote_plus, urlparse" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def hash_file(path):\n", + " return helpers.get_sha256_filepath(path)\n", + "def extract_filename(link):\n", + " return unquote_plus(str(urlparse(link).path).split(\"/\")[-1])" ] }, { @@ -26,23 +40,51 @@ "output_type": "stream", "text": [ "True\n", - "False\n" + "True\n" ] } ], "source": [ "# A directory with a dump of the documents that will enrich the dataset.\n", - "doc_dump_dir = Path(\"cc_certs_04_10_2022\")\n", + "doc_dump_dir = Path(\"cc_certs_09_10_2022\")\n", "print(doc_dump_dir.exists())\n", "\n", "# An output directory for the dataset.\n", - "dataset_dir = Path(\"cc_04_10_2022\")\n", + "dataset_dir = Path(\"cc_09_10_2022\")\n", "print(dataset_dir.exists())" ] }, { "cell_type": "code", "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "95d1ec0\n" + ] + }, + { + "data": { + "text/plain": [ + "CompletedProcess(args=['git', 'rev-parse', '--short', 'HEAD'], returncode=0)" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Print the current commit hash\n", + "subprocess.run([\"git\", \"rev-parse\", \"--short\", \"HEAD\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 4, "metadata": { "pycharm": { "name": "#%%\n" @@ -83,7 +125,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "metadata": { "pycharm": { "name": "#%%\n" @@ -92,12 +134,12 @@ "outputs": [], "source": [ "# Create the dataset\n", - "dset = CCDataset(root_dir=dataset_dir, name=\"cc\", description=\"Final run on 04.10.2022\")" + "dset = CCDataset(root_dir=dataset_dir, name=\"cc\", description=\"Final run on 09.10.2022\")" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "metadata": { "pycharm": { "name": "#%%\n" @@ -108,13 +150,13 @@ "name": "stderr", "output_type": "stream", "text": [ + "100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 2/2 [00:14<00:00, 7.01s/it]\n", "100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 2/2 [00:04<00:00, 2.00s/it]\n", - "100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 2/2 [00:02<00:00, 1.00s/it]\n", - "The CSV cc_04_10_2022/web/cc_products_active.csv contains 8 duplicates by the primary key.\n", - "The CSV cc_04_10_2022/web/cc_products_archived.csv contains 10 duplicates by the primary key.\n", + "The CSV cc_09_10_2022/web/cc_products_active.csv contains 8 duplicates by the primary key.\n", + "The CSV cc_09_10_2022/web/cc_products_archived.csv contains 10 duplicates by the primary key.\n", "When merging certificates with dgst b26ce64e0c677e3d, the following mismatch occured: Attribute=security_level, self[security_level]={'ALC_DVS.1', 'EAL2+'}, other[security_level]={'EAL2'}\n", "When merging certificates with dgst 7f043162f88a1c3a, the following mismatch occured: Attribute=not_valid_after, self[not_valid_after]=2024-09-19, other[not_valid_after]=2024-09-18\n", - "When merging certificates with dgst 109eb2158ca6a2f9, the following mismatch occured: Attribute=security_level, self[security_level]={'EAL4+', 'AVA_MSU.3', 'ATE_DPT.2', 'ADV_IMP.2', 'AVA_VLA.4'}, other[security_level]={'ADV_DVS.2', 'EAL5+', 'AVA_MSU.3', 'AVA_VLA.4'}\n", + "When merging certificates with dgst 109eb2158ca6a2f9, the following mismatch occured: Attribute=security_level, self[security_level]={'ADV_IMP.2', 'AVA_VLA.4', 'AVA_MSU.3', 'EAL4+', 'ATE_DPT.2'}, other[security_level]={'ADV_DVS.2', 'AVA_VLA.4', 'AVA_MSU.3', 'EAL5+'}\n", "When merging certificates with dgst c437d26a62a22c39, the following mismatch occured: Attribute=not_valid_after, self[not_valid_after]=2019-11-19, other[not_valid_after]=2018-05-07\n" ] } @@ -126,7 +168,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -156,7 +198,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 8, "metadata": { "pycharm": { "name": "#%%\n" @@ -172,15 +214,20 @@ " if report_pdf.exists():\n", " shutil.copy(report_pdf, cert.state.report_pdf_path)\n", " cert.state.report_download_ok = True\n", + " cert.state.report_pdf_hash = hash_file(cert.state.report_pdf_path)\n", + " cert.pdf_data.report_filename = extract_filename(cert.report_link)\n", + "\n", " target_pdf = doc_dump_dir / \"target\" / \"pdf\" / f\"{cert.dgst}.pdf\"\n", " if target_pdf.exists():\n", " shutil.copy(target_pdf, cert.state.st_pdf_path)\n", - " cert.state.st_download_ok = True" + " cert.state.st_download_ok = True\n", + " cert.state.st_pdf_hash = hash_file(cert.state.st_pdf_path)\n", + " cert.pdf_data.st_filename = extract_filename(cert.st_link)" ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 9, "metadata": { "pycharm": { "name": "#%%\n" @@ -191,30 +238,30 @@ "name": "stderr", "output_type": "stream", "text": [ - "Downloading reports: 0%| | 0/20 [00:00<?, ?it/s]Cert dgst: 82fcce2db9ef6063 failed to download report from https://www.commoncriteriaportal.org/files/epfiles/emCA%20Certification%20Report%20v1.0.pdf, code: nok\n", - "Cert dgst: e27eb9efbd67c4f7 failed to download report from https://www.commoncriteriaportal.org/files/epfiles/Document%20SAFER%20Blue%202%20Security%20Target%20V1.10_???.pdf, code: nok\n", - "Downloading reports: 10%|██████████ | 2/20 [00:01<00:09, 2.00it/s]Cert dgst: 305af0eec85bb856 failed to download report from https://www.commoncriteriaportal.org/files/epfiles/[KECS-CR-13-28]%20AhnLab%20TrusGuard%20V2.2(??).pdf, code: nok\n", - "Cert dgst: d79ecebfe21f2144 failed to download report from https://www.commoncriteriaportal.org/files/epfiles/st_vid10024a-vr.pdf, code: nok\n", - "Cert dgst: 8ac22970bd8042d2 failed to download report from https://www.commoncriteriaportal.org/files/epfiles/st_vid4016b-vr.pdf, code: nok\n", + "Downloading reports: 0%| | 0/14 [00:00<?, ?it/s]Cert dgst: 82fcce2db9ef6063 failed to download report from https://www.commoncriteriaportal.org/files/epfiles/emCA%20Certification%20Report%20v1.0.pdf, code: nok\n", "Cert dgst: 02482228eb547c15 failed to download report from https://www.commoncriteriaportal.org/files/epfiles/st_vid4016a-vr.pdf, code: nok\n", + "Cert dgst: d79ecebfe21f2144 failed to download report from https://www.commoncriteriaportal.org/files/epfiles/st_vid10024a-vr.pdf, code: nok\n", "Cert dgst: a90d78924e91dc6c failed to download report from https://www.commoncriteriaportal.org/files/epfiles/ANSSI-CC_2010-03en1.pdf, code: nok\n", + "Cert dgst: 8ac22970bd8042d2 failed to download report from https://www.commoncriteriaportal.org/files/epfiles/st_vid4016b-vr.pdf, code: nok\n", + "Cert dgst: e27eb9efbd67c4f7 failed to download report from https://www.commoncriteriaportal.org/files/epfiles/Document%20SAFER%20Blue%202%20Security%20Target%20V1.10_???.pdf, code: nok\n", "Cert dgst: ace7ea6d7f58dbb1 failed to download report from https://www.commoncriteriaportal.org/files/epfiles/0308a_pdf.pdf, code: nok\n", - "Cert dgst: 811ca609aebe2e96 failed to download report from https://www.commoncriteriaportal.org/files/epfiles/st_vid10355-vr.pdf, code: nok\n", - "Cert dgst: 391c8b9254ed6ed9 failed to download report from https://www.commoncriteriaportal.org/files/epfiles/silverpeak-v31-cert-eng.pdf, code: nok\n", - "Cert dgst: d0d0dfe4860db6be failed to download report from https://www.commoncriteriaportal.org/files/epfiles/st_vid1023-vr.pdf, code: nok\n", - "Cert dgst: 7d074a56ee50aec4 failed to download report from https://www.commoncriteriaportal.org/files/epfiles/st_vid3012a-vr.pdf, code: nok\n", - "Downloading reports: 90%|██████████████████████████████████████████████████████████████████████████████████████████ | 18/20 [00:02<00:00, 10.22it/s]Cert dgst: 6af4a27251001715 failed to download report from https://www.commoncriteriaportal.org/files/epfiles/st_vid10491-vr, code: nok\n", + "Cert dgst: 305af0eec85bb856 failed to download report from https://www.commoncriteriaportal.org/files/epfiles/[KECS-CR-13-28]%20AhnLab%20TrusGuard%20V2.2(??).pdf, code: nok\n", + "Downloading reports: 57%|█████████████████████████████████████████████████████████▋ | 8/14 [00:01<00:00, 7.99it/s]Cert dgst: 391c8b9254ed6ed9 failed to download report from https://www.commoncriteriaportal.org/files/epfiles/silverpeak-v31-cert-eng.pdf, code: nok\n", "Cert dgst: 1a8ac8fbe5bfcda9 failed to download report from https://www.commoncriteriaportal.org/files/epfiles/SERTIT-017_CR_Thinklogical_VX160_KVM_Matrix_switch_v1.01.pdf, code: nok\n", - "Downloading reports: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████| 20/20 [00:03<00:00, 6.65it/s]\n", + "Cert dgst: 7d074a56ee50aec4 failed to download report from https://www.commoncriteriaportal.org/files/epfiles/st_vid3012a-vr.pdf, code: nok\n", + "Cert dgst: 6af4a27251001715 failed to download report from https://www.commoncriteriaportal.org/files/epfiles/st_vid10491-vr, code: nok\n", + "Cert dgst: d0d0dfe4860db6be failed to download report from https://www.commoncriteriaportal.org/files/epfiles/st_vid1023-vr.pdf, code: nok\n", + "Cert dgst: 811ca609aebe2e96 failed to download report from https://www.commoncriteriaportal.org/files/epfiles/st_vid10355-vr.pdf, code: nok\n", + "Downloading reports: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████| 14/14 [00:02<00:00, 6.98it/s]\n", "Downloading targets: 0%| | 0/14 [00:00<?, ?it/s]Cert dgst: e27eb9efbd67c4f7 failed to download ST from https://www.commoncriteriaportal.org/files/epfiles/Document%20SAFER%20Blue%202%20Security%20Target%20V1.10_???.pdf, code: nok\n", - "Cert dgst: a90d78924e91dc6c failed to download ST from https://www.commoncriteriaportal.org/files/epfiles/ANSSI-CC-cible_2010-03en1.pdf, code: nok\n", "Cert dgst: 305af0eec85bb856 failed to download ST from https://www.commoncriteriaportal.org/files/epfiles/CC-TG22-???????_??.pdf, code: nok\n", + "Cert dgst: a90d78924e91dc6c failed to download ST from https://www.commoncriteriaportal.org/files/epfiles/ANSSI-CC-cible_2010-03en1.pdf, code: nok\n", "Cert dgst: 02482228eb547c15 failed to download ST from https://www.commoncriteriaportal.org/files/epfiles/st_vid4016a-st.pdf, code: nok\n", - "Downloading targets: 29%|████████████████████████████▊ | 4/14 [00:01<00:02, 3.99it/s]Cert dgst: 811ca609aebe2e96 failed to download ST from https://www.commoncriteriaportal.org/files/epfiles/st_vid10355-st.pdf, code: nok\n", + "Downloading targets: 29%|████████████████████████████▊ | 4/14 [00:01<00:02, 4.00it/s]Cert dgst: 811ca609aebe2e96 failed to download ST from https://www.commoncriteriaportal.org/files/epfiles/st_vid10355-st.pdf, code: nok\n", "Cert dgst: 391c8b9254ed6ed9 failed to download ST from https://www.commoncriteriaportal.org/files/epfiles/silverpeak-v31-sec-eng.pdf, code: nok\n", - "Cert dgst: 6af4a27251001715 failed to download ST from https://www.commoncriteriaportal.org/files/epfiles/st_vid10491-st, code: nok\n", + "Downloading targets: 43%|███████████████████████████████████████████▎ | 6/14 [00:02<00:02, 2.82it/s]Cert dgst: 6af4a27251001715 failed to download ST from https://www.commoncriteriaportal.org/files/epfiles/st_vid10491-st, code: nok\n", "Cert dgst: 1a8ac8fbe5bfcda9 failed to download ST from https://www.commoncriteriaportal.org/files/epfiles/ThinklogicalSecurityTarget_3_6_VX1601.pdf, code: nok\n", - "Downloading targets: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████| 14/14 [00:03<00:00, 4.65it/s]\n" + "Downloading targets: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████| 14/14 [00:09<00:00, 1.55it/s]\n" ] } ], @@ -225,252 +272,246 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 10, "metadata": { "pycharm": { "name": "#%%\n" }, - "scrolled": true + "scrolled": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "Converting reports to txt: 2%|█▋ | 96/5115 [00:07<06:29, 12.89it/s]Error when converting pdf->txt: poppler error creating document\n", - "Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/bfc86f14e2484335.pdf\n", - "Converting reports to txt: 2%|██ | 114/5115 [00:09<06:14, 13.36it/s]Error during OCR of cc_04_10_2022/certs/reports/pdf/bfc86f14e2484335.pdf, using garbage: pdftoppm failed: 1\n", + "Converting reports to txt: 2%|██ | 118/5115 [00:06<04:56, 16.83it/s]Error when converting pdf->txt: poppler error creating document\n", + "Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/bfc86f14e2484335.pdf\n", + "Error during OCR of cc_09_10_2022/certs/reports/pdf/bfc86f14e2484335.pdf, using garbage: pdftoppm failed: 1\n", "Cert dgst: bfc86f14e2484335 failed to convert report pdf->txt\n", - "Converting reports to txt: 3%|███ | 173/5115 [00:12<05:17, 15.55it/s]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/1ee7ecee9e7e131c.pdf\n", - "Converting reports to txt: 4%|███▎ | 189/5115 [00:13<05:16, 15.54it/s]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/d8c205b4924f91b3.pdf\n", - "Converting reports to txt: 4%|███▋ | 204/5115 [00:14<05:30, 14.87it/s]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/20874d4fa6e4c878.pdf\n", - "Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/3477723044183b31.pdf\n", - "Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/f8a79eb20ade29af.pdf\n", - "Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/0f9468a2e263d3a3.pdf\n", - "Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/82c24f729c2e0092.pdf\n", - "Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/b3757b6bb5f884d4.pdf\n", - "Converting reports to txt: 4%|███▋ | 209/5115 [00:29<07:04, 11.57it/s]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/66bbd8fb83f0abbb.pdf\n", - "Converting reports to txt: 4%|███▋ | 210/5115 [00:35<58:42, 1.39it/s]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/e1daa354ae5a61fd.pdf\n", - "Converting reports to txt: 4%|███▋ | 211/5115 [02:52<8:57:46, 6.58s/it]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/7a0e44767b51f0c4.pdf\n", - "Converting reports to txt: 4%|███▋ | 213/5115 [03:10<9:28:06, 6.95s/it]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/051066781c36ad55.pdf\n", - "Converting reports to txt: 4%|███▋ | 214/5115 [03:11<8:41:14, 6.38s/it]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/03bce905b71945aa.pdf\n", - "Converting reports to txt: 4%|███▋ | 215/5115 [03:14<8:02:35, 5.91s/it]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/0286c223fc4e626a.pdf\n", - "Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/559e4549a852aab2.pdf\n", - "Converting reports to txt: 4%|███▊ | 220/5115 [03:40<7:24:20, 5.45s/it]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/c5e25f90c7006546.pdf\n", - "Converting reports to txt: 4%|███▊ | 221/5115 [04:38<17:34:45, 12.93s/it]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/744a7a202d909323.pdf\n", - "Converting reports to txt: 4%|███▊ | 222/5115 [06:18<37:23:01, 27.50s/it]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/449c74a92ebb61a4.pdf\n", - "Converting reports to txt: 4%|███▊ | 223/5115 [06:26<32:20:55, 23.81s/it]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/c80801f9a71b030e.pdf\n", - "Converting reports to txt: 7%|██████▏ | 345/5115 [06:38<11:53, 6.69it/s]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/852cad2f53bda148.pdf\n", - "Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/b0deb8e9d0026b64.pdf\n", - "Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/56be1d745bbb4994.pdf\n", - "Converting reports to txt: 9%|███████▉ | 448/5115 [06:55<07:16, 10.69it/s]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/af6767c887ae930a.pdf\n", - "Converting reports to txt: 9%|████████ | 455/5115 [07:09<07:56, 9.77it/s]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/d2f75cdaeb322e7f.pdf\n", - "Converting reports to txt: 9%|███████▉ | 457/5115 [08:37<5:32:23, 4.28s/it]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/d7300e1bfafed26e.pdf\n", - "Converting reports to txt: 9%|████████ | 460/5115 [09:06<7:22:02, 5.70s/it]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/7015af58766db091.pdf\n", - "Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/85328590c0d7273f.pdf\n", - "Converting reports to txt: 9%|████████▏ | 467/5115 [10:09<9:08:17, 7.08s/it]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/e56e14e8cbf89e3c.pdf\n", - "Converting reports to txt: 9%|████████▏ | 474/5115 [10:18<6:16:36, 4.87s/it]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/4844355021ea22f1.pdf\n", - "Converting reports to txt: 9%|████████▎ | 476/5115 [10:21<5:41:24, 4.42s/it]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/21a1deda31c3e213.pdf\n", - "Converting reports to txt: 9%|████████▎ | 477/5115 [10:28<5:59:05, 4.65s/it]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/d8aff63d56506605.pdf\n", - "Converting reports to txt: 9%|████████▎ | 478/5115 [10:32<5:53:35, 4.58s/it]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/aca070da96add3b6.pdf\n", - "Converting reports to txt: 9%|████████▍ | 483/5115 [11:23<8:43:35, 6.78s/it]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/c8982f2e8de39b22.pdf\n", - "Converting reports to txt: 10%|████████▌ | 490/5115 [12:03<9:20:15, 7.27s/it]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/977b04d04def60a7.pdf\n", - "Converting reports to txt: 10%|████████▌ | 494/5115 [12:04<5:58:51, 4.66s/it]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/6eeed6fefb1f0243.pdf\n", - "Converting reports to txt: 10%|████████▌ | 496/5115 [13:26<15:06:59, 11.78s/it]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/62313881916550ca.pdf\n" + "Converting reports to txt: 3%|███ | 169/5115 [00:09<04:21, 18.89it/s]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/1ee7ecee9e7e131c.pdf\n", + "Converting reports to txt: 4%|███▍ | 194/5115 [00:10<04:03, 20.19it/s]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/d8c205b4924f91b3.pdf\n", + "Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/f8a79eb20ade29af.pdf\n", + "Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/3477723044183b31.pdf\n", + "Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/82c24f729c2e0092.pdf\n", + "Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/20874d4fa6e4c878.pdf\n", + "Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/b3757b6bb5f884d4.pdf\n", + "Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/0f9468a2e263d3a3.pdf\n", + "Converting reports to txt: 4%|███▋ | 209/5115 [00:21<04:52, 16.79it/s]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/66bbd8fb83f0abbb.pdf\n", + "Converting reports to txt: 4%|███▋ | 210/5115 [00:32<41:11, 1.98it/s]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/e1daa354ae5a61fd.pdf\n", + "Converting reports to txt: 4%|███▋ | 211/5115 [03:29<7:43:05, 5.67s/it]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/7a0e44767b51f0c4.pdf\n", + "Converting reports to txt: 4%|███▋ | 212/5115 [03:32<7:34:16, 5.56s/it]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/051066781c36ad55.pdf\n", + "Converting reports to txt: 4%|███▋ | 214/5115 [03:54<8:12:36, 6.03s/it]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/03bce905b71945aa.pdf\n", + "Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/0286c223fc4e626a.pdf\n", + "Converting reports to txt: 4%|███▊ | 216/5115 [03:57<7:05:01, 5.21s/it]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/559e4549a852aab2.pdf\n", + "Converting reports to txt: 4%|███▊ | 220/5115 [03:58<4:22:42, 3.22s/it]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/c5e25f90c7006546.pdf\n", + "Converting reports to txt: 4%|███▊ | 221/5115 [05:32<19:48:13, 14.57s/it]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/744a7a202d909323.pdf\n", + "Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/449c74a92ebb61a4.pdf\n", + "Converting reports to txt: 4%|███▊ | 222/5115 [07:49<45:00:22, 33.11s/it]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/c80801f9a71b030e.pdf\n", + "Converting reports to txt: 7%|██████ | 339/5115 [08:27<19:08, 4.16it/s]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/852cad2f53bda148.pdf\n", + "Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/b0deb8e9d0026b64.pdf\n", + "Converting reports to txt: 7%|██████▏ | 351/5115 [08:28<15:46, 5.03it/s]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/56be1d745bbb4994.pdf\n", + "Converting reports to txt: 9%|███████▉ | 446/5115 [08:50<08:50, 8.80it/s]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/af6767c887ae930a.pdf\n", + "Converting reports to txt: 9%|████████ | 455/5115 [09:02<08:47, 8.84it/s]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/d2f75cdaeb322e7f.pdf\n", + "Converting reports to txt: 9%|███████▉ | 456/5115 [09:12<1:06:21, 1.17it/s]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/d7300e1bfafed26e.pdf\n", + "Converting reports to txt: 9%|███████▉ | 459/5115 [10:47<6:22:07, 4.92s/it]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/7015af58766db091.pdf\n", + "Converting reports to txt: 9%|████████ | 467/5115 [12:48<11:23:24, 8.82s/it]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/85328590c0d7273f.pdf\n", + "Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/e56e14e8cbf89e3c.pdf\n", + "Converting reports to txt: 9%|████████▏ | 474/5115 [13:11<8:54:27, 6.91s/it]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/4844355021ea22f1.pdf\n", + "Converting reports to txt: 9%|████████▎ | 476/5115 [13:19<8:26:32, 6.55s/it]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/21a1deda31c3e213.pdf\n", + "Converting reports to txt: 9%|████████▎ | 477/5115 [13:20<7:51:36, 6.10s/it]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/d8aff63d56506605.pdf\n", + "Converting reports to txt: 9%|████████▏ | 479/5115 [14:07<13:56:49, 10.83s/it]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/aca070da96add3b6.pdf\n", + "Converting reports to txt: 9%|████████▎ | 480/5115 [14:39<18:14:05, 14.16s/it]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/c8982f2e8de39b22.pdf\n", + "Converting reports to txt: 10%|████████▌ | 489/5115 [14:40<6:09:04, 4.79s/it]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/977b04d04def60a7.pdf\n", + "Converting reports to txt: 10%|████████▌ | 494/5115 [15:01<5:53:31, 4.59s/it]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/6eeed6fefb1f0243.pdf\n", + "Converting reports to txt: 10%|████████▌ | 496/5115 [17:12<18:45:44, 14.62s/it]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/62313881916550ca.pdf\n", + "Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/6f8d7a6a1dea6a3a.pdf\n", + "Converting reports to txt: 10%|████████▌ | 497/5115 [17:17<17:27:33, 13.61s/it]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/e6cffd14e732a030.pdf\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "Converting reports to txt: 10%|████████▌ | 497/5115 [13:38<15:10:43, 11.83s/it]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/6f8d7a6a1dea6a3a.pdf\n", - "Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/e6cffd14e732a030.pdf\n", - "Converting reports to txt: 10%|████████▌ | 498/5115 [13:57<16:59:25, 13.25s/it]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/47913a485c3c8a18.pdf\n", - "Converting reports to txt: 10%|████████▊ | 503/5115 [14:01<7:40:59, 6.00s/it]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/b0b7b073ca2dfe5f.pdf\n", - "Converting reports to txt: 10%|████████▋ | 504/5115 [14:27<11:21:27, 8.87s/it]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/60f3bd10ee9be85b.pdf\n", - "Converting reports to txt: 10%|████████▋ | 505/5115 [15:07<18:08:17, 14.16s/it]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/5c3806bf79eeab7f.pdf\n", - "Converting reports to txt: 10%|████████▊ | 515/5115 [16:20<11:26:38, 8.96s/it]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/4c9468f20fdb04f7.pdf\n", - "Converting reports to txt: 10%|█████████ | 518/5115 [16:21<8:38:28, 6.77s/it]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/9ee9f3c598318ae5.pdf\n", - "Converting reports to txt: 11%|█████████▍ | 542/5115 [17:08<2:22:59, 1.88s/it]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/afde7a688dcc5c83.pdf\n", - "Converting reports to txt: 17%|███████████████ | 850/5115 [18:10<09:48, 7.24it/s]Error when converting pdf->txt: poppler error creating document\n", + "Converting reports to txt: 10%|████████▌ | 498/5115 [17:18<15:20:52, 11.97s/it]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/47913a485c3c8a18.pdf\n", + "Converting reports to txt: 10%|████████▊ | 503/5115 [17:29<9:17:26, 7.25s/it]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/b0b7b073ca2dfe5f.pdf\n", + "Converting reports to txt: 10%|████████▋ | 504/5115 [18:31<17:41:13, 13.81s/it]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/60f3bd10ee9be85b.pdf\n", + "Converting reports to txt: 10%|████████▋ | 505/5115 [19:14<23:14:43, 18.15s/it]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/5c3806bf79eeab7f.pdf\n", + "Converting reports to txt: 10%|████████▊ | 514/5115 [21:40<21:48:26, 17.06s/it]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/4c9468f20fdb04f7.pdf\n", + "Converting reports to txt: 10%|████████▉ | 518/5115 [21:41<14:52:15, 11.65s/it]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/9ee9f3c598318ae5.pdf\n", + "Converting reports to txt: 11%|█████████▌ | 547/5115 [21:54<2:06:01, 1.66s/it]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/afde7a688dcc5c83.pdf\n", + "Converting reports to txt: 17%|███████████████ | 849/5115 [22:42<09:07, 7.79it/s]Error when converting pdf->txt: poppler error creating document\n", + "Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/4de4a9f436958574.pdf\n", "Error when converting pdf->txt: poppler error creating document\n", - "Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/4de4a9f436958574.pdf\n", - "Error when converting pdf->txt: poppler error creating document\n", - "Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/02958808b57334f0.pdf\n", - "Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/98668cafb8dda26f.pdf\n", - "Error during OCR of cc_04_10_2022/certs/reports/pdf/98668cafb8dda26f.pdf, using garbage: pdftoppm failed: 1\n", + "Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/98668cafb8dda26f.pdf\n", + "Error during OCR of cc_09_10_2022/certs/reports/pdf/98668cafb8dda26f.pdf, using garbage: pdftoppm failed: 1\n", "Cert dgst: 98668cafb8dda26f failed to convert report pdf->txt\n", - "Error during OCR of cc_04_10_2022/certs/reports/pdf/02958808b57334f0.pdf, using garbage: pdftoppm failed: 1\n", - "Error during OCR of cc_04_10_2022/certs/reports/pdf/4de4a9f436958574.pdf, using garbage: pdftoppm failed: 1\n", + "Error when converting pdf->txt: poppler error creating document\n", + "Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/02958808b57334f0.pdf\n", + "Error during OCR of cc_09_10_2022/certs/reports/pdf/02958808b57334f0.pdf, using garbage: pdftoppm failed: 1\n", "Cert dgst: 02958808b57334f0 failed to convert report pdf->txt\n", + "Error during OCR of cc_09_10_2022/certs/reports/pdf/4de4a9f436958574.pdf, using garbage: pdftoppm failed: 1\n", "Cert dgst: 4de4a9f436958574 failed to convert report pdf->txt\n", - "Converting reports to txt: 22%|███████████████████▉ | 1133/5115 [18:33<04:55, 13.49it/s]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/9903c89cbb35eec1.pdf\n", - "Converting reports to txt: 24%|█████████████████████▊ | 1238/5115 [18:41<05:01, 12.85it/s]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/1faf7bf1f74a1851.pdf\n", - "Converting reports to txt: 28%|█████████████████████████ | 1422/5115 [18:56<04:48, 12.81it/s]Error when converting pdf->txt: poppler error creating document\n", - "Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/422dc5758723c7d1.pdf\n", - "Error during OCR of cc_04_10_2022/certs/reports/pdf/422dc5758723c7d1.pdf, using garbage: pdftoppm failed: 1\n", + "Converting reports to txt: 22%|███████████████████▉ | 1132/5115 [23:06<04:36, 14.41it/s]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/9903c89cbb35eec1.pdf\n", + "Converting reports to txt: 24%|█████████████████████▉ | 1245/5115 [23:15<05:08, 12.54it/s]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/1faf7bf1f74a1851.pdf\n", + "Converting reports to txt: 28%|█████████████████████████ | 1423/5115 [23:30<04:34, 13.46it/s]Error when converting pdf->txt: poppler error creating document\n", + "Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/422dc5758723c7d1.pdf\n", + "Error during OCR of cc_09_10_2022/certs/reports/pdf/422dc5758723c7d1.pdf, using garbage: pdftoppm failed: 1\n", "Cert dgst: 422dc5758723c7d1 failed to convert report pdf->txt\n", - "Converting reports to txt: 31%|████████████████████████████▏ | 1604/5115 [19:10<04:21, 13.41it/s]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/209e2d18e1fa0cca.pdf\n", - "Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/b93dfa0a8ec3609c.pdf\n", - "Converting reports to txt: 32%|████████████████████████████▌ | 1624/5115 [19:11<03:53, 14.93it/s]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/6ed5861434d5fed9.pdf\n", - "Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/3df01446a2b92093.pdf\n", - "Converting reports to txt: 35%|███████████████████████████████▏ | 1773/5115 [19:28<06:59, 7.96it/s]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/3e5591d086a54905.pdf\n", - "Converting reports to txt: 36%|████████████████████████████████▋ | 1859/5115 [19:35<04:54, 11.07it/s]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/d3568613c552f9e8.pdf\n", - "Error during OCR of cc_04_10_2022/certs/reports/pdf/d3568613c552f9e8.pdf, using garbage: pdftoppm failed: 99\n", - "Converting reports to txt: 38%|██████████████████████████████████▏ | 1945/5115 [19:44<04:56, 10.69it/s]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/822e5f25e7c4631e.pdf\n", - "Converting reports to txt: 39%|██████████████████████████████████▋ | 1973/5115 [19:49<07:26, 7.04it/s]Error when converting pdf->txt: poppler error creating document\n", - "Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/2d05e976e1adf696.pdf\n", - "Error during OCR of cc_04_10_2022/certs/reports/pdf/2d05e976e1adf696.pdf, using garbage: pdftoppm failed: 1\n", + "Converting reports to txt: 31%|████████████████████████████▎ | 1608/5115 [23:43<04:03, 14.41it/s]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/b93dfa0a8ec3609c.pdf\n", + "Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/6ed5861434d5fed9.pdf\n", + "Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/3df01446a2b92093.pdf\n", + "Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/209e2d18e1fa0cca.pdf\n", + "Converting reports to txt: 35%|███████████████████████████████▏ | 1769/5115 [24:02<07:50, 7.11it/s]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/3e5591d086a54905.pdf\n", + "Converting reports to txt: 36%|████████████████████████████████▌ | 1852/5115 [24:10<05:03, 10.74it/s]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/d3568613c552f9e8.pdf\n", + "Error during OCR of cc_09_10_2022/certs/reports/pdf/d3568613c552f9e8.pdf, using garbage: pdftoppm failed: 99\n", + "Converting reports to txt: 38%|██████████████████████████████████▎ | 1951/5115 [24:19<04:47, 11.00it/s]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/822e5f25e7c4631e.pdf\n", + "Converting reports to txt: 38%|██████████████████████████████████▍ | 1960/5115 [24:21<06:34, 8.00it/s]Error when converting pdf->txt: poppler error creating document\n", + "Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/2d05e976e1adf696.pdf\n", + "Error during OCR of cc_09_10_2022/certs/reports/pdf/2d05e976e1adf696.pdf, using garbage: pdftoppm failed: 1\n", "Cert dgst: 2d05e976e1adf696 failed to convert report pdf->txt\n", - "Converting reports to txt: 41%|█████████████████████████████████████▏ | 2115/5115 [20:01<05:10, 9.65it/s]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/69d373903e9635ef.pdf\n", - "Converting reports to txt: 42%|█████████████████████████████████████▋ | 2143/5115 [20:04<05:15, 9.43it/s]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/ae1b80e9cccec491.pdf\n", - "Converting reports to txt: 43%|██████████████████████████████████████▎ | 2176/5115 [20:16<14:12, 3.45it/s]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/21d5f1b05e1ba491.pdf\n", - "Converting reports to txt: 47%|██████████████████████████████████████████▏ | 2396/5115 [20:46<03:57, 11.46it/s]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/3f8cee6d5bee5397.pdf\n", - "Converting reports to txt: 56%|██████████████████████████████████████████████████▋ | 2881/5115 [21:41<04:35, 8.10it/s]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/7e32023021d5aad2.pdf\n", - "Converting reports to txt: 59%|█████████████████████████████████████████████████████ | 3017/5115 [22:16<03:37, 9.65it/s]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/b43100f226a61f53.pdf\n", - "Converting reports to txt: 59%|█████████████████████████████████████████████████████▎ | 3031/5115 [22:17<03:21, 10.35it/s]Error during OCR of cc_04_10_2022/certs/reports/pdf/b43100f226a61f53.pdf, using garbage: pdftoppm failed: 99\n", - "Converting reports to txt: 75%|███████████████████████████████████████████████████████████████████▌ | 3840/5115 [23:32<01:42, 12.38it/s]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/03cc150ce40cf816.pdf\n" + "Converting reports to txt: 41%|█████████████████████████████████████▏ | 2110/5115 [24:33<04:05, 12.26it/s]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/69d373903e9635ef.pdf\n", + "Converting reports to txt: 42%|█████████████████████████████████████▉ | 2153/5115 [24:37<04:17, 11.51it/s]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/ae1b80e9cccec491.pdf\n", + "Converting reports to txt: 42%|██████████████████████████████████████▏ | 2172/5115 [24:42<07:16, 6.74it/s]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/21d5f1b05e1ba491.pdf\n", + "Converting reports to txt: 47%|██████████████████████████████████████████ | 2390/5115 [25:09<03:33, 12.75it/s]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/3f8cee6d5bee5397.pdf\n", + "Converting reports to txt: 56%|██████████████████████████████████████████████████▋ | 2884/5115 [26:17<04:55, 7.54it/s]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/7e32023021d5aad2.pdf\n", + "Converting reports to txt: 59%|████████████████████████████████████████████████████▉ | 3008/5115 [26:49<03:53, 9.02it/s]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/b43100f226a61f53.pdf\n", + "Converting reports to txt: 59%|█████████████████████████████████████████████████████▏ | 3023/5115 [26:50<03:20, 10.43it/s]Error during OCR of cc_09_10_2022/certs/reports/pdf/b43100f226a61f53.pdf, using garbage: pdftoppm failed: 99\n", + "Converting reports to txt: 75%|███████████████████████████████████████████████████████████████████▎ | 3827/5115 [28:03<01:36, 13.34it/s]Error when converting pdf->txt: poppler error creating document\n", + "Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/f9c8da9deff77ab5.pdf\n", + "Converting reports to txt: 75%|███████████████████████████████████████████████████████████████████▌ | 3843/5115 [28:04<01:31, 13.88it/s]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/6db03eff148934a4.pdf\n", + "Error during OCR of cc_09_10_2022/certs/reports/pdf/f9c8da9deff77ab5.pdf, using garbage: pdftoppm failed: 1\n", + "Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/03cc150ce40cf816.pdf\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/6db03eff148934a4.pdf\n", - "Error when converting pdf->txt: poppler error creating document\n", - "Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/f9c8da9deff77ab5.pdf\n", - "Error during OCR of cc_04_10_2022/certs/reports/pdf/f9c8da9deff77ab5.pdf, using garbage: pdftoppm failed: 1\n", "Cert dgst: f9c8da9deff77ab5 failed to convert report pdf->txt\n", - "Converting reports to txt: 77%|████████████████████████████████████████████████████████████████████▊ | 3913/5115 [23:36<01:23, 14.40it/s]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/3570791ff9c92912.pdf\n", - "Converting reports to txt: 77%|█████████████████████████████████████████████████████████████████████▌ | 3955/5115 [23:40<01:42, 11.27it/s]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/ed886279d0d61096.pdf\n", - "Converting reports to txt: 86%|█████████████████████████████████████████████████████████████████████████████▌ | 4408/5115 [24:29<00:57, 12.26it/s]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/c763b37bb95517e9.pdf\n", - "Converting reports to txt: 86%|█████████████████████████████████████████████████████████████████████████████▊ | 4422/5115 [24:30<00:55, 12.39it/s]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/40640508ac3a37f2.pdf\n", - "Converting reports to txt: 87%|██████████████████████████████████████████████████████████████████████████████ | 4433/5115 [24:32<00:58, 11.59it/s]Error when converting pdf->txt: poppler error creating document\n", - "Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/7147c2f70d983d57.pdf\n", - "Converting reports to txt: 87%|██████████████████████████████████████████████████████████████████████████████▏ | 4447/5115 [24:33<00:54, 12.18it/s]Error during OCR of cc_04_10_2022/certs/reports/pdf/7147c2f70d983d57.pdf, using garbage: pdftoppm failed: 1\n", + "Converting reports to txt: 76%|████████████████████████████████████████████████████████████████████▌ | 3900/5115 [28:07<01:29, 13.63it/s]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/3570791ff9c92912.pdf\n", + "Converting reports to txt: 77%|█████████████████████████████████████████████████████████████████████▍ | 3948/5115 [28:12<01:59, 9.80it/s]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/ed886279d0d61096.pdf\n", + "Converting reports to txt: 86%|█████████████████████████████████████████████████████████████████████████████▌ | 4407/5115 [29:04<01:00, 11.64it/s]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/c763b37bb95517e9.pdf\n", + "Converting reports to txt: 87%|█████████████████████████████████████████████████████████████████████████████▉ | 4430/5115 [29:05<00:53, 12.70it/s]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/40640508ac3a37f2.pdf\n", + "Error when converting pdf->txt: poppler error creating document\n", + "Converting reports to txt: 87%|██████████████████████████████████████████████████████████████████████████████▏ | 4444/5115 [29:07<00:57, 11.59it/s]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/7147c2f70d983d57.pdf\n", + "Error during OCR of cc_09_10_2022/certs/reports/pdf/7147c2f70d983d57.pdf, using garbage: pdftoppm failed: 1\n", "Cert dgst: 7147c2f70d983d57 failed to convert report pdf->txt\n", - "Converting reports to txt: 94%|████████████████████████████████████████████████████████████████████████████████████▉ | 4830/5115 [25:07<00:26, 10.62it/s]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/3ad7749ef678ce95.pdf\n", - "Converting reports to txt: 96%|█████████████████████████████████████████████████████████████████████████████████████▉ | 4887/5115 [25:10<00:15, 15.18it/s]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/b762fcb2983aa148.pdf\n", - "Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/1683817e5db17d9c.pdf\n", - "Converting reports to txt: 96%|██████████████████████████████████████████████████████████████████████████████████████▍ | 4915/5115 [25:12<00:16, 12.31it/s]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/cc681ca95621a6db.pdf\n", - "Converting reports to txt: 96%|██████████████████████████████████████████████████████████████████████████████████████▋ | 4928/5115 [25:14<00:15, 11.81it/s]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/889693d2b11bdfaf.pdf\n", - "Converting reports to txt: 97%|███████████████████████████████████████████████████████████████████████████████████████ | 4951/5115 [25:16<00:15, 10.92it/s]Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/876cb2fe02017f3f.pdf\n", - "Converting reports to txt: 100%|██████████████████████████████████████████████████████████████████████████████████████████| 5115/5115 [25:33<00:00, 3.34it/s]\n", - "Converting targets to txt: 2%|██ | 114/5032 [00:25<18:24, 4.45it/s]Error when converting pdf->txt: poppler error creating document\n", - "Detected garbage during conversion of cc_04_10_2022/certs/targets/pdf/bfc86f14e2484335.pdf\n", - "Error during OCR of cc_04_10_2022/certs/targets/pdf/bfc86f14e2484335.pdf, using garbage: pdftoppm failed: 1\n", - "Converting targets to txt: 2%|██▏ | 121/5032 [00:27<18:58, 4.31it/s]Cert dgst: bfc86f14e2484335 failed to convert security target pdf->txt\n", - "Converting targets to txt: 10%|█████████▍ | 521/5032 [02:41<24:58, 3.01it/s]Error when converting pdf->txt: poppler error creating document\n", - "Detected garbage during conversion of cc_04_10_2022/certs/targets/pdf/4c9468f20fdb04f7.pdf\n", - "Converting targets to txt: 10%|█████████▌ | 528/5032 [02:47<34:23, 2.18it/s]Error during OCR of cc_04_10_2022/certs/targets/pdf/4c9468f20fdb04f7.pdf, using garbage: pdftoppm failed: 1\n", + "Converting reports to txt: 95%|█████████████████████████████████████████████████████████████████████████████████████ | 4835/5115 [29:41<00:25, 11.10it/s]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/3ad7749ef678ce95.pdf\n", + "Converting reports to txt: 95%|█████████████████████████████████████████████████████████████████████████████████████▊ | 4877/5115 [29:44<00:16, 14.32it/s]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/1683817e5db17d9c.pdf\n", + "Converting reports to txt: 96%|██████████████████████████████████████████████████████████████████████████████████████▏ | 4899/5115 [29:45<00:13, 16.09it/s]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/b762fcb2983aa148.pdf\n", + "Converting reports to txt: 96%|██████████████████████████████████████████████████████████████████████████████████████▌ | 4919/5115 [29:47<00:15, 12.37it/s]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/cc681ca95621a6db.pdf\n", + "Converting reports to txt: 96%|██████████████████████████████████████████████████████████████████████████████████████▊ | 4931/5115 [29:48<00:15, 11.60it/s]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/889693d2b11bdfaf.pdf\n", + "Converting reports to txt: 97%|███████████████████████████████████████████████████████████████████████████████████████ | 4945/5115 [29:49<00:14, 12.02it/s]Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/876cb2fe02017f3f.pdf\n", + "Converting reports to txt: 100%|██████████████████████████████████████████████████████████████████████████████████████████| 5115/5115 [30:08<00:00, 2.83it/s]\n", + "Converting targets to txt: 2%|█▉ | 109/5038 [00:28<23:55, 3.43it/s]Error when converting pdf->txt: poppler error creating document\n", + "Converting targets to txt: 2%|██ | 117/5038 [00:29<20:18, 4.04it/s]Detected garbage during conversion of cc_09_10_2022/certs/targets/pdf/bfc86f14e2484335.pdf\n", + "Error during OCR of cc_09_10_2022/certs/targets/pdf/bfc86f14e2484335.pdf, using garbage: pdftoppm failed: 1\n", + "Cert dgst: bfc86f14e2484335 failed to convert security target pdf->txt\n", + "Converting targets to txt: 10%|█████████▍ | 522/5038 [02:45<19:55, 3.78it/s]Error when converting pdf->txt: poppler error creating document\n", + "Detected garbage during conversion of cc_09_10_2022/certs/targets/pdf/4c9468f20fdb04f7.pdf\n", + "Converting targets to txt: 11%|█████████▌ | 529/5038 [02:49<23:50, 3.15it/s]Error during OCR of cc_09_10_2022/certs/targets/pdf/4c9468f20fdb04f7.pdf, using garbage: pdftoppm failed: 1\n", "Cert dgst: 4c9468f20fdb04f7 failed to convert security target pdf->txt\n", - "Converting targets to txt: 21%|██████████████████▉ | 1059/5032 [05:08<11:45, 5.63it/s]Error when converting pdf->txt: poppler error creating document\n", - "Converting targets to txt: 21%|███████████████████ | 1067/5032 [05:09<12:12, 5.42it/s]Detected garbage during conversion of cc_04_10_2022/certs/targets/pdf/a2b962c7f1d2bc56.pdf\n", - "Error during OCR of cc_04_10_2022/certs/targets/pdf/a2b962c7f1d2bc56.pdf, using garbage: pdftoppm failed: 1\n", - "Converting targets to txt: 21%|███████████████████▏ | 1074/5032 [05:11<12:00, 5.50it/s]Cert dgst: a2b962c7f1d2bc56 failed to convert security target pdf->txt\n", - "Converting targets to txt: 28%|█████████████████████████▎ | 1417/5032 [06:43<15:03, 4.00it/s]Error when converting pdf->txt: poppler error creating document\n", - "Detected garbage during conversion of cc_04_10_2022/certs/targets/pdf/422dc5758723c7d1.pdf\n", - "Converting targets to txt: 28%|█████████████████████████▍ | 1424/5032 [06:46<17:46, 3.38it/s]Error during OCR of cc_04_10_2022/certs/targets/pdf/422dc5758723c7d1.pdf, using garbage: pdftoppm failed: 1\n", + "Converting targets to txt: 21%|███████████████████ | 1064/5038 [05:14<11:32, 5.74it/s]Error when converting pdf->txt: poppler error creating document\n", + "Detected garbage during conversion of cc_09_10_2022/certs/targets/pdf/a2b962c7f1d2bc56.pdf\n", + "Converting targets to txt: 21%|███████████████████▏ | 1072/5038 [05:15<11:35, 5.70it/s]Error during OCR of cc_09_10_2022/certs/targets/pdf/a2b962c7f1d2bc56.pdf, using garbage: pdftoppm failed: 1\n", + "Cert dgst: a2b962c7f1d2bc56 failed to convert security target pdf->txt\n", + "Converting targets to txt: 28%|█████████████████████████▎ | 1415/5038 [06:46<13:42, 4.41it/s]Error when converting pdf->txt: poppler error creating document\n", + "Converting targets to txt: 28%|█████████████████████████▍ | 1422/5038 [06:49<17:28, 3.45it/s]Detected garbage during conversion of cc_09_10_2022/certs/targets/pdf/422dc5758723c7d1.pdf\n", + "Converting targets to txt: 28%|█████████████████████████▌ | 1429/5038 [06:50<15:03, 4.00it/s]Error during OCR of cc_09_10_2022/certs/targets/pdf/422dc5758723c7d1.pdf, using garbage: pdftoppm failed: 1\n", "Cert dgst: 422dc5758723c7d1 failed to convert security target pdf->txt\n", - "Converting targets to txt: 31%|████████████████████████████ | 1572/5032 [07:26<18:40, 3.09it/s]Detected garbage during conversion of cc_04_10_2022/certs/targets/pdf/063d3805a3b12930.pdf\n", - "Converting targets to txt: 33%|█████████████████████████████▌ | 1651/5032 [07:45<12:10, 4.63it/s]Detected garbage during conversion of cc_04_10_2022/certs/targets/pdf/2f4a41e8a5dfac6a.pdf\n", - "Converting targets to txt: 33%|█████████████████████████████▉ | 1676/5032 [07:50<11:36, 4.82it/s]Detected garbage during conversion of cc_04_10_2022/certs/targets/pdf/504258938266b87f.pdf\n", - "Converting targets to txt: 35%|███████████████████████████████▊ | 1781/5032 [08:18<13:29, 4.02it/s]Detected garbage during conversion of cc_04_10_2022/certs/targets/pdf/de85ff4c31069f12.pdf\n", - "Converting targets to txt: 37%|█████████████████████████████████ | 1850/5032 [08:37<13:22, 3.96it/s]Detected garbage during conversion of cc_04_10_2022/certs/targets/pdf/d3568613c552f9e8.pdf\n", - "Converting targets to txt: 37%|█████████████████████████████████▏ | 1858/5032 [08:42<22:28, 2.35it/s]Error during OCR of cc_04_10_2022/certs/targets/pdf/d3568613c552f9e8.pdf, using garbage: pdftoppm failed: 99\n", - "Converting targets to txt: 40%|████████████████████████████████████ | 2014/5032 [09:20<13:10, 3.82it/s]Detected garbage during conversion of cc_04_10_2022/certs/targets/pdf/b4bc79d8a558c7cf.pdf\n", - "Converting targets to txt: 40%|████████████████████████████████████ | 2017/5032 [09:22<16:54, 2.97it/s]Detected garbage during conversion of cc_04_10_2022/certs/targets/pdf/09b43147f1307352.pdf\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Detected garbage during conversion of cc_04_10_2022/certs/targets/pdf/ce987167d42db722.pdf\n", - "Converting targets to txt: 40%|████████████████████████████████████▏ | 2020/5032 [09:23<17:00, 2.95it/s]Detected garbage during conversion of cc_04_10_2022/certs/targets/pdf/c16a92b40550193d.pdf\n", - "Converting targets to txt: 40%|███████████████████████████████████▌ | 2032/5032 [10:42<2:44:41, 3.29s/it]Detected garbage during conversion of cc_04_10_2022/certs/targets/pdf/2ff761edd4ed9b72.pdf\n", - "Converting targets to txt: 41%|███████████████████████████████████▊ | 2050/5032 [12:33<2:34:26, 3.11s/it]Detected garbage during conversion of cc_04_10_2022/certs/targets/pdf/9e4d3347efd95ec9.pdf\n", - "Converting targets to txt: 43%|███████████████████████████████████████ | 2182/5032 [13:38<14:26, 3.29it/s]Detected garbage during conversion of cc_04_10_2022/certs/targets/pdf/ad9ea5a4acf9ac53.pdf\n", - "Converting targets to txt: 44%|██████████████████████████████████████▎ | 2192/5032 [16:39<6:57:28, 8.82s/it]Detected garbage during conversion of cc_04_10_2022/certs/targets/pdf/28922ef97b2dfaa0.pdf\n", - "Converting targets to txt: 44%|█████████████████████████████████████▉ | 2194/5032 [20:07<29:34:31, 37.52s/it]Detected garbage during conversion of cc_04_10_2022/certs/targets/pdf/5c715225c805354f.pdf\n", - "Converting targets to txt: 68%|█████████████████████████████████████████████████████████████▍ | 3437/5032 [27:19<06:05, 4.36it/s]Detected garbage during conversion of cc_04_10_2022/certs/targets/pdf/863d91c6a2b8e77a.pdf\n", - "Converting targets to txt: 68%|█████████████████████████████████████████████████████████████▌ | 3445/5032 [27:21<06:55, 3.82it/s]Detected garbage during conversion of cc_04_10_2022/certs/targets/pdf/f65cab49ea5422dd.pdf\n", - "Detected garbage during conversion of cc_04_10_2022/certs/targets/pdf/731102b849e8d104.pdf\n", - "Converting targets to txt: 77%|████████████████████████████████████████████████████████████████████▉ | 3856/5032 [29:22<04:34, 4.28it/s]Detected garbage during conversion of cc_04_10_2022/certs/targets/pdf/bc31fd0273ab72f8.pdf\n", - "Detected garbage during conversion of cc_04_10_2022/certs/targets/pdf/18e5179ba124af1d.pdf\n", - "Converting targets to txt: 79%|██████████████████████████████████████████████████████████████████████▉ | 3968/5032 [29:56<05:36, 3.16it/s]Detected garbage during conversion of cc_04_10_2022/certs/targets/pdf/5dfeb0219325989b.pdf\n", - "Converting targets to txt: 79%|███████████████████████████████████████████████████████████████████████ | 3974/5032 [29:59<06:06, 2.89it/s]Detected garbage during conversion of cc_04_10_2022/certs/targets/pdf/22617e916bad6f53.pdf\n", - "Detected garbage during conversion of cc_04_10_2022/certs/targets/pdf/6344672e3178f63e.pdf\n", - "Converting targets to txt: 80%|███████████████████████████████████████████████████████████████████████▊ | 4016/5032 [38:07<29:43, 1.76s/it]Detected garbage during conversion of cc_04_10_2022/certs/targets/pdf/483dc36fcf11b257.pdf\n", - "Converting targets to txt: 80%|██████████████████████████████████████████████████████████████████████▎ | 4022/5032 [39:24<1:31:32, 5.44s/it]Detected garbage during conversion of cc_04_10_2022/certs/targets/pdf/5885f28f042038c1.pdf\n", - "Converting targets to txt: 80%|████████████████████████████████████████████████████████████████████████▎ | 4046/5032 [39:36<14:33, 1.13it/s]Detected garbage during conversion of cc_04_10_2022/certs/targets/pdf/7b08ad74a882337c.pdf\n", - "Converting targets to txt: 87%|██████████████████████████████████████████████████████████████████████████████▎ | 4378/5032 [42:42<02:31, 4.31it/s]Error when converting pdf->txt: poppler error creating document\n", - "Converting targets to txt: 87%|██████████████████████████████████████████████████████████████████████████████▍ | 4383/5032 [42:44<02:33, 4.22it/s]Detected garbage during conversion of cc_04_10_2022/certs/targets/pdf/7147c2f70d983d57.pdf\n", - "Error during OCR of cc_04_10_2022/certs/targets/pdf/7147c2f70d983d57.pdf, using garbage: pdftoppm failed: 1\n", + "Converting targets to txt: 31%|████████████████████████████▏ | 1576/5038 [07:30<17:18, 3.33it/s]Detected garbage during conversion of cc_09_10_2022/certs/targets/pdf/063d3805a3b12930.pdf\n", + "Converting targets to txt: 33%|█████████████████████████████▋ | 1660/5038 [07:48<10:10, 5.53it/s]Detected garbage during conversion of cc_09_10_2022/certs/targets/pdf/2f4a41e8a5dfac6a.pdf\n", + "Converting targets to txt: 33%|█████████████████████████████▉ | 1678/5038 [07:52<10:57, 5.11it/s]Detected garbage during conversion of cc_09_10_2022/certs/targets/pdf/504258938266b87f.pdf\n", + "Converting targets to txt: 35%|███████████████████████████████▉ | 1785/5038 [08:17<12:26, 4.36it/s]Detected garbage during conversion of cc_09_10_2022/certs/targets/pdf/de85ff4c31069f12.pdf\n", + "Converting targets to txt: 37%|█████████████████████████████████▏ | 1855/5038 [08:33<10:24, 5.10it/s]Detected garbage during conversion of cc_09_10_2022/certs/targets/pdf/d3568613c552f9e8.pdf\n", + "Converting targets to txt: 37%|█████████████████████████████████▏ | 1858/5038 [08:38<22:57, 2.31it/s]Error during OCR of cc_09_10_2022/certs/targets/pdf/d3568613c552f9e8.pdf, using garbage: pdftoppm failed: 99\n", + "Converting targets to txt: 40%|███████████████████████████████████▉ | 2015/5038 [09:13<13:29, 3.73it/s]Detected garbage during conversion of cc_09_10_2022/certs/targets/pdf/b4bc79d8a558c7cf.pdf\n", + "Converting targets to txt: 40%|████████████████████████████████████ | 2020/5038 [09:14<13:55, 3.61it/s]Detected garbage during conversion of cc_09_10_2022/certs/targets/pdf/09b43147f1307352.pdf\n", + "Detected garbage during conversion of cc_09_10_2022/certs/targets/pdf/c16a92b40550193d.pdf\n", + "Detected garbage during conversion of cc_09_10_2022/certs/targets/pdf/ce987167d42db722.pdf\n", + "Converting targets to txt: 40%|███████████████████████████████████▌ | 2034/5038 [10:29<2:33:49, 3.07s/it]Detected garbage during conversion of cc_09_10_2022/certs/targets/pdf/2ff761edd4ed9b72.pdf\n", + "Converting targets to txt: 41%|███████████████████████████████████▉ | 2054/5038 [12:42<3:10:14, 3.83s/it]Detected garbage during conversion of cc_09_10_2022/certs/targets/pdf/9e4d3347efd95ec9.pdf\n", + "Converting targets to txt: 43%|███████████████████████████████████████ | 2184/5038 [13:32<15:16, 3.11it/s]Detected garbage during conversion of cc_09_10_2022/certs/targets/pdf/ad9ea5a4acf9ac53.pdf\n", + "Converting targets to txt: 44%|██████████████████████████████████████▎ | 2193/5038 [15:35<6:11:17, 7.83s/it]Detected garbage during conversion of cc_09_10_2022/certs/targets/pdf/28922ef97b2dfaa0.pdf\n", + "Converting targets to txt: 44%|██████████████████████████████████████▎ | 2195/5038 [15:36<5:00:31, 6.34s/it]Detected garbage during conversion of cc_09_10_2022/certs/targets/pdf/5c715225c805354f.pdf\n", + "Converting targets to txt: 68%|█████████████████████████████████████████████████████████████▌ | 3446/5038 [25:27<06:21, 4.18it/s]Detected garbage during conversion of cc_09_10_2022/certs/targets/pdf/731102b849e8d104.pdf\n", + "Detected garbage during conversion of cc_09_10_2022/certs/targets/pdf/863d91c6a2b8e77a.pdf\n", + "Detected garbage during conversion of cc_09_10_2022/certs/targets/pdf/f65cab49ea5422dd.pdf\n", + "Converting targets to txt: 77%|████████████████████████████████████████████████████████████████████▉ | 3861/5038 [27:30<04:53, 4.01it/s]Detected garbage during conversion of cc_09_10_2022/certs/targets/pdf/bc31fd0273ab72f8.pdf\n", + "Detected garbage during conversion of cc_09_10_2022/certs/targets/pdf/18e5179ba124af1d.pdf\n", + "Converting targets to txt: 79%|██████████████████████████████████████████████████████████████████████▉ | 3974/5038 [28:05<05:39, 3.13it/s]Detected garbage during conversion of cc_09_10_2022/certs/targets/pdf/5dfeb0219325989b.pdf\n", + "Converting targets to txt: 79%|███████████████████████████████████████████████████████████████████████ | 3980/5038 [28:08<06:39, 2.65it/s]Detected garbage during conversion of cc_09_10_2022/certs/targets/pdf/22617e916bad6f53.pdf\n", + "Detected garbage during conversion of cc_09_10_2022/certs/targets/pdf/6344672e3178f63e.pdf\n", + "Converting targets to txt: 80%|███████████████████████████████████████████████████████████████████████▊ | 4017/5038 [36:55<48:39, 2.86s/it]Detected garbage during conversion of cc_09_10_2022/certs/targets/pdf/483dc36fcf11b257.pdf\n", + "Converting targets to txt: 80%|██████████████████████████████████████████████████████████████████████▎ | 4027/5038 [38:47<2:20:12, 8.32s/it]Detected garbage during conversion of cc_09_10_2022/certs/targets/pdf/5885f28f042038c1.pdf\n", + "Converting targets to txt: 80%|████████████████████████████████████████████████████████████████████████▍ | 4052/5038 [38:58<19:47, 1.20s/it]Detected garbage during conversion of cc_09_10_2022/certs/targets/pdf/7b08ad74a882337c.pdf\n", + "Converting targets to txt: 87%|██████████████████████████████████████████████████████████████████████████████▎ | 4386/5038 [42:02<02:25, 4.47it/s]Error when converting pdf->txt: poppler error creating document\n", + "Detected garbage during conversion of cc_09_10_2022/certs/targets/pdf/7147c2f70d983d57.pdf\n", + "Error during OCR of cc_09_10_2022/certs/targets/pdf/7147c2f70d983d57.pdf, using garbage: pdftoppm failed: 1\n", "Cert dgst: 7147c2f70d983d57 failed to convert security target pdf->txt\n", - "Converting targets to txt: 90%|████████████████████████████████████████████████████████████████████████████████▉ | 4523/5032 [43:33<03:02, 2.79it/s]Detected garbage during conversion of cc_04_10_2022/certs/targets/pdf/931e1b2a68a1bcd2.pdf\n", - "Converting targets to txt: 92%|██████████████████████████████████████████████████████████████████████████████████▍ | 4612/5032 [43:54<01:46, 3.93it/s]Detected garbage during conversion of cc_04_10_2022/certs/targets/pdf/16229c97ce083e8c.pdf\n", - "Converting targets to txt: 99%|████████████████████████████████████████████████████████████████████████████████████████▉ | 4973/5032 [45:28<00:13, 4.30it/s]Error when converting pdf->txt: poppler error creating page\n", - "Detected garbage during conversion of cc_04_10_2022/certs/targets/pdf/a552244ec3ca8f60.pdf\n", - "Converting targets to txt: 100%|██████████████████████████████████████████████████████████████████████████████████████████| 5032/5032 [47:33<00:00, 1.76it/s]\n", + "Converting targets to txt: 90%|████████████████████████████████████████████████████████████████████████████████▉ | 4529/5038 [42:55<02:40, 3.17it/s]Detected garbage during conversion of cc_09_10_2022/certs/targets/pdf/931e1b2a68a1bcd2.pdf\n", + "Converting targets to txt: 92%|██████████████████████████████████████████████████████████████████████████████████▌ | 4622/5038 [43:16<01:33, 4.44it/s]Detected garbage during conversion of cc_09_10_2022/certs/targets/pdf/16229c97ce083e8c.pdf\n", + "Converting targets to txt: 99%|████████████████████████████████████████████████████████████████████████████████████████▉ | 4979/5038 [44:47<00:13, 4.31it/s]Error when converting pdf->txt: poppler error creating page\n", + "Converting targets to txt: 99%|█████████████████████████████████████████████████████████████████████████████████████████ | 4984/5038 [44:49<00:13, 3.94it/s]Detected garbage during conversion of cc_09_10_2022/certs/targets/pdf/a552244ec3ca8f60.pdf\n", + "Converting targets to txt: 100%|██████████████████████████████████████████████████████████████████████████████████████████| 5038/5038 [46:48<00:00, 1.79it/s]\n", "Converting reports to txt: 0%| | 0/8 [00:00<?, ?it/s]Error when converting pdf->txt: poppler error creating document\n", "Error when converting pdf->txt: poppler error creating document\n", "Error when converting pdf->txt: poppler error creating document\n", + "Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/02958808b57334f0.pdf\n", "Error when converting pdf->txt: poppler error creating document\n", "Error when converting pdf->txt: poppler error creating document\n", "Error when converting pdf->txt: poppler error creating document\n", - "Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/7147c2f70d983d57.pdf\n", "Error when converting pdf->txt: poppler error creating document\n", - "Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/2d05e976e1adf696.pdf\n", + "Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/7147c2f70d983d57.pdf\n", "Error when converting pdf->txt: poppler error creating document\n", - "Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/bfc86f14e2484335.pdf\n", - "Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/4de4a9f436958574.pdf\n", - "Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/02958808b57334f0.pdf\n", - "Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/f9c8da9deff77ab5.pdf\n", - "Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/422dc5758723c7d1.pdf\n", - "Detected garbage during conversion of cc_04_10_2022/certs/reports/pdf/98668cafb8dda26f.pdf\n", - "Error during OCR of cc_04_10_2022/certs/reports/pdf/7147c2f70d983d57.pdf, using garbage: pdftoppm failed: 1\n", - "Error during OCR of cc_04_10_2022/certs/reports/pdf/2d05e976e1adf696.pdf, using garbage: pdftoppm failed: 1\n", + "Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/98668cafb8dda26f.pdf\n", + "Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/f9c8da9deff77ab5.pdf\n", + "Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/4de4a9f436958574.pdf\n", + "Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/422dc5758723c7d1.pdf\n", + "Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/2d05e976e1adf696.pdf\n", + "Detected garbage during conversion of cc_09_10_2022/certs/reports/pdf/bfc86f14e2484335.pdf\n", + "Error during OCR of cc_09_10_2022/certs/reports/pdf/02958808b57334f0.pdf, using garbage: pdftoppm failed: 1\n", + "Cert dgst: 02958808b57334f0 failed to convert report pdf->txt\n", + "Error during OCR of cc_09_10_2022/certs/reports/pdf/7147c2f70d983d57.pdf, using garbage: pdftoppm failed: 1\n", "Cert dgst: 7147c2f70d983d57 failed to convert report pdf->txt\n", - "Cert dgst: 2d05e976e1adf696 failed to convert report pdf->txt\n", - "Error during OCR of cc_04_10_2022/certs/reports/pdf/98668cafb8dda26f.pdf, using garbage: pdftoppm failed: 1\n", + "Error during OCR of cc_09_10_2022/certs/reports/pdf/98668cafb8dda26f.pdf, using garbage: pdftoppm failed: 1\n", "Cert dgst: 98668cafb8dda26f failed to convert report pdf->txt\n", - "Error during OCR of cc_04_10_2022/certs/reports/pdf/02958808b57334f0.pdf, using garbage: pdftoppm failed: 1\n", - "Cert dgst: 02958808b57334f0 failed to convert report pdf->txt\n", - "Error during OCR of cc_04_10_2022/certs/reports/pdf/422dc5758723c7d1.pdf, using garbage: pdftoppm failed: 1\n", - "Cert dgst: 422dc5758723c7d1 failed to convert report pdf->txt\n", - "Error during OCR of cc_04_10_2022/certs/reports/pdf/bfc86f14e2484335.pdf, using garbage: pdftoppm failed: 1\n", - "Error during OCR of cc_04_10_2022/certs/reports/pdf/f9c8da9deff77ab5.pdf, using garbage: pdftoppm failed: 1\n", + "Error during OCR of cc_09_10_2022/certs/reports/pdf/bfc86f14e2484335.pdf, using garbage: pdftoppm failed: 1\n", "Cert dgst: bfc86f14e2484335 failed to convert report pdf->txt\n", + "Error during OCR of cc_09_10_2022/certs/reports/pdf/422dc5758723c7d1.pdf, using garbage: pdftoppm failed: 1\n", + "Cert dgst: 422dc5758723c7d1 failed to convert report pdf->txt\n", + "Error during OCR of cc_09_10_2022/certs/reports/pdf/f9c8da9deff77ab5.pdf, using garbage: pdftoppm failed: 1\n", "Cert dgst: f9c8da9deff77ab5 failed to convert report pdf->txt\n", - "Error during OCR of cc_04_10_2022/certs/reports/pdf/4de4a9f436958574.pdf, using garbage: pdftoppm failed: 1\n", - "Cert dgst: 4de4a9f436958574 failed to convert report pdf->txt\n" + "Error during OCR of cc_09_10_2022/certs/reports/pdf/2d05e976e1adf696.pdf, using garbage: pdftoppm failed: 1\n", + "Cert dgst: 2d05e976e1adf696 failed to convert report pdf->txt\n", + "Error during OCR of cc_09_10_2022/certs/reports/pdf/4de4a9f436958574.pdf, using garbage: pdftoppm failed: 1\n", + "Cert dgst: 4de4a9f436958574 failed to convert report pdf->txt\n", + "Converting reports to txt: 100%|████████████████████████████████████████████████████████████████████████████████████████████████| 8/8 [00:01<00:00, 7.98it/s]\n", + "Converting targets to txt: 0%| | 0/5 [00:00<?, ?it/s]Error when converting pdf->txt: poppler error creating document\n", + "Detected garbage during conversion of cc_09_10_2022/certs/targets/pdf/7147c2f70d983d57.pdf\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "Converting reports to txt: 100%|████████████████████████████████████████████████████████████████████████████████████████████████| 8/8 [00:01<00:00, 7.98it/s]\n", - "Converting targets to txt: 0%| | 0/5 [00:00<?, ?it/s]Error when converting pdf->txt: poppler error creating document\n", - "Detected garbage during conversion of cc_04_10_2022/certs/targets/pdf/7147c2f70d983d57.pdf\n", "Error when converting pdf->txt: poppler error creating document\n", "Error when converting pdf->txt: poppler error creating document\n", "Error when converting pdf->txt: poppler error creating document\n", + "Error during OCR of cc_09_10_2022/certs/targets/pdf/7147c2f70d983d57.pdf, using garbage: pdftoppm failed: 1\n", "Error when converting pdf->txt: poppler error creating document\n", - "Error during OCR of cc_04_10_2022/certs/targets/pdf/7147c2f70d983d57.pdf, using garbage: pdftoppm failed: 1\n", - "Detected garbage during conversion of cc_04_10_2022/certs/targets/pdf/a2b962c7f1d2bc56.pdf\n", - "Detected garbage during conversion of cc_04_10_2022/certs/targets/pdf/bfc86f14e2484335.pdf\n", - "Detected garbage during conversion of cc_04_10_2022/certs/targets/pdf/422dc5758723c7d1.pdf\n", - "Detected garbage during conversion of cc_04_10_2022/certs/targets/pdf/4c9468f20fdb04f7.pdf\n", + "Detected garbage during conversion of cc_09_10_2022/certs/targets/pdf/a2b962c7f1d2bc56.pdf\n", + "Detected garbage during conversion of cc_09_10_2022/certs/targets/pdf/422dc5758723c7d1.pdf\n", + "Detected garbage during conversion of cc_09_10_2022/certs/targets/pdf/bfc86f14e2484335.pdf\n", "Cert dgst: 7147c2f70d983d57 failed to convert security target pdf->txt\n", - "Error during OCR of cc_04_10_2022/certs/targets/pdf/a2b962c7f1d2bc56.pdf, using garbage: pdftoppm failed: 1\n", + "Detected garbage during conversion of cc_09_10_2022/certs/targets/pdf/4c9468f20fdb04f7.pdf\n", + "Error during OCR of cc_09_10_2022/certs/targets/pdf/a2b962c7f1d2bc56.pdf, using garbage: pdftoppm failed: 1\n", "Cert dgst: a2b962c7f1d2bc56 failed to convert security target pdf->txt\n", - "Error during OCR of cc_04_10_2022/certs/targets/pdf/bfc86f14e2484335.pdf, using garbage: pdftoppm failed: 1\n", + "Error during OCR of cc_09_10_2022/certs/targets/pdf/bfc86f14e2484335.pdf, using garbage: pdftoppm failed: 1\n", "Cert dgst: bfc86f14e2484335 failed to convert security target pdf->txt\n", - "Error during OCR of cc_04_10_2022/certs/targets/pdf/422dc5758723c7d1.pdf, using garbage: pdftoppm failed: 1\n", + "Error during OCR of cc_09_10_2022/certs/targets/pdf/422dc5758723c7d1.pdf, using garbage: pdftoppm failed: 1\n", "Cert dgst: 422dc5758723c7d1 failed to convert security target pdf->txt\n", - "Error during OCR of cc_04_10_2022/certs/targets/pdf/4c9468f20fdb04f7.pdf, using garbage: pdftoppm failed: 1\n", + "Error during OCR of cc_09_10_2022/certs/targets/pdf/4c9468f20fdb04f7.pdf, using garbage: pdftoppm failed: 1\n", "Cert dgst: 4c9468f20fdb04f7 failed to convert security target pdf->txt\n", "Converting targets to txt: 100%|████████████████████████████████████████████████████████████████████████████████████████████████| 5/5 [00:01<00:00, 4.99it/s]\n" ] @@ -483,7 +524,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 11, "metadata": { "pycharm": { "name": "#%%\n" @@ -497,11 +538,11 @@ "text": [ "Extracting report metadata: 0%| | 0/5107 [00:00<?, ?it/s]Failed to read metadata of certs/reports/pdf/1e91595cd5e7fece.pdf, error: Unexpected escaped string: b'\\x83'\n", "Failed to read metadata of certs/reports/pdf/451e0806dfcfd29d.pdf, error: PDF metadata unavailable\n", - "Extracting report metadata: 14%|████████████▌ | 720/5107 [00:03<00:20, 217.24it/s]Failed to read metadata of certs/reports/pdf/e51bbdd7e3705d61.pdf, error: PDF metadata unavailable\n", - "Extracting report metadata: 17%|███████████████▋ | 889/5107 [00:09<01:48, 38.76it/s]PdfReadWarning: Multiple definitions in dictionary at byte 0x59564 for key /Im21 [generic.py:590]\n", + "Extracting report metadata: 14%|████████████▍ | 713/5107 [00:06<00:34, 128.26it/s]Failed to read metadata of certs/reports/pdf/e51bbdd7e3705d61.pdf, error: PDF metadata unavailable\n", + "Extracting report metadata: 17%|███████████████▏ | 861/5107 [00:10<01:17, 54.74it/s]PdfReadWarning: Multiple definitions in dictionary at byte 0x59564 for key /Im21 [generic.py:590]\n", "PdfReadWarning: Multiple definitions in dictionary at byte 0x59571 for key /Im21 [generic.py:590]\n", "PdfReadWarning: Multiple definitions in dictionary at byte 0x5957e for key /Im21 [generic.py:590]\n", - "PdfReadWarning: Multiple definitions in dictionary at byte 0x5a3f9 for key /Im21 [generic.py:590]\n", + "Extracting report metadata: 17%|███████████████▋ | 889/5107 [00:11<01:30, 46.47it/s]PdfReadWarning: Multiple definitions in dictionary at byte 0x5a3f9 for key /Im21 [generic.py:590]\n", "PdfReadWarning: Multiple definitions in dictionary at byte 0x5a406 for key /Im21 [generic.py:590]\n", "PdfReadWarning: Multiple definitions in dictionary at byte 0x5a413 for key /Im21 [generic.py:590]\n", "PdfReadWarning: Multiple definitions in dictionary at byte 0x5b802 for key /Im21 [generic.py:590]\n", @@ -543,65 +584,59 @@ "PdfReadWarning: Multiple definitions in dictionary at byte 0x82211 for key /Im21 [generic.py:590]\n", "PdfReadWarning: Multiple definitions in dictionary at byte 0x8221e for key /Im21 [generic.py:590]\n", "PdfReadWarning: Multiple definitions in dictionary at byte 0x8222b for key /Im21 [generic.py:590]\n", - "Extracting report metadata: 28%|████████████████████████▋ | 1430/5107 [00:13<00:28, 128.36it/s]Failed to read metadata of certs/reports/pdf/dc54e899ab191a2a.pdf, error: PDF metadata unavailable\n", - "Extracting report metadata: 35%|██████████████████████████████▊ | 1786/5107 [00:15<00:22, 146.12it/s]Failed to read metadata of certs/reports/pdf/a62c55533f4e1636.pdf, error: PDF metadata unavailable\n", + "Extracting report metadata: 25%|██████████████████████ | 1281/5107 [00:14<00:33, 113.06it/s]Failed to read metadata of certs/reports/pdf/dc54e899ab191a2a.pdf, error: PDF metadata unavailable\n", + "Extracting report metadata: 33%|████████████████████████████▉ | 1677/5107 [00:16<00:23, 147.61it/s]Failed to read metadata of certs/reports/pdf/a62c55533f4e1636.pdf, error: PDF metadata unavailable\n", "Failed to read metadata of certs/reports/pdf/d3568613c552f9e8.pdf, error: EOF marker not found\n", - "Extracting report metadata: 38%|█████████████████████████████████▋ | 1956/5107 [00:16<00:20, 151.10it/s]Failed to read metadata of certs/reports/pdf/ea5ffdcf17f6ecf4.pdf, error: PDF metadata unavailable\n", - "Extracting report metadata: 45%|████████████████████████████████████████ | 2323/5107 [00:18<00:16, 165.54it/s]Failed to read metadata of certs/reports/pdf/1c5deb472a197eb6.pdf, error: PDF metadata unavailable\n", + "Extracting report metadata: 36%|███████████████████████████████▉ | 1856/5107 [00:17<00:20, 155.24it/s]Failed to read metadata of certs/reports/pdf/ea5ffdcf17f6ecf4.pdf, error: PDF metadata unavailable\n", + "Extracting report metadata: 44%|███████████████████████████████████████ | 2269/5107 [00:19<00:16, 175.34it/s]Failed to read metadata of certs/reports/pdf/1c5deb472a197eb6.pdf, error: PDF metadata unavailable\n", "Failed to read metadata of certs/reports/pdf/0f3295c420339dd2.pdf, error: PDF metadata unavailable\n", - "Extracting report metadata: 50%|████████████████████████████████████████████ | 2560/5107 [00:19<00:13, 184.46it/s]Failed to read metadata of certs/reports/pdf/6be07dff9c4ed819.pdf, error: PDF metadata unavailable\n", - "Extracting report metadata: 55%|████████████████████████████████████████████████▍ | 2814/5107 [00:20<00:11, 202.18it/s]Failed to read metadata of certs/reports/pdf/b43100f226a61f53.pdf, error: EOF marker not found\n", - "Extracting report metadata: 63%|███████████████████████████████████████████████████████▌ | 3225/5107 [00:22<00:09, 196.09it/s]Failed to read metadata of certs/reports/pdf/be0806db6fd6bbe8.pdf, error: 'NumberObject' object is not subscriptable\n", + "Extracting report metadata: 49%|███████████████████████████████████████████▎ | 2513/5107 [00:20<00:13, 193.00it/s]Failed to read metadata of certs/reports/pdf/6be07dff9c4ed819.pdf, error: PDF metadata unavailable\n", + "Extracting report metadata: 59%|███████████████████████████████████████████████████▋ | 2998/5107 [00:22<00:09, 214.56it/s]Failed to read metadata of certs/reports/pdf/b43100f226a61f53.pdf, error: EOF marker not found\n", + "Extracting report metadata: 62%|██████████████████████████████████████████████████████▉ | 3189/5107 [00:23<00:09, 205.16it/s]Failed to read metadata of certs/reports/pdf/be0806db6fd6bbe8.pdf, error: 'NumberObject' object is not subscriptable\n", "Failed to read metadata of certs/reports/pdf/35ac4cfd1f62df75.pdf, error: 'NumberObject' object is not subscriptable\n", "Failed to read metadata of certs/reports/pdf/aaf48074ea1b4bf4.pdf, error: invalid literal for int() with base 10: b'n'\n", - "Failed to read metadata of certs/reports/pdf/206662b82595265b.pdf, error: 'NumberObject' object is not subscriptable\n", "Failed to read metadata of certs/reports/pdf/989b106f5e63b4d1.pdf, error: invalid literal for int() with base 10: b'n'\n", + "Failed to read metadata of certs/reports/pdf/206662b82595265b.pdf, error: 'NumberObject' object is not subscriptable\n", "Failed to read metadata of certs/reports/pdf/0160f6becf137107.pdf, error: 'NumberObject' object is not subscriptable\n", "Failed to read metadata of certs/reports/pdf/9558a9eaadae855e.pdf, error: PDF metadata unavailable\n", - "Extracting report metadata: 74%|████████████████████████████████████████████████████████████████▉ | 3772/5107 [00:29<00:12, 107.74it/s]Failed to read metadata of certs/reports/pdf/9114f0f9938e558c.pdf, error: PDF metadata unavailable\n", - "Failed to read metadata of certs/reports/pdf/08b09322ee9df0af.pdf, error: PDF metadata unavailable\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ + "Extracting report metadata: 73%|████████████████████████████████████████████████████████████████▌ | 3746/5107 [00:30<00:12, 106.48it/s]Failed to read metadata of certs/reports/pdf/9114f0f9938e558c.pdf, error: PDF metadata unavailable\n", + "Failed to read metadata of certs/reports/pdf/08b09322ee9df0af.pdf, error: PDF metadata unavailable\n", "Failed to read metadata of certs/reports/pdf/518b3066ebfabcd3.pdf, error: PDF metadata unavailable\n", - "Extracting report metadata: 87%|████████████████████████████████████████████████████████████████████████████▊ | 4459/5107 [00:32<00:03, 181.19it/s]Failed to read metadata of certs/reports/pdf/d455e5408b744b44.pdf, error: PDF metadata unavailable\n", - "Extracting report metadata: 100%|████████████████████████████████████████████████████████████████████████████████████████| 5107/5107 [00:38<00:00, 133.02it/s]\n", - "Extracting target metadata: 1%|▊ | 45/5027 [00:01<01:58, 42.14it/s]PdfReadWarning: Multiple definitions in dictionary at byte 0x724b1 for key /Im312 [generic.py:590]\n", + "Extracting report metadata: 86%|███████████████████████████████████████████████████████████████████████████▎ | 4370/5107 [00:33<00:04, 164.58it/s]Failed to read metadata of certs/reports/pdf/d455e5408b744b44.pdf, error: PDF metadata unavailable\n", + "Extracting report metadata: 100%|████████████████████████████████████████████████████████████████████████████████████████| 5107/5107 [00:39<00:00, 129.72it/s]\n", + "Extracting target metadata: 1%|█ | 60/5033 [00:01<01:29, 55.86it/s]PdfReadWarning: Multiple definitions in dictionary at byte 0x724b1 for key /Im312 [generic.py:590]\n", "PdfReadWarning: Multiple definitions in dictionary at byte 0x724cf for key /Im312 [generic.py:590]\n", "PdfReadWarning: Multiple definitions in dictionary at byte 0x724de for key /Im312 [generic.py:590]\n", "Failed to read metadata of certs/targets/pdf/d47a03be1cb342b1.pdf, error: PDF metadata unavailable\n", - "Extracting target metadata: 2%|██▏ | 120/5027 [00:02<01:23, 58.92it/s]Failed to read metadata of certs/targets/pdf/5af5a1b535422b51.pdf, error: PDF metadata unavailable\n", + "Failed to read metadata of certs/targets/pdf/5af5a1b535422b51.pdf, error: PDF metadata unavailable\n", "Failed to read metadata of certs/targets/pdf/21d6eff0bfe3971f.pdf, error: PDF metadata unavailable\n", - "Extracting target metadata: 4%|███▊ | 212/5027 [00:05<02:24, 33.42it/s]Failed to read metadata of certs/targets/pdf/eee469bd6d07f8db.pdf, error: PDF metadata unavailable\n", - "Extracting target metadata: 6%|█████▋ | 320/5027 [00:10<03:30, 22.32it/s]Failed to read metadata of certs/targets/pdf/c62b878b1ac43df9.pdf, error: PDF metadata unavailable\n", - "Extracting target metadata: 7%|█████▉ | 331/5027 [00:11<04:10, 18.73it/s]Failed to read metadata of certs/targets/pdf/4c017087976d05eb.pdf, error: EOF marker not found\n", - "Failed to read metadata of certs/targets/pdf/e676143c80802a59.pdf, error: EOF marker not found\n", + "Extracting target metadata: 4%|███▉ | 222/5033 [00:05<02:23, 33.51it/s]Failed to read metadata of certs/targets/pdf/eee469bd6d07f8db.pdf, error: PDF metadata unavailable\n", + "Extracting target metadata: 6%|█████▌ | 309/5033 [00:09<03:15, 24.14it/s]Failed to read metadata of certs/targets/pdf/c62b878b1ac43df9.pdf, error: PDF metadata unavailable\n", + "Extracting target metadata: 6%|█████▊ | 327/5033 [00:10<03:33, 22.02it/s]Failed to read metadata of certs/targets/pdf/4c017087976d05eb.pdf, error: EOF marker not found\n", + "Extracting target metadata: 7%|██████▏ | 346/5033 [00:11<03:44, 20.89it/s]Failed to read metadata of certs/targets/pdf/e676143c80802a59.pdf, error: EOF marker not found\n", "Failed to read metadata of certs/targets/pdf/e6e8add5e4db2d9d.pdf, error: EOF marker not found\n", "Failed to read metadata of certs/targets/pdf/1c9bd4db3d8388f7.pdf, error: EOF marker not found\n", "Failed to read metadata of certs/targets/pdf/4bede5d2af4cb11f.pdf, error: PDF metadata unavailable\n", "Failed to read metadata of certs/targets/pdf/0dc53ac916660b90.pdf, error: PDF metadata unavailable\n", - "Extracting target metadata: 9%|████████▎ | 461/5027 [00:16<03:27, 21.96it/s]Failed to read metadata of certs/targets/pdf/af6767c887ae930a.pdf, error: PDF metadata unavailable\n", - "Failed to read metadata of certs/targets/pdf/d2f75cdaeb322e7f.pdf, error: PDF metadata unavailable\n", + "Extracting target metadata: 9%|████████▎ | 468/5033 [00:15<02:54, 26.09it/s]Failed to read metadata of certs/targets/pdf/af6767c887ae930a.pdf, error: PDF metadata unavailable\n", "Failed to read metadata of certs/targets/pdf/c9b0cae8b5784d2d.pdf, error: PDF metadata unavailable\n", - "Extracting target metadata: 10%|█████████▏ | 513/5027 [00:18<03:15, 23.09it/s]Failed to read metadata of certs/targets/pdf/42d2e68c29d9eef7.pdf, error: PDF metadata unavailable\n", - "Extracting target metadata: 12%|██████████▌ | 593/5027 [00:20<02:23, 30.81it/s]Failed to read metadata of certs/targets/pdf/44f1f74c09e634cb.pdf, error: PDF metadata unavailable\n", - "Extracting target metadata: 13%|███████████▎ | 633/5027 [00:21<02:12, 33.13it/s]PdfReadWarning: Multiple definitions in dictionary at byte 0x2ee44 for key /Im59 [generic.py:590]\n", + "Failed to read metadata of certs/targets/pdf/d2f75cdaeb322e7f.pdf, error: PDF metadata unavailable\n", + "Extracting target metadata: 11%|█████████▋ | 539/5033 [00:17<02:26, 30.71it/s]Failed to read metadata of certs/targets/pdf/42d2e68c29d9eef7.pdf, error: PDF metadata unavailable\n", + "Extracting target metadata: 12%|██████████▎ | 580/5033 [00:18<02:14, 33.18it/s]Failed to read metadata of certs/targets/pdf/44f1f74c09e634cb.pdf, error: PDF metadata unavailable\n", + "Extracting target metadata: 13%|███████████▋ | 657/5033 [00:20<02:07, 34.24it/s]PdfReadWarning: Multiple definitions in dictionary at byte 0x2ee44 for key /Im59 [generic.py:590]\n", "PdfReadWarning: Multiple definitions in dictionary at byte 0x6f7cf for key /Im215 [generic.py:590]\n", - "Extracting target metadata: 19%|████████████████▉ | 946/5027 [00:37<03:25, 19.90it/s]Failed to read metadata of certs/targets/pdf/3183166f4cb1c37c.pdf, error: PDF metadata unavailable\n", - "Extracting target metadata: 20%|█████████████████▊ | 995/5027 [00:38<02:23, 28.08it/s]Failed to read metadata of certs/targets/pdf/b224a05ad0f1ec6b.pdf, error: PDF metadata unavailable\n", - "Failed to read metadata of certs/targets/pdf/0cb80431100b4bd4.pdf, error: PDF metadata unavailable\n", - "Extracting target metadata: 21%|██████████████████▊ | 1064/5027 [00:39<01:40, 39.60it/s]Failed to read metadata of certs/targets/pdf/14ddeb255e0a1cd2.pdf, error: PDF metadata unavailable\n", - "Extracting target metadata: 23%|████████████████████▍ | 1155/5027 [00:40<01:11, 54.04it/s]Failed to read metadata of certs/targets/pdf/0c5a0893bb4f17dc.pdf, error: PDF metadata unavailable\n", - "Extracting target metadata: 24%|█████████████████████▋ | 1227/5027 [00:41<01:04, 58.58it/s]Failed to read metadata of certs/targets/pdf/c13a0ff38bf1cf86.pdf, error: PDF metadata unavailable\n", - "Failed to read metadata of certs/targets/pdf/e84d854109fc9e59.pdf, error: PDF metadata unavailable\n", + "Extracting target metadata: 19%|█████████████████▍ | 973/5033 [00:35<02:46, 24.37it/s]Failed to read metadata of certs/targets/pdf/3183166f4cb1c37c.pdf, error: PDF metadata unavailable\n", + "Failed to read metadata of certs/targets/pdf/b224a05ad0f1ec6b.pdf, error: PDF metadata unavailable\n", + "Extracting target metadata: 20%|██████████████████▏ | 1028/5033 [00:36<02:01, 32.99it/s]Failed to read metadata of certs/targets/pdf/0cb80431100b4bd4.pdf, error: PDF metadata unavailable\n", + "Extracting target metadata: 22%|███████████████████▉ | 1127/5033 [00:37<01:15, 51.95it/s]Failed to read metadata of certs/targets/pdf/14ddeb255e0a1cd2.pdf, error: PDF metadata unavailable\n", + "Extracting target metadata: 24%|█████████████████████▎ | 1204/5033 [00:38<01:05, 58.70it/s]Failed to read metadata of certs/targets/pdf/0c5a0893bb4f17dc.pdf, error: PDF metadata unavailable\n", + "Failed to read metadata of certs/targets/pdf/c13a0ff38bf1cf86.pdf, error: PDF metadata unavailable\n", + "Extracting target metadata: 25%|██████████████████████▏ | 1256/5033 [00:39<01:07, 56.20it/s]Failed to read metadata of certs/targets/pdf/e84d854109fc9e59.pdf, error: PDF metadata unavailable\n", "Failed to read metadata of certs/targets/pdf/e39bcd3ef3ba2f00.pdf, error: PDF metadata unavailable\n", - "Extracting target metadata: 26%|███████████████████████▏ | 1308/5027 [00:43<01:16, 48.60it/s]Failed to read metadata of certs/targets/pdf/af478678c6464da0.pdf, error: PDF metadata unavailable\n", - "Extracting target metadata: 31%|███████████████████████████▌ | 1556/5027 [00:50<01:27, 39.64it/s]PdfReadWarning: Multiple definitions in dictionary at byte 0x21033 for key /Im67 [generic.py:590]\n", + "Extracting target metadata: 26%|███████████████████████▍ | 1326/5033 [00:41<01:23, 44.62it/s]Failed to read metadata of certs/targets/pdf/af478678c6464da0.pdf, error: PDF metadata unavailable\n", + "Extracting target metadata: 31%|███████████████████████████▍ | 1550/5033 [00:47<01:26, 40.08it/s]PdfReadWarning: Multiple definitions in dictionary at byte 0x21033 for key /Im67 [generic.py:590]\n", "PdfReadWarning: Multiple definitions in dictionary at byte 0x21067 for key /Im67 [generic.py:590]\n", - "Extracting target metadata: 31%|███████████████████████████▉ | 1578/5027 [00:51<01:40, 34.18it/s]PdfReadWarning: Multiple definitions in dictionary at byte 0x21074 for key /Im68 [generic.py:590]\n", + "PdfReadWarning: Multiple definitions in dictionary at byte 0x21074 for key /Im68 [generic.py:590]\n", "PdfReadWarning: Multiple definitions in dictionary at byte 0x21081 for key /Im69 [generic.py:590]\n", "PdfReadWarning: Multiple definitions in dictionary at byte 0x2108e for key /Im67 [generic.py:590]\n", "PdfReadWarning: Multiple definitions in dictionary at byte 0x210b5 for key /Im67 [generic.py:590]\n", @@ -617,15 +652,15 @@ "PdfReadWarning: Multiple definitions in dictionary at byte 0x3eca7 for key /Im145 [generic.py:590]\n", "PdfReadWarning: Multiple definitions in dictionary at byte 0x3ed10 for key /Im143 [generic.py:590]\n", "PdfReadWarning: Multiple definitions in dictionary at byte 0x3ed1f for key /Im149 [generic.py:590]\n", - "PdfReadWarning: Multiple definitions in dictionary at byte 0x61908 for key /Im173 [generic.py:590]\n", - "PdfReadWarning: Multiple definitions in dictionary at byte 0x619e9 for key /Im200 [generic.py:590]\n", - "PdfReadWarning: Multiple definitions in dictionary at byte 0x61a16 for key /Im205 [generic.py:590]\n" + "PdfReadWarning: Multiple definitions in dictionary at byte 0x61908 for key /Im173 [generic.py:590]\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ + "PdfReadWarning: Multiple definitions in dictionary at byte 0x619e9 for key /Im200 [generic.py:590]\n", + "PdfReadWarning: Multiple definitions in dictionary at byte 0x61a16 for key /Im205 [generic.py:590]\n", "PdfReadWarning: Multiple definitions in dictionary at byte 0x61b7e for key /Im220 [generic.py:590]\n", "PdfReadWarning: Multiple definitions in dictionary at byte 0x9146a for key /Im324 [generic.py:590]\n", "PdfReadWarning: Multiple definitions in dictionary at byte 0x91479 for key /Im324 [generic.py:590]\n", @@ -641,60 +676,72 @@ "PdfReadWarning: Multiple definitions in dictionary at byte 0xadb42 for key /Im299 [generic.py:590]\n", "PdfReadWarning: Multiple definitions in dictionary at byte 0xadb51 for key /Im365 [generic.py:590]\n", "PdfReadWarning: Multiple definitions in dictionary at byte 0xadb9c for key /Im364 [generic.py:590]\n", - "Failed to read metadata of certs/targets/pdf/bbcfe0aee7ea78ea.pdf, error: PDF metadata unavailable\n", + "Extracting target metadata: 32%|████████████████████████████▏ | 1595/5033 [00:48<01:23, 41.13it/s]Failed to read metadata of certs/targets/pdf/bbcfe0aee7ea78ea.pdf, error: PDF metadata unavailable\n", "Failed to read metadata of certs/targets/pdf/f0bd6a29eee94a2c.pdf, error: PDF metadata unavailable\n", "Failed to read metadata of certs/targets/pdf/463ecd64b7506048.pdf, error: PDF metadata unavailable\n", - "Extracting target metadata: 35%|███████████████████████████████▌ | 1784/5027 [00:55<00:59, 54.46it/s]Failed to read metadata of certs/targets/pdf/d3568613c552f9e8.pdf, error: EOF marker not found\n", - "Extracting target metadata: 42%|█████████████████████████████████████▍ | 2114/5027 [00:59<00:40, 72.39it/s]UserWarning: startxref on same line as offset [pdf.py:1787]\n", - "Extracting target metadata: 45%|████████████████████████████████████████ | 2263/5027 [01:02<00:48, 56.91it/s]Failed to read metadata of certs/targets/pdf/4d2a177384b23fd6.pdf, error: PDF metadata unavailable\n", - "Extracting target metadata: 59%|████████████████████████████████████████████████████▏ | 2950/5027 [01:25<00:56, 36.82it/s]Failed to read metadata of certs/targets/pdf/a83fe0ea2f391ee8.pdf, error: too many values to unpack (expected 2)\n", - "Extracting target metadata: 63%|███████████████████████████████████████████████████████▉ | 3158/5027 [01:30<00:49, 37.54it/s]Failed to read metadata of certs/targets/pdf/907433fbf9e00ce3.pdf, error: Could not find xref table at specified location\n", - "Extracting target metadata: 83%|██████████████████████████████████████████████████████████████████████████▏ | 4193/5027 [01:48<00:14, 59.32it/s]UserWarning: startxref on same line as offset [pdf.py:1787]\n", - "Extracting target metadata: 97%|██████████████████████████████████████████████████████████████████████████████████████▏ | 4871/5027 [01:58<00:02, 73.51it/s]Failed to read metadata of certs/targets/pdf/fc8d2eade14aa446.pdf, error: 'NumberObject' object is not subscriptable\n", - "Extracting target metadata: 98%|███████████████████████████████████████████████████████████████████████████████████████▌ | 4947/5027 [02:00<00:01, 54.78it/s]Failed to read metadata of certs/targets/pdf/a334142059d865a2.pdf, error: PDF metadata unavailable\n", - "Extracting target metadata: 100%|████████████████████████████████████████████████████████████████████████████████████████▉| 5026/5027 [02:02<00:00, 44.40it/s]Failed to read metadata of certs/targets/pdf/a552244ec3ca8f60.pdf, error: EOF marker not found\n", - "Extracting target metadata: 100%|█████████████████████████████████████████████████████████████████████████████████████████| 5027/5027 [02:03<00:00, 40.74it/s]\n", - "Extracting report frontpages: 8%|███████ | 412/5107 [00:01<00:12, 390.40it/s]WARNING: multiple rules are matching same certification document: cc_04_10_2022/certs/reports/txt/21a1deda31c3e213.txt\n", - "WARNING: multiple rules are matching same certification document: cc_04_10_2022/certs/reports/txt/d8aff63d56506605.txt\n", - "WARNING: multiple rules are matching same certification document: cc_04_10_2022/certs/reports/txt/aca070da96add3b6.txt\n", - "WARNING: multiple rules are matching same certification document: cc_04_10_2022/certs/reports/txt/4844355021ea22f1.txt\n", - "WARNING: multiple rules are matching same certification document: cc_04_10_2022/certs/reports/txt/21a1deda31c3e213.txt\n", - "WARNING: multiple rules are matching same certification document: cc_04_10_2022/certs/reports/txt/d8aff63d56506605.txt\n", - "WARNING: multiple rules are matching same certification document: cc_04_10_2022/certs/reports/txt/aca070da96add3b6.txt\n", - "WARNING: multiple rules are matching same certification document: cc_04_10_2022/certs/reports/txt/4844355021ea22f1.txt\n", - "WARNING: multiple rules are matching same certification document: cc_04_10_2022/certs/reports/txt/977b04d04def60a7.txt\n", - "WARNING: multiple rules are matching same certification document: cc_04_10_2022/certs/reports/txt/6eeed6fefb1f0243.txt\n", - "WARNING: multiple rules are matching same certification document: cc_04_10_2022/certs/reports/txt/977b04d04def60a7.txt\n", - "WARNING: multiple rules are matching same certification document: cc_04_10_2022/certs/reports/txt/6eeed6fefb1f0243.txt\n", - "WARNING: multiple rules are matching same certification document: cc_04_10_2022/certs/reports/txt/6f8d7a6a1dea6a3a.txt\n", - "WARNING: multiple rules are matching same certification document: cc_04_10_2022/certs/reports/txt/6f8d7a6a1dea6a3a.txt\n", - "WARNING: multiple rules are matching same certification document: cc_04_10_2022/certs/reports/txt/62313881916550ca.txt\n", - "WARNING: multiple rules are matching same certification document: cc_04_10_2022/certs/reports/txt/62313881916550ca.txt\n", - "WARNING: multiple rules are matching same certification document: cc_04_10_2022/certs/reports/txt/47913a485c3c8a18.txt\n", - "WARNING: multiple rules are matching same certification document: cc_04_10_2022/certs/reports/txt/47913a485c3c8a18.txt\n", - "WARNING: multiple rules are matching same certification document: cc_04_10_2022/certs/reports/txt/60f3bd10ee9be85b.txt\n", - "WARNING: multiple rules are matching same certification document: cc_04_10_2022/certs/reports/txt/b0b7b073ca2dfe5f.txt\n", - "WARNING: multiple rules are matching same certification document: cc_04_10_2022/certs/reports/txt/5c3806bf79eeab7f.txt\n", - "WARNING: multiple rules are matching same certification document: cc_04_10_2022/certs/reports/txt/b0b7b073ca2dfe5f.txt\n", - "WARNING: multiple rules are matching same certification document: cc_04_10_2022/certs/reports/txt/60f3bd10ee9be85b.txt\n", - "WARNING: multiple rules are matching same certification document: cc_04_10_2022/certs/reports/txt/5c3806bf79eeab7f.txt\n", - "Extracting report frontpages: 100%|██████████████████████████████████████████████████████████████████████████████████████| 5107/5107 [00:14<00:00, 351.07it/s]\n", - "Extracting target frontpages: 100%|██████████████████████████████████████████████████████████████████████████████████████| 5027/5027 [00:22<00:00, 228.40it/s]\n", - "Extracting report keywords: 100%|█████████████████████████████████████████████████████████████████████████████████████████| 5107/5107 [10:53<00:00, 7.81it/s]\n", - "Extracting target keywords: 100%|█████████████████████████████████████████████████████████████████████████████████████████| 5027/5027 [39:51<00:00, 2.10it/s]\n", - "Fitting the CPE classifier: 100%|█████████████████████████████████████████████████████████████████████████████████| 888900/888900 [00:01<00:00, 855040.09it/s]\n", - "Predicting CPE matches with the classifier: 100%|█████████████████████████████████████████████████████████████████████████| 5129/5129 [03:20<00:00, 25.64it/s]\n" + "Extracting target metadata: 36%|████████████████████████████████▎ | 1825/5033 [00:51<00:51, 62.73it/s]Failed to read metadata of certs/targets/pdf/d3568613c552f9e8.pdf, error: EOF marker not found\n", + "Extracting target metadata: 41%|████████████████████████████████████▏ | 2047/5033 [00:54<00:35, 84.65it/s]UserWarning: startxref on same line as offset [pdf.py:1787]\n", + "Extracting target metadata: 44%|███████████████████████████████████████▏ | 2214/5033 [00:56<00:34, 82.26it/s]Failed to read metadata of certs/targets/pdf/4d2a177384b23fd6.pdf, error: PDF metadata unavailable\n", + "Extracting target metadata: 58%|███████████████████████████████████████████████████▊ | 2930/5033 [01:15<00:55, 38.14it/s]Failed to read metadata of certs/targets/pdf/a83fe0ea2f391ee8.pdf, error: too many values to unpack (expected 2)\n", + "Extracting target metadata: 63%|████████████████████████████████████████████████████████▏ | 3178/5033 [01:21<00:48, 37.97it/s]Failed to read metadata of certs/targets/pdf/907433fbf9e00ce3.pdf, error: Could not find xref table at specified location\n", + "Extracting target metadata: 84%|██████████████████████████████████████████████████████████████████████████▎ | 4203/5033 [01:38<00:14, 56.58it/s]UserWarning: startxref on same line as offset [pdf.py:1787]\n", + "Extracting target metadata: 96%|█████████████████████████████████████████████████████████████████████████████████████▊ | 4854/5033 [01:46<00:02, 81.59it/s]Failed to read metadata of certs/targets/pdf/fc8d2eade14aa446.pdf, error: 'NumberObject' object is not subscriptable\n", + "Extracting target metadata: 99%|███████████████████████████████████████████████████████████████████████████████████████▉ | 4976/5033 [01:48<00:00, 68.63it/s]Failed to read metadata of certs/targets/pdf/a334142059d865a2.pdf, error: PDF metadata unavailable\n", + "Extracting target metadata: 100%|████████████████████████████████████████████████████████████████████████████████████████▉| 5032/5033 [01:49<00:00, 64.34it/s]Failed to read metadata of certs/targets/pdf/a552244ec3ca8f60.pdf, error: EOF marker not found\n", + "Extracting target metadata: 100%|█████████████████████████████████████████████████████████████████████████████████████████| 5033/5033 [01:50<00:00, 45.39it/s]\n", + "Extracting report frontpages: 8%|███████ | 414/5107 [00:01<00:11, 392.53it/s]WARNING: multiple rules are matching same certification document: cc_09_10_2022/certs/reports/txt/4844355021ea22f1.txt\n", + "WARNING: multiple rules are matching same certification document: cc_09_10_2022/certs/reports/txt/21a1deda31c3e213.txt\n", + "WARNING: multiple rules are matching same certification document: cc_09_10_2022/certs/reports/txt/4844355021ea22f1.txt\n", + "WARNING: multiple rules are matching same certification document: cc_09_10_2022/certs/reports/txt/21a1deda31c3e213.txt\n", + "WARNING: multiple rules are matching same certification document: cc_09_10_2022/certs/reports/txt/aca070da96add3b6.txt\n", + "WARNING: multiple rules are matching same certification document: cc_09_10_2022/certs/reports/txt/d8aff63d56506605.txt\n", + "WARNING: multiple rules are matching same certification document: cc_09_10_2022/certs/reports/txt/aca070da96add3b6.txt\n", + "WARNING: multiple rules are matching same certification document: cc_09_10_2022/certs/reports/txt/d8aff63d56506605.txt\n", + "WARNING: multiple rules are matching same certification document: cc_09_10_2022/certs/reports/txt/977b04d04def60a7.txt\n", + "WARNING: multiple rules are matching same certification document: cc_09_10_2022/certs/reports/txt/977b04d04def60a7.txt\n", + "WARNING: multiple rules are matching same certification document: cc_09_10_2022/certs/reports/txt/6eeed6fefb1f0243.txt\n", + "WARNING: multiple rules are matching same certification document: cc_09_10_2022/certs/reports/txt/6eeed6fefb1f0243.txt\n", + "WARNING: multiple rules are matching same certification document: cc_09_10_2022/certs/reports/txt/62313881916550ca.txt\n", + "WARNING: multiple rules are matching same certification document: cc_09_10_2022/certs/reports/txt/62313881916550ca.txt\n", + "WARNING: multiple rules are matching same certification document: cc_09_10_2022/certs/reports/txt/6f8d7a6a1dea6a3a.txt\n", + "WARNING: multiple rules are matching same certification document: cc_09_10_2022/certs/reports/txt/6f8d7a6a1dea6a3a.txt\n", + "WARNING: multiple rules are matching same certification document: cc_09_10_2022/certs/reports/txt/47913a485c3c8a18.txt\n", + "WARNING: multiple rules are matching same certification document: cc_09_10_2022/certs/reports/txt/47913a485c3c8a18.txt\n", + "WARNING: multiple rules are matching same certification document: cc_09_10_2022/certs/reports/txt/b0b7b073ca2dfe5f.txt\n", + "WARNING: multiple rules are matching same certification document: cc_09_10_2022/certs/reports/txt/b0b7b073ca2dfe5f.txt\n", + "WARNING: multiple rules are matching same certification document: cc_09_10_2022/certs/reports/txt/60f3bd10ee9be85b.txt\n", + "WARNING: multiple rules are matching same certification document: cc_09_10_2022/certs/reports/txt/5c3806bf79eeab7f.txt\n", + "WARNING: multiple rules are matching same certification document: cc_09_10_2022/certs/reports/txt/60f3bd10ee9be85b.txt\n", + "WARNING: multiple rules are matching same certification document: cc_09_10_2022/certs/reports/txt/5c3806bf79eeab7f.txt\n", + "Extracting report frontpages: 100%|██████████████████████████████████████████████████████████████████████████████████████| 5107/5107 [00:14<00:00, 350.74it/s]\n", + "Extracting target frontpages: 100%|██████████████████████████████████████████████████████████████████████████████████████| 5033/5033 [00:19<00:00, 255.18it/s]\n", + "Extracting report keywords: 100%|███████████████████████████████████████████████████████████████████████████████████████| 5107/5107 [8:44:06<00:00, 6.16s/it]\n", + "Extracting target keywords: 100%|█████████████████████████████████████████████████████████████████████████████████████████| 5033/5033 [34:44<00:00, 2.42it/s]\n", + "Fitting the CPE classifier: 100%|█████████████████████████████████████████████████████████████████████████████████| 859965/859965 [00:01<00:00, 836963.35it/s]\n", + "Predicting CPE matches with the classifier: 33%|███████████████████████▉ | 1686/5129 [00:53<01:43, 33.41it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "geee\n", + "geee\n", + "geee\n", + "geee\n", + "geee\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 21/21 [00:11<00:00, 1.81it/s]\n", - "Building CVEDataset from jsons: 100%|█████████████████████████████████████████████████████████████████████████████████████████| 21/21 [01:25<00:00, 4.09s/it]\n", - "parsing cpe matching (by NIST) dictionary: 100%|███████████████████████████████████████████████████████████████████| 398394/398394 [00:27<00:00, 14339.71it/s]\n", - "Building-up lookup dictionaries for fast CVE matching: 100%|███████████████████████████████████████████████████████| 196907/196907 [00:12<00:00, 16078.76it/s]\n", - "Computing related CVES: 100%|████████████████████████████████████████████████████████████████████████████████████████████| 698/698 [00:00<00:00, 82482.23it/s]\n", + "Predicting CPE matches with the classifier: 100%|█████████████████████████████████████████████████████████████████████████| 5129/5129 [02:57<00:00, 28.82it/s]\n", + "100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 21/21 [00:13<00:00, 1.58it/s]\n", + "Building CVEDataset from jsons: 100%|█████████████████████████████████████████████████████████████████████████████████████████| 21/21 [04:17<00:00, 12.24s/it]\n", + "parsing cpe matching (by NIST) dictionary: 100%|███████████████████████████████████████████████████████████████████| 398786/398786 [00:26<00:00, 15135.38it/s]\n", + "Building-up lookup dictionaries for fast CVE matching: 100%|███████████████████████████████████████████████████████| 197102/197102 [00:18<00:00, 10511.33it/s]\n", + "Computing related CVES: 100%|████████████████████████████████████████████████████████████████████████████████████████████| 650/650 [00:00<00:00, 70385.13it/s]\n", "WARNING:root:There were total of 153 certificates skipped due to duplicity\n" ] } @@ -706,7 +753,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 12, "metadata": { "pycharm": { "name": "#%%\n" @@ -717,44 +764,43 @@ "name": "stderr", "output_type": "stream", "text": [ - "Downloading reports: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████| 457/457 [01:12<00:00, 6.33it/s]\n", - "Downloading targets: 74%|████████████████████████████████████████████████████████████████████████▋ | 339/457 [01:08<00:24, 4.89it/s]ERROR:sec_certs.sample.certificate:Cert dgst: cert_5ab17f47ec6820f3_update_0cbfc8dd71545605 failed to download ST from https://www.commoncriteriaportal.org/files/epfiles/[ST]%20Samsung%20Multifunction%20MultiXpress%20X4300%20K4350_v1.4(???).pdf, code: nok\n", - "Downloading targets: 92%|██████████████████████████████████████████████████████████████████████████████████████████▎ | 421/457 [01:24<00:06, 5.25it/s]ERROR:sec_certs.sample.certificate:Cert dgst: cert_d07cacdb732c0b0f_update_9dad882431047687 failed to download ST from https://www.commoncriteriaportal.org/files/epfiles/Senetas%20CN%20series%20STv1.1%20Dec%2014.pdf, code: 408\n", - "Downloading targets: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████| 457/457 [01:32<00:00, 4.95it/s]\n", - "Converting reports to txt: 0%| | 0/457 [00:00<?, ?it/s]WARNING:sec_certs.utils.pdf:Detected garbage during conversion of cc_04_10_2022/certs/maintenances/reports/pdf/cert_6785be05d030779b_update_bec315e0f592c9c3.pdf\n", - "WARNING:sec_certs.utils.pdf:Detected garbage during conversion of cc_04_10_2022/certs/maintenances/reports/pdf/cert_dbaf9789160ca414_update_05b659f9e1f5e5a6.pdf\n", - "Converting reports to txt: 18%|█████████████████ | 84/457 [00:03<00:14, 26.11it/s]WARNING:sec_certs.utils.pdf:Detected garbage during conversion of cc_04_10_2022/certs/maintenances/reports/pdf/cert_b891647233f3f188_update_66d87388520b9048.pdf\n", - "Converting reports to txt: 91%|███████████████████████████████████████████████████████████████████████████████████▎ | 414/457 [00:11<00:01, 38.81it/s]ERROR:sec_certs.utils.pdf:Error when converting pdf->txt: poppler error creating document\n", - "WARNING:sec_certs.utils.pdf:Detected garbage during conversion of cc_04_10_2022/certs/maintenances/reports/pdf/cert_8ba5d4d02ea73d3d_update_d879046e9be61396.pdf\n", - "ERROR:sec_certs.utils.pdf:Error during OCR of cc_04_10_2022/certs/maintenances/reports/pdf/cert_8ba5d4d02ea73d3d_update_d879046e9be61396.pdf, using garbage: pdftoppm failed: 1\n", + "Downloading reports: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████| 459/459 [01:39<00:00, 4.62it/s]\n", + "Downloading targets: 75%|█████████████████████████████████████████████████████████████████████████▏ | 343/459 [01:56<00:46, 2.49it/s]ERROR:sec_certs.sample.certificate:Cert dgst: cert_5ab17f47ec6820f3_update_0cbfc8dd71545605 failed to download ST from https://www.commoncriteriaportal.org/files/epfiles/[ST]%20Samsung%20Multifunction%20MultiXpress%20X4300%20K4350_v1.4(???).pdf, code: nok\n", + "Downloading targets: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████| 459/459 [02:31<00:00, 3.03it/s]\n", + "Converting reports to txt: 0%| | 0/459 [00:00<?, ?it/s]WARNING:sec_certs.utils.pdf:Detected garbage during conversion of cc_09_10_2022/certs/maintenances/reports/pdf/cert_dbaf9789160ca414_update_05b659f9e1f5e5a6.pdf\n", + "WARNING:sec_certs.utils.pdf:Detected garbage during conversion of cc_09_10_2022/certs/maintenances/reports/pdf/cert_6785be05d030779b_update_bec315e0f592c9c3.pdf\n", + "Converting reports to txt: 19%|█████████████████▋ | 87/459 [00:03<00:13, 28.11it/s]WARNING:sec_certs.utils.pdf:Detected garbage during conversion of cc_09_10_2022/certs/maintenances/reports/pdf/cert_b891647233f3f188_update_66d87388520b9048.pdf\n", + "Converting reports to txt: 86%|███████████████████████████████████████████████████████████████████████████████▏ | 395/459 [00:09<00:01, 43.29it/s]ERROR:sec_certs.utils.pdf:Error when converting pdf->txt: poppler error creating document\n", + "WARNING:sec_certs.utils.pdf:Detected garbage during conversion of cc_09_10_2022/certs/maintenances/reports/pdf/cert_8ba5d4d02ea73d3d_update_d879046e9be61396.pdf\n", + "Converting reports to txt: 95%|███████████████████████████████████████████████████████████████████████████████████████▍ | 436/459 [00:10<00:00, 41.44it/s]ERROR:sec_certs.utils.pdf:Error during OCR of cc_09_10_2022/certs/maintenances/reports/pdf/cert_8ba5d4d02ea73d3d_update_d879046e9be61396.pdf, using garbage: pdftoppm failed: 1\n", "ERROR:sec_certs.sample.certificate:Cert dgst: cert_8ba5d4d02ea73d3d_update_d879046e9be61396 failed to convert report pdf->txt\n", - "Converting reports to txt: 100%|████████████████████████████████████████████████████████████████████████████████████████████| 457/457 [00:26<00:00, 17.33it/s]\n", - "Converting targets to txt: 35%|████████████████████████████████▏ | 159/455 [00:47<00:52, 5.61it/s]WARNING:sec_certs.utils.pdf:Detected garbage during conversion of cc_04_10_2022/certs/maintenances/targets/pdf/cert_09b43147f1307352_update_a1ff8f3d472941f7.pdf\n", - "Converting targets to txt: 75%|████████████████████████████████████████████████████████████████████▉ | 341/455 [01:36<00:31, 3.62it/s]WARNING:sec_certs.utils.pdf:Detected garbage during conversion of cc_04_10_2022/certs/maintenances/targets/pdf/cert_bd5c7bb29151de01_update_070f8e523f3deba1.pdf\n", - "WARNING:sec_certs.utils.pdf:Detected garbage during conversion of cc_04_10_2022/certs/maintenances/targets/pdf/cert_ef9565620c399b7e_update_b169fd5fee2eb72b.pdf\n", - "Converting targets to txt: 100%|████████████████████████████████████████████████████████████████████████████████████████████| 455/455 [05:48<00:00, 1.31it/s]\n", - "ERROR:sec_certs.utils.pdf:Error when converting pdf->txt: poppler error creating document\n", - "Converting reports to txt: 0%| | 0/1 [00:00<?, ?it/s]WARNING:sec_certs.utils.pdf:Detected garbage during conversion of cc_04_10_2022/certs/maintenances/reports/pdf/cert_8ba5d4d02ea73d3d_update_d879046e9be61396.pdf\n", - "ERROR:sec_certs.utils.pdf:Error during OCR of cc_04_10_2022/certs/maintenances/reports/pdf/cert_8ba5d4d02ea73d3d_update_d879046e9be61396.pdf, using garbage: pdftoppm failed: 1\n", + "Converting reports to txt: 100%|████████████████████████████████████████████████████████████████████████████████████████████| 459/459 [00:22<00:00, 20.30it/s]\n", + "Converting targets to txt: 36%|█████████████████████████████████▌ | 167/458 [00:45<00:53, 5.49it/s]WARNING:sec_certs.utils.pdf:Detected garbage during conversion of cc_09_10_2022/certs/maintenances/targets/pdf/cert_09b43147f1307352_update_a1ff8f3d472941f7.pdf\n", + "Converting targets to txt: 75%|█████████████████████████████████████████████████████████████████████ | 344/458 [01:27<00:27, 4.19it/s]WARNING:sec_certs.utils.pdf:Detected garbage during conversion of cc_09_10_2022/certs/maintenances/targets/pdf/cert_bd5c7bb29151de01_update_070f8e523f3deba1.pdf\n", + "WARNING:sec_certs.utils.pdf:Detected garbage during conversion of cc_09_10_2022/certs/maintenances/targets/pdf/cert_ef9565620c399b7e_update_b169fd5fee2eb72b.pdf\n", + "Converting targets to txt: 100%|████████████████████████████████████████████████████████████████████████████████████████████| 458/458 [05:10<00:00, 1.47it/s]\n", + "Converting reports to txt: 0%| | 0/1 [00:00<?, ?it/s]ERROR:sec_certs.utils.pdf:Error when converting pdf->txt: poppler error creating document\n", + "WARNING:sec_certs.utils.pdf:Detected garbage during conversion of cc_09_10_2022/certs/maintenances/reports/pdf/cert_8ba5d4d02ea73d3d_update_d879046e9be61396.pdf\n", + "ERROR:sec_certs.utils.pdf:Error during OCR of cc_09_10_2022/certs/maintenances/reports/pdf/cert_8ba5d4d02ea73d3d_update_d879046e9be61396.pdf, using garbage: pdftoppm failed: 1\n", "ERROR:sec_certs.sample.certificate:Cert dgst: cert_8ba5d4d02ea73d3d_update_d879046e9be61396 failed to convert report pdf->txt\n", "Converting reports to txt: 100%|████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.00s/it]\n", - "Extracting report metadata: 0%| | 0/456 [00:00<?, ?it/s]ERROR:sec_certs.utils.pdf:Failed to read metadata of maintenances/reports/pdf/cert_d455e5408b744b44_update_16f77dbd34439401.pdf, error: PDF metadata unavailable\n", - "Extracting report metadata: 100%|██████████████████████████████████████████████████████████████████████████████████████████| 456/456 [00:02<00:00, 227.01it/s]\n", - "Extracting target metadata: 64%|██████████████████████████████████████████████████████████▌ | 293/455 [00:09<00:05, 32.35it/s]ERROR:sec_certs.utils.pdf:Failed to read metadata of maintenances/targets/pdf/cert_bbc41d7d09e40c0c_update_784535cca61b58a7.pdf, error: too many values to unpack (expected 2)\n", - "Extracting target metadata: 100%|███████████████████████████████████████████████████████████████████████████████████████████| 455/455 [00:12<00:00, 37.69it/s]\n", - "Extracting report frontpages: 100%|████████████████████████████████████████████████████████████████████████████████████████| 456/456 [00:01<00:00, 453.46it/s]\n", - "Extracting target frontpages: 100%|████████████████████████████████████████████████████████████████████████████████████████| 455/455 [00:02<00:00, 226.05it/s]\n", - "Extracting report keywords: 100%|███████████████████████████████████████████████████████████████████████████████████████████| 456/456 [00:15<00:00, 30.26it/s]\n", - "Extracting target keywords: 100%|███████████████████████████████████████████████████████████████████████████████████████████| 455/455 [03:55<00:00, 1.94it/s]\n" + "Extracting report metadata: 81%|█████████████████████████████████████████████████████████████████████████ | 372/458 [00:01<00:00, 369.89it/s]ERROR:sec_certs.utils.pdf:Failed to read metadata of maintenances/reports/pdf/cert_d455e5408b744b44_update_16f77dbd34439401.pdf, error: PDF metadata unavailable\n", + "Extracting report metadata: 100%|██████████████████████████████████████████████████████████████████████████████████████████| 458/458 [00:02<00:00, 227.06it/s]\n", + "Extracting target metadata: 63%|█████████████████████████████████████████████████████████▍ | 289/458 [00:09<00:05, 28.98it/s]ERROR:sec_certs.utils.pdf:Failed to read metadata of maintenances/targets/pdf/cert_bbc41d7d09e40c0c_update_784535cca61b58a7.pdf, error: too many values to unpack (expected 2)\n", + "Extracting target metadata: 100%|███████████████████████████████████████████████████████████████████████████████████████████| 458/458 [00:12<00:00, 37.95it/s]\n", + "Extracting report frontpages: 100%|████████████████████████████████████████████████████████████████████████████████████████| 458/458 [00:01<00:00, 455.49it/s]\n", + "Extracting target frontpages: 100%|████████████████████████████████████████████████████████████████████████████████████████| 458/458 [00:02<00:00, 227.51it/s]\n", + "Extracting report keywords: 100%|███████████████████████████████████████████████████████████████████████████████████████████| 458/458 [00:15<00:00, 30.39it/s]\n", + "Extracting target keywords: 100%|███████████████████████████████████████████████████████████████████████████████████████████| 458/458 [03:48<00:00, 2.01it/s]\n" ] }, { "data": { "text/plain": [ - "<sec_certs.dataset.common_criteria.CCDatasetMaintenanceUpdates at 0x7fa02b720250>" + "<sec_certs.dataset.common_criteria.CCDatasetMaintenanceUpdates at 0x7f780d79df00>" ] }, - "execution_count": 13, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -766,7 +812,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 13, "metadata": { "pycharm": { "name": "#%%\n" @@ -777,13 +823,6 @@ "# Finally, dump it all\n", "dset.to_json()" ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { diff --git a/notebooks/latex_plotting.ipynb b/notebooks/latex_plotting.ipynb index 880abae0..f4655a5b 100644 --- a/notebooks/latex_plotting.ipynb +++ b/notebooks/latex_plotting.ipynb @@ -217,7 +217,7 @@ "source": [ "n_certs = pd.read_csv(RESULTS_DIR / \"popular_categories.csv\").astype({\"year_from\": \"category\"})\n", "dct = {\n", - " \"ICs, Smart Cards and Smart Card-Related Devices and Systems\": \"ICs, Smart Cards\",\n", + " \"ICs, Smart Cards and Smart Card-Related Devices and Systems\": \"ICs and Smart Cards\",\n", " \"Network and Network-Related Devices and Systems\": \"Network-Related Devices\",\n", " \"Other Devices and Systems\": \"Other Devices\",\n", " \"One of 11 other categories\": \"11 Other Categories\",\n", diff --git a/sec_certs/cert_rules.py b/sec_certs/cert_rules.py index 034baa70..cd6c6d9a 100644 --- a/sec_certs/cert_rules.py +++ b/sec_certs/cert_rules.py @@ -185,6 +185,17 @@ REGEXEC_SEP_START = f"(?:^|{REGEXEC_SEP})" REGEXEC_SEP_END = f"(?:$|{REGEXEC_SEP})" +SERVICE_PACK_RE = re.compile(r"(?:sp|service pack)\s{0,1}\d{1,2}", re.IGNORECASE) +RELEASE_RE = re.compile(r"(?:r|release)\s{0,1}\d{1,2}", re.IGNORECASE) +PLATFORM_REGEXES = { + "linux": re.compile(r"linux", re.IGNORECASE), + "mac_os": re.compile(r"mac\s?os\s?x?", re.IGNORECASE), + "windows": re.compile(r"windows", re.IGNORECASE), + "android": re.compile(r"android", re.IGNORECASE), + "ios": re.compile(r"(ios|iphone os)", re.IGNORECASE), +} + + def _load(): script_dir = Path(__file__).parent filepath = script_dir / "rules.yaml" diff --git a/sec_certs/config/settings.yaml b/sec_certs/config/settings.yaml index c6d54242..17c23ec6 100644 --- a/sec_certs/config/settings.yaml +++ b/sec_certs/config/settings.yaml @@ -17,10 +17,10 @@ n_threads: value: 8 cpe_matching_threshold: description: Level of required string similarity between CPE and certificate name on CC CPE matching, 0-100. Lower values yield more false negatives, higher values more false positives - value: 100 + value: 92 cpe_n_max_matches: description: Maximum number of candidate CPE items that may be related to given certificate, >0 - value: 100 + value: 99 cc_latest_snapshot: description: URL from where to fetch the latest snapshot of fully processed CC dataset value: https://seccerts.org/cc/dataset.json diff --git a/sec_certs/dataset/dataset.py b/sec_certs/dataset/dataset.py index 38b434ba..eeec1e85 100644 --- a/sec_certs/dataset/dataset.py +++ b/sec_certs/dataset/dataset.py @@ -1,10 +1,26 @@ import itertools import json import logging +import re from abc import ABC, abstractmethod from datetime import datetime from pathlib import Path -from typing import Any, Collection, Dict, Generic, Iterator, List, Optional, Set, Tuple, Type, TypeVar, Union, cast +from typing import ( + Any, + Collection, + Dict, + Generic, + Iterator, + List, + Optional, + Pattern, + Set, + Tuple, + Type, + TypeVar, + Union, + cast, +) import requests @@ -197,6 +213,12 @@ class Dataset(Generic[CertSubType], ABC): def compute_cpe_heuristics( self, download_fresh_cpes: bool = False ) -> Tuple[CPEClassifier, CPEDataset, Optional[CVEDataset]]: + RELEASE_CANDIDATE_REGEX: Pattern = re.compile(r"rc\d{0,2}$", re.IGNORECASE) + WINDOWS_WEAK_CPES: Set[CPE] = { + CPE("cpe:2.3:o:microsoft:windows:-:*:*:*:*:*:x64:*", "Microsoft Windows on X64", None, None), + CPE("cpe:2.3:o:microsoft:windows:-:*:*:*:*:*:x86:*", "Microsoft Windows on X86", None, None), + } + def filter_condition(cpe: CPE) -> bool: """ Filters out very weak CPE matches that don't improve our database. @@ -214,6 +236,10 @@ class Dataset(Generic[CertSubType], ABC): and not any(char.isdigit() for char in cpe.item_name) ): return False + elif re.match(RELEASE_CANDIDATE_REGEX, cpe.update): + return False + elif cpe in WINDOWS_WEAK_CPES: + return False return True logger.info("Computing heuristics: Finding CPE matches for certificates") @@ -244,12 +270,14 @@ class Dataset(Generic[CertSubType], ABC): return clf, cpe_dset, cve_dset def to_label_studio_json(self, output_path: Union[str, Path]) -> None: + cpe_dset = self._prepare_cpe_dataset() + lst = [] for cert in [x for x in cast(Iterator[Certificate], self) if x.heuristics.cpe_matches]: dct = {"text": cert.label_studio_title} - candidates = [x[1].title for x in cert.heuristics.cpe_matches] - candidates += ["No good match"] * (config.cc_cpe_max_matches - len(candidates)) - options = ["option_" + str(x) for x in range(1, 21)] + candidates = [cpe_dset[x].title for x in cert.heuristics.cpe_matches] + candidates += ["No good match"] * (config.cpe_n_max_matches - len(candidates)) + options = ["option_" + str(x) for x in range(1, config.cpe_n_max_matches)] dct.update({o: c for o, c in zip(options, candidates)}) lst.append(dct) @@ -257,20 +285,28 @@ class Dataset(Generic[CertSubType], ABC): json.dump(lst, handle, indent=4) @serialize - def load_label_studio_labels(self, input_path: Union[str, Path]) -> None: + def load_label_studio_labels(self, input_path: Union[str, Path]) -> Set[str]: with Path(input_path).open("r") as handle: data = json.load(handle) cpe_dset = self._prepare_cpe_dataset() + labeled_cert_digests: Set[str] = set() logger.info("Translating label studio matches into their CPE representations and assigning to certificates.") - for annotation in helpers.tqdm( - [x for x in data if "verified_cpe_match" in x], desc="Translating label studio matches" - ): - match_keys = annotation["verified_cpe_match"] - match_keys = [match_keys] if isinstance(match_keys, str) else match_keys["choices"] - match_keys = [x.lstrip("$") for x in match_keys] - predicted_annotations = [annotation[x] for x in match_keys if annotation[x] != "No good match"] + for annotation in helpers.tqdm(data, desc="Translating label studio matches"): + cpe_candidate_keys = { + key for key in annotation.keys() if "option_" in key and annotation[key] != "No good match" + } + + if "verified_cpe_match" not in annotation: + incorrect_keys: Set[str] = set() + elif isinstance(annotation["verified_cpe_match"], str): + incorrect_keys = {annotation["verified_cpe_match"]} + else: + incorrect_keys = set(annotation["verified_cpe_match"]["choices"]) + + incorrect_keys = {x.lstrip("$") for x in incorrect_keys} + predicted_annotations = {annotation[x] for x in cpe_candidate_keys - incorrect_keys} cpes: Set[CPE] = set() for x in predicted_annotations: @@ -290,10 +326,13 @@ class Dataset(Generic[CertSubType], ABC): cert_name = annotation["text"] certs = self._get_certs_from_name(cert_name) + labeled_cert_digests.update({x.dgst for x in certs}) for c in certs: c.heuristics.verified_cpe_matches = {x.uri for x in cpes if x is not None} if cpes else None + return labeled_cert_digests + def _get_certs_from_name(self, name: str) -> List[CertSubType]: raise NotImplementedError("Not meant to be implemented by the base class.") diff --git a/sec_certs/dataset/fips.py b/sec_certs/dataset/fips.py index 8b219124..8dd3e2e8 100644 --- a/sec_certs/dataset/fips.py +++ b/sec_certs/dataset/fips.py @@ -139,6 +139,7 @@ class FIPSDataset(Dataset[FIPSCertificate], ComplexSerializableType): FIPSCertificate.convert_pdf_file, tuples, config.n_threads, progress_bar_desc="Converting to txt" ) + # TODO: this "test" parameter is nasty. def _prepare_dataset(self, test: Optional[Path] = None, update: bool = False) -> Set[str]: if test: html_files = [test] @@ -408,13 +409,13 @@ class FIPSDataset(Dataset[FIPSCertificate], ComplexSerializableType): ) finder = DependencyFinder() - finder.fit(self.certs, lambda cert: cert.cert_id, pdf_lookup) # type: ignore + finder.fit(self.certs, lambda cert: str(cert.cert_id), pdf_lookup) # type: ignore for dgst in self.certs: setattr(self.certs[dgst].heuristics, "st_references", finder.predict_single_cert(dgst, keep_unknowns=False)) finder = DependencyFinder() - finder.fit(self.certs, lambda cert: cert.cert_id, web_lookup) # type: ignore + finder.fit(self.certs, lambda cert: str(cert.cert_id), web_lookup) # type: ignore for dgst in self.certs: setattr( diff --git a/sec_certs/model/cpe_matching.py b/sec_certs/model/cpe_matching.py index 9cd007a3..d50be954 100644 --- a/sec_certs/model/cpe_matching.py +++ b/sec_certs/model/cpe_matching.py @@ -2,14 +2,14 @@ import itertools import logging import operator import re -from typing import Dict, List, Optional, Set, Tuple +from typing import Dict, List, Optional, Pattern, Set, Tuple import spacy from rapidfuzz import fuzz from sklearn.base import BaseEstimator import sec_certs.utils.helpers as helpers -from sec_certs import constants +from sec_certs import cert_rules, constants from sec_certs.sample.cpe import CPE logger = logging.getLogger(__name__) @@ -91,7 +91,7 @@ class CPEClassifier(BaseEstimator): relax_title: bool = False, ) -> Optional[Set[str]]: """ - Predict List of CPE uris for triplet (vendor, product_name, list_of_version). The prediction is made as follows: + Predict List of CPE uris for triplet (vendor, product_name, list_of_versions). The prediction is made as follows: 1. Sanitize vendor name, lemmatize product name. 2. Find vendors in CPE dataset that are related to the certificate 3. Based on (vendors, versions) find all CPE items that are considered as candidates for match @@ -107,11 +107,17 @@ class CPEClassifier(BaseEstimator): :param bool relax_title: See step 7 above, defaults to False :return Optional[Set[str]]: Set of matching CPE uris, None if no matches found """ + + if "Active Directory Federation Services 2.0" in product_name: + print("geee") + lemmatized_product_name = self._lemmatize_product_name(product_name) candidate_vendors = self._get_candidate_list_of_vendors( CPEClassifier._discard_trademark_symbols(vendor).lower() if vendor else vendor ) candidates = self._get_candidate_cpe_matches(candidate_vendors, versions) + candidates = self._filter_candidates_by_platform(candidates, product_name) + candidates = self._filter_candidates_by_update(candidates, lemmatized_product_name) ratings = [ self._compute_best_match(cpe, lemmatized_product_name, candidate_vendors, versions, relax_title=relax_title) @@ -136,6 +142,54 @@ class CPEClassifier(BaseEstimator): return final_matches if final_matches else None + def _filter_candidates_by_update(self, cpes: List[CPE], cert_title: str) -> List[CPE]: + """ + Update means `service pack` or `release`. + """ + + def filter_condition(regex: Pattern, cpe: CPE, min_value: int, soft: bool = True): + if matches := re.findall(regex, cpe.update): + return int(re.findall(r"\d+", matches[0])[0]) >= min_value + return True if soft else False + + update_regexes = [cert_rules.SERVICE_PACK_RE, cert_rules.RELEASE_RE] + + for update_regex in update_regexes: + if matches := re.findall(update_regex, cert_title): + min_value = min([int(re.findall(r"\d+", x)[0]) for x in matches]) + soft = False if any((re.search(update_regex, cpe.update + str(cpe.title)) for cpe in cpes)) else True + return [x for x in cpes if filter_condition(update_regex, x, min_value, soft)] + + return cpes + + def _filter_candidates_by_platform(self, cpes: List[CPE], cert_title: str) -> List[CPE]: + def filter_condition(cpe: CPE, cert_platforms: Set[str]): + if not cert_platforms and cpe.target_hw == "*": + return True + if cert_platforms and cpe.target_hw == "*": + return any((re.search(cert_rules.PLATFORM_REGEXES[x], str(cpe.title)) for x in cert_platforms)) + if not cert_platforms and cpe.target_hw != "*": + return False + if cert_platforms and cpe.target_hw != "*": + target_hw_platforms = [ + platform + for platform, regex in cert_rules.PLATFORM_REGEXES.items() + if re.search(regex, cpe.target_hw) + ] + assert len(target_hw_platforms) <= 1 + can_return_true = any( + (re.search(cert_rules.PLATFORM_REGEXES[x], cpe.target_hw + str(cpe.title)) for x in cert_platforms) + ) + if not target_hw_platforms: + return can_return_true + else: + return can_return_true and target_hw_platforms[0] in cert_platforms + + crt_platforms = { + platform for platform, regex in cert_rules.PLATFORM_REGEXES.items() if re.search(regex, cert_title) + } + return [x for x in cpes if filter_condition(x, crt_platforms)] + def _compute_best_match( self, cpe: CPE, @@ -170,27 +224,43 @@ class CPEClassifier(BaseEstimator): else: return 0 + # Sometimes, sanitization shortens CPE title to very short length. E.g., CPEs in Japanese unicode symbols that get all deteled. + if len(sanitized_title) < 5: + return 0 + sanitized_item_name = CPEClassifier._fully_sanitize_string(cpe.item_name) - cert_stripped = CPEClassifier._strip_manufacturer_and_version(product_name, candidate_vendors, versions) + sanitized_cpe_stripped_manufacturer = re.sub(r"\b" + rf"{cpe.vendor}" + r"\b", "", sanitized_title) standard_version_product_name = self._standardize_version_in_cert_name(product_name, versions) + # The expression below is currently unused, it could assist with some matches though + # cert_stripped = CPEClassifier._strip_manufacturer_and_version(product_name, candidate_vendors, versions) + + # On some ratings, we require 100 match regardless of the treshold in settings. ratings = [ fuzz.token_set_ratio(product_name, sanitized_title), fuzz.token_set_ratio(standard_version_product_name, sanitized_title), - fuzz.partial_ratio(product_name, sanitized_title), - fuzz.partial_ratio(standard_version_product_name, sanitized_title), + fuzz.partial_token_sort_ratio(product_name, sanitized_title, score_cutoff=100), + fuzz.partial_token_sort_ratio(standard_version_product_name, sanitized_title, score_cutoff=100), + fuzz.partial_ratio(product_name, sanitized_title, score_cutoff=100), + fuzz.partial_ratio(standard_version_product_name, sanitized_title, score_cutoff=100), ] - if relax_title: - token_set_ratio_on_item_name = fuzz.token_set_ratio(cert_stripped, sanitized_item_name) - partial_ratio_on_item_name = fuzz.partial_ratio(cert_stripped, sanitized_item_name) - ratings += [token_set_ratio_on_item_name, partial_ratio_on_item_name] + # Big-IP has dumb CPEs that contain only that string in item name, which leads to false positives. + if relax_title and cpe.item_name != "big-ip": + ratings += [ + fuzz.token_set_ratio(product_name, sanitized_cpe_stripped_manufacturer, score_cutoff=100), + fuzz.partial_ratio(product_name, sanitized_cpe_stripped_manufacturer, score_cutoff=100), + fuzz.token_set_ratio(product_name, sanitized_item_name, score_cutoff=100), + fuzz.partial_ratio(product_name, sanitized_item_name, score_cutoff=100), + ] return max(ratings) @staticmethod def _fully_sanitize_string(string: str) -> str: - return CPEClassifier._replace_special_chars_with_space(CPEClassifier._discard_trademark_symbols(string.lower())) + return CPEClassifier._replace_special_chars_with_space( + CPEClassifier._discard_trademark_symbols(string.lower()) + ).strip() @staticmethod def _replace_special_chars_with_space(string: str) -> str: @@ -204,14 +274,14 @@ class CPEClassifier(BaseEstimator): def _strip_manufacturer_and_version(string: str, manufacturers: Optional[Set[str]], versions: Set[str]) -> str: to_strip = versions | manufacturers if manufacturers else versions for x in to_strip: - string = string.lower().replace(CPEClassifier._replace_special_chars_with_space(x.lower()), "").strip() + string = string.lower().replace(CPEClassifier._replace_special_chars_with_space(x.lower()), " ").strip() return string @staticmethod def _standardize_version_in_cert_name(string: str, detected_versions: Set[str]) -> str: for ver in detected_versions: version_regex = r"(" + r"(\bversion)\s*" + ver + r"+) | (\bv\s*" + ver + r"+)" - string = re.sub(version_regex, " " + ver, string, flags=re.IGNORECASE) + string = re.sub(version_regex, " " + ver + " ", string, flags=re.IGNORECASE) return string def _process_manufacturer(self, manufacturer: str, result: Set) -> Set[str]: @@ -287,10 +357,19 @@ class CPEClassifier(BaseEstimator): if not cpe_version: return False just_numbers = r"(\d{1,5})(\.\d{1,5})" # TODO: The use of this should be double-checked + + # This assures that on cert version with at least two tokens, we don't match only one-token CPE. + # E.g. cert with version 7.6 must not match CPE record of version 7 + if len(cert_versions) == 1 and len(list(cert_versions)[0]) >= 3 and len(cpe_version) < 3: + return False + + # Except from startswith stuff, this also mandates that for long enough cert vesions (e.g. `3.1`) we do not + # match too short CPE versions, e.g. `3` for v in cert_versions: - if (simple_startswith(v, cpe_version) and re.search(just_numbers, cpe_version)) or simple_startswith( - cpe_version, v - ): + if ( + (simple_startswith(v, cpe_version) and re.search(just_numbers, cpe_version)) + or simple_startswith(cpe_version, v) + ) and (len(v) < 3 or len(cpe_version) >= 3): return True return False diff --git a/sec_certs/model/evaluation.py b/sec_certs/model/evaluation.py index d419850f..e29aa3cd 100644 --- a/sec_certs/model/evaluation.py +++ b/sec_certs/model/evaluation.py @@ -24,12 +24,10 @@ def compute_precision(y: np.ndarray, y_pred: np.ndarray, **kwargs) -> float: for true, pred in zip(y, y_pred): set_pred = set(pred) if pred else set() set_true = set(true) if true else set() - if set_pred and not set_true: - prec.append(0.0) - elif not set_pred and not set_true: - prec.append(1.0) + if not set_pred and not set_true: + pass else: - prec.append(len(set_true.intersection(set_pred)) / len(set_true)) + prec.append(len(set_true) / len(set_true.union(set_pred))) return np.mean(prec) # type: ignore @@ -44,8 +42,9 @@ def evaluate( correctly_classified = [] badly_classified = [] - n_new_certs_with_match = 0 - n_newly_identified = 0 + n_cpes_lost = 0 + n_certs_has_lost_cpes = 0 + n_certs_lost = 0 for cert, predicted_cpes, verified_cpes in zip(x_valid, y_pred, y_valid): if not verified_cpes: @@ -58,32 +57,42 @@ def evaluate( cert_name = cert.name if isinstance(cert, CommonCriteriaCert) else cert.web_data.module_name vendor = cert.manufacturer if isinstance(cert, CommonCriteriaCert) else cert.web_data.vendor + + should_be_removed = {x: cpe_dset[x].title if cpe_dset[x].title else x for x in predicted_cpes - verified_cpes} + should_be_added = {x: cpe_dset[x].title if cpe_dset[x].title else x for x in verified_cpes - predicted_cpes} + record = { "certificate_name": cert_name, "vendor": vendor, "heuristic version": helpers.compute_heuristics_version(cert_name) if cert_name else None, "predicted_cpes": predicted_cpes_dict, "manually_assigned_cpes": verified_cpes_dict, + "should_be_removed": should_be_removed, + "should_be_added": should_be_added, } - if verified_cpes.issubset(predicted_cpes): + if not predicted_cpes and verified_cpes: + n_certs_lost += 1 + + if predicted_cpes.issubset(verified_cpes): correctly_classified.append(record) else: badly_classified.append(record) - if not verified_cpes and predicted_cpes: - n_new_certs_with_match += 1 - n_newly_identified += len(predicted_cpes - verified_cpes) + if should_be_added: + n_certs_has_lost_cpes += 1 + n_cpes_lost += len(should_be_added) results = { "Precision": precision, - "n_new_certs_with_match": n_new_certs_with_match, - "n_newly_identified": n_newly_identified, + "n_cpes_lost": n_cpes_lost, + "n_certs_has_lost_cpes": n_certs_has_lost_cpes, + "n_certs_lost": n_certs_lost, "correctly_classified": correctly_classified, "badly_classified": badly_classified, } logger.info( - f"While keeping precision: {precision}, the classifier identified {n_newly_identified} new CPE matches (Found match for {n_new_certs_with_match} certificates that were previously unmatched) compared to baseline." + f"Precision: {precision}; the classifier now misses {n_cpes_lost} CPE matches from {n_certs_has_lost_cpes} certificates ({n_certs_lost} certificates no longer have a match). In total, {sum([len(x) for x in y_pred if x])} CPEs were matched in {len(y_pred)} certs." ) if outpath: diff --git a/sec_certs/rules.yaml b/sec_certs/rules.yaml index 8a4cd022..87589d72 100644 --- a/sec_certs/rules.yaml +++ b/sec_certs/rules.yaml @@ -61,7 +61,7 @@ cc_cert_id: - "[0-9\\.]+?/TSE-CCCS-[0-9]+" # Turkish CCCS (21.0.0sc/TSE-CCCS-75) - "(?:[0-9]{1,2}\\.){2}[0-9]{1,2}/[0-9]{1,4}-[0-9]{3}" # 21.0.01/13-028 SE: - - "CSEC ?[0-9]{7}" # Sweden (CSEC2019015) + - "CSEC ?[0-9]{6,7}" # Sweden (CSEC2019015) IN: # India (IC3S/DEL01/VALIANT/EAL1/0317/0007/CR STQC/CC/14-15/12/ETR/0017 IC3S/MUM01/CISCO/cPP/0119/0016/CR) # will miss STQC/CC/14-15/12/ETR/0017 diff --git a/sec_certs/sample/cpe.py b/sec_certs/sample/cpe.py index 4a026ce1..f66b8f11 100644 --- a/sec_certs/sample/cpe.py +++ b/sec_certs/sample/cpe.py @@ -82,7 +82,7 @@ class CPE(PandasSerializableType, ComplexSerializableType): def target_hw(self) -> str: if self.uri is None: raise RuntimeError("URI is missing.") - return " ".join(self.uri.split(":")[11].split("_")) + return " ".join(self.uri.split(":")[10].split("_")) @property def pandas_tuple(self) -> Tuple: diff --git a/tests/data/settings_test.yaml b/tests/data/settings_test.yaml index 5fd4aaca..6066a021 100644 --- a/tests/data/settings_test.yaml +++ b/tests/data/settings_test.yaml @@ -3,11 +3,13 @@ log_filepath: description: Path to the file, relative to working directory, where the log will be stored value: ./cert_processing_log.txt smallest_certificate_id_to_connect: - description: During validation we don't connect certificates with number lower than + description: + During validation we don't connect certificates with number lower than _this_ to connections value: 40 year_difference_between_validations: - description: During validation we don't connect certificates with validation dates + description: + During validation we don't connect certificates with validation dates difference higher than _this_ value: 7 n_threads: @@ -15,16 +17,19 @@ n_threads: value: 8 cpe_matching_threshold: description: Level of required string similarity between CPE and certificate name on CC CPE matching, 0-100. Lower values yield more false negatives, higher values more false positives - value: 70 + value: 92 cpe_n_max_matches: description: Maximum number of candidate CPE items that may be related to given certificate, >0 - value: 20 + value: 99 cc_latest_snapshot: - description: Url from where to fetch the latest snapshot of fully processed CC dataset + description: URL from where to fetch the latest snapshot of fully processed CC dataset value: https://seccerts.org/cc/dataset.json cc_maintenances_latest_snapshot: - description: Url from where to fetch the latest snapshot of CC maintenance updates + description: URL from where to fetch the latest snapshot of CC maintenance updates value: https://seccerts.org/cc/maintenance_updates.json +pp_latest_snapshot: + description: URL from where to fetch the latest snapshot of the PP dataset + value: https://seccerts.org/static/pp.json ignore_first_page: description: During keyword search, first page usually contains addresses - ignore it. value: true @@ -32,8 +37,11 @@ cert_threshold: description: Used with --higher-precision-results. Determines the amount of mismatched algorithms to be considered faulty. value: 5 fips_latest_snapshot: - description: Url for the latest snapshot of FIPS dataset + description: URL for the latest snapshot of FIPS dataset value: https://seccerts.org/fips/dataset.json +minimal_token_length: + description: Minimal length of a string that will be considered as a token during keyword extraction in CVE matching + value: 3 enable_progress_bars: description: Whether to enable pretty-printed progress bars while processing. value: False diff --git a/tests/test_fips_oop.py b/tests/test_fips_oop.py index a851af7a..df5eb253 100644 --- a/tests/test_fips_oop.py +++ b/tests/test_fips_oop.py @@ -137,9 +137,6 @@ class TestFipsOOP(TestCase): ) self.assertEqual( - {"3615"}, set(dataset.certs[fips_dgst("3651")].heuristics.st_references.directly_referencing) - ) - self.assertEqual( {"3090", "3091"}, set(dataset.certs[fips_dgst("3093")].heuristics.st_references.directly_referencing) ) @@ -189,9 +186,6 @@ class TestFipsOOP(TestCase): set(dataset.certs[fips_dgst("3690")].heuristics.web_references.directly_referencing), ) self.assertEqual( - {"3615"}, set(dataset.certs[fips_dgst("3644")].heuristics.st_references.directly_referencing) - ) - self.assertEqual( {"3090", "3091"}, set(dataset.certs[fips_dgst("3527")].heuristics.st_references.directly_referencing) ) self.assertEqual( |
