CalorMap is a data visualization tool that maps byte data to colors. This allows for the analysis of patterns within data and can assist with identifying entropy within encrypted or obfuscated files. This project was created to assist with analyzing the output from a obfuscation algorithm I am working on.
CalorMap is simple to install it is simplpy the CalorMap.hpp file. There are two dependencies, stb and CLI11 but both are also header only files, so make sure to copy those as well. Include Directories:
- include/Contains CalorMap.hpp
- external/CLI11.hpp and stb_image_write.h
CalorMap has one CLI command if you are compiling the whole system ./calormap -i file.
If its used in another workflow just create an CalorMap object and call the map function:
CalorMap calormap; calormap.map(file);
- High-Performance Concurrency: Implements a multi-threaded batching engine using C++20
std::barrierandstd::jthreadto decouple heavy file I/O from compute-intensive mapping. - Mechanical Sympathy: Utilizes a 256-entry Look-Up Table (LUT) to ensure the hot path for byte-to-color transformation remains entirely within the CPU's L1 cache.
- Memory Safety & Precision: Employs ceiling-division geometry to ensure the pixel buffer is always correctly sized for the input, preventing buffer overflows while maintaining a "square-ish" visual aspect ratio.
- Visual Entropy Auditing: Leverages the perceptually uniform Inferno color scale to assist in identifying the "Avalanche Effect" and information diffusion within cryptographic kernels.
While the system chunks the input file to minimize I/O overhead, the final image is stored as a contiguous std::vector<uint32_t> in memory.
- Scaling: Each byte of input data requires 4 bytes of RAM for the RGBA output.
- Padding: Files that are not perfect squares are automatically padded with a dark gray color
(0x333333FF)to maintain grid integrity and provide a clear visual boundary for the data's end.
CalorMap is open-source and free use, see License for more details.