CensysEx
Tiny Elixir ⚗️ wrapper for the Censys Search 2.0 API
Note: this is NOT an official Censys library, and is not supported by or affiliated with Censys at this time. I do not own Censys Trademarks or Copyrights
Installation
Available in Hex, the package can be installed by adding censys_ex to your list of dependencies in mix.exs:
def deps do
[
{:censys_ex, "~> 0.1.3"}
]
endSetup
via environment variables
$ export CENSYS_API_ID="*****"
$ export CENSYS_API_SECRET="*****"iex(1)> CensysEx.API.start_link()
{:ok, #PID<0.253.0>}or directly
iex(1)> CensysEx.API.start_link("*****", "*****")
{:ok, #PID<0.252.0>}API secrets can be found here
View
View all the data on an IP at a given time.
CensysEx.Hosts.view("127.0.0.1")
# Lookup the host as it was at a certain time
CensysEx.Hosts.view("127.0.0.1", ~U[2021-06-07 12:53:27.450073Z])Search
Search returns a stream of results using the cursors provided by the API.
iex(1)> CensysEx.Hosts.search("same_service(service_name: SSH and not port: 22)")
...(1)> |> Stream.take(25)
...(1)> |> Stream.map(&Map.get(&1, "ip"))
...(1)> |> Enum.to_list()
["10.0.0.6", "10.2.0.1", ...]Aggregate
Aggregate data about hosts on the internet.
CensysEx.Hosts.aggregate("location.country_code", "services.service_name: MEMCACHED")
CensysEx.Hosts.aggregate("location.country_code", "services.service_name: MEMCACHED", 10)