[閒聊] WOW抓圖浮水印暗藏帳戶名稱等資料
來源(www.ownedcore.com):http://goo.gl/kW2Cw
三天前Sendatsu在OwnedCore網站的論壇上說他在魔獸世界的抓圖上發現了奇怪的圖案,
經過三天來若干人的努力已經成功解碼並證實這些圖案其實是Blizzard暗藏的
數位浮水印,浮水印的內容包含抓這張圖的帳號名稱、精確到分鐘的伺服器時間、
伺服器名稱、伺服器IP等資料,且至少早在2008年的遊戲程式內就有發現這段
浮水印程式碼。
=如何看到浮水印=
這個浮水印只會出現在JPEG格式裡且品質設為1到9時,品質10的JPEG則沒有浮水印,
TGA格式的抓圖也沒有。
想自己要看到這個浮水印,請在遊戲內打:
/console SET screenshotQuality "9"
最好找一個純色的乾淨畫面,用alt+z隱藏介面後抓圖:
http://i.imgur.com/HyGGl.jpg

用任何影像處理軟體(IrfanView, Photoshop)的銳利化濾鏡,即可看到以下圖案:
http://i.imgur.com/ZK5l1.jpg


可以看到分成三排,第一排有4塊重複的圖案,第二排有3塊,第三排有4塊
把重複出現的那塊分離出來:
http://i.imgur.com/Kx3tm.jpg

可以看到每5x4個pixel其實是一個bit。
以上圖浮水印為例,由最左上角開始往下數八格就是帳號名稱的第一個字母:
白
黑
黑
黑
白
白
黑
黑
在二進位是00110001也就是ASCII Code的數字"1"
在接下去:
黑
黑
黑
黑
白
白
黑
黑
在二進位是00110000也就是ASCII Code的數字"0"
如此繼續下去就可以得出這張抓圖的使用這帳號名稱是107642169 (這是個試玩帳號)
=反編譯程式結果=
_Mike在MacOS X上用反編譯軟體IDA Pro將wow.exe反編譯後確實發現有相關的函式名稱:
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; ScrnScreenshot(void (*)(int), unsigned char *, unsigned int, char const*,
char const*, char const*)
__Z14ScrnScreenshotPFviEPhjPKcS3_S3_ proc near
; CODE XREF: Script_Screenshot(lua_State *)+37
; sub_76C3C0+36
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
arg_C = dword ptr 14h
arg_10 = dword ptr 18h
arg_14 = dword ptr 1Ch
push ebp
mov ebp, esp
mov eax, [ebp+arg_0]
mov ds:__ZL15s_captureScreen, eax ; s_captureScreen
mov eax, [ebp+arg_4]
mov ds:__ZL16s_pWatermarkData, eax ; s_pWatermarkData
mov eax, [ebp+arg_8]
mov ds:__ZL21s_uWatermarkDataBytes, eax ; s_uWatermarkDataBytes
mov eax, [ebp+arg_C]
mov ds:__ZL18s_screenshotFolder, eax ; s_screenshotFolder
mov eax, [ebp+arg_10]
mov ds:__ZL24s_screenshotNameOverride, eax ; s_screenshotNameOverride
mov eax, [ebp+arg_14]
mov ds:__ZL19s_depthNameOverride, eax ; s_depthNameOverride
leave
retn
__Z14ScrnScreenshotPFviEPhjPKcS3_S3_ endp
==========================================================================
用Mac版的原因是因為Windows版的機器碼反編譯後看不到函式名稱。
其中s_pWatermarkData總共是88個Byte,其中包含64個Byte是帳號名稱、
4個Byte的時間,與20Byte的其他東西。
_Mike四小時前寫了一個工具可以在一些處理過的圖檔讀出浮水印資料:
https://dl.dropbox.com/u/12654979/WatermarkTool.png

但是要在任何抓圖都讀得出來還需要寫一些影像處理的程式,目前還沒有人寫出來。
如此Blizzard可以從網路上大部分的wow截圖找到原拍照的使用者。
要避免截圖產生浮水印只要將JPEG品質設為"10"即可:
/console SET screenshotQuality "10"
JPEG品質我在5.0.5看到的預設值是"3",用以下指令即可顯示你目前的品質設定:
/run print(GetCVar("screenshotQuality"))
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.28.73
推
09/11 23:49, , 1F
09/11 23:49, 1F
推
09/11 23:50, , 2F
09/11 23:50, 2F
推
09/12 00:06, , 3F
09/12 00:06, 3F
推
09/12 00:08, , 4F
09/12 00:08, 4F
推
09/12 00:11, , 5F
09/12 00:11, 5F
推
09/12 00:11, , 6F
09/12 00:11, 6F
推
09/12 00:13, , 7F
09/12 00:13, 7F
→
09/12 00:24, , 8F
09/12 00:24, 8F
推
09/12 00:29, , 9F
09/12 00:29, 9F
這個數位浮水印的設計其實是可以抵抗一定程度的放大、縮小與裁減
推
09/12 00:37, , 10F
09/12 00:37, 10F
※ 編輯: hotdogee 來自: 140.112.28.73 (09/12 00:43)
推
09/12 00:44, , 11F
09/12 00:44, 11F
推
09/12 00:46, , 12F
09/12 00:46, 12F
推
09/12 00:51, , 13F
09/12 00:51, 13F
推
09/12 00:53, , 14F
09/12 00:53, 14F
推
09/12 01:08, , 15F
09/12 01:08, 15F
推
09/12 01:25, , 16F
09/12 01:25, 16F
推
09/12 01:26, , 17F
09/12 01:26, 17F
推
09/12 01:59, , 18F
09/12 01:59, 18F
推
09/12 02:27, , 19F
09/12 02:27, 19F
推
09/12 03:01, , 20F
09/12 03:01, 20F
推
09/12 03:52, , 21F
09/12 03:52, 21F
→
09/12 03:53, , 22F
09/12 03:53, 22F
推
09/12 06:32, , 23F
09/12 06:32, 23F
推
09/12 08:08, , 24F
09/12 08:08, 24F
推
09/12 08:16, , 25F
09/12 08:16, 25F
→
09/12 08:18, , 26F
09/12 08:18, 26F
→
09/12 08:19, , 27F
09/12 08:19, 27F
→
09/12 08:19, , 28F
09/12 08:19, 28F
→
09/12 08:20, , 29F
09/12 08:20, 29F
推
09/12 09:14, , 30F
09/12 09:14, 30F
→
09/12 09:16, , 31F
09/12 09:16, 31F
※ 編輯: hotdogee 來自: 114.32.100.178 (09/12 11:39)
→
09/12 11:43, , 32F
09/12 11:43, 32F
是的
※ 編輯: hotdogee 來自: 114.32.100.178 (09/12 11:44)
推
09/12 11:57, , 33F
09/12 11:57, 33F
→
09/12 12:02, , 34F
09/12 12:02, 34F
→
09/12 12:03, , 35F
09/12 12:03, 35F
推
09/12 15:23, , 36F
09/12 15:23, 36F
推
09/12 15:48, , 37F
09/12 15:48, 37F
WOW 近期熱門文章
20
77
29
52
PTT遊戲區 即時熱門文章