This page provides a high level overview Faraday and the role of its components.
Faraday is a web application, the Server is made with python using Flask and the Frontend is made with ReactJS. It is deployed as a standard WSGI application. Its possible to interact with the Server with Faraday client and you can automatize tool usage with Faraday agent.
Faraday uses PostgreSQL as a database engine. The Server provides everything else using a REST API. You can also make queries over the relational database structured according to our Host/Services/Vulnerability models (server/models.py). Our Server acts as a Web Server build upon Twisted which provides websockets, wsgi and serves static files.
Faraday client provides an interface for interacting with a terminal that allows the user to execute commands which results will be loaded inside Faraday Server. The Client also allows the user to upload tool reports, create workspaces and configure Faraday Plugins
Faraday is accessed by a Web Browser or the Faraday Client. Both clients communicate with Faraday Server via its REST API.
The data is persisted within a PostgreSQL database, processed with python libraries as SQLAlchemy and Marshmallow.
The server has other main components as the Report Processor, or the Websocket Server. The latter provides information to the Client, and the Agents.
The Faraday Agents allows to automate the upload of different data to the server, such as integration with other applications or services; or execute some tools that the Faraday plugins can process. Moreover, the Agents can be executed on any remote computer and its Executors can be written in any language.
Faraday has Burp/Zap Extensions that run inside the third party application. Using Faraday addons provides flexibility to ingress information inside Faraday Server from other applications.
Faraday manage command can generate the current database schema with:
faraday-manage database-schema