From 949d12789cc617540a06a90bac0befb52a09ab7b Mon Sep 17 00:00:00 2001 From: Nemo Date: Fri, 16 Jul 2021 19:45:02 +0530 Subject: [PATCH] Find a list of files worth hashing Based on https://github.com/captn3m0/electron-fingerprints/#which-files-are-present --- finder.js | 21 +++++ tests/finder.js | 210 +++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 230 insertions(+), 1 deletion(-) diff --git a/finder.js b/finder.js index 297727f..b522c42 100644 --- a/finder.js +++ b/finder.js @@ -47,4 +47,25 @@ module.exports = { }) .map((e) => e.file); }, + + // Return a list of files that might be worth fingerprinting + fingerprintable: function(entries) { + return entries.filter((e) =>{ + if (isDirectory(e.attributes)) { + return false; + } + let ext = path.extname(e.file); + if (['.h', '.dll', '.bin', '.asar', '.dylib', '.so', '.exe'].indexOf(ext) !== -1) { + return true + } + let b = path.basename(e.file); + + if (['electron framework', 'squirrel', 'electron', 'electron helper', 'chrome_100_percent', 'chrome_200_percent'].indexOf(b)!== -1) { + return true; + } + + return false; + }) + .map((e)=>e.file) + } }; diff --git a/tests/finder.js b/tests/finder.js index 6b61b91..1d821e2 100644 --- a/tests/finder.js +++ b/tests/finder.js @@ -1,7 +1,7 @@ const test = require("kuta").test; const finder = require("../finder"); const assert = require("assert"); -const _ = require('./utils') +const _ = require("./utils"); test("it should find the electron.asar file", () => { assert.deepEqual( @@ -42,3 +42,211 @@ test("it should find the version file", () => { finder.version(_.getEntries("Arizona-v1.0.0-beta-Windows.zip")) ); }); + +test("it should find fingerprinteable files", () => { + assert.deepEqual( + [ + "Arizona v.1.0.0/Arizona.exe", + "Arizona v.1.0.0/d3dcompiler_47.dll", + "Arizona v.1.0.0/ffmpeg.dll", + "Arizona v.1.0.0/libEGL.dll", + "Arizona v.1.0.0/libGLESv2.dll", + "Arizona v.1.0.0/resources/app/node_modules/.bin/electron", + "Arizona v.1.0.0/resources/app/node_modules/electron/dist/d3dcompiler_47.dll", + "Arizona v.1.0.0/resources/app/node_modules/electron/dist/electron.exe", + "Arizona v.1.0.0/resources/app/node_modules/electron/dist/ffmpeg.dll", + "Arizona v.1.0.0/resources/app/node_modules/electron/dist/libEGL.dll", + "Arizona v.1.0.0/resources/app/node_modules/electron/dist/libGLESv2.dll", + "Arizona v.1.0.0/resources/app/node_modules/electron/dist/resources/default_app.asar", + "Arizona v.1.0.0/resources/app/node_modules/electron/dist/snapshot_blob.bin", + "Arizona v.1.0.0/resources/app/node_modules/electron/dist/swiftshader/libEGL.dll", + "Arizona v.1.0.0/resources/app/node_modules/electron/dist/swiftshader/libGLESv2.dll", + "Arizona v.1.0.0/resources/app/node_modules/electron/dist/v8_context_snapshot.bin", + "Arizona v.1.0.0/resources/app/node_modules/electron/dist/vk_swiftshader.dll", + "Arizona v.1.0.0/resources/app/node_modules/electron/dist/vulkan-1.dll", + "Arizona v.1.0.0/resources/app/node_modules/rcedit/bin/rcedit.exe", + "Arizona v.1.0.0/resources/app/node_modules/rcedit/bin/rcedit-x64.exe", + "Arizona v.1.0.0/resources/default_app.asar", + "Arizona v.1.0.0/snapshot_blob.bin", + "Arizona v.1.0.0/swiftshader/libEGL.dll", + "Arizona v.1.0.0/swiftshader/libGLESv2.dll", + "Arizona v.1.0.0/v8_context_snapshot.bin", + "Arizona v.1.0.0/vk_swiftshader.dll", + "Arizona v.1.0.0/vulkan-1.dll", + ], + finder.fingerprintable(_.getEntries("Arizona-v1.0.0-beta-Windows.zip")) + ); + assert.deepEqual( + [ + "Lax-win32-x64/v8_context_snapshot.bin", + "Lax-win32-x64/d3dcompiler_47.dll", + "Lax-win32-x64/vk_swiftshader.dll", + "Lax-win32-x64/ffmpeg.dll", + "Lax-win32-x64/Lax.exe", + "Lax-win32-x64/snapshot_blob.bin", + "Lax-win32-x64/libEGL.dll", + "Lax-win32-x64/libGLESv2.dll", + "Lax-win32-x64/swiftshader/libEGL.dll", + "Lax-win32-x64/swiftshader/libGLESv2.dll", + ], + finder.fingerprintable(_.getEntries("Lax-win32-x64.zip")) + ); + + assert.deepEqual( + [ + "resources/app.asar", + "swiftshader/libvk_swiftshader.so", + "libGLESv2.so", + "swiftshader/libGLESv2.so", + "libffmpeg.so", + "v8_context_snapshot.bin", + "snapshot_blob.bin", + "swiftshader/libEGL.so", + "libEGL.so", + "natives_blob.bin", + ], + finder.fingerprintable(_.getEntries("Rambox-0.7.7-linux-x64.zip")) + ); + + assert.deepEqual( + [ + "chronobreak-linux-x64/libEGL.so", + "chronobreak-linux-x64/libffmpeg.so", + "chronobreak-linux-x64/libGLESv2.so", + "chronobreak-linux-x64/libvk_swiftshader.so", + "chronobreak-linux-x64/libvulkan.so", + "chronobreak-linux-x64/resources/app.asar", + "chronobreak-linux-x64/snapshot_blob.bin", + "chronobreak-linux-x64/swiftshader/libEGL.so", + "chronobreak-linux-x64/swiftshader/libGLESv2.so", + "chronobreak-linux-x64/v8_context_snapshot.bin", + ], + finder.fingerprintable(_.getEntries("chronobreak-linux-x64.zip")) + ); + + assert.deepEqual( + [ + "Hyper.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libnode.dylib", + "Hyper.app/Contents/Resources/app.asar", + "Hyper.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libffmpeg.dylib", + "Hyper.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/v8_context_snapshot.bin", + "Hyper.app/Contents/Resources/electron.asar", + "Hyper.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/natives_blob.bin", + "Hyper.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACSignal+Operations.h", + "Hyper.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/metamacros.h", + "Hyper.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACStream.h", + "Hyper.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACSignal.h", + "Hyper.app/Contents/Frameworks/Mantle.framework/Versions/A/Headers/MTLManagedObjectAdapter.h", + "Hyper.app/Contents/Frameworks/Squirrel.framework/Versions/A/Headers/SQRLUpdater.h", + "Hyper.app/Contents/Frameworks/Mantle.framework/Versions/A/Headers/MTLJSONAdapter.h", + "Hyper.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACScheduler.h", + "Hyper.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACSequence.h", + "Hyper.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACTuple.h", + "Hyper.app/Contents/Frameworks/Mantle.framework/Versions/A/Headers/MTLModel.h", + "Hyper.app/Contents/Frameworks/Mantle.framework/Versions/A/Headers/MTLModel+NSCoding.h", + "Hyper.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACCommand.h", + "Hyper.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSObject+RACPropertySubscribing.h", + "Hyper.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACKVOChannel.h", + "Hyper.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/EXTScope.h", + "Hyper.app/Contents/Frameworks/Mantle.framework/Versions/A/Headers/NSValueTransformer+MTLPredefinedTransformerAdditions.h", + "Hyper.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/ReactiveCocoa.h", + "Hyper.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSObject+RACSelectorSignal.h", + "Hyper.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACBacktrace.h", + "Hyper.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACChannel.h", + "Hyper.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSObject+RACLifting.h", + "Hyper.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/EXTKeyPathCoding.h", + "Hyper.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACSubscriptingAssignmentTrampoline.h", + "Hyper.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACMulticastConnection.h", + "Hyper.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSObject+RACAppKitBindings.h", + "Hyper.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACCompoundDisposable.h", + "Hyper.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACSubscriber.h", + "Hyper.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACSerialDisposable.h", + "Hyper.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACEvent.h", + "Hyper.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACTestScheduler.h", + "Hyper.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACQueueScheduler+Subclass.h", + "Hyper.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSDictionary+RACSequenceAdditions.h", + "Hyper.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSObject+RACDeallocating.h", + "Hyper.app/Contents/Frameworks/Mantle.framework/Versions/A/Headers/MTLValueTransformer.h", + "Hyper.app/Contents/Frameworks/Squirrel.framework/Versions/A/Headers/SQRLUpdate.h", + "Hyper.app/Contents/Frameworks/Squirrel.framework/Versions/A/Headers/SQRLDownloadedUpdate.h", + "Hyper.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACDisposable.h", + "Hyper.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACScheduler+Subclass.h", + "Hyper.app/Contents/Frameworks/Mantle.framework/Versions/A/Headers/NSArray+MTLManipulationAdditions.h", + "Hyper.app/Contents/Frameworks/Mantle.framework/Versions/A/Headers/Mantle.h", + "Hyper.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSUserDefaults+RACSupport.h", + "Hyper.app/Contents/Frameworks/Mantle.framework/Versions/A/Headers/NSDictionary+MTLManipulationAdditions.h", + "Hyper.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSURLConnection+RACSupport.h", + "Hyper.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACTargetQueueScheduler.h", + "Hyper.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACReplaySubject.h", + "Hyper.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSString+RACSupport.h", + "Hyper.app/Contents/Frameworks/Squirrel.framework/Versions/A/Headers/Squirrel.h", + "Hyper.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSControl+RACTextSignalSupport.h", + "Hyper.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSControl+RACCommandSupport.h", + "Hyper.app/Contents/Frameworks/Squirrel.framework/Versions/A/Headers/NSBundle+SQRLVersionExtensions.h", + "Hyper.app/Contents/Frameworks/Mantle.framework/Versions/A/Headers/NSValueTransformer+MTLInversionAdditions.h", + "Hyper.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACSubject.h", + "Hyper.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSString+RACSequenceAdditions.h", + "Hyper.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSData+RACSupport.h", + "Hyper.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSIndexSet+RACSequenceAdditions.h", + "Hyper.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACQueueScheduler.h", + "Hyper.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACBehaviorSubject.h", + "Hyper.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSOrderedSet+RACSequenceAdditions.h", + "Hyper.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSArray+RACSequenceAdditions.h", + "Hyper.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACScopedDisposable.h", + "Hyper.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSSet+RACSequenceAdditions.h", + "Hyper.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSEnumerator+RACSequenceAdditions.h", + "Hyper.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACGroupedSignal.h", + "Hyper.app/Contents/Frameworks/Squirrel.framework/Versions/A/Headers/NSProcessInfo+SQRLVersionExtensions.h", + "Hyper.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSNotificationCenter+RACSupport.h", + "Hyper.app/Contents/Frameworks/Mantle.framework/Versions/A/Headers/NSObject+MTLComparisonAdditions.h", + "Hyper.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSText+RACSignalSupport.h", + "Hyper.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACUnit.h", + "Hyper.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSFileHandle+RACSupport.h", + ], + finder.fingerprintable(_.getEntries("Hyper-3.0.2-mac.zip")) + ); + + assert.deepEqual( + [ + "Notable.exe", + "libGLESv2.dll", + "resources/app.asar", + "d3dcompiler_47.dll", + "swiftshader/libGLESv2.dll", + "ffmpeg.dll", + "v8_context_snapshot.bin", + "swiftshader/libEGL.dll", + "snapshot_blob.bin", + "libEGL.dll", + "natives_blob.bin", + ], + finder.fingerprintable(_.getEntries("Notable-1.8.4-win.zip")) + ); + + assert.deepEqual( + [ + "release-builds/encrypt0r-darwin-x64/encrypt0r.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libGLESv2.dylib", + "release-builds/encrypt0r-darwin-x64/encrypt0r.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libswiftshader_libGLESv2.dylib", + "release-builds/encrypt0r-darwin-x64/encrypt0r.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libffmpeg.dylib", + "release-builds/encrypt0r-darwin-x64/encrypt0r.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libEGL.dylib", + "release-builds/encrypt0r-darwin-x64/encrypt0r.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libvk_swiftshader.dylib", + "release-builds/encrypt0r-darwin-x64/encrypt0r.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libswiftshader_libEGL.dylib", + "release-builds/encrypt0r-darwin-x64/encrypt0r.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/v8_context_snapshot.x86_64.bin", + "release-builds/encrypt0r-darwin-x64/encrypt0r.app/Contents/Frameworks/Electron Framework.framework/Versions/Current/Libraries/libGLESv2.dylib", + "release-builds/encrypt0r-darwin-x64/encrypt0r.app/Contents/Frameworks/Electron Framework.framework/Versions/Current/Libraries/libswiftshader_libGLESv2.dylib", + "release-builds/encrypt0r-darwin-x64/encrypt0r.app/Contents/Frameworks/Electron Framework.framework/Versions/Current/Libraries/libffmpeg.dylib", + "release-builds/encrypt0r-darwin-x64/encrypt0r.app/Contents/Frameworks/Electron Framework.framework/Versions/Current/Libraries/libEGL.dylib", + "release-builds/encrypt0r-darwin-x64/encrypt0r.app/Contents/Frameworks/Electron Framework.framework/Versions/Current/Libraries/libvk_swiftshader.dylib", + "release-builds/encrypt0r-darwin-x64/encrypt0r.app/Contents/Frameworks/Electron Framework.framework/Versions/Current/Libraries/libswiftshader_libEGL.dylib", + "release-builds/encrypt0r-darwin-x64/encrypt0r.app/Contents/Frameworks/Electron Framework.framework/Versions/Current/Resources/v8_context_snapshot.x86_64.bin", + "release-builds/encrypt0r-darwin-x64/encrypt0r.app/Contents/Frameworks/Electron Framework.framework/Libraries/libGLESv2.dylib", + "release-builds/encrypt0r-darwin-x64/encrypt0r.app/Contents/Frameworks/Electron Framework.framework/Libraries/libswiftshader_libGLESv2.dylib", + "release-builds/encrypt0r-darwin-x64/encrypt0r.app/Contents/Frameworks/Electron Framework.framework/Libraries/libffmpeg.dylib", + "release-builds/encrypt0r-darwin-x64/encrypt0r.app/Contents/Frameworks/Electron Framework.framework/Libraries/libEGL.dylib", + "release-builds/encrypt0r-darwin-x64/encrypt0r.app/Contents/Frameworks/Electron Framework.framework/Libraries/libvk_swiftshader.dylib", + "release-builds/encrypt0r-darwin-x64/encrypt0r.app/Contents/Frameworks/Electron Framework.framework/Libraries/libswiftshader_libEGL.dylib", + "release-builds/encrypt0r-darwin-x64/encrypt0r.app/Contents/Frameworks/Electron Framework.framework/Resources/v8_context_snapshot.x86_64.bin", + ], + finder.fingerprintable(_.getEntries("encrypt0r-mac.zip")) + ); +});