Sharty datamining

From SNCApedia
Revision as of 04:07, 14 June 2025 by Mazal (talk | contribs) (QUOTE BTFO)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

The Sharty datamines you a lot lol, you can get past the datamining while still being able to post by using Mullvad browser, which is basically the Tor browser but doesnt connect to Tor.

>inb4 quote blocks mullvad browser again

Integrity.js

Integrity.js contains the javascript that datamines you. Contrarily to popular belief, Integrity.wasm doesnt do any dataming, as wasm cant do that, instead it obfuscates the code that integrity.js runs. Integrity.wasm is completely useless though, as you can just log all the stuff intregrity.js runs. Anyways heres all the stuff it runs that """secretly""" that datamines you (from May 15 2025 as im too lazy to check it again). Note that i used LLMs to help me explain some of the code because I dont know a lot of javascript.

>inb4 someone already did this

THAT WAS A FUCKING YEAR AGO A LOT HAS CHANGED SINCE.

ANYWAYS HERE I GO

Boolean(window._phantom||window.callPhantom||window.__phantomas||window.Buffer||window.emit||window.spawn||window.webdriver||window.domAutomation||window.domAutomationController||window.document.documentElement.getAttribute('webdriver'));

Checks if youre using a webdriver (automated browser) to stop bots, though just use a good one like https://github.com/ultrafunkamsterdam/nodriver

 ['webkitPersistentStorage', 'webkitTemporaryStorage', 'webkitResolveLocalFileSystemURL'].filter(key => key '''in''' navigator).length + (navigator.vendor.indexOf('Google') === 0) + ['BatteryManager', 'webkitMediaStream', 'webkitSpeechGrammar'].filter(key => key '''in''' window).length

Checks if certain Webkit (Safari) APIs are accessible, also checks if your browser vendor is a Google one.

(() => { const f = new Float32Array(1); const u8 = new Uint8Array(f.buffer); f[0] = Infinity; f[0] = f[0] - f[0]; return u8[3];})();

Sees how floating-point values are represented in memory

window.screen.colorDepth

I shouldnt have to explain this one

parseFloat(navigator.deviceMemory)

Checks how much RAM you have

navigator.hardwareConcurrency

Checks how many logical cpu cores you have

window.outerWidth
window.outerHeight

Checks the window size

new Date().getTimezoneOffset()

Gets your timezone

(typeof chrome !== 'undefined' && typeof chrome.runtime !== 'undefined' && typeof chrome.runtime.sendMessage !== 'undefined') ? chrome.runtime.sendMessage('jpgljfpmoofbmlieejglhonfofmahini', {action: 'check_installed'}, response => chrome.runtime.lastError || response.is_installed !== 'yes' ? 0 : 1) : 0

A way to check if your browser is a chromium one

['MSCSSMatrix', 'msSetImmediate', 'msIndexedDB'].filter(key => key in window).length + ['msMaxTouchPoints', 'msPointerEnabled'].filter(key => key in navigator).length
['msWriteProfilerMark', 'MSStream', 'msLaunchUri'].filter(key => key in window).length + (['msSaveBlob'].filter(key => key in navigator).length)

Checks if ur using internet explorer, or pre-chromium microsoft edge

['safari', 'ongestureend', 'TouchEvent', 'orientation'].filter(key => key in window).length + (HTMLElement && !('autocapitalize' in HTMLElement.prototype)) + (Document && 'pointerLockElement' in Document.prototype)

iOS check or something

/^function\s.*?\{\s*\[native code]\s*}$/.test(String(window.print))

Sees if you changed window.print is a native function

(String(window.browser) === '[object WebPageNamespace]') + ('MicrodataExtractor' in window)

Old chromium or firefox check

['onmozfullscreenchange', 'mozInnerScreenX', 'CSSMozDocumentRule', 'CanvasCaptureMediaStream'].filter(key => key in window).length + ('buildID' in navigator) + ('MozAppearance' in (document.documentElement?.style ?? {}))

FIREFOX CHECK

('DOMRectList' in window) + ('RTCPeerConnectionIceEvent' in window) + ('SVGGeometryElement' in window) + ('ontransitioncancel' in window)

Modern browser check or something

localStorage.getItem('css_tokens')

Sees what css you are using or something i think, idk, ill have to look into this some more

(() => { const getComplexCanvasFingerprint = () => { const asciiString = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ !\"#$%&'()*+,-./0123456789:;<=>?@[\]^_`{|}~"; let canvas = null; let ctx = null; let base64Data = null; try { canvas = document.createElement('canvas'); ctx = canvas.getContext('2d'); ctx.textBaseline = "top"; ctx.font = "17px Arial"; ctx.textBaseline = "alphabetic"; ctx.fillStyle = "#f60"; ctx.fillRect(150, 1, 550, 25); ctx.fillStyle = "#069"; ctx.fillText(asciiString, 2, 15); ctx.fillStyle = "rgba(102, 204, 0, 0.7)"; ctx.fillText(asciiString, 4, 17); ctx.font = "17px Helvetica"; ctx.strokeStyle = 'red'; ctx.lineWidth = 2; ctx.strokeText(asciiString, 10, 50); ctx.font = "17px Times New Roman"; ctx.strokeStyle = 'rgba(102, 204, 0, 0.7)'; ctx.lineWidth = 2; ctx.strokeText(asciiString, 12, 55); ctx.font = "17px Times"; ctx.strokeStyle = '#069'; ctx.lineWidth = 2; ctx.strokeText(asciiString, 14, 60); ctx.font = "17px Georgia"; ctx.strokeStyle = '#FF7F00'; ctx.lineWidth = 2; ctx.strokeText(asciiString, 16, 65); ctx.font = "17px Palatino"; ctx.strokeStyle = '#9400D3'; ctx.lineWidth = 2; ctx.strokeText(asciiString, 18, 70); ctx.font = "17px Garamond"; ctx.strokeStyle = '#4B0082'; ctx.lineWidth = 2; ctx.strokeText(asciiString, 20, 75); ctx.font = "17px Bookman"; ctx.strokeStyle = '#0000FF'; ctx.lineWidth = 2; ctx.strokeText(asciiString, 22, 80); ctx.font = "17px Comic Sans MS"; ctx.strokeStyle = '#00FF00'; ctx.lineWidth = 2; ctx.strokeText(asciiString, 24, 85); ctx.font = "17px Trebuchet MS"; ctx.strokeStyle = '#FFFF00'; ctx.lineWidth = 2; ctx.strokeText(asciiString, 26, 90); ctx.font = "17px Arial Black"; ctx.strokeStyle = '#FF7F00'; ctx.lineWidth = 2; ctx.strokeText(asciiString, 28, 95) ctx.font = "17px Impact"; ctx.strokeStyle = '#FF0000'; ctx.lineWidth = 2; ctx.strokeText(asciiString, 30, 100) ctx.font = "17px Anurati"; ctx.strokeStyle = '#9400D3'; ctx.lineWidth = 2; ctx.strokeText(asciiString, 28, 105); ctx.font = "17px Verdana"; ctx.strokeStyle = '#4B0082'; ctx.lineWidth = 2; ctx.strokeText(asciiString, 26, 110); ctx.font = "17px Courier New"; ctx.strokeStyle = '#0000FF'; ctx.lineWidth = 2; ctx.strokeText(asciiString, 24, 115); ctx.font = "17px Baskerville"; ctx.strokeStyle = '#00FF00'; ctx.lineWidth = 2; ctx.strokeText(asciiString, 22, 120); ctx.font = "17px Century Gothic"; ctx.strokeStyle = '#FFFF00'; ctx.lineWidth = 2; ctx.strokeText(asciiString, 20, 125); ctx.font = "17px Tahoma"; ctx.strokeStyle = '#FF7F00'; ctx.lineWidth = 2; ctx.strokeText(asciiString, 18, 130); ctx.font = "17px Arial Narrow"; ctx.strokeStyle = '#FF0000'; ctx.lineWidth = 2; ctx.strokeText(asciiString, 16, 135); ctx.font = "17px Trebuchet MS"; ctx.strokeStyle = '#9400D3';ctx.lineWidth = 2; ctx.strokeText(asciiString, 14, 140); ctx.font = "17px Lucida Sans Typewriter"; ctx.strokeStyle = '#4B0082'; ctx.lineWidth = 2; ctx.strokeText(asciiString, 12, 145); ctx.font = "17px Consolas"; ctx.strokeStyle = '#0000FF'; ctx.lineWidth = 2; ctx.strokeText(asciiString, 10, 150); ctx.font = "17px cursive"; ctx.strokeStyle = '#00FF00'; ctx.lineWidth = 2; ctx.strokeText(asciiString, 14, 155); ctx.font = "17px fantasy"; ctx.strokeStyle = '#FFFF00'; ctx.lineWidth = 2; ctx.strokeText(asciiString, 16, 160); ctx.font = "17px monospace"; ctx.strokeStyle = '#FF7F00'; ctx.lineWidth = 2; ctx.strokeText(asciiString, 18, 165); ctx.font = "17px sans-serif"; ctx.strokeStyle = '#FF0000'; ctx.lineWidth = 2; ctx.strokeText(asciiString, 20, 170); ctx.font = "17px serif"; ctx.strokeStyle = '#9400D3'; ctx.lineWidth = 2; ctx.strokeText(asciiString, 22, 175); ctx.font = "17px .Mondulkiri U GR 1.5"; ctx.strokeStyle = '#4B0082'; ctx.lineWidth = 2; ctx.strokeText(asciiString, 24, 180); ctx.font = "17px BPG Classic 99U"; ctx.strokeStyle = '#0000FF'; ctx.lineWidth = 2; ctx.strokeText(asciiString, 26, 185); ctx.font = "17px Bauhaus 93"; ctx.strokeStyle = '#00FF00'; ctx.lineWidth = 2; ctx.strokeText(asciiString, 28, 190); ctx.font = "17px Bookshelf Symbol 7"; ctx.strokeStyle = '#FFFF00'; ctx.lineWidth = 2; ctx.strokeText(asciiString, 30, 195); ctx.font = "17px Ming(for ISO10646)"; ctx.strokeStyle = '#FF7F00'; ctx.lineWidth = 2; ctx.strokeText(asciiString, 32, 200); ctx.font = "17px Modern No. 20"; ctx.strokeStyle = '#FF0000'; ctx.lineWidth = 2; ctx.strokeText(asciiString, 34, 205); ctx.font = "17px OCR-B 10 BT"; ctx.strokeStyle = '#9400D3'; ctx.lineWidth = 2; ctx.strokeText(asciiString, 36, 210); ctx.font = "17px Proxy 1"; ctx.strokeStyle = '#4B0082'; ctx.lineWidth = 2; ctx.strokeText(asciiString, 38, 215); ctx.font = "17px Proxy 9"; ctx.strokeStyle = '#0000FF'; ctx.lineWidth = 2; ctx.strokeText(asciiString, 40, 220); const grd = ctx.createLinearGradient(0, 0, 200, 0.2); grd.addColorStop(0, "rgba(102, 204, 0, 0.1)"); grd.addColorStop(1, "#FF0000"); ctx.fillStyle = grd; ctx.fillRect(10, 10, 150, 80); base64Data = canvas.toDataURL(); canvas.remove(); return base64Data; } catch (err) { if (canvas) { canvas.remove(); } return "blocked"; } } const canvasFingerprint = getComplexCanvasFingerprint(); if (canvasFingerprint != getComplexCanvasFingerprint()) { return "blocked"; } else { return canvasFingerprint; } })();

The part everyones been waiting for: THE CANVAS FINGERPRINT

navigator.serviceWorker === undefined

Sees if service worker API is there

navigator.languages.join()

Gets your prefered languages or something

(new Intl['DateTimeFormat']).resolvedOptions()['locale']

Your locale for formatting dates and times

window.gl ? window.gl.getExtension('WEBGL_debug_renderer_info') ? window.gl.getParameter(window.gl.getExtension('WEBGL_debug_renderer_info').UNMASKED_RENDERER_WEBGL) : null : null

Sees what GPU youre using

window.location.href

Sees what url you are on, most likely https://www.soyjak.st/SOMETHING/

localStorage.stylesheet ? localStorage.stylesheet : null

Sees if you are using the default stylesheet or not i think