すごいゲームのスクリーンショットには、電子透かし(ユーザーID、時間、領域)が表示されます





OwnedCoreゲームフォーラムのユーザーは、World of Warcraftでスクリーンショットを撮ると、JPGファイルに自動的に埋め込まれる隠しウォーターマークを発見しまし 。 きれいな領域のスクリーンショットを撮り、IrfanViewまたは何らかのエディターでファイルを開き、最大フィルター設定でシャープにし、手順を数回繰り返すと、何度も繰り返される明らかなパターンに気づくでしょう。



ユーザーは、透かしから自動的に情報を抽出するプログラムをすでに作成しています。 これは、ユーザー名、分単位で正確なスクリーンショットを撮るのにかかる時間、およびプライベートサーバーを含むレルムのIPアドレスを含む暗号化されていないASCIIテキストです。



したがって、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年(パッチ3以降)にBlizzardがActivisionに買収されて以来、隠しコードがスクリーンショットに埋め込まれていることを発見しました。



スクリーンショットのコードを確認するには、1〜9未満の品質のスクリーンショットを撮り、上記のプログラムのいずれかを起動します。



/console SET screenshotQuality "9"







これまでのところ、品質が10のスクリーンショットから、およびロスレス圧縮形式TGAのスクリーンショットから透かしを抽出するツールを作成することはできませんでした。 透かしがない場合があります。



All Articles