All Projects → mmiszczyk → deepmage

mmiszczyk / deepmage

Licence: GPL-3.0 license
Hex editor for bit-level occultism

Programming Languages

Hy
24 projects
python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to deepmage

HexManiacAdvance
A hex editor designed for editing Pokemon GBA games
Stars: ✭ 73 (+247.62%)
Mutual labels:  hex-editor
lattice-symmetries
A package to simplify working with symmetry-adapted quantum many-body bases. Provides a good foundation for writing custom exact diagonalization and variational Monte Carlo software
Stars: ✭ 17 (-19.05%)
Mutual labels:  bit-manipulation
Java-Questions-and-Solutions
This repository aims to solve and create new problems from different spheres of coding. A path to help students to get access to solutions and discuss their doubts.
Stars: ✭ 34 (+61.9%)
Mutual labels:  bit-manipulation
Revokemsgpatcher
A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁(我已经看到了,撤回也没用了)
Stars: ✭ 12,482 (+59338.1%)
Mutual labels:  hex-editor
Competitive Programming
Programming👨‍💻 Questions on BinarySearch💻, LeetCode💻, CodeChef💻, Codeforces💻,DSA 450
Stars: ✭ 188 (+795.24%)
Mutual labels:  bit-manipulation
crunch
take bytes out of things easily ✨🍪
Stars: ✭ 59 (+180.95%)
Mutual labels:  bit-manipulation
Digital video introduction
A hands-on introduction to video technology: image, video, codec (av1, vp9, h265) and more (ffmpeg encoding).
Stars: ✭ 12,184 (+57919.05%)
Mutual labels:  bitstream
Algorithms and data structures
180+ Algorithm & Data Structure Problems using C++
Stars: ✭ 4,667 (+22123.81%)
Mutual labels:  bit-manipulation
algorithms
The All ▲lgorithms documentation website.
Stars: ✭ 114 (+442.86%)
Mutual labels:  bit-manipulation
cs-problems
Some 70+ interesting computer science problems and solutions in C#
Stars: ✭ 28 (+33.33%)
Mutual labels:  bit-manipulation
Imhex
🔍 A Hex Editor for Reverse Engineers, Programmers and people who value their retinas when working at 3 AM.
Stars: ✭ 11,744 (+55823.81%)
Mutual labels:  hex-editor
Java-Programs
Java Practiced Problems including concepts of OOPS, Interface, String , Collection.
Stars: ✭ 51 (+142.86%)
Mutual labels:  bit-manipulation
InterviewBit
Collection of solution for problems on InterviewBit
Stars: ✭ 77 (+266.67%)
Mutual labels:  bit-manipulation
hx
Hex editor for the terminal using plain C99 + POSIX libs.
Stars: ✭ 132 (+528.57%)
Mutual labels:  hex-editor
Awesome Bits
💻 A curated list of awesome bitwise operations and tricks
Stars: ✭ 2,791 (+13190.48%)
Mutual labels:  bit-manipulation
D3hex
The first dataflow based Hex-Editor!
Stars: ✭ 45 (+114.29%)
Mutual labels:  hex-editor
Data-Structures-Algorithms-Handbook
A series of important questions with solutions to crack the coding interview and ace it!
Stars: ✭ 30 (+42.86%)
Mutual labels:  bit-manipulation
Data-Structure-Algorithm-Programs
This Repo consists of Data structures and Algorithms
Stars: ✭ 464 (+2109.52%)
Mutual labels:  bit-manipulation
Algodeck
An Open-Source Collection of 200+ Algorithmic Flash Cards to Help you Preparing your Algorithm & Data Structure Interview 💯
Stars: ✭ 4,441 (+21047.62%)
Mutual labels:  bit-manipulation
bitter
Is a lightweight API for reading an arbitrary amount of bits from a single input
Stars: ✭ 12 (-42.86%)
Mutual labels:  bit-manipulation

Deepmage

Introudction

Deepmage is a terminal-based hex editor for non-octet-oriented data. Its goal is to easily allow you to operate at the level of individual bits and n-bit words. This is the functionality I missed in most of the free hex editors, which were obviously made with 8-bit bytes in mind. Of course 8-bit bytes are good enough for most users, but people who do a lot of security research and/or reversing might know of a few frustrating situations in which the assumption that everything divides neatly into octets was proven false. For me, it was first with baseband (7-bit packed GSM alphabet) and with codecs (variable-length bitfields).

Status

Deepmage is currently in the alpha version. The code needs some refactoring, there's not real documentation and few comments and it works really slow if your terminal windows is big - but the basic functionality is there.

Deepmage allows you to view and edit files like in a normal hex editor, but you can also directly edit bits or change word (note that 'word' here means a basic unit, not machine word) size to something different than the usual 8 bits. It supports large file by only keeping in memory the parts of the file that have unsaved changes or are currently displayed to the user.

Dependencies

  • asciimatics
  • bitstring
  • hy

How to use

You can download this repo

git clone https://github.com/mmiszczyk/deepmage

or get deepmage from PyPi

pip3 install deepmage

Then, to use the editor:

./deepmage [PATH_TO_FILE]

Use arrow keys, page up/page down and home/end to navigate.

Switch between hex and bit modes with F2.

Save changes with F5.

Exit with F10 or CTRL+C.

Usage for dumping/parsing scripts:

usage: deepmage-hexdump [-h] [-w wordsize] [-c cols] [-b] file

positional arguments:
  file                  Path to a file to edit

optional arguments:
  -h, --help            show this help message and exit
  -w wordsize, --wordsize wordsize
                        Size of words (in bits)
  -c cols, --cols cols
  -b, --bits
usage: deepmage-hexdump [-h] [-w wordsize] [--write_buffer_size bytes] [-b]
                        [-i]
                        [input-filename] output-filename

positional arguments:
  input-filename        Path to a hexdump file
  output-filename       Path to an output file

optional arguments:
  -h, --help            show this help message and exit
  -w wordsize, --wordsize wordsize
                        Size of words (in bits)
  --write_buffer_size bytes
  -b, --bits
  -i, --ignore-errors   Skip invalid characters

TODO

Planned

  • fixing any bugs that will come out during testing

Maybe

  • performance improvements
  • UI code refactoring
  • two-column display with approximate ASCII representation
  • search and replace
  • endianness toggle
  • insert/delete bytes

Long-term (unlikely)

  • parsing user-defined structure with words of different length, including variable-length bitfields
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].