forked from TomAPU/schemeflood
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
64 lines (59 loc) · 3.63 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<!DOCTYPE html>
<html lang="en">
<head>
<!-- english translation via google, fork of @adeliktasde from https://github.com/TomAPU/schemeflood -->
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<button onclick="startdetection();">一Button to get installed programs</button>
<br>
<textarea rows="30" cols="30" id="notinstall">Not installed (or installed unregisteredscheme):</textarea>
<textarea rows="30" cols="30" id="installed">Installed (or once installed but not cleaned up when uninstalledscheme):</textarea>
<h1>Based on<a href="https://fingerprintjs.com/blog/external-protocol-flooding/">Schemeflood</a>technology to detect installed software</h1>
<h1>It has been tested in a Windows+Chrome90 environment, do not move out of this interface or tap the screen to ensure accurate results</h1>
<h1>Currently, this test does not support Safari, but <a href="https://schemeflood.com/">the demo of the creator of this technology</a> can support</h1>
<h1>The test results will not be uploaded, this page is open source, please rest assured to test</h1>
<!--I really don’t know how to write the front end, so let’s do it-->
</head>
<body>
<script>
function sleep(ms)
{
return new Promise(resolve => setTimeout(resolve, ms));
}
async function startdetection()
{
handler = window.open('about:blank', '', 'width=50,height=50,left=9999,top=9999')
//Thanks @studentmain for adding the fingerprint library of the proxy software
appnames=['Skype', 'Spotify', 'Zoom', 'vscode', 'Epic Games', 'Telegram', 'Discord', 'Slack', 'Steam', 'Battle.net', 'Xcode', 'NordVPN', 'Sketch', 'Teamviewer', 'Microsoft Word', 'WhatsApp', 'Postman', 'Adobe', 'Messenger', 'Figma', 'Hotspot Shield', 'ExpressVPN', 'Notion', 'iTunes','Tim','百度网盘','BinaryNinja','evernote','github desktop','onenote','QQ','腾讯会议','xmind','Vmware','360软件管家','acrobat','QQ游戏','shadowsocks','shadowsocksr','v2ray','trojan','naiveproxy','brook','V2rayU']
schemes=['skype', 'spotify', 'zoommtg', 'vscode', 'com.epicgames.launcher', 'tg', 'discord', 'slack', 'steam', 'battlenet', 'xcode', 'nordvpn', 'sketch', 'teamviewerapi', 'word', 'whatsapp', 'postman', 'aem-asset', 'messenger', 'figma', 'hotspotshield', 'expressvpn', 'notion', 'itunes','Tencent','Baiduyunguanjia','BinaryNinja','evernote','github-windows','onenote','QQ','wwauth3rd3a82ac41e00d815d','xmind','vm','softmanager360','acrobat','QQGameProtocol','ss','ssr','vmess','trojan','naive+https','brook','clash']
for(var i=0;i<appnames.length;i++)
{
appname=appnames[i];
scheme=schemes[i];
let isDetected=true;
await sleep(125)
input = document.createElement('input')
input.style.opacity = '0'
input.style.position = 'absolute'
input.onfocus = () => { isDetected = false }
await sleep(125)
handler.document.body.appendChild(input);
handler.location.replace(scheme+"://Message")
await sleep(125)
input.focus()
await sleep(125)
input.remove()
if(isDetected)
output=document.getElementById('installed')
else
output=document.getElementById('notinstall')
output.value+='\n'+appname
handler.location.replace("about:blank")
}
handler.close()
}
</script>
</body>
</html>