Sweet. Cropped the 1024*768 to this: https://i.imgur.com/XHLRX.png
Sweet. Cropped the 1024*768 to this: https://i.imgur.com/XHLRX.png
yup thats it
Pure black screens have no changes in them at all, no opacity or RGB changes... so just keep it in mind if you're writing anything to use an actual SS that the watermark is removing some of the RGB values.
Last edited by Thundathigh; 09-13-2012 at 05:16 AM.
I still believe it has something to do with luminance. They even mention it in their patents: Patent US7822969 - Watermark systems and methods - Google Patents
Based on some code I found on the Web, you can use:
Y = 0.2126*R + 0.7152*G + 0.0722*B
if Y < 128 then black else white
Can someone try this? Thank you
Exact copy & paste of what mike gave me. I'll try fine tuning it after I finish my work...
Already tried, thats what my patch does after it crops it and tries to isolate it into a black & white pattern. It seems to leave some parts out when converting the colors from sharpened to pure.
Here is a normal vs. patched comparison: https://i.imgur.com/1sFQl.jpgCode:// look at every pixel in the rectangle for (Int32 xx = rectangle.X; xx < rectangle.X + rectangle.Width; xx+=4) { for (Int32 yy = rectangle.Y; yy < rectangle.Y + rectangle.Height; yy+=5) { Int32 avgR = 0, avgG = 0, avgB = 0; Int32 imagePixelCount= 0; // average the color of the red, green and blue for each pixel in the // size while making sure you don't go outside the image bounds for (Int32 x = xx; (x < xx + 4 && x < image.Width); x++) { for (Int32 y = yy; (y < yy + 5 && y < image.Height); y++) { Color pixel = image.GetPixel(x, y); avgR += pixel.R; avgG += pixel.G; avgB += pixel.B; imagePixelCount++; } } avgR = avgR / imagePixelCount; avgG = avgG / imagePixelCount; avgB = avgB / imagePixelCount; float Y = 0.2126f * avgR + 0.7152f * avgG + 0.0722f * avgB; if (Y > 128) { avgR = 255; avgG = 255; avgB = 255; } else { avgR = 0; avgG = 0; avgB = 0; } //set each pixel to that color for (Int32 x = xx; x < xx + 4 && x < image.Width && x < rectangle.Width; x++) for (Int32 y = yy; y < yy + 5 && y < image.Height && y < rectangle.Height; y++) image.SetPixel(x, y, Color.FromArgb(avgR, avgG, avgB)); } }
Last edited by eldavo1; 09-13-2012 at 06:31 AM.
So is the goal right now to create a program that can automatically get all the info out of any screenshot? I'm very impressed.
Hopefully. I doubt you can extract enough information out of normal screenshots anyway, but currently we can do it with perfect screenshots, trying to get it with screenshots on a blank terrain then on normal screenshots.
What I done quickly: You can change quality of luminosity and cropping. Has a patch preview now (although aspect ratio is broken), I removed the image manipulation besides luminescence and cropping because it didnt work very well. My GUI skills aren't the greatest either, sorry.
EXE: ImageToBinary.exe
Image of it: https://i.imgur.com/ilAtt.png
Last edited by eldavo1; 09-13-2012 at 07:12 AM.
This looks like a false alarm to me, probably caused by IrfanView integer rounding funkiness.
The posted all-white image [uploaded at https://i.imgur.com/HyGGl.jpg] that's supposed to to contain the stego really is all white. Undoubtedly the poster has detected some silly rounding artifact from IrfanView, which doesn't use the greatest jpeg libraries. The rest of the comments are just a goose chase extracting meaning from rounding noise.
Here's a few simple tests.
Compare every single pixel's RGB value to 0xff in Matlab:
>> A = imread('~/Downloads/HyGGl.jpg'); >> size(A) ans = 225 400 3 >> A(1,1,1) ans = 255 >> all(A( == 255) ans = 1
Or just try to equalize it in Adobe Photoshop and get the error message "Could not complete the Equalize command because the image has only one brightness value."
That's enough, but let's take the opportunity to play with stegdetect (looks for a few common strategies) and look at the jpeg headers.
There's no there there.
$ sudo port install jhead stegdetect
$ stegdetect HyGGl.jpg
HyGGl.jpg : negative
$ jhead -v HyGGl.jpg
Jpeg section marker 0xdb size 67
Jpeg section marker 0xdb size 67
JPEG image is 400w * 225h, 3 color components, 8 bits per sample
Jpeg section marker 0xc4 size 21
Jpeg section marker 0xc4 size 20
Jpeg section marker 0xc4 size 20
Jpeg section marker 0xc4 size 20
File name : HyGGl.jpg
File size : 846 bytes
File date : 2012:09:13 09:46:50
Resolution : 400 x 225
Yes... everyone here is goose and Adobe Photoshop use same library as IrfanView... Code in client for include watermark in screenshot is bug from IrfanView, we know... Open your screen and use Sharpening filter in any photoediting soft you will see. I think that white "screenshot" is not screenshot from game, just white image to show what you need achieve to be able extract watermark
BTW you can get "clear" screenshot if you take your view distance to min and fly high up then take screenshot without UI and 1st person view
Last edited by Trixiap; 09-13-2012 at 10:11 AM.
The imgur.com images and the OP's original images are different.
I retract my comments above based on the imgur.com file—when you look at the poster's original files, not the imgur.com files, you clearly see the watermarks by simple sharpening.
Furthermore, stegdetect gets a hit with the F5 algorithm:
$ stegdetect -t F scr2sm.jpg
scr2sm.jpg : f5[0.312094](**)
stegbreak doesn't go after F5, but I'd look to F5 crackers first to extract the information. Anyone done this yet?
I really like how this is moving along!
Yes, the white screenshot was purely white, not to be taken literally. In order to avoid any further confusion I replaced it with one that contains a watermark inside: https://i.imgur.com/c9h2w.jpg
That's an interesting find. I had used "StegSpy2.1" and it only gave me a false positive on one image and nothing on the rest.
If this is indeed true, someone needs to have a look at it. http://cs.marlboro.edu/term/spring06...reaking_f5.pdf
Last edited by Sendatsu; 09-13-2012 at 01:13 PM.
Is there anyway i can help with this? I know a little bit of java ( ytuscheduler - The only desktop app that can schedule a Youtube upload - Google Project Hosting ) and a little unix scripting ( autocrack - Automatic WEP cracking - Google Project Hosting )
Hello ukilliheal
Thanks for offering! We are currently trying to find a way to identify the embedded watermark inside normal screenshots. We are experimenting with luminance and other factors to differentiate between actual pixels and altered ones. Take a look at the currently available source codes, screenshots, papers and patents mentioned in this thread and perhaps you will be able to figure out a way to extract this without any loss.
We also have a few open questions like whether this watermark has been inserted using a steganography algorithm like F5 (see above) or perhaps some other multiple-pass method.
Whatever you can come up with will help