Fusil is a multi-agent system (MAS): it uses simple objets called “agents” exchanging messages though asynchronus “message (mail) transfer agent” (MTA). This architecture allows the whole project to be very modular and very customisable.
Each agent have a live() method called at each session “step”, but also event handler. An event has a name and may contains arguments. The name is used in agent method name: eg. “on_session_start()” method is called when the session starts.
Some agents do change the environment and some other watchs for errors and strange behaviour of programs.
- CreateProcess: create a process
- StdoutFile: created by CreateProcess to store process output
- MangleFile: generate an invalid file using valid file
- AutoMangle: MangleFile with autoconfiguration based on aggressivity factor
- NetworkClient / NetworkServer: network client / server
- TcpClient: TCP network client
- UnixSocketClient: UNIX socket client
- HttpServer: HTTP server
- FileWatch: watch a text file, search specific text patterns like “segmentation fault”
- CpuProbe: watch CPU used by the process created by CreateProcess
- ProcessTimeWatch: watch process execution duration
- WatchStdout: watch process output (stdout)
- WatchProcess: watch process created by CreateProcess
- AttachProcess: watch running process
- Syslog: watch /var/log/messages and /var/log/syslog files