SA:MP JS Keyspoof | AHK - xsoft

scamdam

Новичок
Автор темы
2
0
Версия SA-MP
  1. Любая
  2. Другая
Изучая структуру https://kiznold.github.io/xsoft/ , спустя 5 минут я наткнулся на "обход", забавно что до сих пор никто не выложил подобный спуфер, т.к. я нашел этот "обход" еще давненько 😀
Представляю вам рабочий кейспуф, написанный буквально "на коленке", но работающий как нужно


Активация: Вставляете код в F12 - Console
На CTRL вы можете допускать ошибки

js:
(function() {
    let currentCaptcha = "";
    let currentIndex = 0;
    let isGHeld = false;

    const originalCall = Function.prototype.call;
    Function.prototype.call = function(...args) {
        if (args[0] instanceof CanvasRenderingContext2D && typeof args[1] === 'number') {
            const val = args[1];
            if (val >= 10000 && val <= 99999) {
                currentCaptcha = val.toString();
                currentIndex = 0;
            }
        }
        return originalCall.apply(this, args);
    };

    const neighborMap = {
        '1': ['ё', '2'],
        '2': ['1', '3'],
        '3': ['2', '4'],
        '4': ['3', '5'],
        '5': ['4', '6'],
        '6': ['5', '7'],
        '7': ['6', '8'],
        '8': ['7', '9'],
        '9': ['8', '0'],
        '0': ['9', '-']
    };

    window.addEventListener('keydown', e => {
        if (e.code === 'KeyN') currentIndex = 0;
    });

    const observer = new MutationObserver(() => {
        const input = document.getElementById('megasuperbebra');
        if (input && !input.dataset.hooked) {
            input.dataset.hooked = "true";
            input.addEventListener('keydown', e => {
                if (e.key >= '0' && e.key <= '9') {
                    e.preventDefault();
                    if (!currentCaptcha || currentIndex >= 5) return;

                    let char;
                    if (e.ctrlKey) {
                        const correct = currentCaptcha[currentIndex];
                        const neighbors = neighborMap[correct] || [correct];
                        char = neighbors[Math.floor(Math.random() * neighbors.length)];
                    } else {
                        char = currentCaptcha[currentIndex];
                    }

                    const start = input.selectionStart;
                    const end = input.selectionEnd;
                    input.value = input.value.substring(0, start) + char + input.value.substring(end);
                    input.selectionStart = input.selectionEnd = start + 1;
                    
                    input.dispatchEvent(new Event('input', { bubbles: true }));
                    currentIndex++;
                }
            });
        }
    });

    observer.observe(document.body, { childList: true, subtree: true });
})();


Видео:

 

Nymphomaniac

Новичок
9
4
а зачем ты взял мой файл и переделал какую-то хуйню непонятную
@kizn как вы это прокоментируете
предлагаю на хсофт завезти защиту от выполнения несанкционированных JS-функций
 
  • Ха-ха
Реакции: scamdam

scamdam

Новичок
Автор темы
2
0
а зачем ты взял мой файл и переделал какую-то хуйню непонятную
@kizn как вы это прокоментируете
предлагаю на хсофт завезти защиту от выполнения несанкционированных JS-функций
сори кент, не нашел на форуме твою тему по запросу
1774958560194.png
 
Последнее редактирование: