in elkserver/docker/redelk-base/redelkinstalldata/scripts/modules/alarm_filehash/ioc_hybridanalysis.py [0:0]
def get_remaining_quota(self):
"""Returns the number of hashes that could be queried within this run"""
url = "https://www.hybrid-analysis.com/api/v2/key/current"
headers = {
"Accept": "application/json",
"User-Agent": "RedELK",
"api-key": self.api_key,
}
# Get the quotas, if response code != 200, return 0 so we don't query further
response = requests.get(url, headers=headers)
if response.status_code != 200:
self.logger.warning(
"Error retrieving Hybrid Analysis Quota (HTTP Status code: %d)",
response.status_code,
)
return 0
api_limits_json = response.headers.get("api-limits")
api_limits = json.loads(api_limits_json)
# First check if the limit has been reached
limit_reached = get_value("limit_reached", api_limits, False)
if limit_reached:
return 0
# Extract the limits and usage
limits_minute = get_value("limits.minute", api_limits, 0)
limits_hour = get_value("limits.hour", api_limits, 0)
used_minute = get_value("used.minute", api_limits, 0)
used_hour = get_value("used.hour", api_limits, 0)
remaining_minute = limits_minute - used_minute
remaining_hour = limits_hour - used_hour
self.logger.debug(
"Remaining quotas: hour(%d) / minute(%d)", remaining_hour, remaining_minute
)
# Return the remaining quota per minute
return remaining_minute