From 4562875c75118b8267e289555aa8f2fe8084eb54 Mon Sep 17 00:00:00 2001 From: Ivan Olexyn Date: Sun, 12 Jan 2020 14:50:58 +0100 Subject: [PATCH] Update README. --- README.md | 32 +++++++++++++++++++++++++------- src/app/Main.java | 2 -- src/app/img/icon.png | Bin 0 -> 6311 bytes src/app/img/mucc-logo.png | Bin 19228 -> 0 bytes 4 files changed, 25 insertions(+), 9 deletions(-) create mode 100644 src/app/img/icon.png delete mode 100644 src/app/img/mucc-logo.png diff --git a/README.md b/README.md index c8fbf82..9a8487b 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,13 @@ -## About +###Table of Contents +1. [About](#about) +2. [Getting Started](#getting-started) +3. [Description](#description) +4. [Package Contents](#package-contents) +5. [Issues](#issues) +6. [Screenshot](#screenshot) + + +### About mucc is a tool for processing data recovered by scalpel. It's features include: 1. Splitting PDF files into sub-files. @@ -7,9 +16,18 @@ It's features include:

-## How it Works +### Getting Started +* Download and extract the [JavaFX SDK](https://gluonhq.com/products/javafx/). +* Add the `/javafx-sdk-11/lib/`as a library to your project. +* Add `--module-path /javafx-sdk-11/lib --add-modules=javafx.controls,javafx.fxml` to VM options. +* Run + +
+
+ +### Descripton -#### Retrieving Sub-Files +##### Retrieving Sub-Files scalpel parses disk images for %PDF headers and %EOF footers. @@ -18,13 +36,13 @@ concatenated sub-files. Here mucc finds the nested %PDF and %EOF tags and returns the files with byte sized precision. -#### Deleting Duplicates +##### Deleting Duplicates Here mucc calculates the md5 hash of each file and deletes the identical files.

-## Contents of `src/app` +### Package Contents | Class | Description | |---------------|-------------| @@ -41,7 +59,7 @@ Here mucc calculates the md5 hash of each file and deletes the identical files.

-## Issues +### Issues - %PDF tags are not parsed correctly if cat output contains multiple tabs. - Nested duplicates are not be deleted on first pass. @@ -52,7 +70,7 @@ Here mucc calculates the md5 hash of each file and deletes the identical files.

-## Screenshot +### Screenshot ![UI](src/app/img/screen.png) diff --git a/src/app/Main.java b/src/app/Main.java index 74f04c7..2295627 100644 --- a/src/app/Main.java +++ b/src/app/Main.java @@ -4,10 +4,8 @@ import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx.scene.Parent; import javafx.scene.Scene; -import javafx.stage.DirectoryChooser; import javafx.stage.Stage; -import java.io.File; public class Main extends Application { diff --git a/src/app/img/icon.png b/src/app/img/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..741b77830f5602d6d6dbfd79157c1c688c4224b1 GIT binary patch literal 6311 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 literal 0 HcmV?d00001 diff --git a/src/app/img/mucc-logo.png b/src/app/img/mucc-logo.png deleted file mode 100644 index fd8ffd50f780253d9c4c08222f3f4d4c78680717..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19228 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 C&C3=5