ideas icon indicating copy to clipboard operation
ideas copied to clipboard

ATA device simulator

Open KOLANICH opened this issue 3 years ago • 0 comments

Project description

It may be nice to have software behaving like an ATA device. It may be useful for

  • testing and debugging the software interacting to HDDs;
  • creating honeypots;

The software should allow usage as a shared library in 2 modes:

  • as a class simulating the device, allowing tools to implement processing the commands via a mock class
  • as a server of some widespread ATA-over-network protocol, like AoE. To start a server a user uses a shared library from an own application.

In both cases a user can plug own event listeners. It would allow creation of applications i.e.

  • a disk simulator
  • a debugging proxy somehow similar to mitmproxy and Fiddler
  • tests for a tool via a mock

The software should be divided at least into the following components:

  • ATA-over-ethernet library providing a functionality of AoE server. There are some libs.
  • ATA library parsing ATA commands and exposing them as objects, with full access to their internal structure.
    • may include machine-readable formal models for ATA commands written in a special DSL, i.e. a DSL above YAML/JSON
  • Device simulation framework, having abstract methods for
    • dispatching between ATA commands
    • tracking the state of the device
    • managing event listeners
  • Backend loader and manager. There are some solutions, from COM and XPCOM, to libs like pugg
  • classes implementing ATA commands
  • backends simulating actual devices and commands.

Relevant Technology

  • ATA

  • ATA over Ethernet

  • https://github.com/open-source-ideas/open-source-ideas/issues/128

  • XPCOM

Complexity and required time

Complexity

  • [x] Beginner - This project requires no or little prior knowledge of the technolog(y|ies) specified to contribute to the project - for core
  • [x] Advanced - The project requires the user to have a good understanding of all components of the project to contribute - for backends

Required time (ETA)

  • [x] Much work - The project will take more than a couple of weeks and serious planning is required

Categories

  • [x] Developer Tooling

KOLANICH avatar Jun 22 '21 05:06 KOLANICH