1. 28

In Chrome on Windows, it seems you can copy lisa.jpg.crdownload to lisa.jpg before you cancel the operation. In Linux you can SIGINT wget and it will leave lisa.jpg. I hear IOS/Safari workarounds also exist.

  1.  

  2. 33

    Just downloaded the Mona Lisa through some dark web shit.

    1. 6

      Even better, you can just simply drag this image and drop on your desktop / file explorer / graphics editor. Works on any “complete” OS and desktop environment.

      1. 4

        There’s a surprising amount of variation with that, too. On macOS (reasonably “complete”, I guess :-P), if you drag it out of Vivaldi (Chromium-based), all you get this:

        <?xml version="1.0" encoding="UTF-8"?>
        <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
        <plist version="1.0">
        <dict>
        	<key>URL</key>
        	<string>https://youcantdownloadthisimage.online/lisa.jpg</string>
        </dict>
        </plist>
        

        Firefox, on the other hand, will give you the damn jpeg.

        Knowing modern web for what it is I’m not even curious what broken shit this is because I just know it’s going to make me sad.

        My first instinct was to just screenshot it though, it’s your comment that made me curious to try drag’n’drop, seeing how I’m on macOS after almost two decades of open source unices so drag’n’drop is really not something I try by instinct…

        1. 2

          I just used Safari (since I reject any other browser on macOS as rest of them is poorly integrated and not really optimized for this platform) and it gave me a JPEG. Something must be with Vivaldi though, but I’m not surprised since this isn’t a first time where Vivaldi acts like random stuff glued to the Chromium.

          To clarfiy, what you got is a kind of “desktop shortcut” which would open you the URL of that image.

          But to address your surprise to drag and drop - I was the same since I started using macOS full-time at home. I always had the OS/2 paradigm of drag and drop ringing in back of my head but thought it’s already doomed since even Microsoft fails on that especially in modern Windows. To my surprise, it works on macOS to the lengths I didn’t even imagined before. That’s the “productivity” bit of UX for you.

          1. 1

            Something must be with Vivaldi though, but I’m not surprised since this isn’t a first time where Vivaldi acts like random stuff glued to the Chromium.

            While Vivaldi does indeed mostly act like random stuff glued to Chromium, I wouldn’t be surprised if this were, in fact, a deliberate Chromium thing, because dragging and dropping any other image out of Vivaldi works pretty much as expected otherwise.

      2. 2

        thank god such evil stuff will probably be forbidden soon, together with inspecting the page source

      3. 16

        Wait till those NFT people find out about this…

        Your days of right click+save are numbered, NFT pirates!

        1. 11

          Safari on iOS: I simply held down my finger on the picture until it prompted to save the picture to the gallery. That worked flawlessly :D

          1. 3

            Same with Firefox on iOS. 👍

          2. 9

            wget + Ctrl+c

            Looks like a client variation of the Slow loris attack. Is it useful for anything?

            1. 7

              Better yet:

              wget --timeout=1 --tries=1 https://youcantdownloadthisimage.online/lisa.jpg
              
              1. 5

                I once had a specific version of a specific client on a specific platform stuck in a cascading retry loop, continually reconnecting to a multiplayer server I was working on. You couldn’t just disconnect the clients forcibly or give them invalid data, it would just cause them to start more retry loops and reconnect faster. In order to force the client to disconnect so that we could apply our patch to fix the bug that caused the retry loop, we had to disconnect the clients. I used this technique to cause the clients to crash due to resource exhaustion. The json parser in the client was recursive and had no depth limit, so sending an endless stream of [ characters caused it to overflow pretty quickly, which caused the OS to kill the app, which caused the app to update and apply our patch, so that the next time it launched, it no longer had that behavior.

                Generally a slow loris is used to deplete socket handles by initiating many of these in parallel, so in the implementation here where it’s pretty slow and just one connection, that’s probably not going to do very much. It will take a super long time for it to fill any memory/disk. You usually can’t use this technique to cause a client to create a new connection, but the technique of “answer an HTTP request by sending a never-ending stream” more broadly still has a non-zero number of uses, although I’m not sure if that non-zero number is also non-one.

                1. 2

                  Trolling the NFT crowd?

                2. 9

                  The issue here is that the web page will also never finish to load.

                  1. 4
                    1. Open dev tools (F12)
                    2. Click “Sources” tab
                    3. Click “lisa.jpg”
                    4. Right-click, “Save image as…”
                    1. 3

                      i screenshotted it 😈

                      1. 3

                        The source file may be a much higher resolution than what is displayed in your browser.

                        1. 15

                          That’s why you aggressively zoom in and painstakingly recompose the screenshots in MS Paint

                      2. 3

                        JPEGs have an EOF marker 0xFFD9, so the browser should know that the image “done”. Go’s image/jpeg package seems to handle this correctly

                        package main
                        
                        import (
                          "image/jpeg"
                          "net/http"
                          "os"
                        )
                        
                        func main() {
                          res, _ := http.Get("https://youcantdownloadthisimage.online/lisa.jpg")
                          defer res.Body.Close()
                          img, _ := jpeg.Decode(res.Body)
                          f, _ := os.Create("lisa.jpeg")
                          defer f.Close()
                          _ = jpeg.Encode(f, img, nil)
                        }
                        
                        1. 1

                          You can easily just drag the image to a folder on macOS

                          1. 1

                            Can download on ios.