Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
64 changes: 63 additions & 1 deletion phutils.json
Original file line number Diff line number Diff line change
Expand Up @@ -772,6 +772,68 @@
],
"versions": "EQ(*)"
},
{
"action": "defang url",
"description": "Returns defanged URLs",
"type": "generic",
"identifier": "defang_url",
"read_only": true,
"parameters": {
"url": {
"description": "url to defang",
"data_type": "string",
"contains": [
"url"
],
"required": true,
"primary": true
}
},
"render": {
"type": "table",
"width": 2,
"height": 5,
"title": "Search Results"
},
"output": [
{
"data_path": "action_result.status",
"data_type": "string",
"column_name": "Status"
},
{
"data_path": "action_result.parameter.url",
"data_type": "string",
"contains": [
"url"
],
"column_order": 0,
"column_name": "Fanged URL"
},
{
"data_path": "action_result.data.*.defanged_url",
"data_type": "string",
"contains": [
"url"
],
"column_order": 1,
"column_name": "Defanged URL"
},
{
"data_path": "action_result.summary.defanged_url",
"data_type": "string",
"contains": [
"url"
]
},
{
"data_path": "action_result.message",
"data_type": "string",
"column_name": "Message"
}
],
"versions": "EQ(*)"
},
{
"action": "format string",
"description": "Formats input data",
Expand Down Expand Up @@ -1449,4 +1511,4 @@
"versions": "EQ(*)"
}
]
}
}
31 changes: 31 additions & 0 deletions phutils_connector.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ def handle_action(self, param):
'modify_number': self._modify_number,
'convert_to_dict': self._convert_to_dict,
'unshorten_url': self._unshorten_url,
'defang_url': self._defang_url,
'change_encoding': self._change_encoding,
'make_table': self._make_table,
'get_pin': self._get_pin,
Expand Down Expand Up @@ -480,7 +481,37 @@ def _unshorten_url(self, param, action_id):
phantom.APP_SUCCESS,
message + ' - ' + response.url
)

def _defang_url(self, param, action_id):
fanged_url = param['url']

action_result = self.add_action_result(ActionResult(dict(param)))

try:
if '://' in fanged_url:
split_url = fanged_url.split('://', 1)
split_url[0] = split_url[0].replace('t', 'x')
split_url[1] = split_url[1].replace('.', '[.]')
defanged_url = split_url[0] + "://" + split_url[1]

# Look for urls without http, https, ftp
else:
defanged_url = fanged_url.replace('.', '[.]')
except Exception as err:
return self.set_status_save_progress(
phantom.APP_ERROR,
(
'Could not defang_url ' + fanged_url + '. ' + 'Details - ' + err.message
)
)

action_result.add_data({'defanged_url': defanged_url})

return action_result.set_status(
phantom.APP_SUCCESS,
'Successfully defanged_url ' + defanged_url + '.'
)

def _modify_number(self, param, action_id):
num_to_modify = param.get("number", param.get("default_number"))
expression = param["expression"]
Expand Down