10 comments

[ 3.8 ms ] story [ 33.6 ms ] thread
I don't understand the need for this. Hosting 10 GB costs $1 per month on Rackspace Cloud Files and even less on Amazon S3.

Secondly, if you use a paid service you don't need to run your files through scripts to upload them, and you don't risk the files being taken down by the image host admins.

Also, while hosting non-image files on image file hosts technically might not be illegal, it still essentially is abusing a free service. Do you really want to be that guy?

>I don't understand the need for this.

The killer app for this would likely be data leaks and piracy.

>while hosting non-image files on image file hosts technically might not be illegal, it still essentially is abusing a free service

Those are image files, just not ones meant to be directly viewed by humans. I wonder how many image hosts explicitly forbid such images from being hosted in their ToS. If the idea behind this spreads I would expect many of them to do so.

Edit: IANAL, but I wonder if it would be hard to define legally what exactly those images are. If you say they're images not meant for human viewing, well, what about a photograph of a printed QR code? It need not only show a QR code; it can be an otherwise aesthetically pleasing picture that also features a QR code somewhere. Same with this encoding technology: what happens if instead of dedicating the whole picture to the encoded binary data you embed it in a larger artistic image?

You're thinking of steganography [1], hiding the existence of information in an image (or other medium).

I'm aware of at least one case where Russian spies were known to have actually passed messages this way: "they embedded coded texts in ordinary-looking images posted on the Internet," according to the NYT [2].

[1] http://en.wikipedia.org/wiki/Steganography

[2] http://topics.nytimes.com/top/reference/timestopics/subjects...

>You're thinking of steganography

Not quite. Having a QR code featured in a photograph isn't steganography since the existence of information is hardly hidden at all. Rather than hiding the information's existence what I'm considering here is how you could make it legally difficult to unequivocally prohibit spreading information that's in plain sight (think "Free Speech Flag" [1]).

[1] https://en.wikipedia.org/wiki/File:Free-speech-flag.svg

Wont it cause an error for being an invalid image? Have you tested this?
I think the method behind s2png is converting binary data to RGB(A) pixel data, so the result should be a perfectly valid (albeit weird-looking) image. As a bonus, you automatically gain Zlib compression of your data through this method.
I peeked at the code behind s2png, and this doesn't do what you might think from the title. It just copies the data byte-for-byte into the pixels of a PNG image, and when you want the original file back, you need to use the same utility to decode the image.

Still a fun little project though.

This is utterly trivial.

The s2png program can be written in about 5 minutes by anyone with a good image library in any language. You didn't even write the program yourself, you linked to a Sourceforge project, labeled version 0.01, that hasn't been touched in seven years.

And I don't understand: What exactly is the value-add of your Github project? It 7zips the files and handles splitting and merging of large files?

And wait...you actually had to use Wine for this? Try apt-cache search libgd and you'll find the (single!) dependency is already packaged (at least on Linux Mint 14, which I presume means these packages also exist on most Ubuntu- or Debian-like systems):

    sudo apt-get install libgd2-xpm-dev libgd2-xpm
>It 7zips the files and handles splitting and merging of large files?

Yes. It also handles the uploading and the downloading.

>Try apt-cache search libgd and you'll find the (single!) dependency is already packaged

If you actually try to compile and run s2png you'll see that it segfaults when you compile it in Ubuntu 12.10 (so also in Linux Mint 14) and 12.04, probably because it was written with libgd1 in mind. I had a few people try it and it only compiled to a usable binary in Fedora.