From 40ea05385cc12b425f2e773371f055906b8a7f0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josef=20Fr=C3=B6hle?= Date: Thu, 25 Jun 2020 15:12:51 +0200 Subject: [PATCH] first commit --- .../_locales/en/messages.json | 10 + hw_datacollector - Kopie/background.js | 74 ++++ hw_datacollector - Kopie/hero_off.png | Bin 0 -> 14167 bytes hw_datacollector - Kopie/hero_on.png | Bin 0 -> 18683 bytes hw_datacollector - Kopie/injected.js | 388 ++++++++++++++++++ hw_datacollector - Kopie/injector.js | 6 + hw_datacollector - Kopie/manifest copy.json | 47 +++ hw_datacollector - Kopie/manifest.json | 37 ++ hw_datacollector.crx | Bin 0 -> 38048 bytes hw_datacollector.pem | 28 ++ hw_datacollector/_locales/en/messages.json | 10 + hw_datacollector/bg.js | 27 ++ hw_datacollector/hero_off.png | Bin 0 -> 14167 bytes hw_datacollector/hero_on.png | Bin 0 -> 18683 bytes hw_datacollector/injected.js | 388 ++++++++++++++++++ hw_datacollector/injector.js | 6 + hw_datacollector/manifest.json | 43 ++ 17 files changed, 1064 insertions(+) create mode 100644 hw_datacollector - Kopie/_locales/en/messages.json create mode 100644 hw_datacollector - Kopie/background.js create mode 100644 hw_datacollector - Kopie/hero_off.png create mode 100644 hw_datacollector - Kopie/hero_on.png create mode 100644 hw_datacollector - Kopie/injected.js create mode 100644 hw_datacollector - Kopie/injector.js create mode 100644 hw_datacollector - Kopie/manifest copy.json create mode 100644 hw_datacollector - Kopie/manifest.json create mode 100644 hw_datacollector.crx create mode 100644 hw_datacollector.pem create mode 100644 hw_datacollector/_locales/en/messages.json create mode 100644 hw_datacollector/bg.js create mode 100644 hw_datacollector/hero_off.png create mode 100644 hw_datacollector/hero_on.png create mode 100644 hw_datacollector/injected.js create mode 100644 hw_datacollector/injector.js create mode 100644 hw_datacollector/manifest.json diff --git a/hw_datacollector - Kopie/_locales/en/messages.json b/hw_datacollector - Kopie/_locales/en/messages.json new file mode 100644 index 0000000..16a4bd2 --- /dev/null +++ b/hw_datacollector - Kopie/_locales/en/messages.json @@ -0,0 +1,10 @@ +{ + "appName": { + "message": "HW Sniffer", + "description": "The title of the application, displayed in the web store." + }, + "appDesc": { + "message": "Make HW Tools better, and share your data with us.", + "description":"The description of the application, displayed in the web store." + } + } \ No newline at end of file diff --git a/hw_datacollector - Kopie/background.js b/hw_datacollector - Kopie/background.js new file mode 100644 index 0000000..fb53fa4 --- /dev/null +++ b/hw_datacollector - Kopie/background.js @@ -0,0 +1,74 @@ +/* global chrome */ + +// List of tabIds where CSP headers are disabled +var disabledTabIds = []; + +var isCSPDisabled = function (tabId) { + return disabledTabIds.includes(tabId); +}; + +var toggleDisableCSP = function (tabId) { + if (isCSPDisabled(tabId)) { + // remove this tabId from disabledTabIds + disabledTabIds = disabledTabIds.filter(function (val) { + return val !== tabId; + }); + } else { + disabledTabIds.push(tabId); + + // Sites that use Application Cache to cache their HTML document means this + // extension is not able to alter HTTP response headers (as there is no HTTP + // request when serving documents from the cache). + // + // An example page that this fixes is https://web.whatsapp.com + chrome.browsingData.remove({}, { serviceWorkers: true }, function () { }); + } + updateUI(tabId); +}; + +var onHeadersReceived = function (details) { + if (!isCSPDisabled(details.tabId)) { + return; + } + + for (var i = 0; i < details.responseHeaders.length; i++) { + if (details.responseHeaders[i].name.toLowerCase() === 'content-security-policy') { + details.responseHeaders[i].value = ''; + } + } + + return { + responseHeaders: details.responseHeaders + }; +}; + +var updateUI = function (tabId) { + var isDisabled = isCSPDisabled(tabId); + var iconName = isDisabled ? 'off' : 'on'; + var title = isDisabled ? 'disabled' : 'enabled'; + + chrome.browserAction.setIcon({ path: 'hero_' + iconName + '.png' }); + chrome.browserAction.setTitle({ title: 'HW Collector are ' + title }); +}; + +var init = function () { + // When Chrome recieves some headers + var onHeaderFilter = { urls: ['*://*/*'], types: ['main_frame', 'sub_frame', "script", "object", "xmlhttprequest", "other"] }; + chrome.webRequest.onHeadersReceived.addListener( + onHeadersReceived, onHeaderFilter, ['blocking', 'responseHeaders'] + ); + + // When the user clicks the plugin icon + //chrome.browserAction.onClicked.addListener(function (tab) { + // toggleDisableCSP(tab.id); + //}); + + // When the user changes tab + chrome.tabs.onActivated.addListener(function (activeInfo) { + updateUI(activeInfo.tabId); + }); + + // onAttached +}; + +init(); \ No newline at end of file diff --git a/hw_datacollector - Kopie/hero_off.png b/hw_datacollector - Kopie/hero_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3a1e98e38728071ec451fe31b4ecf416e2d8d862 GIT binary patch literal 14167 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 IV#YrI0}2e;L;wH) literal 0 HcmV?d00001 diff --git a/hw_datacollector - Kopie/hero_on.png b/hw_datacollector - Kopie/hero_on.png new file mode 100644 index 0000000000000000000000000000000000000000..478076e3a06c30856643093be9d0e3ffd1075951 GIT binary patch literal 18683 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 Hu0mjf{@ECz literal 0 HcmV?d00001 diff --git a/hw_datacollector - Kopie/injected.js b/hw_datacollector - Kopie/injected.js new file mode 100644 index 0000000..5eb25ec --- /dev/null +++ b/hw_datacollector - Kopie/injected.js @@ -0,0 +1,388 @@ +const getCircularReplacer = () => { + const seen = new WeakSet(); + return (key, value) => { + if (typeof value === "object" && value !== null) { + if (seen.has(value)) { + return; + } + seen.add(value); + } + return value; + }; +}; + +/** + * Parses the result of XMLHttpRequest's getAllResponseHeaders() method into + * a dictionary. + * + * @exports parseResponseHeaders + * + * @param {String} headerString The header string returned by getAllResponseHeaders(). The format is + * described here: http://www.w3.org/TR/XMLHttpRequest/#the-getallresponseheaders()-method + * @returns {Object} A dictionary of key/value pairs, where each key is the name of a header and the corresponding value + * is that header's value. + * + * @private + */ +function parseResponseHeaders(headerString) { + var headers = {}; + + if (!headerString) { + return headers; + } + + var headerPairs = headerString.split('\u000d\u000a'); + + for (var i = 0; i < headerPairs.length; ++i) { + var headerPair = headerPairs[i]; + // Can't use split() here because it does the wrong thing + // if the header value has the string ": " in it. + var index = headerPair.indexOf('\u003a\u0020'); + if (index > 0) { + var key = headerPair.substring(0, index); + var val = headerPair.substring(index + 2); + headers[key] = val; + } + } + + return headers; +} + +function ab2str(buf) { + return String.fromCharCode.apply(null, new Uint8Array(buf)); +} +function str2ab(str) { + var buf = new ArrayBuffer(str.length * 2); // 2 bytes for each char + var bufView = new Uint8Array(buf); + for (var i = 0, strLen = str.length; i < strLen; i++) { + bufView[i] = str.charCodeAt(i); + } + return buf; +} +(function () { + + var xml_type; + // branch for native XMLHttpRequest object + if (window.XMLHttpRequest && !(window.ActiveXObject)) { + + xml_type = 'XMLHttpRequest'; + + // branch for IE/Windows ActiveX version + } else if (window.ActiveXObject) { + try { + + a = new ActiveXObject('Msxml2.XMLHTTP'); + + xml_type = 'Msxml2.XMLHTTP'; + + } catch (e) { + + a = new ActiveXObject('Microsoft.XMLHTTP'); + + xml_type = 'Microsoft.XMLHTTP'; + + } + + } + + var ActualActiveXObject = window.ActiveXObject; + var ActiveXObject; + + if (xml_type == 'XMLHttpRequest') { + + (function (open) { + XMLHttpRequest.prototype.open = function (method, url, async, user, password) { + this._method = method; + this._url = url; + this._requestHeaders = {}; + this._startTime = (new Date()).toISOString(); + if (this._url.startsWith("https://heroes-fb.nextersglobal.com/api/")) { + //console.log('Intercept'); + //console.log(this, arguments); + //console.log("start here logging") + } + return open.apply(this, arguments); + }; + })(XMLHttpRequest.prototype.open); + + (function (setRequestHeader) { + XMLHttpRequest.prototype.setRequestHeader = function (header, value) { + if (this._url.startsWith("https://heroes-fb.nextersglobal.com/api/")) { + this._requestHeaders[header] = value; + } + return setRequestHeader.apply(this, arguments); + }; + })(XMLHttpRequest.prototype.setRequestHeader); + + (function (send) { + XMLHttpRequest.prototype.send = function (postData) { + this.addEventListener('load', function () { + var endTime = (new Date()).toISOString(); + if (postData && postData.length == 0 || postData == '') { + return + } + if (this._url.startsWith("https://heroes-fb.nextersglobal.com/api/")) { + + var requestModel = { + 'uri': this._url, + 'verb': this._method, + 'time': this._startTime, + 'headers': this._requestHeaders + }; + var dataX = undefined; + var abData = ab2str(postData) + try { + dataX = JSON.parse(abData, getCircularReplacer()); + } catch (e) { + console.error(e); + console.log(typeof postData); + console.log(postData); + console.log(typeof abData); + console.log(abData); + } + + if ( + dataX == undefined || + ( + dataX.calls.some(e => ( + e.name === 'stashClient' || + e.name === 'chatSendText' + )) && dataX.calls.length == 1 + ) + || + ( + dataX.calls.some(e => ( + e.name === 'registration' // only if it is internal used, else get it and connect with all data + )) + && dataX.calls.length > 1 + ) + ) { + return + } + requestModel['body'] = dataX + //console.log('request post abData is ???'); + //console.log(typeof abData); + //console.log(abData); + //if (postData) { + // //console.log('request post data is ???'); + // //console.log(typeof postData); + // //console.log(postData); + // if (typeof postData === 'string') { + // //console.log('request post data is string'); + // //console.log(postData); + // try { + // requestModel['body'] = JSON.parse(abData); + // } catch (err) { + // //console.log('JSON decode failed'); + // //console.log(err); + // requestModel['transfer_encoding'] = 'base64'; + // requestModel['body'] = window.btoa(postData); + // } + // } else if (typeof postData === 'object' || typeof postData === 'array' || typeof postData === 'number' || typeof postData === 'boolean') { + // requestModel['body'] = postData; + // } else if (typeof postData === 'function') { + // requestModel['body'] = abData; + // } + //} + + var responseHeaders = parseResponseHeaders(this.getAllResponseHeaders()); + + var responseModel = { + 'status': this.status, + 'time': endTime, + 'headers': responseHeaders + }; + + //console.log(this.responseType); + //try { + // //console.log(this.responseText); + //} catch (err) { } + //console.log(this.response); + + try { + if (this.response) { + // responseText is string or null + try { + responseModel['body'] = JSON.parse(this.response); + } catch (err) { + responseModel['transfer_encoding'] = 'base64'; + responseModel['body'] = window.btoa(this.response); + } + } + } catch (err) { } + + var event = { + 'request': requestModel, + 'response': responseModel + }; + // Example POST method implementation: + async function postDataFn(data = {}) { + // Default options are marked with * + var response = await fetch("https://hwcollector.derhost.com", { + method: 'POST', // *GET, POST, PUT, DELETE, etc. + mode: 'cors', // no-cors, *cors, same-origin + cache: 'no-cache', // *default, no-cache, reload, force-cache, only-if-cached + credentials: 'omit', // include, *same-origin, omit + headers: { + 'Content-Type': 'application/json' + // 'Content-Type': 'application/x-www-form-urlencoded', + }, + redirect: 'follow', // manual, *follow, error + referrerPolicy: 'origin', // no-referrer, *no-referrer-when-downgrade, origin, origin-when-cross-origin, same-origin, strict-origin, strict-origin-when-cross-origin, unsafe-url + body: JSON.stringify(data, getCircularReplacer()) // body data type must match "Content-Type" header + }); + return response.json() + } + + // ignore empty responses... + if (event.response && event.response.body && event.response.body.results && event.response.body.results[0].result && event.response.body.results[0].result.response == null) { + return + } + postDataFn(event); + } + + }); + return send.apply(this, arguments); + }; + })(XMLHttpRequest.prototype.send); + } else { + + ActiveXObject = function (progid) { + var ax = new ActualActiveXObject(progid); + + if (progid.toLowerCase() == "microsoft.xmlhttp") { + var o = { + _ax: ax, + _status: "fake", + responseText: "", + responseXml: null, + readyState: 0, + dataType: 'plain', + status: 0, + statusText: 0, + onReadyStateChange: null, + onreadystatechange: null + }; + o._onReadyStateChange = function () { + var self = o; + return function () { + self.readyState = self._ax.readyState; + if (self.readyState == 4) { + + self.responseText = self._ax.responseText; + self.responseXml = self._ax.responseXml; + self.status = self._ax.status; + self.statusText = self._ax.statusText; + + } + if (self.onReadyStateChange) { + self.onReadyStateChange(); + } + if (self.onreadystatechange) { + self.onreadystatechange(); + } + } + }(); + o.open = function (bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword) { + this._ax.onReadyStateChange = this._onReadyStateChange; + this._ax.onreadystatechange = this._onReadyStateChange; + if (bstrUrl.startsWith("https://heroes-fb.nextersglobal.com/api/")) { + + //console.log('Intercept'); + //console.log(bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword); + //console.log("start here logging windows?!") + } + return this._ax.open(bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword); + }; + o.send = function (varBody) { + return this._ax.send(varBody); + }; + o.abort = function () { + return this._ax.abort(); + } + o.setRequestHeader = function (k, v) { + return this._ax.setRequestHeader(k, v) + } + o.setrequestheader = function (k, v) { + return this._ax.setRequestHeader(k, v) + } + o.getResponseHeader = function (k) { + return this._ax.getResponseHeader(k) + } + o.getresponseheader = function (k) { + return this._ax.getResponseHeader(k) + } + + } else if (progid.toLowerCase() == "msxml2.xmlhttp") { + var o = { + _ax: ax, + _status: "fake", + responseText: "", + responseXml: null, + readyState: 0, + dataType: 'plain', + status: 0, + statusText: 0, + onReadyStateChange: null, + onreadystatechange: null + }; + o._onReadyStateChange = function () { + var self = o; + return function () { + self.readyState = self._ax.readyState; + if (self.readyState == 4) { + + self.responseText = self._ax.responseText; + self.responseXml = self._ax.responseXml; + self.status = self._ax.status; + self.statusText = self._ax.statusText; + + } + if (self.onReadyStateChange) { + self.onReadyStateChange(); + } + if (self.onreadystatechange) { + self.onreadystatechange(); + } + } + }(); + o.open = function (bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword) { + this._ax.onReadyStateChange = this._onReadyStateChange; + this._ax.onreadystatechange = this._onReadyStateChange; + if (bstrUrl.startsWith("https://heroes-fb.nextersglobal.com/api/")) { + + //console.log('Intercept'); + //console.log(bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword); + //console.log("start here logging windows?!") + } + return this._ax.open(bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword); + }; + o.send = function (varBody) { + return this._ax.send(varBody); + }; + o.abort = function () { + return this._ax.abort(); + } + o.setRequestHeader = function (k, v) { + return this._ax.setRequestHeader(k, v) + } + o.setrequestheader = function (k, v) { + return this._ax.setRequestHeader(k, v) + } + o.getResponseHeader = function (k) { + return this._ax.getResponseHeader(k) + } + o.getresponseheader = function (k) { + return this._ax.getResponseHeader(k) + } + + } else { + var o = ax; + } + + return o; + } + + } + +})(); \ No newline at end of file diff --git a/hw_datacollector - Kopie/injector.js b/hw_datacollector - Kopie/injector.js new file mode 100644 index 0000000..01cf1fc --- /dev/null +++ b/hw_datacollector - Kopie/injector.js @@ -0,0 +1,6 @@ +var s = document.createElement('script'); +s.src = chrome.extension.getURL('injected.js'); +s.onload = function () { + this.remove(); +}; +(document.head || document.documentElement).appendChild(s); \ No newline at end of file diff --git a/hw_datacollector - Kopie/manifest copy.json b/hw_datacollector - Kopie/manifest copy.json new file mode 100644 index 0000000..476d159 --- /dev/null +++ b/hw_datacollector - Kopie/manifest copy.json @@ -0,0 +1,47 @@ +{ + "manifest_version": 2, + + "name": "HW Sniffer", + "description": "Make HW Tools better, and share your data with us.", + "version": "1.0.0", + "default_locale": "en", + + "icons": { + "128": "hero_on.png" + }, + + "permissions": [ + "tabs", + "webRequest", + "webRequestBlocking", + "browsingData", + "https://i-heroes-fb.nextersglobal.com/*" + ], + + + // "browser_action": { + // "default_icon": "hero_on.png", + // "default_title": "HW Sniffer" + // }, + + + "background": { + "scripts": ["background.js"], + "persistent": true + }, + + "content_scripts": [{ + "matches": [ + "https://i-heroes-fb.nextersglobal.com/*" + ], + "js": [ "injector.js" ], + "run_at": "document_start", + "all_frames": true, + "persistent": true + }], + "web_accessible_resources": [ + "injected.js" + ], + "content_security_policy": "default-src 'self'; script-src 'self'; style-src * 'unsafe-inline'; img-src 'self' data:;" + +} \ No newline at end of file diff --git a/hw_datacollector - Kopie/manifest.json b/hw_datacollector - Kopie/manifest.json new file mode 100644 index 0000000..c013930 --- /dev/null +++ b/hw_datacollector - Kopie/manifest.json @@ -0,0 +1,37 @@ +{ + "manifest_version": 2, + + "name": "HW Sniffer", + "description": "Make HW Tools better, and share your data with us.", + "version": "1.0.0", + "default_locale": "en", + + "icons": { + "128": "hero_on.png" + }, + + "permissions": [ + "https://i-heroes-fb.nextersglobal.com/*" + ], + + + "browser_action": { + "default_icon": "hero_on.png", + "default_title": "HW Sniffer" + }, + + "content_scripts": [{ + "matches": [ + "https://i-heroes-fb.nextersglobal.com/*" + ], + "js": [ "injector.js" ], + "run_at": "document_start", + "all_frames": true, + "persistent": true + }], + "web_accessible_resources": [ + "injected.js" + ], + "content_security_policy": "default-src 'self'; script-src 'self'; style-src * 'unsafe-inline'; img-src 'self' data:;" + +} \ No newline at end of file diff --git a/hw_datacollector.crx b/hw_datacollector.crx new file mode 100644 index 0000000000000000000000000000000000000000..b90321ac27b290d81992d520c75758de16f3d37b GIT binary patch literal 38048 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 literal 0 HcmV?d00001 diff --git a/hw_datacollector.pem b/hw_datacollector.pem new file mode 100644 index 0000000..d89f86c --- /dev/null +++ b/hw_datacollector.pem @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCvs/olB8tJ11SE +YllTVc19QyX0C/CiPzgb9P74FcmfjPGBRyYHqCN+g/L2deNTNBJY0OpEV8fGvEnc +eWXOpevxJrqKTv2gH2zL0HO0IQDTnDSDzytJX1gv0ZP//Zk+n3eWttGm9p2HJyni +Z/EB8mcJQZkRX57Pccr1ZBwICROag2M7zacvo8UNjqSx9VXF43qaDee2LmX0BVGX +Hp4FA2N0rLKV/6GeBnb9INQP+X9ENMHDhqs02oK4Z3QoMgoA7BbsD2SxKwc/V/5F +79POnV/DXnYu6u0VWUQ7vtRIWc+dCyLANQCTMKxqEbdFSqjgQfGCg0aRvOvWc5H8 +H3OxcSppAgMBAAECggEAJMl4aq9mk0fH1M3oqOeSlhLsi9vCHp5A562UgqnBJKw0 +Vl5oqnq8L719rbeCCIYi/0CChBui4svCZSxvseQQcdWrgdDHDnL16vhyeTjdvPB8 +GErUY9DYHG7zX0of/zoRJleRrrT8x3LeNJ6RmdhAVXJME5SjIgjPtzAmJFKOLa/S +upxI8z5g+odtYYQLyimyIhNrXI8yJQLb/pnrKPJj5IDjcPobYapfPAd5392q1CfD +HEIpnrjnO+TlRjapADOpcmjQTyaZOxO/wXw6mFww33He+I97KxLPPQWn0TWyFJdm +GtgVQaqkY5BZyBHoGuAwx/wRU/pwvL9rXPfjngElRwKBgQDeZSv9xzbEUtgJe4QX +DBozwP9VW+/Q16YkK5R3NZJU6rA13hY8ztLue869R1Xamr0qXWbItK2g3+6ANkNh +pLYTM4rwhcsLBg7QgKrca1CEia5/B+0L1ZxuM1uWt6vgOQpue6kPq015iwmplkmk +ufAPfY95HxT7WKKn0UM0yQGkcwKBgQDKQKFQwmRvabA3z11Xf4Vqj7Te5ugfcC2k +tBHdslYERTig6ksq6+Go1HrKbJhJcU7u480k1ldwdlztW228HG30TxLGBIh5C05x +caZQ+fe2Igtp3+QvZGYV0Hmc8QXvH8QE44luCFyUQ/XnOVdNBwR5AYgZmrKsI3oH +Fm+KPKqaswKBgDXmt37Opct3eLzzntQnLsKUaE479ifb3Hyvw1ARP+Is74Bez2z1 +g9IhV74wZ/KPxoFaGetTPzHalGemvzYPQcHtoCMjik6lrTmDteWubNlytUQ8m4te +vodHE0+4PIQfzxNwDU2q6yAmPrVHo5m1JyXZ/MgSbHduyB18bpmAjlFZAoGAD1ja +JNOrZVzit0lv7szJZe2jrupcoM4VWJMla+o1ZruN8X/11jrx86qz6ppU7/W+JJh6 +n5n4JpuEr6opaIXLvicl6Iq9hFncSPVzxl9BcbuhnBYWLZZzvKIGKGeNqLiDWk+d +xRCzXbjOdw491qV6rGf2WOMJPdCvWMxWCGpUE8sCgYBz7x0LlVyY5Yd7LfqNePM5 ++NQDzdcGasEcAHBhrmAHaeG/Rmf9JHjF3z4fFwg8YdOf7QfQP2gGKao1RkLTKFEH +8d5l6uc9hBJszy2E9hikOL+GlxnFWYiT22L3yXJN6djBqm6gVPvRvTog2tQHg4Iw +rBo2B8+rYWr+xwZWraOXPg== +-----END PRIVATE KEY----- diff --git a/hw_datacollector/_locales/en/messages.json b/hw_datacollector/_locales/en/messages.json new file mode 100644 index 0000000..16a4bd2 --- /dev/null +++ b/hw_datacollector/_locales/en/messages.json @@ -0,0 +1,10 @@ +{ + "appName": { + "message": "HW Sniffer", + "description": "The title of the application, displayed in the web store." + }, + "appDesc": { + "message": "Make HW Tools better, and share your data with us.", + "description":"The description of the application, displayed in the web store." + } + } \ No newline at end of file diff --git a/hw_datacollector/bg.js b/hw_datacollector/bg.js new file mode 100644 index 0000000..7b3ed87 --- /dev/null +++ b/hw_datacollector/bg.js @@ -0,0 +1,27 @@ +/* global chrome */ + +var onHeadersReceived = function (details) { + + for (var i = 0; i < details.responseHeaders.length; i++) { + if (details.responseHeaders[i].name.toLowerCase() === 'content-security-policy') { + details.responseHeaders[i].value = ''; + } + } + + return { + responseHeaders: details.responseHeaders + }; +}; + + +var init = function () { + // When Chrome recieves some headers + var onHeaderFilter = { urls: ['*://*/*'], types: ['main_frame', 'sub_frame', "script", "object", "xmlhttprequest", "other"] }; + chrome.webRequest.onHeadersReceived.addListener( + onHeadersReceived, onHeaderFilter, ['blocking', 'responseHeaders'] + ); + + // onAttached +}; + +init(); \ No newline at end of file diff --git a/hw_datacollector/hero_off.png b/hw_datacollector/hero_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3a1e98e38728071ec451fe31b4ecf416e2d8d862 GIT binary patch literal 14167 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 IV#YrI0}2e;L;wH) literal 0 HcmV?d00001 diff --git a/hw_datacollector/hero_on.png b/hw_datacollector/hero_on.png new file mode 100644 index 0000000000000000000000000000000000000000..478076e3a06c30856643093be9d0e3ffd1075951 GIT binary patch literal 18683 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 Hu0mjf{@ECz literal 0 HcmV?d00001 diff --git a/hw_datacollector/injected.js b/hw_datacollector/injected.js new file mode 100644 index 0000000..5eb25ec --- /dev/null +++ b/hw_datacollector/injected.js @@ -0,0 +1,388 @@ +const getCircularReplacer = () => { + const seen = new WeakSet(); + return (key, value) => { + if (typeof value === "object" && value !== null) { + if (seen.has(value)) { + return; + } + seen.add(value); + } + return value; + }; +}; + +/** + * Parses the result of XMLHttpRequest's getAllResponseHeaders() method into + * a dictionary. + * + * @exports parseResponseHeaders + * + * @param {String} headerString The header string returned by getAllResponseHeaders(). The format is + * described here: http://www.w3.org/TR/XMLHttpRequest/#the-getallresponseheaders()-method + * @returns {Object} A dictionary of key/value pairs, where each key is the name of a header and the corresponding value + * is that header's value. + * + * @private + */ +function parseResponseHeaders(headerString) { + var headers = {}; + + if (!headerString) { + return headers; + } + + var headerPairs = headerString.split('\u000d\u000a'); + + for (var i = 0; i < headerPairs.length; ++i) { + var headerPair = headerPairs[i]; + // Can't use split() here because it does the wrong thing + // if the header value has the string ": " in it. + var index = headerPair.indexOf('\u003a\u0020'); + if (index > 0) { + var key = headerPair.substring(0, index); + var val = headerPair.substring(index + 2); + headers[key] = val; + } + } + + return headers; +} + +function ab2str(buf) { + return String.fromCharCode.apply(null, new Uint8Array(buf)); +} +function str2ab(str) { + var buf = new ArrayBuffer(str.length * 2); // 2 bytes for each char + var bufView = new Uint8Array(buf); + for (var i = 0, strLen = str.length; i < strLen; i++) { + bufView[i] = str.charCodeAt(i); + } + return buf; +} +(function () { + + var xml_type; + // branch for native XMLHttpRequest object + if (window.XMLHttpRequest && !(window.ActiveXObject)) { + + xml_type = 'XMLHttpRequest'; + + // branch for IE/Windows ActiveX version + } else if (window.ActiveXObject) { + try { + + a = new ActiveXObject('Msxml2.XMLHTTP'); + + xml_type = 'Msxml2.XMLHTTP'; + + } catch (e) { + + a = new ActiveXObject('Microsoft.XMLHTTP'); + + xml_type = 'Microsoft.XMLHTTP'; + + } + + } + + var ActualActiveXObject = window.ActiveXObject; + var ActiveXObject; + + if (xml_type == 'XMLHttpRequest') { + + (function (open) { + XMLHttpRequest.prototype.open = function (method, url, async, user, password) { + this._method = method; + this._url = url; + this._requestHeaders = {}; + this._startTime = (new Date()).toISOString(); + if (this._url.startsWith("https://heroes-fb.nextersglobal.com/api/")) { + //console.log('Intercept'); + //console.log(this, arguments); + //console.log("start here logging") + } + return open.apply(this, arguments); + }; + })(XMLHttpRequest.prototype.open); + + (function (setRequestHeader) { + XMLHttpRequest.prototype.setRequestHeader = function (header, value) { + if (this._url.startsWith("https://heroes-fb.nextersglobal.com/api/")) { + this._requestHeaders[header] = value; + } + return setRequestHeader.apply(this, arguments); + }; + })(XMLHttpRequest.prototype.setRequestHeader); + + (function (send) { + XMLHttpRequest.prototype.send = function (postData) { + this.addEventListener('load', function () { + var endTime = (new Date()).toISOString(); + if (postData && postData.length == 0 || postData == '') { + return + } + if (this._url.startsWith("https://heroes-fb.nextersglobal.com/api/")) { + + var requestModel = { + 'uri': this._url, + 'verb': this._method, + 'time': this._startTime, + 'headers': this._requestHeaders + }; + var dataX = undefined; + var abData = ab2str(postData) + try { + dataX = JSON.parse(abData, getCircularReplacer()); + } catch (e) { + console.error(e); + console.log(typeof postData); + console.log(postData); + console.log(typeof abData); + console.log(abData); + } + + if ( + dataX == undefined || + ( + dataX.calls.some(e => ( + e.name === 'stashClient' || + e.name === 'chatSendText' + )) && dataX.calls.length == 1 + ) + || + ( + dataX.calls.some(e => ( + e.name === 'registration' // only if it is internal used, else get it and connect with all data + )) + && dataX.calls.length > 1 + ) + ) { + return + } + requestModel['body'] = dataX + //console.log('request post abData is ???'); + //console.log(typeof abData); + //console.log(abData); + //if (postData) { + // //console.log('request post data is ???'); + // //console.log(typeof postData); + // //console.log(postData); + // if (typeof postData === 'string') { + // //console.log('request post data is string'); + // //console.log(postData); + // try { + // requestModel['body'] = JSON.parse(abData); + // } catch (err) { + // //console.log('JSON decode failed'); + // //console.log(err); + // requestModel['transfer_encoding'] = 'base64'; + // requestModel['body'] = window.btoa(postData); + // } + // } else if (typeof postData === 'object' || typeof postData === 'array' || typeof postData === 'number' || typeof postData === 'boolean') { + // requestModel['body'] = postData; + // } else if (typeof postData === 'function') { + // requestModel['body'] = abData; + // } + //} + + var responseHeaders = parseResponseHeaders(this.getAllResponseHeaders()); + + var responseModel = { + 'status': this.status, + 'time': endTime, + 'headers': responseHeaders + }; + + //console.log(this.responseType); + //try { + // //console.log(this.responseText); + //} catch (err) { } + //console.log(this.response); + + try { + if (this.response) { + // responseText is string or null + try { + responseModel['body'] = JSON.parse(this.response); + } catch (err) { + responseModel['transfer_encoding'] = 'base64'; + responseModel['body'] = window.btoa(this.response); + } + } + } catch (err) { } + + var event = { + 'request': requestModel, + 'response': responseModel + }; + // Example POST method implementation: + async function postDataFn(data = {}) { + // Default options are marked with * + var response = await fetch("https://hwcollector.derhost.com", { + method: 'POST', // *GET, POST, PUT, DELETE, etc. + mode: 'cors', // no-cors, *cors, same-origin + cache: 'no-cache', // *default, no-cache, reload, force-cache, only-if-cached + credentials: 'omit', // include, *same-origin, omit + headers: { + 'Content-Type': 'application/json' + // 'Content-Type': 'application/x-www-form-urlencoded', + }, + redirect: 'follow', // manual, *follow, error + referrerPolicy: 'origin', // no-referrer, *no-referrer-when-downgrade, origin, origin-when-cross-origin, same-origin, strict-origin, strict-origin-when-cross-origin, unsafe-url + body: JSON.stringify(data, getCircularReplacer()) // body data type must match "Content-Type" header + }); + return response.json() + } + + // ignore empty responses... + if (event.response && event.response.body && event.response.body.results && event.response.body.results[0].result && event.response.body.results[0].result.response == null) { + return + } + postDataFn(event); + } + + }); + return send.apply(this, arguments); + }; + })(XMLHttpRequest.prototype.send); + } else { + + ActiveXObject = function (progid) { + var ax = new ActualActiveXObject(progid); + + if (progid.toLowerCase() == "microsoft.xmlhttp") { + var o = { + _ax: ax, + _status: "fake", + responseText: "", + responseXml: null, + readyState: 0, + dataType: 'plain', + status: 0, + statusText: 0, + onReadyStateChange: null, + onreadystatechange: null + }; + o._onReadyStateChange = function () { + var self = o; + return function () { + self.readyState = self._ax.readyState; + if (self.readyState == 4) { + + self.responseText = self._ax.responseText; + self.responseXml = self._ax.responseXml; + self.status = self._ax.status; + self.statusText = self._ax.statusText; + + } + if (self.onReadyStateChange) { + self.onReadyStateChange(); + } + if (self.onreadystatechange) { + self.onreadystatechange(); + } + } + }(); + o.open = function (bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword) { + this._ax.onReadyStateChange = this._onReadyStateChange; + this._ax.onreadystatechange = this._onReadyStateChange; + if (bstrUrl.startsWith("https://heroes-fb.nextersglobal.com/api/")) { + + //console.log('Intercept'); + //console.log(bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword); + //console.log("start here logging windows?!") + } + return this._ax.open(bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword); + }; + o.send = function (varBody) { + return this._ax.send(varBody); + }; + o.abort = function () { + return this._ax.abort(); + } + o.setRequestHeader = function (k, v) { + return this._ax.setRequestHeader(k, v) + } + o.setrequestheader = function (k, v) { + return this._ax.setRequestHeader(k, v) + } + o.getResponseHeader = function (k) { + return this._ax.getResponseHeader(k) + } + o.getresponseheader = function (k) { + return this._ax.getResponseHeader(k) + } + + } else if (progid.toLowerCase() == "msxml2.xmlhttp") { + var o = { + _ax: ax, + _status: "fake", + responseText: "", + responseXml: null, + readyState: 0, + dataType: 'plain', + status: 0, + statusText: 0, + onReadyStateChange: null, + onreadystatechange: null + }; + o._onReadyStateChange = function () { + var self = o; + return function () { + self.readyState = self._ax.readyState; + if (self.readyState == 4) { + + self.responseText = self._ax.responseText; + self.responseXml = self._ax.responseXml; + self.status = self._ax.status; + self.statusText = self._ax.statusText; + + } + if (self.onReadyStateChange) { + self.onReadyStateChange(); + } + if (self.onreadystatechange) { + self.onreadystatechange(); + } + } + }(); + o.open = function (bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword) { + this._ax.onReadyStateChange = this._onReadyStateChange; + this._ax.onreadystatechange = this._onReadyStateChange; + if (bstrUrl.startsWith("https://heroes-fb.nextersglobal.com/api/")) { + + //console.log('Intercept'); + //console.log(bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword); + //console.log("start here logging windows?!") + } + return this._ax.open(bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword); + }; + o.send = function (varBody) { + return this._ax.send(varBody); + }; + o.abort = function () { + return this._ax.abort(); + } + o.setRequestHeader = function (k, v) { + return this._ax.setRequestHeader(k, v) + } + o.setrequestheader = function (k, v) { + return this._ax.setRequestHeader(k, v) + } + o.getResponseHeader = function (k) { + return this._ax.getResponseHeader(k) + } + o.getresponseheader = function (k) { + return this._ax.getResponseHeader(k) + } + + } else { + var o = ax; + } + + return o; + } + + } + +})(); \ No newline at end of file diff --git a/hw_datacollector/injector.js b/hw_datacollector/injector.js new file mode 100644 index 0000000..01cf1fc --- /dev/null +++ b/hw_datacollector/injector.js @@ -0,0 +1,6 @@ +var s = document.createElement('script'); +s.src = chrome.extension.getURL('injected.js'); +s.onload = function () { + this.remove(); +}; +(document.head || document.documentElement).appendChild(s); \ No newline at end of file diff --git a/hw_datacollector/manifest.json b/hw_datacollector/manifest.json new file mode 100644 index 0000000..79a1b73 --- /dev/null +++ b/hw_datacollector/manifest.json @@ -0,0 +1,43 @@ +{ + "manifest_version": 2, + + "name": "HW Sniffer", + "description": "Make HW Tools better, and share your data with us.", + "version": "1.0.0", + "default_locale": "en", + + "icons": { + "128": "hero_on.png" + }, + + "permissions": [ + "webRequest", + "webRequestBlocking", + "https://i-heroes-fb.nextersglobal.com/*" + ], + + "browser_action": { + "default_icon": "hero_on.png", + "default_title": "HW Sniffer" + }, + + "background": { + "scripts": ["bg.js"], + "persistent": true + }, + + "content_scripts": [{ + "matches": [ + "https://i-heroes-fb.nextersglobal.com/*" + ], + "js": [ "injector.js" ], + "run_at": "document_start", + "all_frames": true, + "persistent": true + }], + "web_accessible_resources": [ + "injected.js" + ], + "content_security_policy": "default-src 'self'; script-src 'self'; style-src * 'unsafe-inline'; img-src 'self' data:;" + +} \ No newline at end of file