pdfalyzer 1.17.7__tar.gz → 1.17.8__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of pdfalyzer might be problematic. Click here for more details.

Files changed (52) hide show
  1. {pdfalyzer-1.17.7 → pdfalyzer-1.17.8}/CHANGELOG.md +4 -1
  2. {pdfalyzer-1.17.7 → pdfalyzer-1.17.8}/PKG-INFO +1 -1
  3. {pdfalyzer-1.17.7 → pdfalyzer-1.17.8}/pdfalyzer/pdfalyzer.py +9 -3
  4. {pdfalyzer-1.17.7 → pdfalyzer-1.17.8}/pyproject.toml +1 -1
  5. {pdfalyzer-1.17.7 → pdfalyzer-1.17.8}/.pdfalyzer.example +0 -0
  6. {pdfalyzer-1.17.7 → pdfalyzer-1.17.8}/LICENSE +0 -0
  7. {pdfalyzer-1.17.7 → pdfalyzer-1.17.8}/README.md +0 -0
  8. {pdfalyzer-1.17.7 → pdfalyzer-1.17.8}/pdfalyzer/__init__.py +0 -0
  9. {pdfalyzer-1.17.7 → pdfalyzer-1.17.8}/pdfalyzer/__main__.py +0 -0
  10. {pdfalyzer-1.17.7 → pdfalyzer-1.17.8}/pdfalyzer/binary/binary_scanner.py +0 -0
  11. {pdfalyzer-1.17.7 → pdfalyzer-1.17.8}/pdfalyzer/config.py +0 -0
  12. {pdfalyzer-1.17.7 → pdfalyzer-1.17.8}/pdfalyzer/decorators/document_model_printer.py +0 -0
  13. {pdfalyzer-1.17.7 → pdfalyzer-1.17.8}/pdfalyzer/decorators/indeterminate_node.py +0 -0
  14. {pdfalyzer-1.17.7 → pdfalyzer-1.17.8}/pdfalyzer/decorators/pdf_file.py +0 -0
  15. {pdfalyzer-1.17.7 → pdfalyzer-1.17.8}/pdfalyzer/decorators/pdf_object_properties.py +0 -0
  16. {pdfalyzer-1.17.7 → pdfalyzer-1.17.8}/pdfalyzer/decorators/pdf_tree_node.py +0 -0
  17. {pdfalyzer-1.17.7 → pdfalyzer-1.17.8}/pdfalyzer/decorators/pdf_tree_verifier.py +0 -0
  18. {pdfalyzer-1.17.7 → pdfalyzer-1.17.8}/pdfalyzer/detection/constants/binary_regexes.py +0 -0
  19. {pdfalyzer-1.17.7 → pdfalyzer-1.17.8}/pdfalyzer/detection/constants/javascript_reserved_keywords.py +0 -0
  20. {pdfalyzer-1.17.7 → pdfalyzer-1.17.8}/pdfalyzer/detection/javascript_hunter.py +0 -0
  21. {pdfalyzer-1.17.7 → pdfalyzer-1.17.8}/pdfalyzer/detection/yaralyzer_helper.py +0 -0
  22. {pdfalyzer-1.17.7 → pdfalyzer-1.17.8}/pdfalyzer/font_info.py +0 -0
  23. {pdfalyzer-1.17.7 → pdfalyzer-1.17.8}/pdfalyzer/helpers/dict_helper.py +0 -0
  24. {pdfalyzer-1.17.7 → pdfalyzer-1.17.8}/pdfalyzer/helpers/filesystem_helper.py +0 -0
  25. {pdfalyzer-1.17.7 → pdfalyzer-1.17.8}/pdfalyzer/helpers/image_helper.py +0 -0
  26. {pdfalyzer-1.17.7 → pdfalyzer-1.17.8}/pdfalyzer/helpers/number_helper.py +0 -0
  27. {pdfalyzer-1.17.7 → pdfalyzer-1.17.8}/pdfalyzer/helpers/pdf_object_helper.py +0 -0
  28. {pdfalyzer-1.17.7 → pdfalyzer-1.17.8}/pdfalyzer/helpers/rich_text_helper.py +0 -0
  29. {pdfalyzer-1.17.7 → pdfalyzer-1.17.8}/pdfalyzer/helpers/string_helper.py +0 -0
  30. {pdfalyzer-1.17.7 → pdfalyzer-1.17.8}/pdfalyzer/output/character_mapping.py +0 -0
  31. {pdfalyzer-1.17.7 → pdfalyzer-1.17.8}/pdfalyzer/output/layout.py +0 -0
  32. {pdfalyzer-1.17.7 → pdfalyzer-1.17.8}/pdfalyzer/output/pdfalyzer_presenter.py +0 -0
  33. {pdfalyzer-1.17.7 → pdfalyzer-1.17.8}/pdfalyzer/output/styles/node_colors.py +0 -0
  34. {pdfalyzer-1.17.7 → pdfalyzer-1.17.8}/pdfalyzer/output/styles/rich_theme.py +0 -0
  35. {pdfalyzer-1.17.7 → pdfalyzer-1.17.8}/pdfalyzer/output/tables/decoding_stats_table.py +0 -0
  36. {pdfalyzer-1.17.7 → pdfalyzer-1.17.8}/pdfalyzer/output/tables/font_summary_table.py +0 -0
  37. {pdfalyzer-1.17.7 → pdfalyzer-1.17.8}/pdfalyzer/output/tables/pdf_node_rich_table.py +0 -0
  38. {pdfalyzer-1.17.7 → pdfalyzer-1.17.8}/pdfalyzer/output/tables/stream_objects_table.py +0 -0
  39. {pdfalyzer-1.17.7 → pdfalyzer-1.17.8}/pdfalyzer/pdf_object_relationship.py +0 -0
  40. {pdfalyzer-1.17.7 → pdfalyzer-1.17.8}/pdfalyzer/util/adobe_strings.py +0 -0
  41. {pdfalyzer-1.17.7 → pdfalyzer-1.17.8}/pdfalyzer/util/argument_parser.py +0 -0
  42. {pdfalyzer-1.17.7 → pdfalyzer-1.17.8}/pdfalyzer/util/cli_tools_argument_parser.py +0 -0
  43. {pdfalyzer-1.17.7 → pdfalyzer-1.17.8}/pdfalyzer/util/debugging.py +0 -0
  44. {pdfalyzer-1.17.7 → pdfalyzer-1.17.8}/pdfalyzer/util/exceptions.py +0 -0
  45. {pdfalyzer-1.17.7 → pdfalyzer-1.17.8}/pdfalyzer/util/page_range.py +0 -0
  46. {pdfalyzer-1.17.7 → pdfalyzer-1.17.8}/pdfalyzer/util/pdf_parser_manager.py +0 -0
  47. {pdfalyzer-1.17.7 → pdfalyzer-1.17.8}/pdfalyzer/yara_rules/PDF.yara +0 -0
  48. {pdfalyzer-1.17.7 → pdfalyzer-1.17.8}/pdfalyzer/yara_rules/PDF_binary_stream.yara +0 -0
  49. {pdfalyzer-1.17.7 → pdfalyzer-1.17.8}/pdfalyzer/yara_rules/__init.py__ +0 -0
  50. {pdfalyzer-1.17.7 → pdfalyzer-1.17.8}/pdfalyzer/yara_rules/didier_stevens.yara +0 -0
  51. {pdfalyzer-1.17.7 → pdfalyzer-1.17.8}/pdfalyzer/yara_rules/lprat.static_file_analysis.yara +0 -0
  52. {pdfalyzer-1.17.7 → pdfalyzer-1.17.8}/pdfalyzer/yara_rules/pdf_malware.yara +0 -0
@@ -1,7 +1,10 @@
1
1
  # NEXT RELEASE
2
2
 
3
+ ### 1.17.8
4
+ * Handle `AttributeError` in `FontInfo` extraction
5
+
3
6
  ### 1.17.7
4
- * Bump `pypdf` to 6.1.3 (fixes [#31](https://github.com/michelcrypt4d4mus/pdfalyzer/issues/31), `PyMuPDF` to 1.26.5
7
+ * Bump `pypdf` to 6.1.3 (fixes [#31](https://github.com/michelcrypt4d4mus/pdfalyzer/issues/31)), `PyMuPDF` to 1.26.5
5
8
 
6
9
  ### 1.17.6
7
10
  * Better handling for errors resulting from bugs in PyPDF
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pdfalyzer
3
- Version: 1.17.7
3
+ Version: 1.17.8
4
4
  Summary: Analyze PDFs with colors (and YARA). Visualize a PDF's inner tree-like data structure, check it against a library of YARA rules, force decodes of suspicious font binaries, and more.
5
5
  Home-page: https://github.com/michelcrypt4d4mus/pdfalyzer
6
6
  License: GPL-3.0-or-later
@@ -220,14 +220,20 @@ class Pdfalyzer:
220
220
  def _extract_font_infos(self) -> None:
221
221
  """Extract information about fonts in the tree and place it in `self.font_infos`."""
222
222
  for node in self.node_iterator():
223
- if isinstance(node.obj, dict) and RESOURCES in node.obj:
224
- log.debug(f"Extracting fonts from node with '{RESOURCES}' key: {node}...")
225
- known_font_ids = [fi.idnum for fi in self.font_infos]
223
+ if not (isinstance(node.obj, dict) and RESOURCES in node.obj):
224
+ continue
225
+
226
+ log.debug(f"Extracting fonts from node with '{RESOURCES}' key: {node}...")
227
+ known_font_ids = [fi.idnum for fi in self.font_infos]
226
228
 
229
+ try:
227
230
  self.font_infos += [
228
231
  fi for fi in FontInfo.extract_font_infos(node.obj)
229
232
  if fi.idnum not in known_font_ids
230
233
  ]
234
+ except AttributeError as e:
235
+ console.print_exception()
236
+ log.error(f"Failed to extract font information from node: {node}")
231
237
 
232
238
  def _build_or_find_node(self, relationship: IndirectObject, relationship_key: str) -> PdfTreeNode:
233
239
  """If node in self.nodes_encountered already then return it, otherwise build a node and store it."""
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "pdfalyzer"
3
- version = "1.17.7"
3
+ version = "1.17.8"
4
4
  description = "Analyze PDFs with colors (and YARA). Visualize a PDF's inner tree-like data structure, check it against a library of YARA rules, force decodes of suspicious font binaries, and more."
5
5
  authors = ["Michel de Cryptadamus <michel@cryptadamus.com>"]
6
6
  license = "GPL-3.0-or-later"
File without changes
File without changes