Consulting Services

Fingerbank is a wealth of information and exploiting its potential could be challenging. We have done hundreds of large-scale deployments using Fingerbank in parallel of PacketFence, our Open Source NAC. Let us help you integrate Fingerbank to your product!

Contact Us


Usage

Use the free public API. Register and you'll get a free key that you can use to make API calls from your applications. See the API documentation.

Examples

Query using a DHCP fingerprint

Input
curl \
          -X GET \
          -H "Content-Type: application/json" \
          'https://api.fingerbank.org/api/v2/combinations/interrogate?key=YOURFINGERBANKAPIKEY' \
          -d '{"dhcp_fingerprint":"1,33,3,6,12,15,28,51,58,59,119"}'
        
Output
{
          "device": {
            "created_at": "2017-09-18T17:12:14.000Z",
            "id": 33453,
            "name": "Android OS",
            "parent_id": 33452,
            "parents": [
            {
              "created_at": "2017-09-18T17:08:09.000Z",
              "id": 33452,
              "name": "Google OS",
              "parent_id": 16879,
              "updated_at": "2017-09-20T15:46:34.000Z",
              "virtual_parent_id": null
            },
            {
              "created_at": "2017-09-14T18:41:06.000Z",
              "id": 16879,
              "name": "Operating System",
              "parent_id": null,
              "updated_at": "2017-09-18T16:33:18.000Z",
              "virtual_parent_id": null
            }
            ],
            "updated_at": "2017-09-18T17:12:14.000Z",
            "virtual_parent_id": null
          },
          "device_name": "Operating System/Google OS/Android OS",
          "score": 75,
          "version": ""
        }
We get that it is an Android device, with a score of 75.

Query using a DHCP fingerprint and a DHCP vendor

Input
curl \
          -X GET \
          -H "Content-Type: application/json" \
          'https://api.fingerbank.org/api/v2/combinations/interrogate?key=YOURFINGERBANKAPIKEY' \
          -d '{"dhcp_fingerprint":"1,33,3,6,12,15,28,51,58,59,119","dhcp_vendor":"dhcpcd-5.5.6"}'
Output
{
            "device": {
              "created_at": "2017-09-18T17:12:14.000Z",
              "id": 33453,
              "name": "Android OS",
              "parent_id": 33452,
              "parents": [
              {
                "created_at": "2017-09-18T17:08:09.000Z",
                "id": 33452,
                "name": "Google OS",
                "parent_id": 16879,
                "updated_at": "2017-09-20T15:46:34.000Z",
                "virtual_parent_id": null
              },
              {
                "created_at": "2017-09-14T18:41:06.000Z",
                "id": 16879,
                "name": "Operating System",
                "parent_id": null,
                "updated_at": "2017-09-18T16:33:18.000Z",
                "virtual_parent_id": null
              }
              ],
              "updated_at": "2017-09-18T17:12:14.000Z",
              "virtual_parent_id": null
            },
            "device_name": "Operating System/Google OS/Android OS",
            "score": 75,
            "version": "4+"
          }
We now see it's an Android 4+ device, with the same score.

Query using a DHCP fingerprint, a DHCP vendor and a User Agent

Input
curl \
            -X GET \
            -H "Content-Type: application/json" \
            'https://api.fingerbank.org/api/v2/combinations/interrogate?key=YOURFINGERBANKAPIKEY' \
            -d '{"dhcp_fingerprint":"1,33,3,6,12,15,28,51,58,59,119","dhcp_vendor":"dhcpcd-5.5.6","user_agents":["Mozilla/5.0 (Linux; Android 5.0.2; SM-G920F Build/LRX22G; wv) AppleWebK"]}'
Output
{
              "device": {
                "created_at": "2015-04-16T19:41:45.000Z",
                "id": 6368,
                "name": "Galaxy S6",
                "parent_id": 3809,
                "parents": [
                {
                  "created_at": "2014-11-13T12:45:57.000Z",
                  "id": 3809,
                  "name": "Samsung Android",
                  "parent_id": 202,
                  "updated_at": "2015-04-24T03:09:27.000Z",
                  "virtual_parent_id": null
                },
                {
                  "created_at": "2014-09-09T15:09:52.000Z",
                  "id": 202,
                  "name": "Generic Android",
                  "parent_id": 11,
                  "updated_at": "2017-09-20T21:28:38.000Z",
                  "virtual_parent_id": 33453
                },
                {
                  "created_at": "2014-09-09T15:09:50.000Z",
                  "id": 11,
                  "name": "Phone, Tablet or Wearable",
                  "parent_id": null,
                  "updated_at": "2017-09-18T14:58:01.000Z",
                  "virtual_parent_id": null
                }
                ],
                "updated_at": "2015-04-20T06:39:02.000Z",
                "virtual_parent_id": null
              },
              "device_name": "Phone, Tablet or Wearable/Generic Android/Samsung Android/Galaxy S6",
              "score": 81,
              "version": "4+"
            }
Now we've got an exact match with a high score for a Samsung Galaxy S6 phone running Android 4+.

Submitting Fingerprints

When you query the Fingerbank database using the API, if this combination of data is unknown to Fingerbank, it will be automatically added to the Fingerbank database.

Multiple API Keys

Clients that use multiple API keys from the same external IP address will be blocked. Once the key(s) are blocked the client will be unable to change the keys until the block is removed.

In order to resolve this issue, perform the following steps:

  1. Remove the API key from all instances.
  2. Wait for a minimum of 24 hours for the block to be removed.
  3. Provide a single API key for each instance.
  4. If the issue persists, go back to step 1.

Downloads

Github API Key

All the Fingerbank clients will either partially work or not work if you do not provide a valid API key obtained from https://api.fingerbank.org.

JavaScript Client
2.4 KiB

A lightweight Fingerbank client that allows to query the online API for a specific user agent or the current user agent of the browser when executed in that context.
Using bower
bower install fingerbank-client
Using the online version
<script type="text/javascript"
            src="http://inverse.ca/downloads/Fingerbank/fingerbank-client.js"></script>

Ruby client (with Rails support)
48 KiB

This is a light client for Fingerbank which only supports user agent lookup though the public API.
Using gem
gem install fingerbank_client