ISG lets you use YouTube as cloud storage for ANY files, not just video

Overview

I was working on this instead of my finals, hope you appreciate it.

I'll add all relevant executables when I can

Infinite-Storage-Glitch

ezgif com-gif-maker

AKA ISG (written entirely in Rust my beloved) lets you embed files into video and upload them to youtube as storage.

YouTube has no limit on amount of video that you can upload. This means that it is effectively infinite cloud storage if you were able to embed files into video with some kind of tool. ISG is the tool.

This has been quite heavily inspired by suckerpinch's Harder Drive video and discord as a filesystem. Unfortunately no filesystem functionality as of right now.

If you are having trouble with the program please dm me.

Now, you might be asking yourself:

But is this against TOS ? Answer is: maybe?

I doubt there is any part of the TOS saying that you can't upload videos containing files, but I also did not want to shovel through all the legalese. I still don't condone using this tool for anything serious/large. YouTube might understandably get mad.

Installation

Recommended way (building from source):
=== Please note: building from source takes a lot of CPU and RAM usage. ===
You need to have installed:

If having any issues also try installing ffmpeg.

If you want to or already have went through the hassle of installing Rust, you can git clone this repository, then cargo build --release. Cd to /target/release directory and run the program ./isg_4real.

The easier way:

  1. Download the executable from the releases
  2. Place the executable inside a folder
  3. Open terminal inside the directory
  4. chmod +x isg_4real
  5. Run the executable: ./isg_4real
  6. Enjoy!

Note that the binary is not an exe file, it will not work on windows, try following the first method instead.
I might add an .exe if this somehow gets popular

How to use

  1. Archive to zip all the files you will be uploading
  2. Run the executable
  3. Use the embed option on the archive (THE VIDEO WILL BE SEVERAL TIMES LARGER THAN THE FILE, 4x in case of optimal compression resistance preset)
  4. Upload the video to your YouTube channel. You probably want to keep it up as unlisted
  5. Use the download option to get the video back
  6. Use the dislodge option to get your files back from the downloaded video
  7. PROFIT

2023-02-16_22-12

Demo

Flashing lights warning !!!1!1 - YouTube Link

Try to use the program on this video and find the files hidden inside.

No it's not just a rick roll.

Explanation 4 nerds

The principle behind this is pretty simple. All files are made of bytes and bytes can be interpreted as numbers ranging from 0-255. This number can be represented with pixels using one of two modes: RGB or binary.

RGB: The cooler mode. Every byte perfectly fits inside one of the colors of an rgb pixel. One rgb pixel can contain 3 bytes at a time. You just keep adding pixels like this until you run out of data. It is leagues more efficient and quick than binary.

Binary: Born from YouTube compression being absolutely brutal. RGB mode is very sensitive to compression as a change in even one point of one of the colors of one of the pixels dooms the file to corruption. Black and white pixels are a lot harder to mess up. Every pixel is either bright representing a 1 or dark representing a 0. We string these bits together to get bytes and continue until we run out of data.

Both of these modes can be corrupted by compression, so we need to increase the size of the pixels to make it less compressable. 2x2 blocks of pixels seem to be good enough in binary mode.

To make it easier on the user, we also include all the relevant settings used to create the video on the first frame of the video. This allows the program to know what mode the video is in and what size to use in order to avoid making the user remember.

Final comments

I will come back to this project a bit later after I work on something else

I appreciate any and all roasting of the code so I can improve.

Do what you want with the code, but credit would be much appreciated and if you have any trouble with ISG, please contact me over discord.

Comments
  • need a color video to increase compression

    need a color video to increase compression

    there is not enough data in black and white video, color video is needed to increase compression. use only 16 colors so that it will be possible to accurately recognize them later when pinching

    opened by OmlineEditor 2
  • Add encryption, as my entire nft collection is now up for grabs

    Add encryption, as my entire nft collection is now up for grabs

    As the videos are public everybody will be able to download my precious NFT collection. Can you please consider adding an uncrackable encryption scheme with a simple password I can easily remember or guess if I forget it.

    opened by Xerxes249 2
  • Arch Linux: building executable yields libclang error and downloading+running executable yields Exec format error

    Arch Linux: building executable yields libclang error and downloading+running executable yields Exec format error

    Building executable yields libclang error and downloading+running executable yields Exec format error

    Build fail: === Using OpenCV headers from: /usr/include/opencv4 thread 'main' panicked at 'Cannot initialize clang: "couldn't find any valid shared libraries matching: ['libclang.so', 'libclang-.so', 'libclang.so.', 'libclang-.so.'], set the LIBCLANG_PATH environment variable to a path where one of these files can be found (invalid: [])"', /home/host/.cargo/registry/src/github.com-1ecc6299db9ec823/opencv-0.75.0/build/generator.rs:75:37 note: run with RUST_BACKTRACE=1 environment variable to display a backtrace warning: build failed, waiting for other jobs to finish...

    Executable fail:

    [host@kingston ~]$ ./isg_4real.v1.0.0 -bash: ./isg_4real.v1.0.0: cannot execute binary file: Exec format error

    opened by vandonsel 1
  • Improve EmbedSource struct code by removing unnecessary comments, usi…

    Improve EmbedSource struct code by removing unnecessary comments, usi…

    Description

    This pull request improves the existing code by making it safer and more robust. The following changes were made:

    • Removed unnecessary comments that did not add value to the code.
    • Replaced the unsafe block in the new() function with a match expression to handle any errors that might occur.
    • Added error handling to the from() function to ensure that the input image has the expected number of rows and columns. These changes improve the maintainability and reliability of the code.
    opened by mossein 0
  • Could not find encoder for codec id 62: Encoder not found

    Could not find encoder for codec id 62: Encoder not found

    output message when Embed

    Could not find encoder for codec id 62: Encoder not found Video embedded succesfully at output.avi Etching video ended in 4247ms

    opened by lost22git 1
  • thread 'main' panicked at 'attempt to calculate the remainder with a divisor of zero'

    thread 'main' panicked at 'attempt to calculate the remainder with a divisor of zero'

    Pick what you want to do with the program Dislodge What is the path to your video ? output [DcdKfmpmPwA].mp4 Where should the output go ? test.zip Dislodging frame ended in 17ms thread 'main' panicked at 'attempt to calculate the remainder with a divisor of zero', src/embedsource.rs:47:29 note: run with RUST_BACKTRACE=1 environment variable to display a backtrace Dislodging frame ended in 54ms

    I am wondering if this is because I did not give YT enough time to render SD/HD?

    opened by stevebanik 1
  • Similarity to Data2QR

    Similarity to Data2QR

    Hey I just found out about this project and found it funny how it is a bit similar to a project I made back in a while (https://github.com/Myzel394/DataToQR).

    We both had the idea to use Google's unlimited video storage functionality to store data in a different format to get unlimited storage :D

    However, I think your project is far better as it uses Rust and transforms the input way better than mine project does.

    opened by Myzel394 0
  • Could be technique for robust long-term data archival (data > video > celluloid rolls > video > data)

    Could be technique for robust long-term data archival (data > video > celluloid rolls > video > data)

    If this technique is robust, this could be proposed as a method for long-term data archiving. This method could theoretically allow:

    • To convert an arbitrary data file into a "video"
    • Optically print that video into celluloid rolls
    • Once the rolls are scanned back in, the method could be used to decode that back into the original data

    So, this may have utility beyond the "YouTube glitch".

    opened by twardoch 0
Releases(v1.0.0)
Owner
HistidineDwarf
Contact over discord, preferably. Discord: HistidineDwarf#8927
HistidineDwarf
koyo is a cli tool that lets you run commands as another user. It is similar to doas or sudo.

koyo is a cli tool that lets you run commands as another user. It is similar to doas or sudo.

null 3 Nov 27, 2021
A bit like tee, a bit like script, but all with a fake tty. Lets you remote control and watch a process

teetty teetty is a wrapper binary to execute a command in a pty while providing remote control facilities. This allows logging the stdout of a process

Armin Ronacher 259 Jan 3, 2023
Terminal UI for leetcode. Lets you browse questions through different topics. View, solve, run and submit questions from TUI.

Leetcode TUI Use Leetcode in your terminal. Why this TUI: My motivation for creating leetcode-tui stemmed from my preference for tools that are lightw

Akarsh 8 Aug 10, 2023
⚡️(cd with env) Is a configurable cd wrapper that lets you define your environment per directory.

⚡️cdwe (cd with env) A simple configurable cd wrapper that provides powerful utilities for customizing your envionment per directory. (For ZSH / BASH

teo 20 Aug 6, 2023
An anyrun plugin that lets you search NixOS options.

anyrun-nixos-options An anyrun plugin that lets you search NixOS options. how 2 build? nix build ... or cargo build optionally :) Configuration This p

Michał 4 Aug 24, 2023
Lets you tweak Assassin's Creed Mirage in various ways.

Mirage Tweaks Lets you tweak Assassin's Creed Mirage in various ways. Currently supports adjusting the eject height and sprint speed. Usage Get the la

Assassin's Creed Community 3 Nov 3, 2023
That program use on platform windows. And if you write any text on uncorrect keyboard layout, that program for that.

?? This program is designed to translate text into the correct layout when typing is incorrect. ?? Example ghbdtn -> привет Just (by default) pressing

Gest Se 5 Jan 26, 2023
Shellfirm - Intercept any risky patterns (default or defined by you) and prompt you a small challenge for double verification

shellfirm Opppppsss you did it again? ?? ?? ?? Protect yourself from yourself! rm -rf * git reset --hard before saving? kubectl delete ns which going

elad 652 Dec 29, 2022
Standard Graphics is a command-line tool for printing 2D graphics from any language to any screen.

2D graphics in any programming language with just print statements!

Caleb Winston 123 Nov 20, 2022
Summarize audio/video files

About A simple CLI tool to summarize audio files. Uses the OpenAI whisper API to transcribe the audio to text and then the OpenAI ChatGPT API to summa

Mike Dallas 7 Mar 19, 2023
A rust library + CLI tool that tells you when swas will upload new video through complex calculations

A rust library + CLI tool that tells you when swas will upload new video through complex calculations. It also lets you search and play youtube videos of swas and other channels. Searching about youtube channels is also an option. Basically it's a youtube search cli tool written in rust.

midnightFirefly 4 Jun 10, 2022
Periodically download a youtube playlist, extract audio, convert to mp3, move to directory (possibly synced using syncthing).

auto-dl Periodically download a youtube playlist, extract audio, convert to mp3, move to directory (possibly synced using syncthing). drop https://git

Paul Adenot 10 Jan 12, 2023
A terminal ASCII media player. View images, gifs, videos, webcam, YouTube, etc.. directly in the terminal as ASCII art.

Terminal Media Player View images, videos (files or YouTube links), webcam, etc directly in the terminal as ASCII. All images you see below are just m

Max Curzi 36 May 8, 2023
Use your computer as a cosmic ray detector! One of the memory errors Rust does not protect against.

Your computer can double up as a cosmic ray detector. Yes, really! Cosmic rays hit your computer all the time. If they hit the RAM, this can sometimes

Johanna Sörngård 110 Jun 16, 2023
A high level DSL for Simplicity. This is a work in progress and is not yet ready for production use

A high level DSL for Simplicity. This is a work in progress and is not yet ready for production use. The language is designed to be simple and easy to use. It is inspired by rust syntax and is statically typed. The syntax will be extended in the future to support more features.

null 13 Oct 28, 2023
Display a random Shiba from your terminal whenever you feel the need to. Because why not?

Shiba CLI Command-line interface (CLI) to display a random Shiba Inu whenever needed, by just running shiba on your terminal. How To Use • How Does It

null 17 Sep 25, 2022
Use any async Rust library from PHP!

php-tokio - Use any async Rust library from PHP! Created by Daniil Gentili (@danog). This library allows you to use any async rust library from PHP, a

Daniil Gentili 242 Sep 7, 2023
The fastest bloom filter in Rust. No accuracy compromises. Use any hasher.

b100m-filter The fastest bloom filter in Rust. No accuracy compromises. Use any hasher. Usage # Cargo.toml [dependencies] b100m-filter = "0.3.0" use b

null 4 Nov 19, 2023
Catch Tailwindcss Errors at Compile-Time Before They Catch You, without making any change to your code! Supports overriding, extending, custom classes, custom modifiers, Plugins and many more 🚀🔥🦀

twust Twust is a powerful static checker in rust for TailwindCSS class names at compile-time. Table of Contents Overview Installation Usage Statement

null 15 Nov 8, 2023