back to article Developer codes VNC-over-GIF tool

However you choose to pronounce GIF, developer Andrey Sidorov has found a great new use for the recently-resurgent-thanks-to-Tumblr file format: displaying a remote device. Sidorov used the weekend just passed to unleash a tool called VNC-over-GIF that does what is says on the can. For the uninitiated, Virtual Network Control …


This topic is closed for new posts.
  1. JimC

    Can't help thinking

    There musy be some nasty potential - or at least inspiration -for malware here...

    1. Anonymous Coward
      Anonymous Coward

      Re: Can't help thinking

      Half the time spent hacking is all about "just watching" (when you are not a script kiddie)

  2. Cliff

    Sidorov doesn't feel it solves any particular problem...

    Bit of a GIF lemon then?

    1. Robin

      Re: Sidorov doesn't feel it solves any particular problem...

      Good work!

      (pretend there's a GIF animation of slow hand-clapping here)

      1. Cliff


        It's a jift I have

  3. M Gale

    VNC over GIF?

    So probably about as efficient as VNC on its own then.

    Bloody awful protocol, and usually used on systems that are running an Xorg/X11 server. Wasn't that originally designed to be a multi-user GUI anyway?

    1. M Gale

      Re: VNC over GIF?

      Oh come on downvoter, let's compare VNC with RDP shall we?

      I'm the last person to cheer on Microsoft (okay, maybe Eadon is), but VNC is a shit protocol.

      Not detracting from the amazingly hackerish thing this guy did, but VNC is still shit.

      1. Anonymous Coward
        Anonymous Coward

        Re: VNC over GIF?

        As I understand it, RDP is more like X than VNC - the drawing commands are sent across the wire, not the results of the drawing. So comparing RDP to VNC is like comparing apples to DRAMs.

        Again, I cannot speak for RDP, but I know that X does better over lower bandwidth links with low latency, but VNC works where X falls down, which is links with insufficient bandwidth to carry all the drawing commands. X will just die on such a link, RDP will just update slowly.

      2. JaimieV

        Re: VNC over GIF?

        I don't know what Apple have done to VNC with their OSX builtin Screen Sharing feature, but it's damn near realtime for fullscreen updates.

        It's still a basically rubbish bitmap-based brute-force method though, unlike the relative elegance of RDP or X.

    2. h3

      Re: VNC over GIF?

      VNC is ok in certain situations when it is optimised properly.

      (The Sun Visualisation thing using the XVR1000 / Turbo VNC / VirtualGL worked pretty well).

      It is ok on a fast lan as well.

      Xvnc works ok with xrdp.

      VNC works much faster than remote X

    3. Tim Bates

      Re: VNC over GIF?

      "Bloody awful protocol"

      That it may be - but it's also well documented, open and simple.

  4. Dan 55 Silver badge

    "I had to add code to allow the GIF library to stream data"

    If he's had to change the decoding library then it's not really GIF.

    1. Twm Davies

      Re: "I had to add code to allow the GIF library to stream data"

      GIF supports custom data blocks so you can easily embed extra information into the file without breaking other readers.

      GIF allows you to build up changes ontop of a previous image so is naturally quite suited to this sort of application. Though it's still limited to 256 colours

    2. Anonymous Coward
      Anonymous Coward

      Re: "I had to add code to allow the GIF library to stream data"

      Probably he had to change the ENCODER library, not the decoder. The encoder had to be changed to accept a potentially endless stream of delta frames.

      The decoder already has that, as there is nothing in the GIF header that tells the decoder how big the image will be - you decode until you hit EOF>.

  5. banjomike
    Thumb Up

    ... watching a remote device may come in handy ...

    ... well, he is certainly correct with that remark.

  6. Mage


    What's the advantage over the ancient already MJPEG (NOT MPEG) format?

    I suppose 256 colours + palette is acceptable instead of full colour and no palette.

    Of course MJPEG was designed for files not streaming, but unlike GIF was envisaged to be used for video.

    This is unlikely to work with any GIF viewer as they expect a file and can't read a stream. Also there is a hardly used animated version of PNG, The APNG format supports 24 bit and transparency as well as 256 colour palettes. Surely a better starting point if you don't like MJPEG (i.e. licence conditions or content non-photographic)?

    An MPEG-TS can in theory be used for streaming M-APNG or M-GIF variant, MJPEG etc and not just MPEG1, MPEG2, MPEG4 etc as it's just a multiplex envelope and has advantage it can do sound, non-image data (IP Broadcast or non-IP, even Unicast using DOCSIS) etc all in same stream.

    At least he admits he can't see the point of it!

    1. M Gale

      Re: Umm..

      As far as I'm aware, MJPEG is basically a whole shatload of jpeg pictures arranged in a container. So, for every new frame, you have to send the whole screen. IIRC animated GIFs are, in most cases, sent as a bunch of delta values, so only what has changed since the last frame is sent over the wire.

      If you were streaming video, then MJPEG would probably be better (though nowhere near as good as one of the MPEG standards). For something where the only thing that might have changed is the mouse pointer though, animated GIF is probably better.

      Though yes, the whole thing seems to have been "because it's cool" rather than "because it makes sense."

      1. jai

        Re: Umm..

        doing things because they're cool rather than because they make sense used to be what mucking about on computers was all about, wasn't it?

    2. Anonymous Coward
      Anonymous Coward

      MJPEG: JPEG sucks for text

      JPEG assumes an image has few high frequency components. Images like this text look very ugly on JPEG as you lose the high frequency components that make the letter sharp.

      GIF, PNG, and such make no such assumptions - so yes, they don't compress as much, but you don't turn letters into artifact soup.

    3. Brennan Young

      Gif colour limits

      It's not well known, but gifs *can* contain more than 256 colours. The restriction is that the image be divided into contiguous rectangles (pixel dimensions of your choice) and *these* should have the same (max 256 colour) palette. So the top half of the gif could be greyscale and the bottom half could be 'vivid' or whatever those funny old names for cluts were. You can have as many of these blocks as you want. Presumably you could have 1x1 pixel blocks, each with their own palette but then it would scarcely be efficient compression. Still it's a nice hack not a million miles from Amiga's ingenious HAM. Unfortunately there are very few tools which support the export of such exotic objects. Browser support is pretty good however. There's a page on the web which shows off the technique. Can't be arsed to google for it though.

  7. Anonymous Coward
    Anonymous Coward

    I've often wondered about VNC over MPEG

    Give the plethora of devices that can render an MPEG2 or MPEG4 stream, I've wondered about making a VNC to MPEG[2|4] over uPnP stream tool - that would allow a device such as a Box Office Patriot to display (though not interact with) a client running a reasonable OS, without modifying the software on the device.

    And if the VNC server were able to "see" the drawing instruction stream (e.g. xvnc), then the generation of the MPEG stream could be optimized using that information (e.g. moving a window could just generate the needed MPEG4 motion vectors rather than generating a pixel block update).

  8. OffBeatMammal


    in theory I wonder if interaction would be possible from javascript tracking mouse clicks etc, grabbing the X and Y and pushing it back.

    though why you'd want to is beyond me!

  9. Eddy Ito


    I propose that the GIF version be pronounced vee-en-ke, as rightly it should.

  10. John Smith 19 Gold badge
    Thumb Up

    So roughly it sends a *picture* of a (notional) vaule of a gauge, rather than the actual number

    Which suggests that for control you'd send back a "picture" of a control dial or a picture of a switch setting.

    Handy if you don't have any normal control or monitoring protocol, or perhaps you don't want whose being monitored to know they are being monitored.

    Thumbs up for general cleverness.

    But I don't know what it's for either.

  11. brain_flakes

    Sidorov , Y U NO HTML5?

    Gif? What's wrong with the canvas tag?

    1. Havin_it

      Re: Sidorov , Y U NO HTML5?


  12. Robert Carnegie Silver badge

    Does this mean

    that an ordinary web browser - for instance - can be used to view the output from VNC? That could be useful, in an office where you may not be allowed to install the VNC client.

    1. Anonymous Coward
      Anonymous Coward

      Re: Does this mean

      Install the VNC client on a USB stick and... Oh, hang on, it's against policy to plug those in too.

  13. Anonymous Coward
    Anonymous Coward

    Chrome remote desktop

    Chrome remote desktop does something similar, only with WebP instead of GIF. And more HTML5, because that's good stuff, right?

This topic is closed for new posts.