Skip to main content
added 50 characters in body
Source Link
M--
  • 35.4k
  • 12
  • 77
  • 118

Run in ediKing online editor: https://io.eyalgruss.com/ediking/#%3Cscript%3E%0A%09function%20decode(url)%20%7B%0A%09%09const%20img%20%3D%20new%20Image()%0A%09%09img.crossOrigin%20%3D%20'anonymous'%0A%09%09img.onload%20%3D%20()%20%3D%3E%20%7B%0A%09%09%09const%20canvas%20%3D%20document.createElement('canvas')%0A%09%09%09canvas.width%20%3D%20img.width%0A%09%09%09canvas.height%20%3D%20img.height%0A%09%09%09const%20ctx%20%3D%20canvas.getContext('2d')%0A%09%09%09ctx.drawImage(img%2C%200%2C%200)%0A%09%09%09const%20data%20%3D%20ctx.getImageData(0%2C%200%2C%20canvas.width%2C%20canvas.height).data%0A%09%09%09let%20bin%20%3D%20%5B...data.filter((b%2C%20i)%20%3D%3E%20(i%2B1)%20%25%204).map(b%20%3D%3E%20b%20%26%201)%5D%0A%09%09%09if%20(bin%5B0%5D%20%3D%3D%200)%20%7B%0A%09%09%09%09bin%20%3D%20bin.slice(18)%0A%09%09%09%09let%20out%20%3D%20''%0A%09%09%09%09while%20(bin.length)%0A%09%09%09%09%09out%20%2B%3D%20String.fromCharCode(parseInt(bin.splice(0%2C%208).join('')%2C%202))%0A%09%09%09%09console.log(url%2C%20out)%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09bin%20%3D%20bin.slice(2)%0A%09%09%09%09canvas.width%20%3D%20parseInt(bin.splice(0%2C%2016).join('')%2C%202)%0A%09%09%09%09canvas.height%20%3D%20parseInt(bin.splice(0%2C%2016).join('')%2C%202)%0A%09%09%09%09const%20out%20%3D%20new%20Uint8ClampedArray(canvas.width%20\*%20canvas.height%20\*%204)%0A%09%09%09%09for%20(let%20i%20%3D%200%3B%20i%20%3C%20out.length%3B%20i%20%2B%3D%204)%0A%20%20%09%09%09%09out%5Bi%5D%20%3D%20out%5Bi%20%2B%201%5D%20%3D%20out%5Bi%20%2B%202%5D%20%3D%20out%5Bi%20%2B%203%5D%20%3D%20!bin%5Bi%20%2F%204%5D%20\*%20128%0A%09%09%09%09ctx.putImageData(new%20ImageData(out%2C%20canvas.width)%2C%200%2C%200)%3B%0A%09%09%09%09document.body.appendChild(canvas)%0A%09%09%09%7D%0A%09%09%7D%0A%09%09img.src%20%3D%20url%0A%09%7D%0A%09%0A%09decode('https%3A%2F%2Fi.sstatic.net%2F1RtT7h3L.png')%0A%09decode('https%3A%2F%2Fi.sstatic.net%2FEKD3bBZP.png')%0A%09decode('https%3A%2F%2Fi.sstatic.net%2FbmDwolWU.png')%0A%09decode('https%3A%2F%2Fi.sstatic.net%2FMBlXyTSp.png')%0A%09decode('https%3A%2F%2Fi.sstatic.net%2FmCeETXDs.png')%0A%3C%2Fscript%3ERun in ediKing online editor

Run in ediKing online editor: https://io.eyalgruss.com/ediking/#%3Cscript%3E%0A%09function%20decode(url)%20%7B%0A%09%09const%20img%20%3D%20new%20Image()%0A%09%09img.crossOrigin%20%3D%20'anonymous'%0A%09%09img.onload%20%3D%20()%20%3D%3E%20%7B%0A%09%09%09const%20canvas%20%3D%20document.createElement('canvas')%0A%09%09%09canvas.width%20%3D%20img.width%0A%09%09%09canvas.height%20%3D%20img.height%0A%09%09%09const%20ctx%20%3D%20canvas.getContext('2d')%0A%09%09%09ctx.drawImage(img%2C%200%2C%200)%0A%09%09%09const%20data%20%3D%20ctx.getImageData(0%2C%200%2C%20canvas.width%2C%20canvas.height).data%0A%09%09%09let%20bin%20%3D%20%5B...data.filter((b%2C%20i)%20%3D%3E%20(i%2B1)%20%25%204).map(b%20%3D%3E%20b%20%26%201)%5D%0A%09%09%09if%20(bin%5B0%5D%20%3D%3D%200)%20%7B%0A%09%09%09%09bin%20%3D%20bin.slice(18)%0A%09%09%09%09let%20out%20%3D%20''%0A%09%09%09%09while%20(bin.length)%0A%09%09%09%09%09out%20%2B%3D%20String.fromCharCode(parseInt(bin.splice(0%2C%208).join('')%2C%202))%0A%09%09%09%09console.log(url%2C%20out)%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09bin%20%3D%20bin.slice(2)%0A%09%09%09%09canvas.width%20%3D%20parseInt(bin.splice(0%2C%2016).join('')%2C%202)%0A%09%09%09%09canvas.height%20%3D%20parseInt(bin.splice(0%2C%2016).join('')%2C%202)%0A%09%09%09%09const%20out%20%3D%20new%20Uint8ClampedArray(canvas.width%20\*%20canvas.height%20\*%204)%0A%09%09%09%09for%20(let%20i%20%3D%200%3B%20i%20%3C%20out.length%3B%20i%20%2B%3D%204)%0A%20%20%09%09%09%09out%5Bi%5D%20%3D%20out%5Bi%20%2B%201%5D%20%3D%20out%5Bi%20%2B%202%5D%20%3D%20out%5Bi%20%2B%203%5D%20%3D%20!bin%5Bi%20%2F%204%5D%20\*%20128%0A%09%09%09%09ctx.putImageData(new%20ImageData(out%2C%20canvas.width)%2C%200%2C%200)%3B%0A%09%09%09%09document.body.appendChild(canvas)%0A%09%09%09%7D%0A%09%09%7D%0A%09%09img.src%20%3D%20url%0A%09%7D%0A%09%0A%09decode('https%3A%2F%2Fi.sstatic.net%2F1RtT7h3L.png')%0A%09decode('https%3A%2F%2Fi.sstatic.net%2FEKD3bBZP.png')%0A%09decode('https%3A%2F%2Fi.sstatic.net%2FbmDwolWU.png')%0A%09decode('https%3A%2F%2Fi.sstatic.net%2FMBlXyTSp.png')%0A%09decode('https%3A%2F%2Fi.sstatic.net%2FmCeETXDs.png')%0A%3C%2Fscript%3E

Source Link
o17t H1H' S'k
  • 2.8k
  • 5
  • 37
  • 57

  1. Three may keep a secret, if two of them are dead.
  2. Key / Kite

Solution in HTML/JS running in the browser and using canvas to read/write image data (requires accounting for the alpha channel)

Code:

<script>
  function decode(url) {
    const img = new Image()
    img.crossOrigin = 'anonymous'
    img.onload = () => {
      const canvas = document.createElement('canvas')
      canvas.width = img.width
      canvas.height = img.height
      const ctx = canvas.getContext('2d')
      ctx.drawImage(img, 0, 0)
      const data = ctx.getImageData(0, 0, canvas.width, canvas.height).data
      let bin = [...data.filter((b, i) => (i+1) % 4).map(b => b & 1)]
      if (bin[0] == 0) {
        bin = bin.slice(18)
    let out = ''
    while (bin.length)
      out += String.fromCharCode(parseInt(bin.splice(0, 8).join(''), 2))
    console.log(url, out)
      } else {
    bin = bin.slice(2)
    canvas.width = parseInt(bin.splice(0, 16).join(''), 2)
    canvas.height = parseInt(bin.splice(0, 16).join(''), 2)
    const out = new Uint8ClampedArray(canvas.width * canvas.height * 4)
    for (let i = 0; i < out.length; i += 4)
      out[i] = out[i + 1] = out[i + 2] = out[i + 3] = !bin[i / 4] * 128
    ctx.putImageData(new ImageData(out, canvas.width), 0, 0);
    document.body.appendChild(canvas)
      }
    }
    img.src = url
  }
    
  decode('https://i.sstatic.net/1RtT7h3L.png')
  decode('https://i.sstatic.net/EKD3bBZP.png')
  decode('https://i.sstatic.net/bmDwolWU.png')
  decode('https://i.sstatic.net/MBlXyTSp.png')
  decode('https://i.sstatic.net/mCeETXDs.png')
</script>

Run in ediKing online editor: https://io.eyalgruss.com/ediking/#%3Cscript%3E%0A%09function%20decode(url)%20%7B%0A%09%09const%20img%20%3D%20new%20Image()%0A%09%09img.crossOrigin%20%3D%20'anonymous'%0A%09%09img.onload%20%3D%20()%20%3D%3E%20%7B%0A%09%09%09const%20canvas%20%3D%20document.createElement('canvas')%0A%09%09%09canvas.width%20%3D%20img.width%0A%09%09%09canvas.height%20%3D%20img.height%0A%09%09%09const%20ctx%20%3D%20canvas.getContext('2d')%0A%09%09%09ctx.drawImage(img%2C%200%2C%200)%0A%09%09%09const%20data%20%3D%20ctx.getImageData(0%2C%200%2C%20canvas.width%2C%20canvas.height).data%0A%09%09%09let%20bin%20%3D%20%5B...data.filter((b%2C%20i)%20%3D%3E%20(i%2B1)%20%25%204).map(b%20%3D%3E%20b%20%26%201)%5D%0A%09%09%09if%20(bin%5B0%5D%20%3D%3D%200)%20%7B%0A%09%09%09%09bin%20%3D%20bin.slice(18)%0A%09%09%09%09let%20out%20%3D%20''%0A%09%09%09%09while%20(bin.length)%0A%09%09%09%09%09out%20%2B%3D%20String.fromCharCode(parseInt(bin.splice(0%2C%208).join('')%2C%202))%0A%09%09%09%09console.log(url%2C%20out)%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09bin%20%3D%20bin.slice(2)%0A%09%09%09%09canvas.width%20%3D%20parseInt(bin.splice(0%2C%2016).join('')%2C%202)%0A%09%09%09%09canvas.height%20%3D%20parseInt(bin.splice(0%2C%2016).join('')%2C%202)%0A%09%09%09%09const%20out%20%3D%20new%20Uint8ClampedArray(canvas.width%20\*%20canvas.height%20\*%204)%0A%09%09%09%09for%20(let%20i%20%3D%200%3B%20i%20%3C%20out.length%3B%20i%20%2B%3D%204)%0A%20%20%09%09%09%09out%5Bi%5D%20%3D%20out%5Bi%20%2B%201%5D%20%3D%20out%5Bi%20%2B%202%5D%20%3D%20out%5Bi%20%2B%203%5D%20%3D%20!bin%5Bi%20%2F%204%5D%20\*%20128%0A%09%09%09%09ctx.putImageData(new%20ImageData(out%2C%20canvas.width)%2C%200%2C%200)%3B%0A%09%09%09%09document.body.appendChild(canvas)%0A%09%09%09%7D%0A%09%09%7D%0A%09%09img.src%20%3D%20url%0A%09%7D%0A%09%0A%09decode('https%3A%2F%2Fi.sstatic.net%2F1RtT7h3L.png')%0A%09decode('https%3A%2F%2Fi.sstatic.net%2FEKD3bBZP.png')%0A%09decode('https%3A%2F%2Fi.sstatic.net%2FbmDwolWU.png')%0A%09decode('https%3A%2F%2Fi.sstatic.net%2FMBlXyTSp.png')%0A%09decode('https%3A%2F%2Fi.sstatic.net%2FmCeETXDs.png')%0A%3C%2Fscript%3E