Как стать автором
Обновить

В скриншотах игры WoW обнаружены цифровые водяные знаки (userID, time, realm)

КриптографияОбработка изображений


Пользователи игрового форума OwnedCore обнаружили скрытые водяные знаки, которые автоматически внедряются в JPG-файлы, если вы делаете скриншот в игре World of Warcraft. Если сделать скриншот чистой области, открыть файл в IrfanView или каком-нибудь редакторе, увеличить резкость с максимальной настройкой фильтра, повторить процедуру несколько раз, то заметен явный паттерн, который многократно повторяется.

Пользователи уже написали программку, которая автоматически извлекает информацию из водяных знаков. Это незашифрованный текст ASCII, содержащий имя пользователя, время снятия скриншота с точностью до минуты и IP-адрес реалма, включая приватные сервера.

Таким образом, если к вам попал оригинальный скриншот из игры WoW, то вы можете восстановить имя пользователя, который его сделал, время снятия скриншота и координаты (реалм). Вероятно, это нужно компании Blizzard для расследования всяких инцидентов, связанных с нелегальной торговлей цифровыми товарами, продажей аккаунтов и другими нарушениями правил.

Программа для декодирования графических файлов: ImageToBinary.exe

Ещё одна программа на C# (требует .NET 4.5): WatermarkTool.rar



Программа на Java для извлечения цифровой метки
import java.awt.image.BufferedImage;
import java.io.*;
import javax.imageio.*;

public class ReadWatermark 
{
    static final int pWidth=352; // Pattern width
    static final int pHeight=240; // Pattern height
    
    static final int pxWidth=4; // Bit width
    static final int pxHeight=5; // Bit height    

    static final int bWidth=88; // Bits table width
    static final int bHeight=48; // Bits table height

    static final int Black=0xFF000000; // Black = 0
    static final int White=0xFFFFFFFF; // White = 1
    
    static final String filenameSrc = "pattern.bmp"; // Stores the filename
    
    
    public static byte[][] getPatternBits(BufferedImage image)
    {
            byte barcode[][] = new byte[bWidth][bHeight]; // Stores the bits

                for (int y=0, i=0; y<pWidth; y+=pxWidth, i++)
                    for (int x=0, j=0; x<pHeight; x+=pxHeight, j++)
                        if (image.getRGB(y+1,x)==Black)
                        // we check y+1 to target correctly (see pattern)
                                barcode[i][j]=0; // got black
                        else
                                barcode[i][j]=1; // got white
            return barcode;		
    }
    
    
    public static BufferedImage readImage(File file)
    {
            try
            {
                return (ImageIO.read(file));
            }
            catch (IOException e) 
            {
                return (null);
            }   		
    }
    
    
    public static void main(String[] args)
    {
        byte barcode[][]; // Stores the bits

        File fileSrc = new File(filenameSrc); // Create file reference

        BufferedImage imageSrc=readImage(fileSrc); // Read file

        if (imageSrc==null)
            System.exit(1); // no file found
        
        barcode=getPatternBits(imageSrc); // Get bits

        for (int i=bWidth-1; i>=0; i--)
        { // Print the pattern (1 row here is 1 column there, right to left)
            for (int j=bHeight-1; j>=0; j--)
                System.out.print(barcode[i][j]);
            System.out.println();
        }
    }
}

Как видим, среди игроков WoW есть много грамотных ребят. Они исследовали свои архивы и обнаружили, что скрытый код внедряется в скриншоты как минимум с 2008 года (Patch 3+), когда компания Blizzard была куплена Activision.

Посмотреть на код в своих скриншотах вы можете, сделав скриншот с качеством меньше 1-9, и запустив одну из вышеуказанных программ.

/console SET screenshotQuality "9"

Пока что не удалось сделать инструмент, который извлекает водяные знаки из скриншотов с качеством 10, а также из скриншотов в формате сжатия без потерь TGA. Возможно, водяные знаки там отсутствуют.
Теги:стеганографияшифрводяные знакиBlizzardWorld of Warcraft
Хабы: Криптография Обработка изображений
Всего голосов 103: ↑97 и ↓6 +91
Просмотры100.4K

Похожие публикации

Факультет разработки игр
16 июня 2021180 000 ₽GeekBrains
Полный курс по Data Science
16 июня 2021114 000 ₽SkillFactory
Профессия Data Science
16 июня 2021114 000 ₽SkillFactory
Факультет веб-разработки
16 июня 2021270 000 ₽GeekBrains
Профессия Веб-разработчик
16 июня 202166 000 ₽SkillFactory

Лучшие публикации за сутки