Пожелание: добавить к функции set_random_webgl_fingerprint параметр $noise

Если вы обнаружили какие либо ошибки, недочеты и неудобства или другие незачеты в программе напишите нам об этом на этом форуме - мы бум исправлять
Ответить
Аватара пользователя
leo
Сообщения: 62
Зарегистрирован: 11 мар 2018, 21:19

Пожелание: добавить к функции set_random_webgl_fingerprint параметр $noise

Сообщение leo » 17 ноя 2019, 18:12

Спасибо за внедрение функции set_random_webgl_fingerprint.
Но хотелось бы при вызове этой функции формируемое изображение было предсказуемо.

Объясню на примере. Допустим я регистрирую в соцсети я 3 аккаунта: user1, user2, user3.
Перед регистрацией каждого вызываю функцию set_random_webgl_fingerprint() без параметров.
Вроде бы всё красиво - у каждого пользователя свой хеш, и соцсеть не поймет, что аккаунты зарегистрированы используя Human Emulator.
Для примера, пусть мы смотрим WebGL Report Hash (хеши тут и ниже по тексту взял с потолка):
user1 - FO6C8DUYNWNZK86B9178B29G9ZIX2TZI1
user2 - 4VF7TRACS2NZXU8JCXLTSZ4V8KBK4BGZ2
user3 - YAAR8YM1067NDTH7PX37RLRJ34A42K1H3

Но наступает "завтра" и мне нужно зайти в аккаунты этих 3х пользователей.
И у меня 2 варианта - либо совсем не вызывать функцию set_random_webgl_fingerprint(), тогда у всех 3х пользователей будут одинаковые хеши, либо вызывать, но тогда пользователи получат НОВЫЕ хеши, условно
user1 - 5V6Q2XBQPUXSO27R82R46OAUDR6TMFQ01
user2 - 25QAUGJQIVM6Q8EKZQY4HAJEDSPVCU8L2
user3 - QNKBD4JNTMAKWQXY7VB47ELM5M651GOP3

Что подумает соцсеть?
У пользователя user1 был хеш FO6C8DUYNWNZK86B9178B29G9ZIX2TZI1, а стал 5V6Q2XBQPUXSO27R82R46OAUDR6TMFQ01. Что это значит? Что его куки увели и запустили в другом месте. И конечно же соцсеть будет требовать смены пароля, подтверждения email, отправки скана паспорта или приема смс.
Даже если не потребует, то аккаунты, у которых хеши (отпечатки) будут меняться каждый день будут подозрительными. Лучше уж, чтобы у всех 3х пользователей был одинаковый хеш.

Что бы хотелось - добавить параметр $noise (шум). Тогда можно было бы для каждого аккаунта сгенерировать значение шума, и подставлять его в функцию set_random_webgl_fingerprint($noise) до логина в соцсеть.
К примеру хорошо было бы сделать условно так:
$noiseUser1 = 100;
$noiseUser2 = 200;
$noiseUser3 = 300;

Тогда вызываем
set_random_webgl_fingerprint($noiseUser1), заходим в соцсеть пользователем user1 и получаем значение хеша
FO6C8DUYNWNZK86B9178B29G9ZIX2TZI1
Потом set_random_webgl_fingerprint($noiseUser2), заходим в соцсеть пользователем user2 и получаем значение хеша
4VF7TRACS2NZXU8JCXLTSZ4V8KBK4BGZ2
И соответсвенно set_random_webgl_fingerprint($noiseUser3), заходим в соцсеть пользователем user3 и получаем значение хеша
YAAR8YM1067NDTH7PX37RLRJ34A42K1H3.

А на следующий день опять же вызываем фунции
set_random_webgl_fingerprint($noiseUser1);
set_random_webgl_fingerprint($noiseUser2);
set_random_webgl_fingerprint($noiseUser3);
И предсказуемо получаем значения те же значения хешей, которые получали "вчера"
FO6C8DUYNWNZK86B9178B29G9ZIX2TZI1
4VF7TRACS2NZXU8JCXLTSZ4V8KBK4BGZ2
YAAR8YM1067NDTH7PX37RLRJ34A42K1H3
для каждого отдельного пользователя.

В данном случае сколько дней мы бы не заходили пользователем user1, у него каждый раз будет один и тот же хеш. И это будет более типичным поведением обычного пользователя соцсети.


Аватара пользователя
huligun
Сообщения: 92
Зарегистрирован: 01 окт 2010, 19:13

Re: Пожелание: добавить к функции set_random_webgl_fingerprint параметр $noise

Сообщение huligun » 19 ноя 2019, 10:49

И для canvas тоже что то типа шумов т.к. $browser->set_canvas_toDataURL() передавать лабуду вместо генереного хеша тоже не айс.
По WebRTC https://browserleaks.com/webrtc тоже самое смысл отключать если по дефолту он включен и кто из юзеров реальных про его вообще знает.
Нужно подменять как минимум local_ip
Да есть комманда $connection->set_local_ip(2,"192.168.1.234") но это же прямое изменение ip адаптера, а нужно подменять.

Аватара пользователя
leo
Сообщения: 62
Зарегистрирован: 11 мар 2018, 21:19

Re: Пожелание: добавить к функции set_random_webgl_fingerprint параметр $noise

Сообщение leo » 19 ноя 2019, 19:43

В версии 7.0.43 функция set_random_webgl_fingerprint слегка сломалась.
Теперь если её вызвать, то в качестве модели видеокарты стало выдавать цифры подпадащие под 2^rand(-1,13).

Изображение
Изображение
Изображение

Если функцию set_random_webgl_fingerprint() не вызывать, то модель видеокарты показывает корректно, спасибо!

Кстати если шум формируется из нескольких параметров, может несколько параметров и добавить, например
set_random_webgl_fingerprint($noise1, $noise2, $noise3);

Аватара пользователя
bigfozzy
Site Admin
Сообщения: 3047
Зарегистрирован: 28 июл 2008, 17:24
Контактная информация:

Re: Пожелание: добавить к функции set_random_webgl_fingerprint параметр $noise

Сообщение bigfozzy » 19 ноя 2019, 21:52

Спасибо, сейчас разбираемся как лучше - чтобы все надежно было, в ближайшее время будет сделано.

Аватара пользователя
bigfozzy
Site Admin
Сообщения: 3047
Зарегистрирован: 28 июл 2008, 17:24
Контактная информация:

Re: Пожелание: добавить к функции set_random_webgl_fingerprint параметр $noise

Сообщение bigfozzy » 19 ноя 2019, 22:14

huligun писал(а):
19 ноя 2019, 10:49
И для canvas тоже что то типа шумов т.к. $browser->set_canvas_toDataURL() передавать лабуду вместо генереного хеша тоже не айс.
По WebRTC https://browserleaks.com/webrtc тоже самое смысл отключать если по дефолту он включен и кто из юзеров реальных про его вообще знает.
Нужно подменять как минимум local_ip
Да есть комманда $connection->set_local_ip(2,"192.168.1.234") но это же прямое изменение ip адаптера, а нужно подменять.
$browser->set_canvas_toDataURL() - там теперь параметр используется для генерации шума. Т.е картинка отрисовывается и поверх нее накладывается шум.

WebRTC по умолчанию отключен, утечки нет

По local_ip - будем думать как его подменить а не изменить физически.


Аватара пользователя
leo
Сообщения: 62
Зарегистрирован: 11 мар 2018, 21:19

Re: Пожелание: добавить к функции set_random_webgl_fingerprint параметр $noise

Сообщение leo » 21 ноя 2019, 17:24

Да, всё работает, большое спасибо!!!

Подскажите ещё пожалуйста
1) В чем отличие noiseImage и noiseParams? Насколько понимаю: noiseImage - это шум, накладываемый на изображение, то noiseParams - наверное изменение параметров отрисовки. Если да, что то каких именно параметров?
2) noiseImage и noiseParams принимают значения в виде цифр или строк? Если цифр - какой диапазон значений допустим?

Заранее спасибо.

Аватара пользователя
bigfozzy
Site Admin
Сообщения: 3047
Зарегистрирован: 28 июл 2008, 17:24
Контактная информация:

Re: Пожелание: добавить к функции set_random_webgl_fingerprint параметр $noise

Сообщение bigfozzy » 21 ноя 2019, 17:38

- noiseImage - число от 1 до 999999 - это шум накладываемый на отрисовку картинки через WebGl чем больше цифра - тем больше шум.
- noiseParams - строка из чисел - длиной 50 цифр, где каждая цифра в строке используется для создания шума параметров WebGl, по которым создается WebGL Report Hash на странице https://browserleaks.com/webgl - сами парметры на той же странице - ниже : (Max Vertex Attributes,Max Vertex Uniform Vectors и т.п)

Ответить