RyanDFIR

I do #DFIR at Google and work on open source tools. Author of Unfurl and Hindsight.

2025-03-13

..and there's another Unfurl release as well! v2025.03 is live and adds new features and some fixes, including:

๐Ÿ”Ž Parsing #Google Search's UDM parameter
๐Ÿ˜ Recognizing #Mastodon usernames and parsing Mastodon forks (like truthsocial[.]com and gab[.]com)
๐Ÿงน Utility parser to "clean up" inputs

Try it out at unfurl.link or read more about the update dfir.blog/unfurl-parses-googe-

#DFIR #OSINT

Google Search "Images" Results Page with UDM=2
2025-03-11

There's a new Hindsight release!

Hindsight v2025.03 focuses on Extensions - parsing more activity and state records, highlighting Extension permissions, and making it easier to examine Manifests.

๐ŸŒ Blog: dfir.blog/hindsight-parses-bro
๐Ÿ› ๏ธ Tool download: hindsig.ht/release

#DFIR #Chrome #Extensions

2025-02-19

A new Unfurl release is here! v2025.02 adds:

๐ŸŒ Parsing encoded/obfuscated IP addresses
๐Ÿฆ‹ Resolving #Bluesky handles to their identifiers (DIDs) and looking up their creation timestamps
๐Ÿ› Bug fixes & better bulk parsing

Blog: dfir.blog/unfurl-parses-obfusc
Code: github.com/obsidianforensics/u

#DFIR #OSINT

Unfurl parsing a deceptive URL with a username and encoded IP address
2025-01-13

Over the winter holiday, I was watching Netflix's Carry-On and got a bit nerd-sniped by a real Google Search URL on-screen... and then proceeded to "authenticate" it.

dfir.blog/authenticating-scree

#DFIR #OSINT #Unfurl #Netflix

A Google Search Results Page (SERP) from the Netflix movie Carry-On
2024-11-04

There's a new Hindsight release! v2024.10 adds:

- Parsing of the DIPS (Detect Incidental Party State) database

- Parsing of IndexedDB records

- Moving to using more of Alex Caithness' ccl_chromium_reader library behind the scenes (starting with cache and IndexedDB records)

- Support for up to Chrome 130

- Many minor fixes and updates (see release page for more info)

Get it at hindsig.ht/release!

RyanDFIR boosted:
Claus Cramon Houmannclaushoumann
2024-11-04

Another @hack_lu โ€frequent flyerโ€ is on stage now, Thomas Chopitea, to present -> codifying digital forensics intelligence

RyanDFIR boosted:
Thunderous Prophet ๐Ÿฆ•ThunderousProphet@mstdn.social
2023-10-26

Company: We want everyone to go back to the office because people work better together.

Also Company: We're not going to approve any travel because people can work with each other via Zoom.

2023-10-19

After waking up at 3:19am this morning to a test earthquake alert (7 hours earlier than planned), my first thought was "timezones are hard." Glad to know this holds true outside #DFIR as well lol.

2023-09-29

Another new Unfurl feature is parsing DoH (DNS over HTTPS) requests! I haven't run into these often in URLs, but hey, it's nice that Unfurl can parse them for you if you do!

Example: dfir.blog/unfurl/?url=https://

#DFIR #Unfurl #OSINT

2023-09-28

Unfurl can parse JSON Web Tokens!

At the highest level, JWTs have three parts: header, payload, and signature. Unfurl first splits a #JWT into those three components, then base64-decodes the header and payload, then parses the resulting JSON objects. While Unfurl could parse all that in one step, it does it in three steps to keep with the "show your work" spirit of the tool.

Here's an example: dfir.blog/unfurl/?url=eyJhbGci

#DFIR #Unfurl #OSINT

2023-09-27

A new Unfurl release is here! v2023.09 adds new features and some fixes. The release adds:
๐Ÿ”น Parsing of JWTs (JSON Web Tokens)
๐Ÿ”น Parsing of DoH (DNS over HTTPS) URLs
๐Ÿ”น More recognized #Mastodon servers

Blog post with more details: dfir.blog/unfurl-parsing-jwt-a

#DFIR #Unfurl #OSINT

2023-09-18

ULID (Universally Unique Lexicographically Sortable Identifier) is another โ„๏ธ-like timestamp (and Unfurl ๐ŸŒฟ can extract the timestamp from them).

Example: 01ARZ3NDEKTSV4RRFFQ69G5FAV

ULID Features:
๐Ÿ”น Sortable
๐Ÿ”น 26 chars vs UUID's 36
๐Ÿ”น Larger timestamp range

๐Ÿ”— ULID Spec: github.com/ulid/spec
๐Ÿ”— Unfurl example: dfir.blog/unfurl/?url=01ARZ3ND

#DFIR #Unfurl

2023-09-15

@azonenberg I still run into them a surprising amount ๐Ÿคทโ€โ™‚๏ธ. To be fair, I also kinda go looking for them.

2023-09-15

Why do we care about timestamps embedded in UUIDs?

A UUIDv1 timestamp often correlates with when the object it represents was created. Extracting this timestamp gives us another point in our timeline (or just more context).

For example, the timestamp from the UUID in this GitHub image = time of image upload โฐ

Unfurl: dfir.blog/unfurl/?url=https://

#DFIR #OSINT #Unfurl

2023-09-14

UUIDv1 has a timestamp & node ID, which can be the MAC address of the machine it was generated on (or random; it depends ๐Ÿคทโ€โ™‚๏ธ).

Unfurl ๐ŸŒฟ can extract the timestamp & node ID from a UUIDv1 and look up the vendor if it's a real MAC address.

Unfurl example: dfir.blog/unfurl/?url=a28cad70

#Unfurl #DFIR #OSINT

2023-09-13

UUIDs (universally unique identifiers) are everywhere online. UUIDv4 is the most common (random), but UUIDv1 (time-based) is still out there.

The 13th digit (or 1st of 3rd group) is a quick way to tell if a UUID holds a timestampโฐ

RFC ๐Ÿ”— : datatracker.ietf.org/doc/html/

One gotcha to look out for is some IDs may claim to be UUIDs... and look like UUIDs... but not adhere to the RFC ๐Ÿคทโ€โ™‚๏ธ.

#DFIR

2023-09-12

@4n68r Very early days, for sure. Glad you think it looks useful ๐Ÿ˜€

2023-09-12

Discord is a chat app, but it can send files as attachments too.

File attachment URLs are different from Message URLs, but still contain interesting info. They look like:

https://cdn[.]discordapp[.]com/attachments/622136585277931532/663421350353829929/unfurl.png

We can tell when a file was uploaded to Discord, just from its URL, by looking at the timestamp in the File ID (2nd snowflake โ„๏ธ):

Unfurl example: dfir.blog/unfurl/?url=https://

#Discord #DFIR #Unfurl #OSINT

2023-09-11

Another service with timestamps embedded in IDs is #Discord.

A typical Discord message URL contains three IDs, and thus three timestamps. We can extract when the server, channel, and message were created โฐ.

Unfurl example: dfir.blog/unfurl/?url=https://
Discord reference: discord.com/developers/docs/re

#DFIR #Unfurl

2023-09-09

@abrignoni Thanks for all the kind words for Unfurl โ˜บ๏ธ

Client Info

Server: https://mastodon.social
Version: 2025.04
Repository: https://github.com/cyevgeniy/lmst