Skip to content

orleika/hw-fp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

hw-fp (hardware-fingerprinting)

investigate hardware-based web fingerprinting
ハードウェアに依存するFingerprintableな特徴の解析

hero image

Build

App (Hardware Information Report Tool, aka rSMBIOS)

  • Change directory
$ cd app
  • Make config.yml, followed config.yml.sample.
  • Download dmidecode binary into bin directory. See project page.
  • Install dependency packages, and run build. Required Node.js.
$ npm i
$ npm run build

Web (Hardware Fingerprinting Site)

  • Change directory. Install dependency packages. Required Node.js
$ cd web/www/public
$ npm i
  • Change directory. Install dependency packages. Required composer.
$ cd web/www
$ composer install
  • Make .env, followed .env.sample.
  • (Select) If you use Docker, run docker-compose command.
$ cd web
$ docker-compose up -d
  • (Select) If you use build-in Apache and Mysql Database. Enabled FollowSymLinks into apache.conf.
Options FollowSymLinks

Directory Structure

.
├── app
│   ├── config.yml.sample
│   ├── src (redux architecture)
│   │   ├── actions
│   │   │   └── index.js
│   │   ├── index.html
│   │   ├── index.js
│   │   ├── main.js
│   │   ├── reducers
│   │   │   └── index.js
│   │   ├── scss
│   │   │   └── style.scss
│   │   └── tags
│   │       ├── app.tag
│   │       └── message-snackbar.tag
│   └── webpack.config.js
├── README.md
└── web
    ├── docker-compose.yml
    ├── mysql
    │   ├── conf.d (mysql configuration)
    │   │   └── my.cnf
    │   ├── initdb.d (initialize mysql database)
    │   └── log (output mysql log)
    ├── php
    │   ├── conf (php configuration)
    │   │   ├── conf.d
    │   │   │   ├── docker-php-ext-gmp.ini
    │   │   │   ├── docker-php-ext-pdo_mysql.ini
    │   │   │   └── security.ini
    │   │   └── php.ini
    │   ├── Dockerfile
    │   └── log (output php log)
    ├── resources (some resources source)
    │   ├── images
    │   │   └── hero.md
    │   └── wasm (explorer experimental features)
    │       ├── emcc.bat
    │       └── emcc.sh
    └── www
        ├── app (MVC architecture)
        │   ├── Controllers
        │   │   ├── Controller.php (Base controller)
        │   │   ├── HwFpController.php (extends base controller)
        │   │   └── HwInfoController.php (extends base controller)
        │   ├── Models
        │   │   ├── DB.php (Database connection with Mysql)
        │   │   ├── HwFp.php
        │   │   ├── HwInfo.php
        │   │   └── Model.php (Database basic model)
        │   └── Views
        │       ├── 404.phtml
        │       ├── index.phtml
        │       ├── layouts (base layout components)
        │       │   ├── base.phtml
        │       │   ├── footer.phtml
        │       │   └── header.phtml
        │       └── thanks.phtml
        ├── composer.json
        ├── composer.lock
        └── public (open public directory)
            ├── images
            ├── index.php (entry point)
            ├── package.json
            ├── package-lock.json
            ├── scripts
            │   ├── main.js
            │   ├── typedarray.js
            │   └── worker.js
            └── styles
                └── main.css

Web Entity Models

Entities

  • HwFp
  • HwInfo

Relations

  • HwFp --- HwInfo

Web Entry point

GET /

Respond project home page.

Response

  • Status: 200 OK
  • Content-Type: text/html; charset=UTF-8

POST /hwInfo

Recieve rSMBIOS report.

Request

  • Content-Type: application/json
{
  "name": "[Required: reporter name from rSMBIOS]",
  "smbios": "[Required: SMBIOS generated from rSMBIOS]",
  "version": "[Required: rSMBIOS version]"
}

Response

  • Status: 200 OK
  • Content-Type: application/json
{
  "result": "success",
  "token": "[a unique token bound HwInfo.id]"
}

GET /hwFp/:token

Respond hardware fingerprinting page.

Request

token is the same as token in POST /hwInfo response.

Response

  • Status: 200 OK
  • Content-Type: text/html; charset=UTF-8

POST /hwFp

Request
  • Content-Type: application/json
{
  "math": "[Required]",
  "worker": "[Required]",
  "aes": "[Required]",
  "endian": "[Required]",
  "memory": "[Required]",
  "gpu": "[Required]",
  "gpgpu": "[Required]",
  "version": "[Required: Hardware Fingerprinting Site version]",
  "token": "[Required: It's the same as POST /hwInfo response]"
}
Response
  • Status: 200 OK
  • Content-Type: application/json
{
  "result": "success",
  "hwFp": "[<HwFp> entiry by stored post data]"
}

About

[Freeze] Investigate hardware-based web fingerprinting

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published