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.

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 either in the local SQLite database or though the public API.
Using gem
gem install fingerbank_client