CheckPDFEncryptionAndValidity
Returns wether a PDF is both valid and encrypted.
python · Common Scripts
Source
import demistomock as demisto from CommonServerPython import * from CommonServerUserPython import * import PyPDF2 def check_PDF_encryption_and_validity(entry_id) -> CommandResults: """This function checks the encryption and validity of a PDF file based on the provided entry ID. Args: entry_id (str): The entry ID of the PDF file to be checked. Raises: DemistoException: _description_ Returns: Returns a CommandResults object containing the following fields: outputs_prefix (str): The prefix for the outputs (always 'File'). outputs_key_field (str): The key field for the outputs (always 'EntryID'). outputs (dict): A dictionary containing the following key-value pairs: EntryID (str): The provided entry ID. IsValid (bool): Indicates whether the PDF file is valid or not. IsEncrypted (bool): Indicates whether the PDF file is encrypted or not. Error (str): If an error occurs during the process, it contains the error message. """ is_valid = False is_encrypted = False try: file_path = demisto.getFilePath(entry_id).get("path") if not file_path: raise DemistoException("File not found. Please enter a valid entry ID.") demisto.debug(f"Trying to open file {file_path=}") with open(file_path, "rb") as f: reader = PyPDF2.PdfReader(f) is_valid = True is_encrypted = reader.is_encrypted demisto.debug(f"Opened file with {file_path=}") return CommandResults(outputs_prefix='File', outputs_key_field='EntryID', outputs={'EntryID': entry_id, 'IsValid': is_valid, 'IsEncrypted': is_encrypted}, readable_output=f'The file with EntryID {entry_id} status is: Valid-{is_valid}, Encrypted-{is_encrypted}') except Exception as ex: return CommandResults(outputs_prefix='File', outputs_key_field='EntryID', outputs={'EntryID': entry_id, 'IsValid': is_valid, 'IsEncrypted': is_encrypted, 'Error': str(ex)}, readable_output=f'The file with EntryID {entry_id} status is: Valid-{is_valid}, Encrypted-{is_encrypted}') def main(): # pragma: no cover args = demisto.args() entry_id = args.get("EntryID") try: return_results(check_PDF_encryption_and_validity(entry_id)) except Exception as ex: return_error(f"Failed to execute CheckPDFEncryptionAndValidity. Error: {str(ex)}") if __name__ in ("__main__", "__builtin__", "builtins"): # pragma: no cover main()
README
This script checks whether a given PDF file is valid and whether it is encrypted. The results are returned as fields in the file’s context.
The script will not fail on invalid/ encrypted files. Instead, the error details will be captured and returned in the file’s context.