Skip to content
Merged
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
1 change: 0 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
# honeydb-python

[![Format & Lint](https://github.com/honeydbio/honeydb-python/actions/workflows/format-lint.yml/badge.svg)](https://github.com/honeydbio/honeydb-python/actions/workflows/format-lint.yml)
[![Build Status](https://travis-ci.org/foospidy/honeydb-python.svg?branch=master)](https://travis-ci.org/foospidy/honeydb-python)

HoneyDB Python Module

Expand Down
3 changes: 0 additions & 3 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,6 @@ HoneyDB
:target: https://pypi.python.org/pypi/honeydb/
:alt: Latest Version

.. image:: https://travis-ci.org/foospidy/honeydb.svg?branch=master
:target: https://travis-ci.org/foospidy/honeydb

To learn more about HoneyDB visit `About HoneyDB`_.

To lean more about the HoneyDB API visit `HoneyDB REST API`_.
Expand Down
13 changes: 0 additions & 13 deletions example.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
export HONEYDB_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
"""

from __future__ import print_function
import os
import json
import datetime
Expand Down Expand Up @@ -54,18 +53,6 @@ def main():
out(data)
"""

# Get twitter threat feed
twitter = honeydb.twitter_threat_feed()
out(twitter)

"""
# Example with ipaddress.
# See more information on using from_id here:
# https://honeydb.io/threats#twitter_threat_feed
twitter = honeydb.twitter_threat_feed(ipaddress="201.179.21.139")
out(twitter)
"""

except Exception as error:
print(str(error))

Expand Down
90 changes: 89 additions & 1 deletion honeydb/api/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,16 +16,21 @@ class Client(object):
api_id = None
api_key = None
ep_bad_hosts = "/bad-hosts"
ep_ip_history = "/ip-history"
ep_payload_history = "/payload-history"
ep_sensor_data_count = "/sensor-data/count"
ep_sensor_data = "/sensor-data"
ep_services = "/services"
ep_stats = "/stats"
ep_stats_asn = "/stats/asn"
ep_twitter_threat_feed = "/twitter-threat-feed"
ep_nodes = "/nodes"
ep_netinfo_lookup = "/netinfo/lookup"
ep_netinfo_network_addresses = "/netinfo/network-addresses"
ep_netinfo_prefixes = "/netinfo/prefixes"
ep_netinfo_as_name = "/netinfo/as-name"
ep_netinfo_geolocation = "/netinfo/geolocation"
ep_datacenter = "/datacenter"

def __init__(self, api_id, api_key):
"""
Expand Down Expand Up @@ -56,7 +61,6 @@ def _make_request(self, endpoint, method="GET", options=None):
result = requests.post(url, json=data, headers=headers)
else:
raise Exception("InvalidMethod: " + str(method))

return result.json()

def bad_hosts(self, service=None, mydata=False):
Expand Down Expand Up @@ -84,6 +88,69 @@ def bad_hosts_service(self, service, mydata=False):

return self._make_request(endpoint=endpoint)

def ip_history(self, ip_address: str) -> dict:
"""
Get IP History for given IP
"""
endpoint = f"{self.ep_ip_history}/{ip_address}"

return self._make_request(endpoint=endpoint)

def payload_history(
self, year: int = None, month: int = None, hash: str = None
) -> dict:
"""
Get payload history
"""
if hash:
endpoint = f"{self.ep_payload_history}/{hash}"

elif year and month:
endpoint = f"{self.ep_payload_history}/{year}/{month}"

elif year:
endpoint = f"{self.ep_payload_history}/{year}"

return self._make_request(endpoint=endpoint)

def payload_history_services(self, service: str = None) -> dict:
"""
Get payload history services
"""
endpoint = f"{self.ep_payload_history}/services"

if service:
endpoint = f"{self.ep_payload_history}/{service}"

return self._make_request(endpoint=endpoint)

def payload_history_remote_hosts(
self, remote_host: str = None, hash: str = None, year: int = None
) -> dict:
"""
Get payload history remote hosts
"""
endpoint = f"{self.ep_payload_history}/remote-hosts"

if hash and year:
endpoint = f"{self.ep_payload_history}/{hash}/remote-hosts/{year}"

if remote_host:
endpoint = f"{self.ep_payload_history}/remote-hosts/{remote_host}"

return self._make_request(endpoint=endpoint)

def payload_history_attributes(self, attribute: str = None) -> dict:
"""
Get payload history attributes
"""
endpoint = f"{self.ep_payload_history}/attributes"

if attribute:
endpoint = f"{endpoint}/{attribute}"

return self._make_request(endpoint=endpoint)

def sensor_data_count(self, sensor_data_date=None, mydata=True):
"""
Get sensor data count
Expand Down Expand Up @@ -125,6 +192,20 @@ def services(self):

return self._make_request(endpoint=endpoint)

def stats(self, year: int, month: int) -> dict:
"""
Get stats
"""
endpoint = f"{self.ep_stats}?year={year}&month={month}"

return self._make_request(endpoint=endpoint)

def stats_asn(self) -> dict:
"""
Get stats-asn
"""
return self._make_request(endpoint=self.ep_stats_asn)

def twitter_threat_feed(self, ipaddress=None):
"""
Get twitter threat feed
Expand Down Expand Up @@ -181,3 +262,10 @@ def netinfo_geolocation(self, ipaddress):
"""
endpoint = "{}/{}".format(self.ep_netinfo_geolocation, ipaddress)
return self._make_request(endpoint=endpoint)

def datacenter(self, datacenter: str) -> dict:
"""
Get datacenter ip ranges
"""
endpoint = f"{self.ep_datacenter}/{datacenter}"
return self._make_request(endpoint=endpoint)
Loading