Home News Notes Projects Themes About

Gralhix OSINT 23 – More Than Meets The Eye

Link to the original exercise

Solution

Log

  • I started by browsing Sofia's videos on YouTube, looking for a video posted in October 2023. As I was solving this exercise on 2024-11-23, I looked for the "1 year ago" indicator. Just give us a date, Google…

    See "Itches" below for an alternative to doing this manually.

  • The first video I clicked on was the right one; however, I also checked the previous and next videos' date just to be sure: August 2023 and November 2023.
  • I spotted the wallpaper between 3'37 and 3'38. I used the . shortcut to navigate frame by frame after pausing the video – source here. Here is the partial screenshot I took:

    20241123_222710_screenshot.png

    Figure 1: The screenshot of the wallpaper.

    This made me consider how to extract the best possible quality from that frame. Also, the YouTube player is visible during pause, which is annoying. See below for a solution :)

  • I used Google Images to do a reverse image search and found:
  • On the latter:

    1. Complete Illustration (character plus background): starts at $190 (depends on the details)
  • In conclusion, the illustration is titled 'Involuntary Rat Queen' by Adam Scythe, and creating a similar piece would cost at least $190.

Itches

Finding the right video

It's not possible to display a timestamp from the channel videos using Tampermonkey for example, since YouTube is not simply converting a given date to a "relative" format. The upload date is not in the channel page at all, only in the invidual video pages.

However, since this "1 year ago" thing could have been very annoying if there were a lot of videos in the channel, I still wanted a more general solution.

Using yt-dlp, it's possible to get the upload date of a particular video:

yt-dlp --print upload_date "https://www.youtube.com/watch?v=z9gr8yRSPZg"
20231024

It's also possible to display all video IDs of a given channel:

yt-dlp --flat-playlist --print id https://www.youtube.com/@gralhix/videos | wc -l
71

(I piped the output into wc to avoid displaying a long list here. To date there are 71 videos on Sofia's channel.)

So I know I could theoretically write a program that would loop over all the videos (or do some kind of bisection), retrieve their upload date, and stop when there's a match. Maybe I'd have to rate limit it to avoid being blocked by YouTube, but at least I could do something else while the program is running 😄

Extracting the frame in the best possible quality

To download the video in the best available quality (without sound):

yt-dlp -f bestvideo "https://www.youtube.com/watch?v=z9gr8yRSPZg"

To extract all frames as lossless PNG between two timestamps:

ffmpeg -ss 3:37.500 -to 3:38.500 -i video.webm frame_%04d.png

The frame:

frame_0019.png

Figure 2: The frame containing the wallpaper.