Hiding Data in Plain Sight: Least Significant Bit Image Steganography in Python

Поділитися
Вставка
  • Опубліковано 15 вер 2024
  • Code link here:
    ctraliedotcom....
    Related assignment here:
    ursinus-cs174-...

КОМЕНТАРІ • 14

  • @gusthomas6872
    @gusthomas6872 5 місяців тому +4

    the way you explain RGB so precisely in just 10 seconds is so killer

    • @ctralie
      @ctralie  5 місяців тому +1

      Thank you Gus! It's good to know that this way of explaining it works!

  • @alexioskouvakas1953
    @alexioskouvakas1953 Місяць тому

    Thank you, Chris! This tutorial has been such a great resource!

    • @ctralie
      @ctralie  Місяць тому

      I'm so glad to hear that, thanks for watching!

  • @MrNerdyjoke
    @MrNerdyjoke Місяць тому

    Love it! Dot product was a cool trick for decoding

    • @ctralie
      @ctralie  Місяць тому

      Yes, numpy at its finest! I'm glad I actually decided to do that out manually

  • @KrafTeck666
    @KrafTeck666 5 місяців тому

    Your video is really interessting and well explained. I would have loved to see what the encoding looked like by showing the red channel only like you did at 4:44 but with the original image and the altered image.

    • @ctralie
      @ctralie  5 місяців тому +1

      Thank you! And thank you for this suggestion! I updated the notebook here to show this:
      ctraliedotcom.github.io/basicimageprocessing/LSBImgSteg.html
      and I gave you a shoutout

  • @void4831
    @void4831 6 місяців тому +2

    facinating

    • @ctralie
      @ctralie  6 місяців тому +2

      Thanks for watching!

  • @shmigo1628
    @shmigo1628 5 місяців тому

    Nice video on an interesting topic! Image compression was one of the first things that came to my mind at the beginning, nice that you covered it in the end. I think you don't need to encode the null terminator explicitly in this case, because the rest of the image is zeroes anyway, no?

    • @ctralie
      @ctralie  5 місяців тому +1

      Thank you so much! You are absolutely right that I've already made everything 0's after the message, so the null terminator is not needed. Well spotted! What I probably should have done is keep all of the pixels intact that don't need to store the message. In that case I would require the null terminator

  • @TomášTichy-y5w
    @TomášTichy-y5w Місяць тому

    Hi Chris, Absolutely great video that is easy to follow through. How can you embed information so that it remains intact even after the image undergoes manipulations like resizing, cropping, or compression? Any best practices or examples? Thanks !

    • @ctralie
      @ctralie  Місяць тому

      Awesome, glad you got so much out of it!
      Wow this is a great question. So yeah, this LSB technique would completely fail under these kinds of images operations. For a recent paper that hides information that's robust to the sorts of transformations you're talking about, checkout this paper
      openaccess.thecvf.com/content_ECCV_2018/papers/Jiren_Zhu_HiDDeN_Hiding_Data_ECCV_2018_paper.pdf
      figure 4 talks about a neat trick to make it robust to compression, which is one of the hardest transformations to deal with
      an even more recent paper that got a lot of press is Glaze:
      people.cs.uchicago.edu/~ravenben/publications/pdf/glaze-usenix23.pdf
      Both of these are significantly more sophisticated than LSB though! I'd have to think if there's a simpler hand crafted way to make something more robust