A multi-platform GUI for bit-based analysis, processing, and visualization

Overview

semantic-release Discord Chat

master develop
Master Build Status Develop Build Status

Documentation

The documentation is available at mahlet-inc.github.io.

Pre-built binaries

There are pre-built binaries of the latest release on the GitHub releases page.

Using Hobbits

Read the user guide in the documentation and/or watch this walkthrough video

Building with Conan, Python 3, and CMake 3.12+

  1. Install Conan with pip: pip install conan
  2. Configure Conan to use a custom remote and keep *.pyc files:
conan remote add hobbitsconan https://helloadam.jfrog.io/artifactory/api/conan/conan
conan config set general.keep_python_files=True
  1. Use conan to get/build dependencies, then build and package hobbits:
mkdir build
cd build
conan install .. --build=missing
conan build ..
conan package ..

If you have any issues building, you can check out more detailed steps and environmental setup in the continuous integration files or open an issue.

Plain CMake (no Conan) building also works if you have your dependencies handled. The CentOS 7 GCC 4.8 CI build does this.

Adding plugins

Read the plugin developer guide in the documentation. As of v0.50.0, the plugin interfaces are pretty stable. It is possible, maybe even likely, that plugins built to the current interfaces will be version 1.x.x-compatible.

Get Involved

Join our Discord server, send us an email at [email protected], and tell your colleagues. We'd love contributions and resumes, but we'll settle for bug reports and memes.

Screenshot of the Hobbits GUI

Comments
  • Implementation improvements for Kaitai Struct Plugin

    Implementation improvements for Kaitai Struct Plugin

    Kaitai is a declarative language for parsing binary formats. We need plugins that will:

    • compile and run the kaitai parser on a bitcontainer (using python?)
    • display the parsed information kind of like kaitai Web IDE
    • easily allow blobs to be broken off into their own bitcontainers for further isolated analysis

    https://kaitai.io/

    @KOLANICH

    enhancement integration 
    opened by hello-adam 13
  • Conan install fails creating Makefile on Fedora 35

    Conan install fails creating Makefile on Fedora 35

    System information:

    hostname = fedora
    uname -m = x86_64
    uname -r = 5.16.16-200.fc35.x86_64
    uname -s = Linux
    uname -v = #1 SMP PREEMPT Sat Mar 19 13:52:41 UTC 2022
    
    /usr/bin/uname -p = x86_64
    /bin/uname -X     = unknown
    
    /bin/arch              = x86_64
    /usr/bin/arch -k       = unknown
    /usr/convex/getsysinfo = unknown
    /usr/bin/hostinfo      = unknown
    /bin/machine           = unknown
    /usr/bin/oslevel       = unknown
    /bin/universe          = unknown
    
    PATH: /home/alex/.cargo/bin
    PATH: /home/alex/.local/bin
    PATH: /home/alex/bin
    PATH: /usr/local/bin
    PATH: /usr/local/sbin
    PATH: /usr/bin
    PATH: /usr/sbin
    

    g++ version: g++ (GCC) 11.2.1 20220127 (Red Hat 11.2.1-9) Python version: Python 3.10.4 conan version: Conan version 1.47.0 OpenSSL version: OpenSSL 1.1.1n FIPS 15 Mar 2022 cmake version: cmake version 3.22.2

    Build log attached below.

    hobbits-fedora-conan-build.log

    My guess is that it's failing to build the Makefile properly, perhaps some values are not included. I know one of the errors is that python cannot locate g++ in ./configure even though it's installed so CXX=/usr/bin/g++ took care of that, but didn't change the error much.

    opened by alextairbekov 12
  • Fails to start on macOS 11

    Fails to start on macOS 11

    > /Applications/hobbits.app/Contents/MacOS/hobbits 
    dyld: Library not loaded: /usr/local/opt/gettext/lib/libintl.8.dylib
      Referenced from: /Applications/hobbits.app/Contents/Frameworks/hobbits-cpython/lib/libpython3.9.dylib
      Reason: image not found
    fish: Job 1, '/Applications/hobbits.app/Conte…' terminated by signal SIGABRT (Abort)
    

    I would suggest using macdeployqt for mac builds. It packages Qt a bit more nicely.

    Mac 11.5.2, hobbits-0.51.1

    opened by RazrFalcon 9
  • [windows] Application crashes if

    [windows] Application crashes if "Split view" is applied after loading a file (import menu)

    Hi,

    I detect a problem when the "split view" is applied after 'import' file or data -> the application crashes ; the "split view" is possible only before 'import', add other view crashes application after 'import'.

    i m using pre-built binaries v0.46.7 (Hobbits (64-bit Windows 2016 msvc2017), Same issue with v0.46.4. Tested under 2 x Windows 10 pro 64-bit (20H2 & 2004).

    Have you already observed this ?

    Thanks Best regards

    bug windows 
    opened by SFX72 6
  • Instance set by value does not appear in Kaitai Struct output

    Instance set by value does not appear in Kaitai Struct output

    In the Kaitai Struct plugin, if you have an instance set by a value, it fails to appear in the "Parsed" tab.

    for example:

    instances:
      test1:
        pos: 0
        size: 1
      test2:
        value: 0xff
    

    should result in something like this (from kaitai struct visualizer): image

    however, in Hobbits, it appears like this: image

    opened by jakecrowley 5
  • [Bug Report] Program Crashes When Using Kaitai Struct to Analyze BMP and PNG

    [Bug Report] Program Crashes When Using Kaitai Struct to Analyze BMP and PNG

    When I use the Kaitai Struct analyzer plugin on PNGs or BMPs the program closes (I presume it's crashing) with no error messages. I'm using the pre-built binary for Windows.

    bug released python 
    opened by CooperW824 5
  • Some questions for plugins in python

    Some questions for plugins in python

    Hi,

    got some question about plugins in python :

    • In the JSON file, when I put "decimal" or "integer" type for my parameter, it doesn't change anything, in the both cases it's an integer, is it normal ? Do i miss something ?

    • Can we put negative values in our integer field ? And so, can we precise a maximum and a minimum value in the JSON file for a specific parameter ?

    • When I try to add a boolean parameter in my JSON file and execute my plugin in Hobbits, I've always this error :

    "Operator Plugin Error: Plugin 'test' reported an error with its processing: Other errors:
    Failed to parse arg 4"
    (here the arg 4 is of course my boolean, if i put more parameters, it will say 'arg 5' or 'arg 6')
    

    and this is my script in python :

    def operate_on_bits(input, output_bits, output_info, perso_var, progress):
      if input.bits.size() > 300 and perso_var:  # the perso_var is my boolean
        output_info.add_highligt("python", "mychunck", 20, 3000)
    
      output_bits.resize(input.bits.size())
      for i in range(0, input.bits.size()):
        output_bits.set(i, input.bits.at(i))  # this is the only other modification in the default plugin (I removed the 'not')
        if progress.is_cancelled():
          return
        progress.set_progress(i, input.bit.size())
    

    and my JSON file :

    {
      "name": "test",
      "description": "plugin test",
      "tags": ["test"],
      "script": "main.py",
      "type": "operator",
      "extra_paths": [],
      "parameters": [
        {
          "name": "perso_var",
          "type": "boolean"
        }
      ]
    }
    
    bug documentation python 
    opened by Pagalom 5
  • Replace FFTW library with the PFFFT library

    Replace FFTW library with the PFFFT library

    The FFTW library was utilized in two Hobbits plugins, the Spectrogram and the Width Framer. Due to licensing conflicts, the FFTW library could no longer be used in Hobbits. After researching different libraries, @hello-adam and I decided to use the PFFFT library.

    I have refactored the code for both the Spectrogram and the Width Framer. Also, I implemented a QComboBox that allows users to change the FFT Size within the Spectrogram. Prior to adding this, FFT Size was a QSpinBox that allowed users to manually enter the FFT size or use up and down arrows to increment. The QComboBox allows users to choose FFT sizes in powers of two, ranging from 2^5 to 2^14 (or, 32 to 16,384).

    released 
    opened by melissascode 4
  • Feature: USB reader importer plugin for Hobbits

    Feature: USB reader importer plugin for Hobbits

    A new plugin to be able to read the data coming off of Bulk and Interrupt USB device Endpoints.

    A UI to select from various devices that are plugged in or operating on the USB bus, after selecting a device, select the interface, the alternate setting, and endpoint to read from.

    Select the number of times you want to read from a device, the delay in between transfers (so that you can use the device while its being read from), and the maximum duration to wait for a transfer before the transfer times out.

    Hit "OK" to read the requested data from the device, hobbits will prompt you if an error is met.

    released 
    opened by CooperW824 4
  • making a plugin using QtCreator

    making a plugin using QtCreator

    May i miss something but the old way to make a plugin in C was to install wizards like said in the tutorial, but I'm unable to find it. Is their something i miss ? Did the way to do that improved ?

    I made some researches and found this, from Adam. But i can't find the file in the Code part.

    Can someone help me on this point ?

    Thanks !

    question 
    opened by Pagalom 4
  • bug on highligthing with kaitai

    bug on highligthing with kaitai

    A file generated with the following command

     echo 2f fe b8 9b 22 00 00 00  00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 a4 0f 08 00 1a 06 08 af d0 bc 82 06 | xxd -r -p > file.bin
    

    opened with hobbits with the following ksy:

    meta:
      file-extension: bla
      id: servermod
      endian: le
      imports:
        - /serialization/google_protobuf
    seq:
      - id: records
        type: record
        repeat: eos
    types:
      main_header:
        seq:
          - id: ip1
            type: u1
          - id: ip2
            type: u1
          - id: ip3
            type: u1
          - id: ip4
            type: u1
          - id: body_len
            type: u4le
      record:
        seq:
          - id: len_record
            type: main_header
            doc: Size of whole record, including all headers, footers and data
          - id: ctype
            type: u1
            doc: ctype
          - id: flow
            type: u1
            doc: flow
          - id: cid
            type: u4le
            doc: cid
          - id: did
            type: u4le
            doc: did
          - id: seq1
            type: u8le
            doc: seq1
          - id: command
            type: u2le
            doc: command
          - id: protobuf
            size: len_record.body_len - 24
            type: google_protobuf
    

    When you open the file with the struct in kaitai IDE works correctly, but opening in hobbits when you select the protobuf part (the last 10 bytes - 08 af d0 bc 82 06 ) it's highligthed the start of the file.

    If you concatenate some times and select the protobuf of any of the registers always it's highligthed the starting bytes of the file.

    The command to generate with 3 concats is:

    echo 2f fe b8 9b 22 00 00 00  00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 a4 0f 08 00 1a 06 08 af d0 bc 82 06 | xxd -r -p > file.bin ; echo 2f fe b8 9b 22 00 00 00  00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 a4 0f 08 00 1a 06 08 af d0 bc 82 06 | xxd -r -p >> file.bin ; echo 2f fe b8 9b 22 00 00 00  00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 a4 0f 08 00 1a 06 08 af d0 bc 82 06 | xxd -r -p >> file.bin
    
    opened by accountgit 4
  • analyzing Kaitai Structs fails on missing 'pkg_ressources' python module

    analyzing Kaitai Structs fails on missing 'pkg_ressources' python module

    If your system python is not 3.9 you're pretty screwed on analizing Kaitai Structs:

    Python stderr:
    Traceback (most recent call last):
      File "/tmp/HobbitsPythonrBHuvX/thescript.py", line 162, in parse_data
        struct_module = importlib.__import__(package_name, fromlist=[class_name])
      File "<frozen importlib._bootstrap>", line 1109, in __import__
      File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
      File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
      File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
      File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
      File "<frozen importlib._bootstrap_external>", line 850, in exec_module
      File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
      File "/tmp/hobbits-GGgAzl/png.py", line 3, in <module>
        from pkg_resources import parse_version
    ModuleNotFoundError: No module named 'pkg_resources'
    
    opened by derVedro 3
  • Kaitai Struct parsed output table missing 'value' column for some KSY files

    Kaitai Struct parsed output table missing 'value' column for some KSY files

    Take this ksy for example:

    meta:
      id: test
    seq:
    - id: test
      type: test
    types:
      test:
        seq:
        - id: t
          type: u1
    

    The parsed output table only contains columns 1 and 2, not the third 'value' column. image

    Modifying the ksy by adding a field which uses a builtin type at the start of the sequence fixes the issue

    meta:
      id: test
    seq:
    - id: test1
      type: u1
    - id: test
      type: test
    types:
      test:
        seq:
        - id: t
          type: u1
    

    image

    opened by noperator-zz 2
  • Copying hex from hex viewer

    Copying hex from hex viewer

    Hello,

    Thank you very much for the wonderful software!

    I was wondering, how do I copy to clipboard from the hex editor? I can't seem to select anything.

    image

    opened by radio-satellites 1
  • hobbits-runner shouldn't need a display?

    hobbits-runner shouldn't need a display?

    I have limited knowledge of Qt so I'm not sure if this is even possible with the way hobbits-runner is implemented currently, but it for some reason still needs a display to run, even though it is a purely CLI tool. When trying to run it over SSH i get the error in the screenshot below.

    hobbits-runner

    opened by jakecrowley 3
  • Display decimal integer and float representation at cursor

    Display decimal integer and float representation at cursor

    Would be very valuable to interpret the bits beginning at cursor as a decimal number or floating point while in hex and binary view. In other hex editors this feature is useful to identify file offsets, for example.

    opened by markasoftware 1
Releases(v0.53.2)
Owner
Mahlet
Because Engineering Matters.
Mahlet
A library to create multi-page Streamlit applications with ease.

A library to create multi-page Streamlit applications with ease.

Jackson Storm 107 Jan 04, 2023
Flenser is a simple, minimal, automated exploratory data analysis tool.

Flenser Have you ever been handed a dataset you've never seen before? Flenser is a simple, minimal, automated exploratory data analysis tool. It runs

John McCambridge 79 Sep 20, 2022
PostQF is a user-friendly Postfix queue data filter which operates on data produced by postqueue -j.

PostQF Copyright © 2022 Ralph Seichter PostQF is a user-friendly Postfix queue data filter which operates on data produced by postqueue -j. See the ma

Ralph Seichter 11 Nov 24, 2022
MetPy is a collection of tools in Python for reading, visualizing and performing calculations with weather data.

MetPy MetPy is a collection of tools in Python for reading, visualizing and performing calculations with weather data. MetPy follows semantic versioni

Unidata 971 Dec 25, 2022
PySpark Structured Streaming ROS Kafka ApacheSpark Cassandra

PySpark-Structured-Streaming-ROS-Kafka-ApacheSpark-Cassandra The purpose of this project is to demonstrate a structured streaming pipeline with Apache

Zekeriyya Demirci 5 Nov 13, 2022
This is an example of how to automate Ridit Analysis for a dataset with large amount of questions and many item attributes

This is an example of how to automate Ridit Analysis for a dataset with large amount of questions and many item attributes

Ishan Hegde 1 Nov 17, 2021
BIGDATA SIMULATION ONE PIECE WORLD CENSUS

ONE PIECE is a Japanese manga of great international success. The story turns inhabited in a fictional world, tells the adventures of a young man whose body gained rubber properties after accidentall

Maycon Cypriano 3 Jun 30, 2022
This repo contains a simple but effective tool made using python which can be used for quality control in statistical approach.

This repo contains a powerful tool made using python which is used to visualize, analyse and finally assess the quality of the product depending upon the given observations

SasiVatsal 8 Oct 18, 2022
A Numba-based two-point correlation function calculator using a grid decomposition

A Numba-based two-point correlation function (2PCF) calculator using a grid decomposition. Like Corrfunc, but written in Numba, with simplicity and hackability in mind.

Lehman Garrison 3 Aug 24, 2022
ICLR 2022 Paper submission trend analysis

Visualize ICLR 2022 OpenReview Data

Jintang Li 75 Dec 06, 2022
collect training and calibration data for gaze tracking

Collect Training and Calibration Data for Gaze Tracking This tool allows collecting gaze data necessary for personal calibration or training of eye-tr

Pascal 5 Dec 17, 2022
Common bioinformatics database construction

biodb Common bioinformatics database construction 1.taxonomy (Substance classification database) Download the database wget -c https://ftp.ncbi.nlm.ni

sy520 2 Jan 04, 2022
Tools for the analysis, simulation, and presentation of Lorentz TEM data.

ltempy ltempy is a set of tools for Lorentz TEM data analysis, simulation, and presentation. Features Single Image Transport of Intensity Equation (SI

McMorran Lab 1 Dec 26, 2022
Includes all files needed to satisfy hw02 requirements

HW 02 Data Sets Mean Scale Score for Asian and Hispanic Students, Grades 3 - 8 This dataset provides insights into the New York City education system

7 Oct 28, 2021
Very basic but functional Kakuro solver written in Python.

kakuro.py Very basic but functional Kakuro solver written in Python. It uses a reduction to exact set cover and Ali Assaf's elegant implementation of

Louis Abraham 4 Jan 15, 2022
4CAT: Capture and Analysis Toolkit

4CAT: Capture and Analysis Toolkit 4CAT is a research tool that can be used to analyse and process data from online social platforms. Its goal is to m

Digital Methods Initiative 147 Dec 20, 2022
CINECA molecular dynamics tutorial set

High Performance Molecular Dynamics Logging into CINECA's computer systems To logon to the M100 system use the following command from an SSH client ss

J. W. Dell 0 Mar 13, 2022
An Integrated Experimental Platform for time series data anomaly detection.

Curve Sorry to tell contributors and users. We decided to archive the project temporarily due to the employee work plan of collaborators. There are no

Baidu 486 Dec 21, 2022
An Indexer that works out-of-the-box when you have less than 100K stored Documents

U100KIndexer An Indexer that works out-of-the-box when you have less than 100K stored Documents. U100K means under 100K. At 100K stored Documents with

Jina AI 7 Mar 15, 2022
MS in Data Science capstone project. Studying attacks on autonomous vehicles.

Surveying Attack Models for CAVs Guide to Installing CARLA and Collecting Data Our project focuses on surveying attack models for Connveced Autonomous

Isabela Caetano 1 Dec 09, 2021