git://github.com/digination/Synapse.git
interactions at their best.
synapse: interactions at their best

What is Synapse ?

Synapse is a DGRM, standing for "datastreams graphical router and manipulator".
it concretelly allows to make multiple applications and network sockets running concurrently in real-time and then define communication rules between them, all that in a graphical manner through diagrams construction. Synapse was designed arround 3 main principles :

Applications interactions improvement : create strong interactions between the many applications and services of your computer environment, and map them easilly with a diagram.

Reusability : with their diagram structure, synapse workflows are fairy easy to modify and can even be re-imported "as-is" in new workflows.Synapse will also come with multiple prebuilt blocks so you will be able to build applications and sockets interaction like a lego game.

Workflows readability : By looking at a synapse workflow, you instantly get a clue about what it exactly does, what are the steps and what are the relations between them. Thus Synapse allows to build very rich and complex interactions between applications and/or services, while keeping their relations scheme very clear.

Written with the help of the python language, Synapse uses multiple third part components:

- pygoocanvas ( libgoocanvas wrapper for python ) , to produce and handle the diagrams.
- pexepct ( port of expect in python ) , to manage the applications running concurrently and their I/O.
- pygtk , to manage the GUI.

What can i use it for ?

Anything you want... security management, backups planication, SQL Servers maintainance...
you're only limited by your own imagination !

Synapse wasn't created for a specific purpose, yet i must admit that i did have specific needs for Synapse. I needed an application enabling me to quickly create and try penetration testing scenarios, for instance to check IDS/IPS attack signatures , and mostly to be sure to bypass them :p. Now, let me ensure you that there is no other tool out there able to perform pentests like Synapse does...it's simply amazing for that !

How does it work ?

Synapse consists in creating diagrams made of building blocks linked with each others by pipes. Each building block can represent either :

- An Application.

- A Socket connection to a remote service.

- A datastream manipulation block.

- A datastream injector.

- A datastream monitor ( pretty much like a virtual tty).

- A prebuilt or user-created subworkflow.

The internal properties of these building-blocks are mostly user-defined, with the help of the objects properties inspector located on the lower right side of the GUI. Once the workflow is correctly set according to the user's will, he can then start playing it (by cliking on the green arrow on the upper middle of the interface ) and see what happens ;-)

To add a new building block from the toolbox primitives, just Drag the building block icon you want to add, and drop it in the drawing area. Pipes on their side, are created by clicking on a block's output (red or blue arrows on the right) then on an other block's input (blue arrows on the left). Pipes can be either unidirectional or bidirectional, you can set this with the objects properties inspector.

How did you get the idea ?

Synapse was born from simple deduction: When it comes to penetration testing tools, they all work great separately but there is no simple way to make them work together except scripting. Scripting is ok when you have to make a few applications to interact with each other but what about dozens ? this is the issue Synapse tries to solve: Achieving high applications and services interactions in a simple, graphical way.

Can i give it a try ?

Yes, but you must be aware that this project is still under heavy developpement, meaning that some features are buggy and some other are simply missing. Though if you want to try Synapse, you can retrieve the code with git, using the following command: git-clone git://github.com/digination/Synapse.git

Can i get involved ?

Of course, specially if you are knowledgeable in python developpement, and even more if you are familiar with pygoocanvas, pygtk and/or pexpect. By the way, if you wish to participate to the developpement of Synapse, just write a mail to clement|at|digi-nation.com and we'll discuss it further ;).

Screenshots