Added navigator block

This commit is contained in:
z0ccc 2021-09-27 19:29:23 -04:00
parent 780eac5aac
commit e52a895d55
19 changed files with 331 additions and 122 deletions

View file

@ -39,5 +39,6 @@ module.exports = {
'react/react-in-jsx-scope': 'off',
'no-bitwise': 'off',
'react/no-array-index-key': 'off',
'dot-notation': 'off',
},
};

View file

@ -3,6 +3,11 @@ const data = {
timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone,
timezoneOffset: new Date().getTimezoneOffset(),
date: new Date().toString(),
deviceMemory: navigator.deviceMemory,
hardwareConcurrency: navigator.hardwareConcurrency,
platform: navigator.platform,
userAgent: navigator.userAgent,
appVersion: navigator.appVersion,
language: navigator.language,
languages: navigator.languages,
};

View file

@ -29,9 +29,9 @@ const ScanBlocks = () => {
{connectionData ? (
<>
<div className="centerBlockInner">
{/* <FingerprintBlock />
<NavigatorBlock />
<UserAgentBlock />
{/* <FingerprintBlock /> */}
<NavigatorBlock workerData={workerData} />
{/* <UserAgentBlock />
<IntlBlock /> */}
</div>
<div className="centerBlockInner">
@ -43,8 +43,8 @@ const ScanBlocks = () => {
workerData={workerData}
connectionData={connectionData}
/>
{/* <ScreenBlock />
<OtherBlock /> */}
<ScreenBlock />
{/* <OtherBlock /> */}
</div>
</>
) : (

View file

@ -1,4 +1,4 @@
import ScanBlock from './ScanBlock';
import ScanBlock from './Block';
import Table from './Table';
import { getConnection } from '../utils/conenction';

View file

@ -1,5 +1,5 @@
import { useState, useEffect } from 'react';
import ScanBlock from './ScanBlock';
import ScanBlock from './Block';
import Table from './Table';
const FiltersBlock = () => {

View file

@ -1,5 +1,5 @@
import { useState } from 'react';
import ScanBlock from './ScanBlock';
import ScanBlock from './Block';
import Table from './Table';
import {
getHardware,

View file

@ -1,5 +1,5 @@
import { useState, useEffect } from 'react';
import ScanBlock from './ScanBlock';
import ScanBlock from './Block';
import Table from './Table';
import { getHardware, getWebGL, getBattery } from './mainOld';

View file

@ -1,6 +1,6 @@
/* eslint-disable no-unused-vars */
import { useState, useEffect } from 'react';
import ScanBlock from './ScanBlock';
import ScanBlock from './Block';
import Table from './Table';
import { getIntl } from './main';
import { ReactComponent as CheckCircle } from '../images/checkCircle.svg';

View file

@ -1,4 +1,4 @@
import ScanBlock from './ScanBlock';
import ScanBlock from './Block';
import Table from './Table';
import { getMap, getLocation } from '../utils/conenction';

View file

@ -1,11 +1,11 @@
import Logo from './Logo';
import ScanBlocks from './ScanBlocks';
import Blocks from './Blocks';
const MainColumn = () => (
<>
<Logo />
<div className="centerBlockOuter">
<ScanBlocks />
<Blocks />
</div>
</>
);

View file

@ -1,11 +1,11 @@
import ScanBlock from './ScanBlock';
import ScanBlock from './Block';
import Table from './Table';
import { getNavigator } from './main';
import getNavigator from '../utils/navigator';
const NavigatorBlock = () => (
const NavigatorBlock = ({ workerData }) => (
<ScanBlock>
<h1>Navigator</h1>
<Table type="navigator" data={getNavigator()} />
<Table type="navigator" data={getNavigator(workerData)} />
<p>
<b>Explanation:</b> JavaScript can be used to find information about your
hardware. This information can be used to create a fingerprint.

View file

@ -1,7 +1,7 @@
/* eslint-disable arrow-body-style */
/* eslint-disable no-unused-vars */
import { useState, useEffect } from 'react';
import ScanBlock from './ScanBlock';
import ScanBlock from './Block';
import { detectTor } from './main';
const OtherBlock = () => {

View file

@ -1,4 +1,4 @@
import ScanBlock from './ScanBlock';
import ScanBlock from './Block';
import Table from './Table';
import getScreen from '../utils/screen';

View file

@ -1,4 +1,4 @@
import ScanBlock from './ScanBlock';
import ScanBlock from './Block';
import Table from './Table';
import { getSoftware } from './mainOld';

View file

@ -1,105 +1,105 @@
/* eslint-disable no-unused-vars */
import { useState, useEffect } from 'react';
import Bowser from 'bowser';
import ScanBlock from './ScanBlock';
import Table from './Table';
import {
checkNavigatorProperties,
checkWebWorker,
checkScreenProperties,
} from './main';
import { ReactComponent as CheckCircle } from '../images/checkCircle.svg';
// /* eslint-disable no-unused-vars */
// import { useState, useEffect } from 'react';
// import Bowser from 'bowser';
// import ScanBlock from './Block';
// import Table from './Table';
// import {
// checkNavigatorProperties,
// checkWebWorker,
// checkScreenProperties,
// } from './main';
// import { ReactComponent as CheckCircle } from '../images/checkCircle.svg';
const UserAgentBlock = () => {
const [firstRender, setfirstRender] = useState(true);
const [workerData, setWorkerData] = useState('');
const [userAgent, setUserAgent] = useState();
// const UserAgentBlock = () => {
// const [firstRender, setfirstRender] = useState(true);
// const [workerData, setWorkerData] = useState('');
// const [userAgent, setUserAgent] = useState();
useEffect(() => {
checkWebWorker('userAgent', setWorkerData);
}, []);
// useEffect(() => {
// checkWebWorker('userAgent', setWorkerData);
// }, []);
useEffect(() => {
if (!workerData) {
setUserAgent(Bowser.parse(navigator.userAgent));
} else {
setUserAgent(Bowser.parse(workerData));
}
}, [workerData]);
// useEffect(() => {
// if (!workerData) {
// setUserAgent(Bowser.parse(navigator.userAgent));
// } else {
// setUserAgent(Bowser.parse(workerData));
// }
// }, [workerData]);
return (
<ScanBlock>
<h1>User Agent</h1>
{userAgent && (
<div className="tableWrap">
<table>
<tbody>
<tr>
<td>Browser</td>
<td>{userAgent.browser.name}</td>
<td>
<CheckCircle className="circleButton" />
</td>
</tr>
</tbody>
<tbody>
<tr>
<td>Browser version</td>
<td>{userAgent.browser.version}</td>
<td>
<CheckCircle className="circleButton" />
</td>
</tr>
</tbody>
<tbody>
<tr>
<td>OS</td>
<td>
{userAgent.os.name} {userAgent.os.versionName}
</td>
<td>
<CheckCircle className="circleButton" />
</td>
</tr>
</tbody>
<tbody>
<tr>
<td>OS version</td>
<td>{userAgent.os.version}</td>
<td>
<CheckCircle className="circleButton" />
</td>
</tr>
</tbody>
<tbody>
<tr>
<td>Engine</td>
<td>
{userAgent.engine.name} {userAgent.engine.version}
</td>
<td>
<CheckCircle className="circleButton" />
</td>
</tr>
</tbody>
<tbody>
<tr>
<td>Platform type</td>
<td>{userAgent.platform.type}</td>
<td>
<CheckCircle className="circleButton" />
</td>
</tr>
</tbody>
</table>
</div>
)}
<p>
<b>Explanation:</b> JavaScript can be used to find information about
your hardware. This information can be used to create a fingerprint.
</p>
</ScanBlock>
);
};
// return (
// <ScanBlock>
// <h1>User Agent</h1>
// {userAgent && (
// <div className="tableWrap">
// <table>
// <tbody>
// <tr>
// <td>Browser</td>
// <td>{userAgent.browser.name}</td>
// <td>
// <CheckCircle className="circleButton" />
// </td>
// </tr>
// </tbody>
// <tbody>
// <tr>
// <td>Browser version</td>
// <td>{userAgent.browser.version}</td>
// <td>
// <CheckCircle className="circleButton" />
// </td>
// </tr>
// </tbody>
// <tbody>
// <tr>
// <td>OS</td>
// <td>
// {userAgent.os.name} {userAgent.os.versionName}
// </td>
// <td>
// <CheckCircle className="circleButton" />
// </td>
// </tr>
// </tbody>
// <tbody>
// <tr>
// <td>OS version</td>
// <td>{userAgent.os.version}</td>
// <td>
// <CheckCircle className="circleButton" />
// </td>
// </tr>
// </tbody>
// <tbody>
// <tr>
// <td>Engine</td>
// <td>
// {userAgent.engine.name} {userAgent.engine.version}
// </td>
// <td>
// <CheckCircle className="circleButton" />
// </td>
// </tr>
// </tbody>
// <tbody>
// <tr>
// <td>Platform type</td>
// <td>{userAgent.platform.type}</td>
// <td>
// <CheckCircle className="circleButton" />
// </td>
// </tr>
// </tbody>
// </table>
// </div>
// )}
// <p>
// <b>Explanation:</b> JavaScript can be used to find information about
// your hardware. This information can be used to create a fingerprint.
// </p>
// </ScanBlock>
// );
// };
export default UserAgentBlock;
// export default UserAgentBlock;

View file

@ -1,4 +1,4 @@
export { fetchAPI, getWebWorker };
export { fetchAPI, checkWebWorker, getWebWorker };
// Gets location values
const fetchAPI = (setData) => {
@ -9,6 +9,13 @@ const fetchAPI = (setData) => {
});
};
const checkWebWorker = (key, worker) => {
if (key.toString() !== worker.toString()) {
return `Did not match web worker (${worker})`;
}
return null;
};
const getWebWorker = () => {
let w;
if (typeof w === 'undefined') {

View file

@ -62,7 +62,6 @@ const getLocation = (data, workerData) => {
// Returns object with location data
const getConnection = (data) => {
console.log(data);
const isProxy = checkProxy(data.proxy);
return [
{

View file

@ -0,0 +1,197 @@
import { checkWebWorker } from './common';
const getDeviceMemory = (key, worker) => ({
key,
value: navigator[key],
issues: [
checkNavigatorProperties(key),
checkNavigatorValue(key),
checkNavigatorPrototype(key),
checkWebWorker(navigator[key], worker),
],
});
const getHardwareConcurrency = (key, worker) => ({
key,
value: navigator.hardwareConcurrency,
issues: [
checkNavigatorProperties(key),
checkNavigatorValue(key),
checkNavigatorPrototype(key),
checkWebWorker(navigator[key], worker),
],
});
const getMaxTouchPoints = (key) => ({
key,
value: navigator.maxTouchPoints,
issues: [
checkNavigatorProperties(key),
checkNavigatorValue(key),
checkNavigatorPrototype(key),
],
});
const getPlatform = (key, worker) => ({
key,
value: navigator.platform,
issues: [
checkNavigatorProperties(key),
checkNavigatorValue(key),
checkNavigatorPrototype(key),
checkWebWorker(navigator[key], worker),
],
});
const getUserAgent = (key, worker) => ({
key,
value: navigator.userAgent,
issues: [
checkNavigatorProperties(key),
checkNavigatorValue(key),
checkNavigatorPrototype(key),
checkWebWorker(navigator[key], worker),
],
});
const getAppVersion = (key, worker) => ({
key,
value: navigator.appVersion,
issues: [
checkNavigatorProperties(key),
checkNavigatorValue(key),
checkNavigatorPrototype(key),
checkWebWorker(navigator[key], worker),
],
});
const getLanguage = (key, worker) => ({
key,
value: navigator.language,
issues: [
checkNavigatorProperties(key),
checkNavigatorValue(key),
checkNavigatorPrototype(key),
checkWebWorker(navigator[key], worker),
],
});
const getLanguages = (key, worker) => ({
key,
value: navigator.languages,
issues: [
checkNavigatorProperties(key),
checkNavigatorValue(key),
checkNavigatorPrototype(key),
checkWebWorker(navigator[key], worker),
],
});
const getCookieEnabled = (key) => ({
key,
value: navigator.cookieEnabled ? 'True' : 'False',
issues: [
checkNavigatorProperties(key),
checkNavigatorValue(key),
checkNavigatorPrototype(key),
],
});
const getDoNotTrack = (key) => ({
key,
value: navigator.doNotTrack ? 'True' : 'False',
issues: [
checkNavigatorProperties(key),
checkNavigatorValue(key),
checkNavigatorPrototype(key),
],
});
const getWebDriver = (key) => ({
key,
value: navigator.webdriver ? 'True' : 'False',
issues: [
checkNavigatorProperties(key),
checkNavigatorValue(key),
checkNavigatorPrototype(key),
],
});
const getPlugins = (key) => ({
key,
value: sortPlugins(navigator.plugins),
issues: [
checkNavigatorProperties(key),
checkNavigatorValue(key),
checkNavigatorPrototype(key),
],
});
const getVendor = (key) => ({
key,
value: navigator.vendor,
issues: [
checkNavigatorProperties(key),
checkNavigatorValue(key),
checkNavigatorPrototype(key),
],
});
// sorts plugins object into comma separated list
const sortPlugins = (data) => {
const { length } = data;
let list = '';
for (let i = 0; i < length; i++) {
if (i !== 0) list += ', ';
list += data[i].name;
}
return list;
};
const checkNavigatorProperties = (key) => {
if (Object.getOwnPropertyDescriptor(navigator, key) !== undefined) {
return 'Failed undefined properties';
}
return null;
};
const checkNavigatorValue = (key) => {
if (
Object.getOwnPropertyDescriptor(Navigator.prototype, key).value !==
undefined
) {
return 'Failed descriptor.value undefined';
}
return null;
};
const checkNavigatorPrototype = (key) => {
try {
// eslint-disable-next-line no-unused-vars
const check = Navigator.prototype[key];
return 'Failed Navigator.prototype';
} catch (err) {
// eslint-disable-next-line no-unused-vars
const check = '';
}
return null;
};
const getNavigator = (workerData) => [
getDeviceMemory('deviceMemory', workerData.deviceMemory),
getHardwareConcurrency('hardwareConcurrency', workerData.hardwareConcurrency),
getMaxTouchPoints('maxTouchPoints'),
getPlatform('platform', workerData.platform),
getUserAgent('userAgent', workerData.userAgent),
getAppVersion('appVersion', workerData.appVersion),
getLanguage('language', workerData.language),
getLanguages('languages', workerData.languages),
getCookieEnabled('cookieEnabled'),
getDoNotTrack('doNotTrack'),
getWebDriver('webdriver'),
getPlugins('plugins'),
getVendor('vendor'),
];
export default getNavigator;