praetorian-cli 2.2.11__tar.gz → 2.2.12__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.
Files changed (110) hide show
  1. {praetorian_cli-2.2.11/praetorian_cli.egg-info → praetorian_cli-2.2.12}/PKG-INFO +1 -1
  2. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/entities/risks.py +13 -6
  3. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/entities/webpage.py +1 -1
  4. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/model/globals.py +1 -0
  5. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/model/query.py +6 -0
  6. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/test/test_z_cli.py +1 -1
  7. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12/praetorian_cli.egg-info}/PKG-INFO +1 -1
  8. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/setup.cfg +1 -1
  9. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/LICENSE +0 -0
  10. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/MANIFEST.in +0 -0
  11. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/README.md +0 -0
  12. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/__init__.py +0 -0
  13. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/handlers/__init__.py +0 -0
  14. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/handlers/add.py +0 -0
  15. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/handlers/aegis.py +0 -0
  16. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/handlers/agent.py +0 -0
  17. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/handlers/chariot.py +0 -0
  18. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/handlers/cli_decorators.py +0 -0
  19. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/handlers/configure.py +0 -0
  20. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/handlers/delete.py +0 -0
  21. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/handlers/enrich.py +0 -0
  22. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/handlers/get.py +0 -0
  23. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/handlers/imports.py +0 -0
  24. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/handlers/link.py +0 -0
  25. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/handlers/list.py +0 -0
  26. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/handlers/script.py +0 -0
  27. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/handlers/search.py +0 -0
  28. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/handlers/ssh_utils.py +0 -0
  29. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/handlers/test.py +0 -0
  30. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/handlers/unlink.py +0 -0
  31. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/handlers/update.py +0 -0
  32. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/handlers/utils.py +0 -0
  33. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/main.py +0 -0
  34. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/scripts/__init__.py +0 -0
  35. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/scripts/commands/__init__.py +0 -0
  36. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/scripts/commands/nmap-example.py +0 -0
  37. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/scripts/utils.py +0 -0
  38. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/__init__.py +0 -0
  39. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/chariot.py +0 -0
  40. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/entities/__init__.py +0 -0
  41. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/entities/accounts.py +0 -0
  42. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/entities/aegis.py +0 -0
  43. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/entities/agents.py +0 -0
  44. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/entities/assets.py +0 -0
  45. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/entities/attributes.py +0 -0
  46. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/entities/capabilities.py +0 -0
  47. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/entities/configurations.py +0 -0
  48. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/entities/credentials.py +0 -0
  49. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/entities/definitions.py +0 -0
  50. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/entities/files.py +0 -0
  51. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/entities/integrations.py +0 -0
  52. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/entities/jobs.py +0 -0
  53. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/entities/keys.py +0 -0
  54. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/entities/preseeds.py +0 -0
  55. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/entities/scanners.py +0 -0
  56. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/entities/schema.py +0 -0
  57. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/entities/search.py +0 -0
  58. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/entities/seeds.py +0 -0
  59. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/entities/settings.py +0 -0
  60. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/entities/statistics.py +0 -0
  61. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/entities/webhook.py +0 -0
  62. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/keychain.py +0 -0
  63. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/mcp_server.py +0 -0
  64. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/model/__init__.py +0 -0
  65. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/model/aegis.py +0 -0
  66. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/model/utils.py +0 -0
  67. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/test/__init__.py +0 -0
  68. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/test/pytest.ini +0 -0
  69. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/test/test_account.py +0 -0
  70. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/test/test_agent.py +0 -0
  71. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/test/test_asset.py +0 -0
  72. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/test/test_attribute.py +0 -0
  73. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/test/test_capabilities.py +0 -0
  74. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/test/test_configuration.py +0 -0
  75. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/test/test_conversation.py +0 -0
  76. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/test/test_definition.py +0 -0
  77. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/test/test_extend.py +0 -0
  78. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/test/test_file.py +0 -0
  79. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/test/test_job.py +0 -0
  80. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/test/test_key.py +0 -0
  81. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/test/test_mcp.py +0 -0
  82. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/test/test_preseed.py +0 -0
  83. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/test/test_risk.py +0 -0
  84. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/test/test_search.py +0 -0
  85. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/test/test_seed.py +0 -0
  86. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/test/test_setting.py +0 -0
  87. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/test/test_webhook.py +0 -0
  88. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/test/test_webpage.py +0 -0
  89. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/test/ui_mocks.py +0 -0
  90. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/sdk/test/utils.py +0 -0
  91. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/ui/__init__.py +0 -0
  92. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/ui/aegis/__init__.py +0 -0
  93. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/ui/aegis/commands/__init__.py +0 -0
  94. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/ui/aegis/commands/help.py +0 -0
  95. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/ui/aegis/commands/info.py +0 -0
  96. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/ui/aegis/commands/job.py +0 -0
  97. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/ui/aegis/commands/list.py +0 -0
  98. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/ui/aegis/commands/set.py +0 -0
  99. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/ui/aegis/commands/ssh.py +0 -0
  100. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/ui/aegis/constants.py +0 -0
  101. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/ui/aegis/menu.py +0 -0
  102. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/ui/aegis/utils.py +0 -0
  103. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/ui/conversation/__init__.py +0 -0
  104. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli/ui/conversation/textual_chat.py +0 -0
  105. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli.egg-info/SOURCES.txt +0 -0
  106. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli.egg-info/dependency_links.txt +0 -0
  107. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli.egg-info/entry_points.txt +0 -0
  108. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli.egg-info/requires.txt +0 -0
  109. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/praetorian_cli.egg-info/top_level.txt +0 -0
  110. {praetorian_cli-2.2.11 → praetorian_cli-2.2.12}/pyproject.toml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: praetorian-cli
3
- Version: 2.2.11
3
+ Version: 2.2.12
4
4
  Summary: For interacting with the Chariot API
5
5
  Home-page: https://github.com/praetorian-inc/praetorian-cli
6
6
  Author: Praetorian
@@ -1,5 +1,5 @@
1
1
  from praetorian_cli.sdk.model.globals import Kind
2
- from praetorian_cli.sdk.model.query import Relationship, Node, Query, risk_of_key, ASSET_NODE, ATTRIBUTE_NODE, Filter
2
+ from praetorian_cli.sdk.model.query import Relationship, Node, Query, risk_of_key, ASSET_NODE, PORT_NODE, Filter, WEBPAGE_NODE
3
3
 
4
4
 
5
5
  class Risks:
@@ -132,7 +132,7 @@ class Risks:
132
132
  Get all assets affected by a risk.
133
133
 
134
134
  This method finds assets that are directly linked to the risk via HAS_VULNERABILITY
135
- relationships, as well as assets indirectly linked via attributes that have the risk.
135
+ relationships, as well as assets indirectly linked via ports that have the risk.
136
136
 
137
137
  :param key: The key of the risk to get affected assets for
138
138
  :type key: str
@@ -144,11 +144,18 @@ class Risks:
144
144
  query = Query(Node(ASSET_NODE, relationships=[to_this]))
145
145
  assets, _ = self.api.search.by_query(query)
146
146
 
147
- # assets indirectly linked to the risk via an attribute
148
- attributes = Node(ATTRIBUTE_NODE, relationships=[to_this])
149
- to_attributes = Relationship(Relationship.Label.HAS_ATTRIBUTE, target=attributes)
150
- query = Query(Node(ASSET_NODE, relationships=[to_attributes]))
147
+ # assets indirectly linked to the risk via a port
148
+ ports = Node(PORT_NODE, relationships=[to_this])
149
+ to_ports = Relationship(Relationship.Label.HAS_PORT, target=ports)
150
+ query = Query(Node(ASSET_NODE, relationships=[to_ports]))
151
151
  indirect_assets, _ = self.api.search.by_query(query)
152
152
 
153
+ # webpages linked to the risk
154
+ webpages = Node(WEBPAGE_NODE, relationships=[to_this])
155
+ to_webpages = Relationship(Relationship.Label.HAS_WEBPAGE, target=webpages)
156
+ query = Query(Node(ASSET_NODE, relationships=[to_webpages]))
157
+ web_assets, _ = self.api.search.by_query(query)
158
+
153
159
  assets.extend(indirect_assets)
160
+ assets.extend(web_assets)
154
161
  return assets
@@ -126,7 +126,7 @@ class Webpage:
126
126
  urlFilter = Filter(field=Filter.Field.KEY, operator=Filter.Operator.CONTAINS, value=filter)
127
127
  filters.append(urlFilter)
128
128
  node = Node(labels=[Node.Label.WEBPAGE], filters=filters, relationships=relationships)
129
- query = Query(node=node, page=offset, limit=pages)
129
+ query = Query(node=node, page=offset)
130
130
  return self.api.search.by_query(query, pages)
131
131
 
132
132
  def delete(self, key):
@@ -110,6 +110,7 @@ class Kind(Enum):
110
110
  OTHERS = 'others'
111
111
  WEBAPPLICATION = 'webapplication'
112
112
  WEBPAGE = 'webpage'
113
+ PORT = 'port'
113
114
 
114
115
  EXACT_FLAG = {'exact': 'true'}
115
116
  DESCENDING_FLAG = {'desc': 'true'}
@@ -68,6 +68,7 @@ class Relationship:
68
68
  DISCOVERED = 'DISCOVERED'
69
69
  HAS_ATTRIBUTE = 'HAS_ATTRIBUTE'
70
70
  HAS_WEBPAGE = 'HAS_WEBPAGE'
71
+ HAS_PORT = 'HAS_PORT'
71
72
 
72
73
  def __init__(self, label: Label, source: 'Node' = None, target: 'Node' = None, optional: bool = False, length: int = 0):
73
74
  self.label = label
@@ -97,6 +98,7 @@ class Node:
97
98
  ADDOMAIN = 'ADDomain'
98
99
  ATTRIBUTE = 'Attribute'
99
100
  RISK = 'Risk'
101
+ PORT = 'Port'
100
102
  PRESEED = 'Preseed'
101
103
  SEED = 'Seed'
102
104
  TTL = 'TTL'
@@ -152,11 +154,15 @@ class Query:
152
154
  ASSET_NODE = [Node.Label.ASSET]
153
155
  RISK_NODE = [Node.Label.RISK]
154
156
  ATTRIBUTE_NODE = [Node.Label.ATTRIBUTE]
157
+ PORT_NODE = [Node.Label.PORT]
158
+ WEBAPPLICATION_NODE = [Node.Label.WEBAPPLICATION]
159
+ WEBPAGE_NODE = [Node.Label.WEBPAGE]
155
160
 
156
161
  KIND_TO_LABEL = {
157
162
  Kind.ASSET.value: Node.Label.ASSET,
158
163
  Kind.RISK.value: Node.Label.RISK,
159
164
  Kind.ATTRIBUTE.value: Node.Label.ATTRIBUTE,
165
+ Kind.PORT.value: Node.Label.PORT,
160
166
  Kind.SEED.value: Node.Label.SEED,
161
167
  Kind.PRESEED.value: Node.Label.PRESEED,
162
168
  Kind.REPOSITORY.value: Node.Label.REPOSITORY,
@@ -102,7 +102,7 @@ class TestZCli:
102
102
  self.verify(f'update risk "{o.risk_key}" -s {Risk.OPEN_LOW.value}')
103
103
  self.verify(f'get risk "{o.risk_key}"', [o.risk_key, f'"status": "{Risk.OPEN_LOW.value}"'])
104
104
 
105
- self.verify(f'delete risk "{o.risk_key}"')
105
+ self.verify(f'delete risk "{o.risk_key}" -s {Risk.DELETED_OTHER_LOW.value}')
106
106
  self.verify(f'get risk "{o.risk_key}"', [
107
107
  o.risk_key, f'"status": "{Risk.DELETED_OTHER_LOW.value}"',
108
108
  f'"to": "{Risk.DELETED_OTHER_LOW.value}"'])
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: praetorian-cli
3
- Version: 2.2.11
3
+ Version: 2.2.12
4
4
  Summary: For interacting with the Chariot API
5
5
  Home-page: https://github.com/praetorian-inc/praetorian-cli
6
6
  Author: Praetorian
@@ -1,6 +1,6 @@
1
1
  [metadata]
2
2
  name = praetorian-cli
3
- version = 2.2.11
3
+ version = 2.2.12
4
4
  author = Praetorian
5
5
  author_email = support@praetorian.com
6
6
  description = For interacting with the Chariot API
File without changes