SkillAgentSearch skills...

Anonymouth

Anti-stylometry tool based on PSAL's Anonymouth

Install / Use

/learn @spencermwoo/Anonymouth
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

<a id="top"></a>Anonymouth

A Document Anonymization Tool <br> Version: 0.5<br>

The Privacy, Security and Automation Lab (PSAL)<br> Drexel University, Philadelphia PA<br> https://psal.cs.drexel.edu/index.php/Main_Page

Index

  1. Set Up
  2. Development
  3. Credits

Set Up

<a id="introduction"></a>Introduction

Anonymouth is a Java-based application aiming to provide users with tools on anonymizing documents they have written.

Anonymouth makes use of JStylo libraries (an author detection application also develped by PSAL) to detect stylometric patterns and determine features (like word length, bigrams, trigrams, etc.) that the user should remove/add to help obsure their style and identity.


Disclaimer

Though Anonymouth and it's team works hard to provide you with tools to help remove your identity from documents you have written, IN NO WAY WE CAN GUARANTEE THAT YOUR DOCUMENT IS ANONYMOUS OR NOT ANONYMOUS.<br>

Anonymouth is always giving you it's best guess, it's best idea of where your document stands, though it should not be taken as an absolute (for example, you could have forgotten to remove your name from the document and Anonymouth has no way to know that that's your name and should remove it). What we can say is Anonymouth is only as good as you make it, and when used right, can be helpful in guiding your document towards the right direction.

Back to top


<a id="dependencies"></a>Dependencies

Java 7 is required to run Anonymouth. If you are unsure whether or not you have it installed, follow these steps to see:<br>

  1. Open up your Terminal
  2. Type "java -version" without the quotes
  3. If you see something like java version "1.7.x_xx" then you're ready to go! If not, then that means you most likely don't have Java 7 installed.

<a id="run"></a>Running Anonymouth

The simplest way to run Anonymouth is to check out the compiled branch and run the compiled program.

Back to top


<a id="installation"></a>IDE and Development Setup

Note: This is currently the only way to compile and run Anonymouth. We will be including an updated build file soon so that you may build and run Anonymouth easily with a certain command.

The quickest way to install Anonymouth is to clone or download the zip of the <a href="https://github.com/psal/anonymouth">Anonymouth github project here</a>.

Import this project as an existing project into Eclipse (or clone and import directly within Eclipse if you have the Eclipse eGit plugin). Also make sure that Java 7 is your selected compiler by checking Preferences/Java/Compiler and is an included Library in your Java Build Path.

Anonymouth requires the included jsan_resources directory in it's running directory (The main Anonymouth directory containing lib, src, etc.). It should be in the correct directory by default.

Anonymouth requires a corpus (basically a database of other authors and documents they have written) to run. These allows your documents to be classified with respect to other stored documents and styles. Anonymouth will then give you an idea of how anonymous it thinks your document is and what features are to be removed or added to help you get there. Three different corpi are included in the project directory for you to choose, and are located at:

  • ./anonymouth/jsan_resources/corpora/amt
  • ./anonymouth/jsan_resources/corpora/drexel_1
  • ./anonymouth/jsan_resources/enron_demo

Though we included corpi, you are more than welcome to use any other corpus you may have. It is recommended to use many different combinations of authors so you can get the best possible picture of where your document stands anonymously in regards to the others.

Anonymouth also needs the following jars in the lib directory (everything should already be included):

<table> <tr> <th>Package Name</th><th>Version</th> </tr> <tr> <td>weka</td><td>3.7.9</td> </tr> <tr> <td>fasttag</td><td>2.0</td> </tr> <tr> <td>Jama</td><td>1.0.3</td> </tr> <tr> <td>jaws</td><td>1.3</td> </tr> <tr> <td>jcommon</td><td>1.0</td> </tr> <tr> <td>freechart</td><td>1.0.14</td> </tr> <tr> <td>jgaap</td><td>5.4.0</td> </tr> <tr> <td>microsoft translator</td><td>0.6.1</td> </tr> <tr> <td>miglayout</td><td>4.0</td> </tr> <tr> <td>tt4j</td><td>1.0.15</td> </tr> <tr> <td>Stanford postagger</td><td>-</td> </tr> <tr> <td>ui</td><td>-</td> </tr> </table>

Once Anonymouth is all set up in Eclipse, you need only run ThePresident from the package edu.drexel.psal.anonymouth.gooie to begin using it.

Please note that there are two main package categories, JStylo and Anonymouth. The majority of Anonymouth development should be in the Anonymouth packages as Anonymouth simply uses the JStylo libraries for parts of the initial document process, so beginners need only concern themselves with the Anonymouth packages.

Back to top

Development

<a id="basic-logic-flow"></a>Basic Logic Flow

↓ ---LAUNCH---

<b>Setup and start up:</b> anonymouth.gooie.ThePresident

Should never be accessed in any other class (or at least limit it). It's only purpose is to initialize the main class and other start up classes.

  • Readies and displays splash screen
  • Prepares the Logger
  • Initializes the GUIMain instance (and with it all Anonymouth class instances)
  • Displays the start window, which from there it takes over
↓ ---AUTOMATICALLY DISPLAYS---

<b>Start up window:</b> anonymouth.gooie.StartWindow

The first window that shows up (not counting the splash screen) when Anonymouth loads up. Allows the user to change advanced processing settings, access the pre process set up wizard, or start Anonymouth.

↓ ---USER CLICKED START BUTTON---

<b>Initial document processing begins immediately with: </b> anonymouth.engine.DocumentProcessor

Inititalized within GUIMain as should nearly all Anonymouth class instances, this holds the main method and thread that handles processing and reprocessing documents. All processing events can be traced back to this class.

↓ ---PROCESSING COMPLETE---

<b>Main GUI Code:</b> anonymouth.gooie.GUIMain

The main gui window is displayed. This is also the central "hub" for Anonymouth. This should be the main instance center, and anytime you want to access code from other classes from another class you more than likely will be going through this.

  • Houses and initialized nearly all class instances in Anonymouth
  • Lays out and creates the main Anonymouth window

<b>From here the logic flow depends largely on what the user does:</b>

Back to top


<a id="basic-class-structure"></a>Basic Class Structure

---Naming Convention---

For the most part, Anonymouth splits UI objects into two classes: [Class name]Panel/Window and [Class name]Driver. By convention and a general guideline, the Panel/Window class:

  • Creates and lays out all swing components
  • Handles all get, set, and is methods (if any)
  • Handles assert methods (if any)
  • Handles UI update/panel switch methods (if any)

While the corresponding Driver class:

  • Handles all listeners
  • Handles most backend/data manipulation and updating

Again, these are just general guidelines. Sometimes it makes more sense to just have one class handle everything if it's a small object, or sometimes it doesn't make sense to have a separate Panel/Window class but it does to have a Driver class, etc. You just need to use your best judgement on what will make things more organized and easier to understand.

---Package / Organizing Convention---

Anonymouth loosly follows these guidelines for class organization in packages:

  • [anonymouth.engine](https://github.com/spencermwoo/anonymouth/tree/master/sr

Related Skills

View on GitHub
GitHub Stars11
CategoryDevelopment
Updated1y ago
Forks6

Languages

Java

Security Score

60/100

Audited on Feb 21, 2025

No findings