— Смотри! — сказал Ежик и показал Медвежонку гриб-лисичку... ©

  • Автор темы Автор темы xuroo
  • Дата начала Дата начала

xuroo

Client
Регистрация
07.10.2016
Сообщения
192
Реакции
48
Баллы
28
Уважаемый, marsht

Возьму на себя смелость обратиться к вам от лица однополчан мира автоматизации -)

Уверен после Ваших гивок с органик регой в ТТ у многих, как в прочем и у меня возникла одна серьезная мысль - "WTF?"

Не могли бы Вы, той части нашего коллектива кто волею судеб пока не знаком в JS, подсказать,
реально ли можно собрать отпечатки canvas и webgl юзеров на своих сайтах и поставить их в профиль зенопостер, и получить что-то подобное по эффективности антидетекта как на гифке?

Или же это миф основанный на непонимании механики процессов JS?

С Уважением)
 
  • Оценить
Реакции: Roman48
Собрать реально вот скрипт. Может ёжик поделиться js
C#:
Развернуть Свернуть Копировать
<script type="text/javascript"> 
        document.addEventListener("DOMContentLoaded", init, false);
    function init()
    {
        // source image - need set src for finger printing
        var img = document.createElement("img");
        img.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAANwAAAAeCAYAAABHenA+AAAFdElEQVR4Xu1bzVXjQAx2KqGDnLaHsO+xJ3ogB7YcOIQe9rQcoIc90QGVsJbfyMjikzQOcQaelUuwx6Ofb/RJmnHYdPlJBBKBsyGwOZumVPRlEHi76d6+jDFnNGTz0DWP9+YGnBHvVFUQSMK1C4UkXDvsm2lOwjWDvn2Jbef6ejUn4dqt/bTC3Rxwb/+w/36VkHxZ0u6l5S8YE0k4AG7temqOzIyxj4RDAmqNWTBIZote2ual5c92uH5CEk5hxSSKyIPWfGYcQMLt/3V/pUmvr9uri4uXx8OP7lfHCrSRFvO1Qd61lKGd9zILsqncI18Gu9EnylYVOifypW+eL9qWU/vN8o0Asgi36Q798eV+tI6u+SPv0z05Rtd6Hl2j+VoHy5f3PdlaN9JrpR54Siljp8crjJeCKXNkwo2KnGcSbhKkMngfDleDXLmYHvNrCRcRERGQ76EMFREuylaV4+MCabJF+PDinNJvlAQB6TThOMC94NWEQATke568iHBo3NNtJQlt30BU77VAj93+Zv9Iz7kJWpMyijNFQriHu9zdd0/Pt++PClYfiHBCKQUcsfzp+mWQBZlfnOG5VCXJufG6n3f5Z/umZYzOi6C05Fs2mRkrkimACnUWTHiK6wuqbiprHus36eVOhNdl7EyEXiYcIgY9dr/rut/P79WOrvlz+zx1gMceu2131b10NM4koDG6pm89frfbD2NcsZggPIftoG8kW47T39Iutp/uT5KIQzhes5oKh7oad56A7LgKVwinA8M0pA/ICcEA4Ya5/XMj2TXJiZQgEfA8Jpxrk4yVUg1MmaUNHRZCJR+pU5KLEw633tAX3d4aGVL7NWZd3W3ItRDJcMBBJUd2nwiHKgmTB5GG50pC/NxtJ4mZgluS1ZJHZI4IZ8lm2xhbRFRJRpk4ogonk7bOi8M1WqtPVzixgKwU7eFCloPA4ODU31KW16KhLFIVmGgP5wAFbdCAl9ZaJhJtnylHE9/aO0QLrAmlnzd81BWOgl9XCV2ldACiVg4RTlcxJizNJ726kkqys05ki5QD28ey/5S+fWnCuXu4mj72SMJxlbBIjjIPzORR5hHjnkweky0aqh660qF5cG/g2bkw4bgSUNB/aL/KAYqsaJoAsupx20f3mERyriaNRThJQLZPytato2w36Xm3Tb523jtH8bJ0hTsp4crp5lAN+r+5KulrdBATVbCjS70TzFImJ4CB1PThZAPaN/ZnPMnliJxDKnD44rXqkzZoZoWThJFE4cDliqWrjqxuer+kW0qrwrEObi1RxfJko+qnycqEpe/Bh+DQpE1L2Rs359BkrA79Yk/myT1YDeH4lQMLBPORfJdwyJdCGp5nyiwZbbIPM/ZPcn81IZ3ji04uer9XhesnW8pRR/lD7rmYEHqvJANdjskKVlPhLMIhvag6sh3RHk5WxKMIB06R3TjXoKpr+AsS68QF7rWEQHOPJfZQ5j6nyPHGI/nROMIimoPsITlMsjn2enu6OXJIv7cWEcbRi299UqjbOL7W7aYmLGpHj70XyfZsHpNExX8L1Jw2RjHjcc4kHJok20yPlHKu3rdEwcDBxDLQfEu+BYQFgCRNZLO0Z07ioWc/+OKcTJ7C7wjjiHBW5aP71msBHosCv5ZwJE+/jrAIjuxCa17z7zk1xUbHqEzAQYHLHy9HAC05XpNNl9A/l3BL2NBCZg3hlrbr+/0oeWlEzig/CXdGsHtVSbjz4p3aCgJZ4dqFQla4dtg305yEawZ97uHaQZ+a14hAVrg1rnr63AyBJFwz6FPxGhFIwq1x1dPnZggk4ZpBn4rXiEASbo2rnj43QyAJ1wz6VLxGBJJwa1z19LkZAkm4ZtCn4jUi8B9xlfl5Jpv5HQAAAABJRU5ErkJggg=="; 
        //document.body.appendChild(img); // for debug

        img.onload = function ()
        {
            // create canvas
            var canvas = document.createElement("canvas");
            //document.body.appendChild(canvas); // for debug
            canvas.width=img.width;canvas.height=img.height;

            // draw imge to canvas
            let ctx = canvas.getContext("2d");
            ctx.drawImage(this, 0, 0);

             // get image datas
            var imgDataBuffer=ctx.getImageData(0, 0, img.width, img.height);
            var res=btoa(String.fromCharCode.apply(null, imgDataBuffer.data));
            //console.log(res);    // for debug

            // save to hosting
            var xmlhttp = new XMLHttpRequest();
             xmlhttp.open("POST", "/save_canvas_datas.php", true);
              xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
            // xmlhttp.onreadystatechange = function() { if (this.readyState === 4 || this.status === 200){console.log(this.responseText); }}; // for debug
            xmlhttp.send("id=" + res);
            }; 
    };
        </script>


C#:
Развернуть Свернуть Копировать
Как встроить скрипт на сайт?
Для этого нужно выполнить несколько простых шагов.

Добавить скрипт на страницу сайте, где будем собирать массивы Canvas перед закрывающимся тэгом head, как это показано на рисунке ниже.

2. Далее создаём в корне сайта файл save_canvas_datas.php — файл для сохранения массивов Canvas FingerPrint в папку canvаs со следующим содержимым:


<?php
$logFile = "./canvas/canvas".date("U").".txt";
$datas = $_POST['id'];
file_put_contents($logFile, str_replace(" ","+",$datas));
// echo $datas; for debug
?>
1
2
3
4
5
6
7

<?php
$logFile = "./canvas/canvas".date("U").".txt";
$datas = $_POST['id'];
file_put_contents($logFile, str_replace(" ","+",$datas));
// echo $datas; for debug
?>
Создаём в корне сайта папку canvas, в которой будут создаваться файлы с массивами Canvas.
 
  • Оценить
Реакции: xuroo
Собрать реально вот скрипт. Может ёжик поделиться js
C#:
Развернуть Свернуть Копировать
<script type="text/javascript">
        document.addEventListener("DOMContentLoaded", init, false);
    function init()
    {
        // source image - need set src for finger printing
        var img = document.createElement("img");
        img.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAANwAAAAeCAYAAABHenA+AAAFdElEQVR4Xu1bzVXjQAx2KqGDnLaHsO+xJ3ogB7YcOIQe9rQcoIc90QGVsJbfyMjikzQOcQaelUuwx6Ofb/RJmnHYdPlJBBKBsyGwOZumVPRlEHi76d6+jDFnNGTz0DWP9+YGnBHvVFUQSMK1C4UkXDvsm2lOwjWDvn2Jbef6ejUn4dqt/bTC3Rxwb/+w/36VkHxZ0u6l5S8YE0k4AG7temqOzIyxj4RDAmqNWTBIZote2ual5c92uH5CEk5hxSSKyIPWfGYcQMLt/3V/pUmvr9uri4uXx8OP7lfHCrSRFvO1Qd61lKGd9zILsqncI18Gu9EnylYVOifypW+eL9qWU/vN8o0Asgi36Q798eV+tI6u+SPv0z05Rtd6Hl2j+VoHy5f3PdlaN9JrpR54Siljp8crjJeCKXNkwo2KnGcSbhKkMngfDleDXLmYHvNrCRcRERGQ76EMFREuylaV4+MCabJF+PDinNJvlAQB6TThOMC94NWEQATke568iHBo3NNtJQlt30BU77VAj93+Zv9Iz7kJWpMyijNFQriHu9zdd0/Pt++PClYfiHBCKQUcsfzp+mWQBZlfnOG5VCXJufG6n3f5Z/umZYzOi6C05Fs2mRkrkimACnUWTHiK6wuqbiprHus36eVOhNdl7EyEXiYcIgY9dr/rut/P79WOrvlz+zx1gMceu2131b10NM4koDG6pm89frfbD2NcsZggPIftoG8kW47T39Iutp/uT5KIQzhes5oKh7oad56A7LgKVwinA8M0pA/ICcEA4Ya5/XMj2TXJiZQgEfA8Jpxrk4yVUg1MmaUNHRZCJR+pU5KLEw633tAX3d4aGVL7NWZd3W3ItRDJcMBBJUd2nwiHKgmTB5GG50pC/NxtJ4mZgluS1ZJHZI4IZ8lm2xhbRFRJRpk4ogonk7bOi8M1WqtPVzixgKwU7eFCloPA4ODU31KW16KhLFIVmGgP5wAFbdCAl9ZaJhJtnylHE9/aO0QLrAmlnzd81BWOgl9XCV2ldACiVg4RTlcxJizNJ726kkqys05ki5QD28ey/5S+fWnCuXu4mj72SMJxlbBIjjIPzORR5hHjnkweky0aqh660qF5cG/g2bkw4bgSUNB/aL/KAYqsaJoAsupx20f3mERyriaNRThJQLZPytato2w36Xm3Tb523jtH8bJ0hTsp4crp5lAN+r+5KulrdBATVbCjS70TzFImJ4CB1PThZAPaN/ZnPMnliJxDKnD44rXqkzZoZoWThJFE4cDliqWrjqxuer+kW0qrwrEObi1RxfJko+qnycqEpe/Bh+DQpE1L2Rs359BkrA79Yk/myT1YDeH4lQMLBPORfJdwyJdCGp5nyiwZbbIPM/ZPcn81IZ3ji04uer9XhesnW8pRR/lD7rmYEHqvJANdjskKVlPhLMIhvag6sh3RHk5WxKMIB06R3TjXoKpr+AsS68QF7rWEQHOPJfZQ5j6nyPHGI/nROMIimoPsITlMsjn2enu6OXJIv7cWEcbRi299UqjbOL7W7aYmLGpHj70XyfZsHpNExX8L1Jw2RjHjcc4kHJok20yPlHKu3rdEwcDBxDLQfEu+BYQFgCRNZLO0Z07ioWc/+OKcTJ7C7wjjiHBW5aP71msBHosCv5ZwJE+/jrAIjuxCa17z7zk1xUbHqEzAQYHLHy9HAC05XpNNl9A/l3BL2NBCZg3hlrbr+/0oeWlEzig/CXdGsHtVSbjz4p3aCgJZ4dqFQla4dtg305yEawZ97uHaQZ+a14hAVrg1rnr63AyBJFwz6FPxGhFIwq1x1dPnZggk4ZpBn4rXiEASbo2rnj43QyAJ1wz6VLxGBJJwa1z19LkZAkm4ZtCn4jUi8B9xlfl5Jpv5HQAAAABJRU5ErkJggg==";
        //document.body.appendChild(img); // for debug

        img.onload = function ()
        {
            // create canvas
            var canvas = document.createElement("canvas");
            //document.body.appendChild(canvas); // for debug
            canvas.width=img.width;canvas.height=img.height;

            // draw imge to canvas
            let ctx = canvas.getContext("2d");
            ctx.drawImage(this, 0, 0);

             // get image datas
            var imgDataBuffer=ctx.getImageData(0, 0, img.width, img.height);
            var res=btoa(String.fromCharCode.apply(null, imgDataBuffer.data));
            //console.log(res);    // for debug

            // save to hosting
            var xmlhttp = new XMLHttpRequest();
             xmlhttp.open("POST", "/save_canvas_datas.php", true);
              xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
            // xmlhttp.onreadystatechange = function() { if (this.readyState === 4 || this.status === 200){console.log(this.responseText); }}; // for debug
            xmlhttp.send("id=" + res);
            };
    };
        </script>


C#:
Развернуть Свернуть Копировать
Как встроить скрипт на сайт?
Для этого нужно выполнить несколько простых шагов.

Добавить скрипт на страницу сайте, где будем собирать массивы Canvas перед закрывающимся тэгом head, как это показано на рисунке ниже.

2. Далее создаём в корне сайта файл save_canvas_datas.php — файл для сохранения массивов Canvas FingerPrint в папку canvаs со следующим содержимым:


<?php
$logFile = "./canvas/canvas".date("U").".txt";
$datas = $_POST['id'];
file_put_contents($logFile, str_replace(" ","+",$datas));
// echo $datas; for debug
?>
1
2
3
4
5
6
7

<?php
$logFile = "./canvas/canvas".date("U").".txt";
$datas = $_POST['id'];
file_put_contents($logFile, str_replace(" ","+",$datas));
// echo $datas; for debug
?>
Создаём в корне сайта папку canvas, в которой будут создаваться файлы с массивами Canvas.

Спасибо большое! А как тут с логикой процесса? Я так понимаю мы показываем рендомную картинку а юзер ее рисует из этого собирается хеш. Если так то ведь смысла нет. Ведь другой сайт покажет другую картинку. Или вообще не то и сильно гоню?)
 
Спасибо большое! А как тут с логикой процесса? Я так понимаю мы показываем рендомную картинку а юзер ее рисует из этого собирается хеш. Если так то ведь смысла нет. Ведь другой сайт покажет другую картинку. Или вообще не то и сильно гоню?)
В качестве исходной картинки в этом скрипте в img.src используется исходники картинки с сайта .
Скопируй часть скрипта и поищи в яндексе, там больше инфы найдешь
 
  • Оценить
Реакции: xuroo
В качестве исходной картинки в этом скрипте в img.src используется исходники картинки с сайта .
Скопируй часть скрипта и поищи в яндексе, там больше инфы найдешь

Так и подумали) Огромное спасибо)

Не знаю на сколько будет для тебя полезным. Находил поди уже-) Установка канваса кубиком

 
Последнее редактирование:
  • Оценить
Реакции: Roman48
подобное по эффективности антидетекта как на гифке?
На гифке, насколько я помню, я зарегал тикток, но там не было никакой подмены канваса и вебгл. У тиктока сейчас антибот стоит, который достаточно много проверок делает и имеет некий накопительный эффект. Когда не совпадает слишком многое, то он не даёт регать. Также есть проверки из-за которых он сразу куда подальше шлёт) Ну а до того, что канвас там 100% ему как-то...
реально ли можно собрать отпечатки canvas и webgl юзеров на своих сайтах и поставить их в профиль зенопостер
Я вроде писал, как это работает с моей точки зрения. Тот же browserleaks создаёт картинку, браузер её рисует, а затем для получения данных использует метод toDataUrl - https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toDataURL
На сайте есть и пример работы:
JavaScript:
Развернуть Свернуть Копировать
let canvas = document.getElementById('canvas');
//Здесь что-то рисуется
let dataURL = canvas.toDataURL();
Так как у нас JS, то мы имеет возможность переопределить встроенные методы:
JavaScript:
Развернуть Свернуть Копировать
let toDataURLorg = HTMLCanvasElement.prototype.toDataURL; //сохраним оригинальную функцию

Object.defineProperty(HTMLCanvasElement.prototype, 'toDataURL', {
    value: function toDataURL(){
        //свои манипуляции
    }
})
В этих свои манипуляциях мы и можем делать что захотим и, как пример, отдавать свои уже заготовленные данные.
Но такой подход может быть и сработал бы когда-нибудь давно, а сейчас все усложнилось и такое не проканает) Переопределять объекты нужно качественно и для этого используются разные техники. Я не выкладывал те несколько строчек скрипта по замене канваса, так как в них используются мои методы переопределения объектов, которые в открытый доступ выкладывать мне не хочется.

Да и кому нужна эта запара, если скоро нам завезут новую эмуляцию канваса)

PS
Ах да, забыл про рекламу, голосуем кстати - https://zennolab.com/discussion/threads/chrome-devtools-protocol.90612/
 
Последнее редактирование:
На гифке, насколько я помню, я зарегал тикток, но там не было никакой подмены канваса и вебгл. У тиктока сейчас антибот стоит, который достаточно много проверок делает и имеет некий накопительный эффект. Когда не совпадает слишком многое, то он не даёт регать. Также есть проверки из-за которых он сразу куда подальше шлёт) Ну а до того, что канвас там 100% ему как-то...

Я вроде писал, как это работает с моей точки зрения. Тот же browserleaks создаёт картинку, браузер её рисует, а затем для получения данных использует метод toDataUrl - https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toDataURL
На сайте есть и пример работы:
JavaScript:
Развернуть Свернуть Копировать
let canvas = document.getElementById('canvas');
//Здесь что-то рисуется
let dataURL = canvas.toDataURL();
Так как у нас JS, то мы имеет возможность переопределить встроенные методы:
JavaScript:
Развернуть Свернуть Копировать
let toDataURLorg = HTMLCanvasElement.prototype.toDataURL; //сохраним оригинальную функцию

Object.defineProperty(HTMLCanvasElement.prototype, 'toDataURL', {
    value: function toDataURL(){
        //свои манипуляции
    }
})
В этих свои манипуляциях мы и можем делать что захотим и, как пример, отдавать свои уже заготовленные данные.
Но такой подход может быть и сработал бы когда-нибудь давно, а сейчас все усложнилось и такое не проканает) Переопределять объекты нужно качественно и для этого используются разные техники. Я не выкладывал те несколько строчек скрипта по замене канваса, так как в них используются мои методы переопределения объектов, которые в открытый доступ выкладывать мне не хочется.

Да и кому нужна эта запара, если скоро нам завезут новую эмуляцию канваса)


Большое спасибо за ответ! Да на обновление конечно большие надежды. Но обычно нужно стелить солому изо всех сил, чтобы потом не было мучительно больно за бесцельно прожитые годы-) Вероятно это моветон. Но мене поручили узнать, а можно ли как то с тобой связаться для улучшения анонимности в проектах? ЛС закрыта совсем)
 
Да на обновление конечно большие надежды
Ну мне вот оно не требуется, если честно) Я через постер живучий гугл регать никогда не думал
А так, вот я вчера запустил гулять для теста две сотни профилей. Они там посёрфили 8 - 10 сайтов, затем я чекал рекапчу V3 - практически все профили имели score 0.9, а остальные по 0.7, поэтому на данный момент не вижу никакой жизненно важной необходимости(для себя опять же). Затем профили пошли делать то, что задумывалось и блестяще справились с задачей без решения этой капчи через сервисы
ЛС закрыта совсем)
Не закрыта) Люди пишут
 
  • Оценить
Реакции: sw_sw

Вложения

  • 1620656413967.png
    1620656413967.png
    182 KB · Просмотры: 17
  • Оценить
Реакции: Peter Sarach

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)