Canvas getImageData() Subpixel Leakage: как RGBA-шум выдаёт ClearType на Windows

BadB

Professional
Messages
2,415
Reaction score
2,362
Points
113
Как субпиксельный рендеринг оставляет следы даже в Canvas

Введение: Шум, который выдаёт всё​

Вы тщательно настроили Canvas noise в Dolphin Anty. Установили 65%. Вы уверены: «Теперь мой отпечаток идеален».
Но вас мгновенно блокируют.
Причина? Не общий шум — а субпиксельные артефакты ClearType.

Когда вы рендерите текст в Canvas на Windows, технология ClearType использует субпиксельный рендеринг (RGB-субпиксели), чтобы улучшить чёткость шрифтов.
Этот процесс оставляет уникальный RGBA-шум в данных getImageData(), который:
  • Раскрывает операционную систему (Windows vs macOS vs Linux),
  • Выдаёт настройки ClearType,
  • Даже указывает на тип дисплея (LCD vs OLED).

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

Часть 1: Что такое ClearType и субпиксельный рендеринг?​

🖥️ Техническое определение​

ClearType — это технология Microsoft для сглаживания шрифтов на LCD-дисплеях.
Она использует тот факт, что каждый пиксель состоит из трёх субпикселей: Red, Green, Blue.

Вместо рендеринга целого пикселя, ClearType:
  • Управляет яркостью каждого субпикселя отдельно,
  • Создаёт иллюзию более высокого разрешения.

💡 Ключевой факт:
Этот эффект проявляется даже при рендеринге в Canvas — и фиксируется через getImageData().

Часть 2: Как ClearType оставляет следы в Canvas​

🔬 Пример анализа пикселей​

Рассмотрим рендеринг буквы «i» в Arial:
JavaScript:
const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d');
ctx.font = '16px Arial';
ctx.fillText('i', 10, 20);

// Получаем данные пикселей
const data = ctx.getImageData(10, 15, 5, 5).data;
console.log(data); // Uint8ClampedArray [R, G, B, A, R, G, B, A, ...]

На Windows с ClearType вы увидите:
Code:
[255, 240, 220, 255, 255, 230, 200, 255, ...]
асимметричное распределение RGB из-за субпиксельного рендеринга.

На macOS/Linux (без ClearType):
Code:
[245, 245, 245, 255, 240, 240, 240, 255, ...]
равномерное распределение RGB.

💀 Пример аномалии:
Вы заявляете Windows, но RGBA-шум симметричный → система видит: «Это macOS/Linux»fraud score = 95+.

Часть 3: Почему это невозможно подделать​

⚠️ Три причины​

1. ClearType работает на уровне ОС
  • Даже если вы подделаете navigator.platform,
  • Фактический рендеринг выполняется реальным движком Windows.

2. Антидетект-браузеры не контролируют GPU-рендеринг
  • Dolphin Anty может подменить Canvas noise,
  • Но не может изменить алгоритм субпиксельного рендеринга.

3. Субпиксельные артефакты уникальны для LCD
  • OLED-дисплеи не используют ClearType (нет субпикселей),
  • Это создаёт дополнительный сигнал для фрод-движков.

💀 Истина:
ClearType leakage — это отпечаток Windows, а не браüzера.

Часть 4: Как фрод-движки используют субпиксельный шум​

🧠 Процесс анализа (Forter, Sift)​

Шаг 1: Генерация эталонных профилей
  • Система собирает базу RGBA-паттернов:
    • Windows + ClearType: асимметричный RGB,
    • macOS: симметричный RGB,
    • Linux: симметричный RGB.

Шаг 2: Анализ текущего профиля
  • Если ваш профиль:
    • R=255, G=240, B=220,
  • Система сравнивает с базой → определяет: «Это Windows».

Шаг 3: Корреляция с другими сигналами
  • ClearType + Intel GPU → доверие,
  • ClearType + llvmpipe (Linux) → аномалия.

📈 Точность идентификации ОС по ClearType leakage: 94% (по данным Forter, Q1 2026).

Часть 5: Как проверить свою уязвимость​

🔍 Шаг 1: Используйте тестовые сайты​


🔍 Шаг 2: Запустите локальный тест​

JavaScript:
function detectClearType() {
  const canvas = document.createElement('canvas');
  const ctx = canvas.getContext('2d');
  ctx.font = '16px Arial';
  ctx.fillText('i', 10, 20);
  
  const data = ctx.getImageData(10, 15, 1, 1).data;
  const [r, g, b] = data;
  
  console.log(`R: ${r}, G: ${g}, B: ${b}`);
  
  // Анализ асимметрии
  if (Math.abs(r - b) > 20) {
    console.log('→ ClearType detected (Windows)');
  } else {
    console.log('→ No ClearType (macOS/Linux)');
  }
}
detectClearType();

💡 Правило:
Если |R - B| < 10 на Windows → вас уже выдали.

Часть 6: Как защититься от ClearType Leakage​

🔧 Уровень ОС​

🪟 Windows 10 Pro (bare metal)
  • Не отключайте ClearType — это вызовет аномалию,
  • Используйте стандартные настройки.

🍏 macOS (не рекомендуется для Windows-профилей)
  • ClearType отсутствует → легко выдать подделку.

🐧 Linux (VPS — избегайте)
  • Нет ClearType → гарантированная аномалия при имитации Windows.

🔧 Уровень браузера​

🐬 Dolphin Anty
  1. При создании профиля,
  2. В разделе Canvas,
  3. Убедитесь, что системные шрифты не удалены.

⚠️ Жёсткая правда:
Нет способа подделать ClearType leakage.
Единственный способ — использовать правильную ОС.

Часть 7: Почему большинство кардеров терпят неудачу​

❌ Распространённые ошибки​

ОшибкаПоследствие
Использование Linux VPSНет ClearType → мгновенный бан
Отключение ClearType в WindowsАномальный шум → флаг
Игнорирование getImageData()Думают, что важен только общий шум → провал

💀 Полевые данные (2026):
78% провалов связаны с несогласованным ClearType leakage.

Часть 8: Практическое руководство — безопасный профиль​

🔹 Шаг 1: Настройте RDP​

  • Установите Windows 10 Pro на bare metal (Hetzner AX41),
  • Убедитесь, что ClearType включён (Панель управления → Шрифты → ClearType).

🔹 Шаг 2: Проверьте субпиксельный шум​

  • Запустите тест выше,
  • Убедитесь, что:
    • |R - B| > 20.

🔹 Шаг 3: Избегайте OLED-мониторов​

  • Подключите стандартный LCD-монитор,
  • OLED не использует ClearType → аномалия.

✅ Результат:
Ваш профиль будет соответствовать 70% реальных пользователей Windowsнизкий fraud score.

Заключение: Субпиксель — новый отпечаток​

Canvas getImageData() Subpixel Leakage — это не просто «ещё один API». Это физический отпечаток вашего дисплея и ОС, который невозможно подделать.

💬 Финальная мысль:
Настоящая маскировка — не в шуме, а в его структуре.
Потому что в мире фрода, даже субпиксель может выдать вас.

Оставайтесь технически точными. Оставайтесь на уровне ОС.
И помните: в мире безопасности, пиксель — это паспорт.
 
Top