Greasy Fork is available in English.

FileCR Assistant Bypass

A simple script to bypass FileCR Assistant.

< Commentaires sur FileCR Assistant Bypass

Avis: Bon - le script fonctionne correctement

§
Posté le: 2023-11-03

It's been working until recently, it needs to bypass this:

            async function b() {
                if (!u) {
                    x(!0),
                    console.log("Extension not installed.");
                    return
                }
                let e = await eo.A.checkInfo();
                if (!e) {
                    v(!0),
                    console.log("Extension not updated"),
                    console.log("installed ver:", "Old versions can't check version"),
                    console.log("latest ver:", c.ext_version);
                    return
                }
                if (!(0,
                eb.q)(e.version, c.ext_version, ">=")) {
                    v(!0),
                    console.log("Extension not updated"),
                    console.log("installed ver:", e.version),
                    console.log("latest ver:", c.ext_version);
                    return
                }

Basically needs to set the version equal to the newest version (which is currently 1.1.3 = ext_version)

here is their js calling the code above:

                send(e, t, n) {
                    var r;
                    let o = `MSG-${e}-${Date.now()}-${Math.round(1e4 * Math.random())}`
                      , i = {
                        direction: "from-page-script",
                        type: "message",
                        id: o,
                        action: e,
                        data: t
                    }
                      , a = null !== (r = null == n ? void 0 : n.timeoutSec) && void 0 !== r ? r : 3;
                    return new Promise((e,t)=>{
                        window.postMessage(i, "*"),
                        this.responseQueue.set(o, e),
                        setTimeout(()=>{
                            this.responseQueue.has(o) && (this.responseQueue.delete(o),
                            t(Error(`No response received within ${a} seconds.`)))
                        }
                        , 1e3 * a)
                    }

Here is my very old attempt to mimic the CRX installation, it doesn't work, but maybe it will give someone else inspiration to try:

// ==UserScript==
// @name         Plugin Bypass Script
// @namespace    http://your-namespace.com
// @version      1.0
// @description  Bypass plugin detection on https://filecr.com/
// @match        https://filecr.com/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // Create a fake getStatus function that always returns an installed plugin
    function fakeGetStatus() {
        return Promise.resolve({
            isInstalled: true,
            installedAppId: w.appId // Plugin ID you want to emulate as installed
        });
    }

    // Create a fake getInstallUrl function that returns a custom installation URL
    function fakeGetInstallUrl(appId, downloadUrl, updateUrl, name, iconUrl) {
        return `https://chrome.google.com/webstore/detail/webcrx/${appId}`;
    }

    // Replace the original functions with the fake ones
    (window.m.useEffect) = () => {
        if (c && "chrome" === g) {
            let e = {
                getStatus: fakeGetStatus,
                getInstallUrl: fakeGetInstallUrl
            };

            let w = {
                name: "FileCR Assistant",
                appId: "cgdlgjfaminolmljfokbbienpoibhknp",
                iconUrl: "https://filecr.com/logo.png",
                downloadUrl: "https://static.filecr.com/filecr-assistant_1.0.4.crx",
                updateUrl: "https://filecr.com/wp-json/filecr/v1/extension/updates",
                iframeUrl: "https://webcrx.io/extension/comm",
                extensionUrl: "",
                installButtonUrl: "https://filecr.com/wp-json/filecr/v1/extension/install",
                chromeInstallUrl: "https://webcrx.io/extension/add",
                firefoxInstallUrl: "http://static.filecr.com/FileCR-Assistant.xpi",
                operaInstallUrl: "https://static.filecr.com/webcrx_1.0.2_direct.crx",
                extensionCookie: "extensionIsInstalled"
            };

            let t = setInterval(() => {
                e.getStatus().then(t => {
                    if (console.log("Check status"),
                        console.log(t.installedAppId),
                        t.isInstalled && !t.installedAppId) {
                        let t = e.getInstallUrl(w.appId, w.downloadUrl, w.updateUrl, w.name, w.iconUrl);
                        console.log("Only Crx installed!"),
                            h(t)
                    } else
                        t.isInstalled && t.installedAppId === w.appId && (console.log("Extension installed!"),
                            l(!0),
                            p(!1),
                            k())
                });
            }, 2000);

            return () => clearInterval(t);
        }
    };

})();

I got these variables before they started obfuscating their code so, yea.

§
Posté le: 2023-11-03

I tried again:

// ==UserScript==
// @name         Override checkInfo Function with Logging
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  Override checkInfo to return true with console logging.
// @author       You
// @match        *://*/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    console.log('Tampermonkey script loaded.');

    // Function to log and return the desired object
    const mockCheckInfo = async () => {
        console.log('checkInfo called');
        const mockResponse = {
            version: "1.1.3",
            ext_version: "1.1.3",
            extensionIsInstalled: true
            // Add other properties as needed
        };
        console.log('checkInfo returning:', mockResponse);
        return mockResponse;
    };

    // Wait for the eo object and its A property to be available
    const waitForEO = setInterval(() => {
        if (window.eo && eo.A && typeof eo.A.checkInfo === 'function') {
            clearInterval(waitForEO);
            console.log('eo.A.checkInfo is available.');

            // Override the checkInfo function
            eo.A.checkInfo = mockCheckInfo;

            console.log('checkInfo function has been overridden.');
        }
    }, 100); // Check every 100 milliseconds
})();

Still no work :/

lem6nsAuteur
§
Posté le: 2023-12-17

Updated

Poster une réponse

Connectez-vous pour poster une réponse.