12 ms·
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
by cortesi 3y 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.
- Waterluvian 3y agoI’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?
- cortesi 3y agoThere 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).
- deleted 3y ago[deleted]
- iamcreasy 3y agoLook cool. What can you get out of this kind of visual analysis?
- Solvency 3y agoIt'd be cooler if these were interpreted as sound waves. I'd love to goto sleep listening to notepad.exe.
- jdironman 3y agoDid 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!
- Cthulhu_ 3y agoI dunno, depends on whether it's raw sound or something gentle. Imagine listening to the modem connecting sound.
- TillE 3y agoGetting 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.
- NobodyNada 3y ago> 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.)
- Retr0id 3y agoI 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
- barlog 3y agoLooks fantastic cortesi! and binvis is the coolest name!!
- TheCoreh 3y agoThis 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!
- fortran77 3y agoI'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....
- eps 3y agoDoes it render data line by line or with something like Hilbert's curve to preserve locality of distinct features?
- dahart 3y agoHey what’s the clustering algorithm for the “cluster” vis mode?
- ericpauley 3y agoLooks like a Hilbert Curve: https://en.wikipedia.org/wiki/Hilbert_curve https://en.wikipedia.org/wiki/Hilbert_curve