investigate hardware-based web fingerprinting
ハードウェアに依存するFingerprintableな特徴の解析
- Change directory
$ cd app
- Make
config.yml
, followedconfig.yml.sample
. - Download
dmidecode
binary intobin
directory. See project page. - Install dependency packages, and run build. Required Node.js.
$ npm i
$ npm run build
- 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
intoapache.conf
.
Options FollowSymLinks
.
├── 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
HwFp
HwInfo
HwFp
---HwInfo
Respond project home page.
- Status: 200 OK
- Content-Type: text/html; charset=UTF-8
Recieve rSMBIOS report.
- Content-Type: application/json
{
"name": "[Required: reporter name from rSMBIOS]",
"smbios": "[Required: SMBIOS generated from rSMBIOS]",
"version": "[Required: rSMBIOS version]"
}
- Status: 200 OK
- Content-Type: application/json
{
"result": "success",
"token": "[a unique token bound HwInfo.id]"
}
Respond hardware fingerprinting page.
token
is the same as token
in POST /hwInfo response.
- Status: 200 OK
- Content-Type: text/html; charset=UTF-8
- 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]"
}
- Status: 200 OK
- Content-Type: application/json
{
"result": "success",
"hwFp": "[<HwFp> entiry by stored post data]"
}