Generates fingerprints for electron version detection by downloading electron releases and generating checksums of the files contained in each release.
Go to file
Nemo 54f9dd1127 Move to multiple smaller lookup tables
Also adds tests
And editorconfig for formatting
2021-07-18 17:07:14 +05:30
.github/workflows Move to multiple smaller lookup tables 2021-07-18 17:07:14 +05:30
hashes Add ARM64 hashes 2021-07-18 17:05:23 +05:30
.editorconfig Move to multiple smaller lookup tables 2021-07-18 17:07:14 +05:30
.npmignore Move to multiple smaller lookup tables 2021-07-18 17:07:14 +05:30
HACKING.md Additional code and docs 2021-07-16 00:10:24 +05:30
LICENSE Initial commit 💥 2021-07-15 23:50:42 +05:30
README.md Move to multiple smaller lookup tables 2021-07-18 17:07:14 +05:30
darwin-arm64.json Add new lookup tables 2021-07-18 17:05:37 +05:30
darwin-x64.json Add new lookup tables 2021-07-18 17:05:37 +05:30
fingerprint.php Move to multiple smaller lookup tables 2021-07-18 17:07:14 +05:30
index.js Move to multiple smaller lookup tables 2021-07-18 17:07:14 +05:30
linux-arm64.json Add new lookup tables 2021-07-18 17:05:37 +05:30
linux-x64.json Add new lookup tables 2021-07-18 17:05:37 +05:30
lookup-table.php Move to multiple smaller lookup tables 2021-07-18 17:07:14 +05:30
package.json Add new lookup tables 2021-07-18 17:05:37 +05:30
test.js Move to multiple smaller lookup tables 2021-07-18 17:07:14 +05:30
versions.txt Initial commit 💥 2021-07-15 23:50:42 +05:30
win32-arm64.json Add new lookup tables 2021-07-18 17:05:37 +05:30
win32-x64.json Add new lookup tables 2021-07-18 17:05:37 +05:30

README.md

electron-fingerprints npm bundle size npm NPM Zero Dependencies

Generates fingerprints for electron version detection by downloading electron releases and generating checksums (sha1 hashes) of the files contained in each release. Published as a lookup table on NPM.

why

You can use this to guess which electron version is being used in a given application. A given electron version is (almost always) tightly bound to a node and chrome release as well, so you get a better sense of what the application is running.

Written as the backend for which-electon.

install

npm install electron-fingerprints

usage

This is just the raw data files, see which-electron for a usable package. The lookup.json file is published as the electron-fingerprints package on NPM. Programmatic usage is still possible:

const lookup = require('electron-fingerprints')
// baf786083f482c1f035e50e105b5f7475af1e00b = sha1(ffmpeg.dll)
lookup['win32-x64']['baf786083f482c1f035e50e105b5f7475af1e00b']
// ["v1.4.3", "v1.4.4", "v1.4.5"]

You can sort or filter the returned versions if needed.

supported releases

All Stable electron releases for the following architectures are fingerprinted:

  • linux-x64
  • linux-arm64
  • darwin-x64 (Mac OS)
  • win32-x64 (Windows)
  • win32-arm64 (Windows)
  • darwin-arm64 (Apple Silicon)

A list of release fingerprints is under the hashes directory.

which files are present?

Here's a count of the most common extensions present across all releases:

   1620 dat
   1620 version
   1650 LICENSE
   1744 Current
   1744 Resources
   1762 so
   1830 html
   1844 PkgInfo
   1944 modulemap
   2202 dylib
   2354 js
   2437 asar
   3237 bin
   4272 Helper
   6142 plist
   6224 dll
  34235 Electron
  45360 h
  84596 pak

.pak files are currently excluded from the lookup table, but the other files should be easily usable. While lookup up, try to get hashes from the following extensions:

.h
.dll
.plust
.Helper
.bin
.asar
.dylib
.so
.plist
Electron Framework
Electron Helper
Electron Helper (GPU)
Electron Helper (Plugin)
Electron Helper (Renderer)
electron
(GPU)
(Plugin)
(Renderer)

which-electron uses the following extensions and filenames to fingerprint:

  • .h, .dll, .bin, .asar, .dylib, .so, .exe
  • electron framework, squirrel, electron, electron helper, chrome_100_percent, chrome_200_percent

license

Released under WTFPL.