diff --git a/src/apps.json b/src/apps.json index 2efa81847..4ce9d9b80 100644 --- a/src/apps.json +++ b/src/apps.json @@ -644,7 +644,7 @@ 22 ], "headers": { - "Server": "(?:Apache(?:$|/([\\d.]+)|[^/-])|(?:^|\\b)HTTPD)\\;version:\\1" + "Server": "(?:Apache(?:$|/([\\d.]+)|[^/-])|(?:^|\b)HTTPD)\\;version:\\1" }, "icon": "Apache.svg", "website": "http://apache.org" @@ -683,7 +683,7 @@ ], "headers": { "Server": "^Apache-Coyote(/1\\.1)?$\\;version:\\1?4.1+:", - "X-Powered-By": "\\bTomcat\\b(?:-([\\d.]+))?\\;version:\\1" + "X-Powered-By": "\bTomcat\b(?:-([\\d.]+))?\\;version:\\1" }, "icon": "Apache Tomcat.svg", "implies": "Java", @@ -1033,31 +1033,31 @@ ], "website": "http://www.ozerov.de/bigdump.php" }, - "Ant Design": { - "cats": [ - 12 - ], - "implies": [ - "React" - ], - "icon": "Ant Design.svg", - "env": "^antd$", - "html": [ - "<(?:div|button) class=\"ant-(?:btn|col|row|layout|breadcrumb|menu|pagination|steps|select|cascader|checkbox|calendar|form|input-number|input|mention|rate|radio|slider|switch|tree-select|time-picker|transfer|upload|avatar|badge|card|carousel|collapse|list|popover|tooltip|table|tabs|tag|timeline|tree|alert|modal|message|notification|progress|popconfirm|spin|anchor|back-top|divider)", - ")Copyright\\(C\\) [\\d-]+ Brother Industries", - "\\n\\s*BROTHER " + "<TITLE>\n\\s*BROTHER " ], "icon": "Brother.png", "website": "http://www.brother.com" @@ -1289,12 +1289,12 @@ 13 ], "html": [ - "href=\"enter_bug\\.cgi\">", - "<main id=\"bugzilla-body\"" - ], - "meta": { - "generator":"Bugzilla ?([\\d.]+)?\\;version:\\1" - }, + "href=\"enter_bug\\.cgi\">", + "<main id=\"bugzilla-body\"" + ], + "meta": { + "generator": "Bugzilla ?([\\d.]+)?\\;version:\\1" + }, "js": { "BUGZILLA": "" }, @@ -2035,7 +2035,7 @@ ], "headers": { "Set-Cookie": "^CraftSessionId=", - "X-Powered-By": "\\bCraft CMS\\b" + "X-Powered-By": "\bCraft CMS\b" }, "icon": "Craft CMS.svg", "implies": "Yii", @@ -3183,7 +3183,7 @@ "FTB_API": "", "FTB_AddEvent": "" }, - "html": "/<!--\\s*\\*\\s*FreeTextBox v\\d+ \\(([.\\d]+)(?:(?:.|\\n)+?<!--\\s*\\*\\s*License Type: (Distribution|Professional)License)?/i\\;version:\\1 \\2", + "html": "/<!--\\s*\\*\\s*FreeTextBox v\\d+ \\(([.\\d]+)(?:(?:.|\n)+?<!--\\s*\\*\\s*License Type: (Distribution|Professional)License)?/i\\;version:\\1 \\2", "icon": "FreeTextBox.png", "implies": "Microsoft ASP.NET", "website": "http://freetextbox.com" @@ -3506,7 +3506,7 @@ "Set-Cookie": "i_like_gogits=" }, "html": [ - "<div class=\"ui left\">\\n\\s+© \\d{4} Gogs Version: ([\\d.]+) Page:\\;version:\\1", + "<div class=\"ui left\">\n\\s+© \\d{4} Gogs Version: ([\\d.]+) Page:\\;version:\\1", "<button class=\"ui basic clone button\" id=\"repo-clone-ssh\" data-link=\"gogs@" ], "icon": "gogs.png", @@ -3878,7 +3878,7 @@ 22 ], "headers": { - "Server": "(?:^|[^-])\\bHTTP-Server(?: ?/?V?([\\d.]+))?\\;version:\\1" + "Server": "(?:^|[^-])\bHTTP-Server(?: ?/?V?([\\d.]+))?\\;version:\\1" }, "website": "http://example.com" }, @@ -5383,7 +5383,7 @@ 27 ], "headers": { - "X-Powered-By": "\\bLua(?: ([\\d.]+))?\\;version:\\1" + "X-Powered-By": "\bLua(?: ([\\d.]+))?\\;version:\\1" }, "icon": "Lua.png", "website": "http://www.lua.org" @@ -5896,7 +5896,7 @@ "cats": [ 2 ], - "html": "<a href=\"[^\"]+minibb[^<]+</a>[^<]+\\n<!--End of copyright link", + "html": "<a href=\"[^\"]+minibb[^<]+</a>[^<]+\n<!--End of copyright link", "icon": "MiniBB.png", "website": "http://www.minibb.com" }, @@ -6640,7 +6640,7 @@ 50 ], "headers": { - "Set-Cookie": "\\bOJSSID\\b" + "Set-Cookie": "\bOJSSID\b" }, "icon": "Open Journal Systems.png", "implies": "PHP", @@ -7074,6 +7074,16 @@ "icon": "Braintree.svg", "website": "https://www.braintreepayments.com" }, + "Adyen": { + "cats": [ + 41 + ], + "js": { + "adyen.encrypt.version": "(.*)\\;version:\\1\\;confidence:50" + }, + "icon": "Adyen.svg", + "website": "https://www.adyen.com" + }, "PayPal": { "cats": [ 41 @@ -7136,7 +7146,7 @@ 27 ], "headers": { - "Server": "\\bPerl\\b(?: ?/?v?([\\d.]+))?\\;version:\\1" + "Server": "\bPerl\b(?: ?/?v?([\\d.]+))?\\;version:\\1" }, "icon": "Perl.png", "website": "http://perl.org" @@ -8540,7 +8550,7 @@ ], "js": { "shopfa": "" - }, + }, "meta": { "generator": "^ShopFA ([\\d.]+)$\\;version:\\1" }, @@ -10324,7 +10334,7 @@ "webix": "" }, "icon": "Webix.png", - "script": "\\bwebix\\.js", + "script": "\bwebix\\.js", "website": "http://webix.com" }, "Webs": { @@ -10446,7 +10456,7 @@ 28 ], "headers": { - "Server": "\\bWinCE\\b" + "Server": "\bWinCE\b" }, "icon": "Microsoft.svg", "website": "http://microsoft.com" @@ -11154,7 +11164,7 @@ 22 ], "headers": { - "Server": "\\beHTTP(?: v?([\\d\\.]+))?\\;version:\\1" + "Server": "\beHTTP(?: v?([\\d\\.]+))?\\;version:\\1" }, "implies": "HP ProCurve", "website": "http://example.com" @@ -11211,7 +11221,7 @@ ], "icon": "git.svg", "meta": { - "generator": "\\bgit/([\\d.]+\\d)\\;version:\\1" + "generator": "\bgit/([\\d.]+\\d)\\;version:\\1" }, "website": "http://git-scm.com" }, @@ -11487,7 +11497,7 @@ 33 ], "headers": { - "Server": "\\b(?:mod_)?DAV\\b(?:/([\\d.]+))?\\;version:\\1" + "Server": "\b(?:mod_)?DAV\b(?:/([\\d.]+))?\\;version:\\1" }, "icon": "Apache.svg", "implies": "Apache", @@ -11715,7 +11725,7 @@ "headers": { "Set-Cookie": "^phpbb" }, - "html": "(?:Powered by <a[^>]+phpbb|<a[^>]+phpbb[^>]+class=\\.copyright|\\tphpBB style name|<[^>]+styles/(?:sub|pro)silver/theme|<img[^>]+i_icon_mini|<table class=\"forumline)", + "html": "(?:Powered by <a[^>]+phpbb|<a[^>]+phpbb[^>]+class=\\.copyright|\tphpBB style name|<[^>]+styles/(?:sub|pro)silver/theme|<img[^>]+i_icon_mini|<table class=\"forumline)", "icon": "phpBB.png", "implies": "PHP", "meta": { @@ -11912,7 +11922,7 @@ 22 ], "headers": { - "Server": "\\bthttpd(?:/([\\d.]+))?\\;version:\\1" + "Server": "\bthttpd(?:/([\\d.]+))?\\;version:\\1" }, "icon": "thttpd.png", "website": "http://acme.com/software/thttpd" diff --git a/src/drivers/webextension/css/popup.css b/src/drivers/webextension/css/popup.css index f3450fb5d..83725397b 100644 --- a/src/drivers/webextension/css/popup.css +++ b/src/drivers/webextension/css/popup.css @@ -91,6 +91,7 @@ body { } .detected__app { + color: #4a4a4a; display: block; line-height: 1.7rem; text-decoration: none; @@ -110,13 +111,28 @@ body { } .detected__app-name { - color: #4a4a4a; +} + +.detected__app-version, .detected__app-confidence { + background: #eee; + border-radius: 3px; + font-size: .7rem; + margin-left: .3rem; + padding: .1rem .2rem; } .detected__app:hover .detected__app-name { border-bottom: 1px solid #4a4a4a; } +.detected__app:hover .detected__app-version { + border-bottom: 1px solid white; +} + +.detected__app:hover .detected__app-confidence { + border-bottom: 1px solid white; +} + .detected-app { padding: 7px 0; } diff --git a/src/drivers/webextension/js/driver.js b/src/drivers/webextension/js/driver.js index d58b05a12..4c36f9729 100644 --- a/src/drivers/webextension/js/driver.js +++ b/src/drivers/webextension/js/driver.js @@ -80,6 +80,8 @@ fetch('../apps.json') wappalyzer.apps = json.apps; wappalyzer.categories = json.categories; + wappalyzer.parseJsPatterns(); + categoryOrder = Object.keys(wappalyzer.categories) .map(categoryId => parseInt(categoryId, 10)) .sort((a, b) => wappalyzer.categories[a].priority - wappalyzer.categories[b].priority); diff --git a/src/drivers/webextension/js/inject.js b/src/drivers/webextension/js/inject.js index 26fc00de6..e496e1bd8 100644 --- a/src/drivers/webextension/js/inject.js +++ b/src/drivers/webextension/js/inject.js @@ -1,6 +1,7 @@ (function() { try { addEventListener('message', (event => { + console.log({ event }); if ( event.data.id !== 'patterns' ) { return; } diff --git a/src/drivers/webextension/js/popup.js b/src/drivers/webextension/js/popup.js index 148abb2ca..47d507bf1 100644 --- a/src/drivers/webextension/js/popup.js +++ b/src/drivers/webextension/js/popup.js @@ -112,8 +112,18 @@ function appsToDomTemplate(response) { 'span', { class: 'detected__app-name' }, - appName + ( version ? ' ' + version : '' ) + ( confidence < 100 ? ' (' + confidence + '% sure)' : '' ) - ] + appName, + ], version ? [ + 'span', { + class: 'detected__app-version' + }, + version + ] : null, confidence < 100 ? [ + 'span', { + class: 'detected__app-confidence' + }, + confidence + '% sure' + ] : null ] ); } diff --git a/src/icons/Adyen.svg b/src/icons/Adyen.svg new file mode 100644 index 000000000..96d26b546 --- /dev/null +++ b/src/icons/Adyen.svg @@ -0,0 +1,9 @@ +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="" xml:space="preserve" width="18" height="18"><rect id="backgroundrect" width="100%" height="100%" x="0" y="0" fill="none" stroke="none"/> + +<style type="text/css"> +.st0{fill:#35B454;} +</style> + + +<path class="st0" d="M14.300000190734863,0 H0.30000001192092896 V4.5 l9.199999809265137,0 c0.6000000238418579,0 1,0.5 1,1 v7.900000095367432 h-2 c-0.6000000238418579,0 -1,-0.5 -1,-1 v-5.699999809265137 H3.5999999046325684 c-2,0 -3.5999999046325684,1.600000023841858 -3.5999999046325684,3.5999999046325684 v4 c0,2 1.600000023841858,3.5999999046325684 3.5999999046325684,3.5999999046325684 h14.300000190734863 V3.6000003814697266 C17.899999618530273,1.6000003814697266 16.299999237060547,0 14.300000190734863,0 z" id="svg_2"/> +</svg>