Hacker News new | ask | show | jobs
by cortesi 863 days ago
Ah, this is an old side-project of mine. Something I should probably make clearer is that files are not uploaded anywhere - the app is completely local, and all analysis is done in the browser.

This version is written in React but when time permits I plan to release an updated version written in Rust, along with a library of fast implementations of space-filling curves and related utilities.

8 comments

This tool has been incredibly useful to me for getting a high level overview of compiled binaries and JS bundles: you can typically tell if something fishy is getting included by the unexpected changes in entropy/categories. Thanks!
I just wanted to say thanks, this is something I use regularly when looking at unknown firmware blobs or file formats, to look for compressed/encrypted data or other structures
Looks fantastic cortesi!

and binvis is the coolest name!!

Look cool. What can you get out of this kind of visual analysis?
Getting a really quick, coarse view of what a file format looks like, easily picking out different types of data. Try uploading a SNES ROM or similar and you'll probably see a lot of distinct squares because of how the ROM banks work.

Super Metroid has a surprising amount of filler scattered all over.

> Super Metroid has a surprising amount of filler scattered all over.

It only really looks scattered because the visualizer uses a space-filling curve instead of laying out the bytes of the file linearly. If you change the curve to "scan" instead of "cluster", it becomes a little easier to see what the filler is: it's the unused space at the end of each ROM bank.

(As someone who's spent a lot of time in that particular binary, I think the use of the space-filling curve obscures a lot of details that would be a lot easier to spot otherwise -- such as the structure of the ROM banks, the location and layout of various pieces of compressed and uncompressed data, and repeated structures like a couple KB of common routines that are duplicated at the beginning of every bank containing enemy code.)

It'd be cooler if these were interpreted as sound waves. I'd love to goto sleep listening to notepad.exe.
Did you happen to catch the post regarding ROM dumping the Nintendo Gameboy (DS?) by allowing the crashed game play through eventually playing ROM contents? just wondering if that's what gave you the idea here. But I agree, ASMr would be interesting!
I dunno, depends on whether it's raw sound or something gentle. Imagine listening to the modem connecting sound.
I've been trying to figure out the file format used for "POV" fan displays I've bought from AliExpress. This visualizer was a big help....
I’m fascinated by this but on mobile at least I can’t quite figure out what the colours mean. Is there a legend I can peek at?
There is, but I see it's not visible on smaller resolutions - I should fix that. The default color scheme just classifies bytes into black (0x00), white (0xff), blue (ascii), and low (green) and high (red).
Does it render data line by line or with something like Hilbert's curve to preserve locality of distinct features?
Hey what’s the clustering algorithm for the “cluster” vis mode?