People lie online, but their sleep schedules usually don’t: Introducing BoreSight

 

Let’s be real for a second: people are pretty good at lying on the internet. They’ll spin up burner accounts, adopt entirely new personas, and change their usernames to avoid detection. But you know what they usually aren't good at faking? Their circadian rhythms.

If someone is a night owl on their main account, their "totally unrelated" alt account is probably doomscrolling at 3 AM too.

That’s why I threw together a lightweight OSINT CLI tool called BoreSight.

If you’ve ever zeroed a bolt-action rifle, you know what boresighting is, you look down the bore to get a rough visual alignment on your target before you take the actual shot. That’s exactly what this tool is designed to do. It gives you that crucial, mathematically backed first alignment to figure out if two unrelated accounts are actually being run by the exact same person.

How It Works (Without the Fluff)

Instead of relying on basic, lazy username matching, BoreSight looks at behavior. It uses the Wasserstein distance (also known as Earth Mover's Distance for the stats nerds out there and some other ML techniques) to mathematically align and compare active and sleep cycles based on timestamp data.

Once it crunches the numbers and finds an alignment, it doesn't just spit out a messy JSON file. It gives you tangible results you can actually look at:

  • The Usage Heatmap: A visual breakdown of the data so you can see exactly where those late-night scrolling sessions and active hours overlap.

  • Location Prediction: Based on those sleep/wake cycles, the tool takes a mathematically educated guess at the target's timezone and physical location, plotting the predicted area directly on a map.

  • The AI Report: Finally, it feeds those hard stats into a quick LangGraph loop to write up a clean, readable summary of the findings.

Keep It Simple, Stupid.

I intentionally kept this thing lean. There is absolutely no TensorFlow bloat here, and I didn't rewrite the whole thing in Golang for multi-threading. Why? Because it’s meant to be a simple, frictionless CLI tool, not a heavy-duty, dependency-riddled data pipeline that takes half an hour to install.

It’s just raw math and a tiny bit of AI doing exactly what it’s actually good at.

A Few Pro-Tips for the Road

If you're going to take this for a spin, keep a few things in mind:

  • Don't raw-dog your scraping: Use a proxy to scrape the timestamp data. The last thing you want is your home IP getting rate-limited or flagged.
  • Trust, but verify: I highly recommend using a completely different LLM model to validate the LangGraph output. AI loves to hallucinate, and running a secondary validation check with a different model is the best way to keep the final write-up grounded in reality. Or just use --no-ai flag if you are anti-AI.

Code is here if you want to play around with it: https://github.com/Br1an6/BoreSight 

⚠️ Disclaimer: BoreSight is built strictly for educational purposes and defensive OSINT research. Don't use this to do anything stupid, don't stalk people, and remember that you are 100% responsible for your own OpSec.

Comments