Mornella v0.1
HackingTeam S.r.l.
Alberto Pelliccione & Thomas Valentini

Table of Contents
Table of Figures
Stereotypes
use
Abstract false
Leaf false
Root false
Base Type Usage

Class Diagram
Class Diagram1

Name Value
Show Attribute Getter Setter false

Summary

Name Documentation
Conf

Classe per la gestione del file di configurazione: caricamento, update, aggiornamento e rimozione del file di configurazione.

Encryption

Classe per la gestione della cifratura.

Device

Classe per la lettura di varie informazioni sul device e per il browsing del database contenente le funzionalita'

supportate dalla backdoor. Questa classe viene utilizzata soltanto durante la chiamata a TaskInit().

Status

Classe _statica_ che definisce lo stato della backdoor.

Transfer

Classe _statica_ per la gestione delle connessioni e l'invio dei log.

Log
Task

Classe _statica_ per la gestione dei task

Sms

Gestisce gli SMS sulla SIM e sul telefono.

Core

Classe principale di Mornella, gestisce l'avvio, lo stop e l'uninstalla della backdoor.

PhoneBook

Classe che gestisce la rubrica del telefono.

Timer

Timer e' un agente "speciale", non produce log ma va avviato e stoppato come un agente normale, oltretutto agisce come gli altri agenti sulla tabella degli eventi. Per la sua configurazione bisogna leggere la tabella degli eventi ed instanziare un time per ogni EVENT_TIMER identificato.

CallList

Gestisce la lista delle chiamate.

N/A Via SMS non possiamo inviare dati binari, per cui il campo Len e ID di ogni comando dovranno essere scritti in plain ASCII. Di conseguenza i due byte del campo Len consentiranno in effetti di rappresentare al massimo 255 valori che comunque vanno bene visto che l'SMS e' piu' corto. Stesso discorso vale per l'ID del comando.
N/A

Formato dei comandi:

xxxx|xxxxx.......xxxxx|

4      n

  • 4 byte per indicare la lunghezza del comando, questo parametro rappresentera' la lunghezza in plain ASCII (0...FFFF).
  • n byte che rappresentano il comando.

Se il comando viene inviato via SMS puo' essere lungo al massimo 140 byte (poiche' la codifica via

SMS e' a 7-bit). E non puo' contenere dati binari.

typedef struct{

UINT CommandLen;

BYTE* pCommand;

}_Command, *pCommand;

N/A

Common.h

AgentStruct, EventStruct e ActionStruct vanno definite in un file include comune, anche i semafori

N/A

Tabella delle azioni:

UINT uActionId; // Id dell'azione

UINT uActionType; // Tipo di azione da eseguire

Tabella degli eventi:

UINT uEventType; // Tipo di evento (Timer, sms, call etc...)

UINT uEventId; // Id dell'evento (univoco)

UINT uActionId; // Id dell'azione da eseguire

BOOL bTriggered; // Stato dell'evento (triggered, non triggered)

Tabella degli agenti:

UINT uAgentId;  // Id dell'agente

UCHAR AgentStatus; // Running, Stopped, Closing

UINT uParamLength; // Lunghezza in byte del buffer che punta ai parametri di avvio

PVOID pParams; // Puntatore alla lista dei parametri

#define AGENT_STOPPED 0

#define AGENT_RUNNING 1

#define AGENT_CLOSING 2 // Segnale che indica all'agente di chiudersi

N/A

Definizione degli agenti:

#define AGENT_SMS 0x1

#define AGENT_PHONEBOOK 0x2

#define AGENT_CALLLIST 0x3

Definizione degli eventi:

#define EVENT_TIMER 0x1

#define EVENT_SMS 0x2

#define EVENT_CALL 0x3

#define EVENT_INTERNET 0x4

Definizione delle azioni:

#define ACTION_SYNC 0x1

#define ACTION_UNINSTALL 0x2

#define ACTION_RELOAD 0x3

#define ACTION_SMS 0x4

#define ACTION_TOOTHING 0x5

N/A

Variabili globali che verranno settate dal configuratore:

BYTE AesKey[32]; -> Inizializzata ad BAB0BAB0....

WCHAR ConfName[32]; -> Inizializzata a C00DC00DC00D...

WCHAR LogDirName[32]; -> Inizializzata a F0CAF0CA....

BYTE BackdoorID[8];  -> Inizializzata a D00FD00F

BYTE BTMacAddress[8]; -> Inizializzata a BACABACA

BYTE WifiMacAddress[8]; -> Inizializzata a FACAFACA

WCHAR WifiSSID[32]; -> Inizializzata a BABEBABE

BYTE BTPin[8]; -> Inizializzata a B00BB00B (il PIN e' in ASCII!!!!)

BYTE WifiKey[16]; -> Inizializzata a CAFECAFE

BYTE Version[16]; -> Anno/mese/giorno

BYTE UniqueKey[16]; -> Inizializzata a CACACACA

DWORD ServerIP; -> Inizializzata a 0xFFAAEEBB

BYTE ServerIPv6[32]; -> Inizializzata a 0xF0F0F0

Details

Conf
Name Value
Active false
Business Model false
Visibility public
Leaf false
Root false
Documentation

Classe per la gestione del file di configurazione: caricamento, update, aggiornamento e rimozione del file di configurazione.

Transit From Conf

Attributes
private wConfName : WCHAR
Documentation Puntatore al nome del file di configurazione, viene allocato dal costruttore e liberato dal distruttore dell'oggetto.
Initial Value NULL
Type Modifier *
Has Setter false
Has Getter false
Derived false
Multiplicity Unspecified
Visible true
Aggregation None

private wEncryptedConfName : WCHAR
Documentation Nome del file di configurazione preso da wConfName e poi cifrato tramite la classe Encryption.
Initial Value NULL
Type Modifier *
Has Setter false
Has Getter false
Derived false
Multiplicity Unspecified
Visible true
Aggregation None

private StatusObj : Status
Has Setter false
Has Getter false
Derived false
Multiplicity Unspecified
Visible true
Aggregation None

private EncryptionObj : Encryption
Documentation

Oggetto Encryption per la decifratura del file di configurazione e del suo nome.

Type Modifier *
Has Setter false
Has Getter false
Derived false
Multiplicity Unspecified
Visible true
Aggregation None

Operations
private GetAgents () : BOOL
Static false
Leaf false
Documentation

Legge lo stato degli agenti dalla configurazione e popola la AgentStruct list. Torna TRUE se la lettura e' andata

a buon fine, FALSE altrimenti.

Ordered false
Unique true
Query false

private GetEvents () : BOOL
Static false
Leaf false
Documentation

Legge lo stato degli eventi dalla configurazione e popola la EventStruct list. Torna TRUE se la lettura e' andata

a buon fine, FALSE altrimenti.

Ordered false
Unique true
Query false

private GetActions () : BOOL
Static false
Leaf false
Documentation

Legge lo stato delle azioni dalla configurazione e popola la ActionStruct list. Torna TRUE se la lettura e' andata

a buon fine, FALSE altrimenti.

Ordered false
Unique true
Query false

private GetConfiguration () : BOOL
Static false
Leaf false
Documentation

Prende i dati di configurazione della backdoor dal file e li mette dentro Status.Configuration. Torna TRUE se

la lettura e' andata a buon fine, FALSE altrimenti.

Ordered false
Unique true
Query false

public Conf ()
Static false
Leaf false
Documentation

Prende il nome del file di configurazione, in chiaro dalla variabile globale, lo copia dentro wConfName, cifra

il nome e lo copia dentro wEncryptedConfName.

Ordered false
Unique true
Query false

public LoadConf () : BOOL
Static false
Leaf false
Documentation

Prende il file di configurazione specificato nel parametro wEncryptedConfName, lo legge tramite la classe

Encryption e popola le liste AgentStruct, EventStruct, ActionStruct. Torna TRUE se le impostazioni sono state caricate

con successo, FALSE se il file non e' stato trovato. In questo caso il file viene creato e popolato con dei

valori di default. Questa funzione apre il file di configurazione e lo chiude al termine della lettura.

Ordered false
Unique true
Query false

public WriteConf (pConf : struct) : BOOL
Parameters
pConf
Multiplicity Unspecified
Documentation

Struttura che rappresenta lo stato della backdoor da scrivere nella configurazione.

typedef struct{

*list<AgentStruct *>,

*list<EventStruct *>,

*list<ActionStruct *>

}ConfStruct;

Type struct
Direction in
Static false
Leaf false
Documentation

Prende in input una struttura con tre liste (Agenti, Eventi ed Azioni) e scrive il nuovo file di configurazione,

internamente richiama la RemoveConf() per rimuovere il vecchio file. Torna TRUE se tutto e' andato a buon

fine, FALSE altrimenti. Al termine della procedura le liste puntate dal parametro vengono liberate.

Ordered false
Unique true
Query false

public RemoveConf (Type : UINT) : BOOL
Parameters
Type
Multiplicity Unspecified
Documentation

Tipo di file da rimuovere:

#define CONFIGURATION_CLEAR 0x1

#define CONFIGURATION_ENCRYPTED 0x2

#define CONFIGURATION_ALL (CONFIGURATION_CLEAR | CONFIGURATION_ENCRYPTED )

Type UINT
Direction in
Static false
Leaf false
Documentation

Rimuove il file di configurazione, il flag specifica se viene rimosso il file in chiaro o quello cifrato.

Torna TRUE se la rimozione e' andata a buon fine, FALSE altrimenti.

Ordered false
Unique true
Query false

Relationships
Unamed Usage
To Encryption
Visibility Unspecified
Stereotypes use

Unamed Usage
To Status
Visibility Unspecified
Stereotypes use

Unamed Usage
From Task
Visibility Unspecified
Stereotypes use

ORM Class Detail
Name Value
Read Only false
Cache Disable
Inheritance Strategy Per class
Reference false

Encryption
Name Value
Active false
Business Model false
Visibility public
Leaf false
Root false
Documentation

Classe per la gestione della cifratura.

Transit From Encryption

Operations
public EncryptFile (pInFile : WCHAR, pOutFile : WCHAR, Key : BYTE) : BOOL
Parameters
pInFile
Multiplicity Unspecified
Documentation

Nome completo del file da cifrare.

Type Modifier *
Type WCHAR
Direction in

pOutFile
Multiplicity Unspecified
Documentation

Nome completo del file in output che conterra' i dati decifrati.

Type Modifier *
Type WCHAR
Direction in

Key
Multiplicity Unspecified
Documentation

Chiave di cifratura lunga 32 bit per ora.

Type Modifier *
Type BYTE
Direction in
Static false
Leaf false
Documentation

Questa funzione prende un file in ingresso, lo cifra e lo scrive sul filesystem col nome di pOutFile utilizziamo

come chiave di cifratura Key. Torna TRUE se il file e' stato cifrato e generato con successo, FALSE

altrimenti.

Ordered false
Unique true
Query false

public DecryptFile (pInFile : WCHAR, pOutFile : WCHAR, Key : BYTE) : BOOL
Parameters
pInFile
Multiplicity Unspecified
Documentation

Nome del file da decifrare.

Type Modifier *
Type WCHAR
Direction inout

pOutFile
Multiplicity Unspecified
Documentation

Nome del file che conterra' i dati cifrati.

Type Modifier *
Type WCHAR
Direction inout

Key
Multiplicity Unspecified
Documentation

Chiave di decrypt, lunga per ora 32 bit.

Type Modifier *
Type BYTE
Direction inout
Static false
Leaf false
Documentation

Questa funzione prende un file in ingresso, lo decifra e lo scrive sul filesystem col nome di pOutFile utilizziamo

come chiave di decifratura Key. Torna TRUE se il file e' stato decifrato e generato con successo, FALSE

altrimenti.

Ordered false
Unique true
Query false

public EncryptName (wName : WCHAR, Seed : BYTE) : WCHAR
Parameters
wName
Multiplicity Unspecified
Documentation

Stringa da scramblare.

Type Modifier *
Type WCHAR
Direction in

Seed
Multiplicity Unspecified
Documentation

Seed di un byte (per ora e' il primo byte della chiave di cifratura).

Type BYTE
Direction in
Static false
Leaf false
Documentation

Scrambla una stringa, torna il puntatore al nome scramblato. La stringa poi va deallocata.

Type Modifier *
Ordered false
Unique true
Query false

public DecryptName (wName : WCHAR, Seed : BYTE) : WCHAR
Parameters
wName
Multiplicity Unspecified
Documentation

Stringa da cifrare.

Type Modifier *
Type WCHAR
Direction in

Seed
Multiplicity Unspecified
Documentation

Seed di un byte (per ora e' il primo byte della chiave di cifratura).

Type BYTE
Direction in
Static false
Leaf false
Documentation

Descrambla una stringa, torna il puntatore al nome descramblato. La stringa poi va deallocata.

Type Modifier *
Ordered false
Unique true
Query false

private Scramble (wName : WCHAR, Seed : BYTE, Enc : BOOL) : WCHAR
Parameters
wName
Multiplicity Unspecified
Documentation

Stringa da scamblare/descramblare.

Type Modifier *
Type WCHAR
Direction in

Seed
Multiplicity Unspecified
Documentation

Seed per il motore di scrambling.

Type BYTE
Direction in

Enc
Multiplicity Unspecified
Documentation

Se e' TRUE la stringa viene scramblata, se e' FALSE la stringa viene descramblata.

Type BOOL
Direction in
Static false
Leaf false
Documentation

Questa funzione scrambla/descrambla una stringa e ritorna il puntatore alla nuova stringa.

Type Modifier *
Ordered false
Unique true
Query false

public Sha1 (pInData : BYTE, Len : UINT, pSha : UINT) : void
Parameters
pInData
Multiplicity Unspecified
Documentation

Buffer contenente i dati su cui effettuare l'hash.

Type Modifier *
Type BYTE
Direction in

Len
Multiplicity Unspecified
Documentation

Lunghezza in byte dei dati in pInData.

Type UINT
Direction in

pSha
Multiplicity Unspecified
Documentation

Questo buffer conterra' lo Sha1 di pInData.

Type Modifier [5]
Type UINT
Direction out
Static false
Leaf false
Documentation

Funzione per la generazione di un hash a 160-bit. La funzione torna void, l'hash viene passato per riferimento

ed inserito nel buffer pSha.

Ordered false
Unique true
Query false

Relationships
Unamed Usage
From Conf
Visibility Unspecified
Stereotypes use

Unamed Usage
From Log
Visibility Unspecified
Stereotypes use

Unamed Usage
From Device
Visibility Unspecified
Stereotypes use

ORM Class Detail
Name Value
Read Only false
Cache Disable
Inheritance Strategy Per class
Reference false

Device
Name Value
Active false
Business Model false
Visibility public
Leaf false
Root false
Documentation

Classe per la lettura di varie informazioni sul device e per il browsing del database contenente le funzionalita'

supportate dalla backdoor. Questa classe viene utilizzata soltanto durante la chiamata a TaskInit().

Attributes
private DeviceStruct : struct
Documentation

Struttura che definisce le funzionalita' presenti sul dispositivo e supportate da noi.

Has Setter false
Has Getter false
Derived false
Multiplicity Unspecified
Visible true
Aggregation None

private Db : map
Documentation

Database statico dei modelli e funzionalita' supportati.

Has Setter false
Has Getter false
Derived false
Multiplicity Unspecified
Visible true
Aggregation None

private StatusObj : Status
Has Setter false
Has Getter false
Derived false
Multiplicity Unspecified
Visible true
Aggregation None

Operations
public GetDeviceType () : WCHAR
Static false
Leaf false
Documentation

Torna una stringa che descrive il modello di telefono, la stringa va poi liberata dal chiamante.

Type Modifier *
Ordered false
Unique true
Query false

public GetOsVersion (pVersionInfo : OSVERSIONINFO) : BOOL
Parameters
pVersionInfo
Multiplicity Unspecified
Documentation

Struttura di tipo OSVERSIONINFO che conterra' le informazioni relative al sistema operativo.

Type Modifier *
Type OSVERSIONINFO
Direction out
Static false
Leaf false
Documentation

Ottiene informazioni sul sistema operativo e riempie la struttura passata per riferimento, torna TRUE se la

chiamata e' andata a buon fine, FALSE altrimenti.

Ordered false
Unique true
Query false

public IsWiFiHidingSupported () : BOOL
Static false
Leaf false
Documentation

Torna TRUE se supportiamo l'hiding dell'icona del WiFi, FALSE altrimenti. Internamente questa funzione

chiama GetOsVersion() e GetDeviceType() per effettuare il browsing del Db e vedere le funzionalita'

supportate.

Ordered false
Unique true
Query false

public IsBTHidingSupported ()
Static false
Leaf false
Documentation

Torna TRUE se supportiamo l'hiding dell'icona del BlueTooth, FALSE altrimenti. Internamente questa funzione

chiama GetOsVersion() e GetDeviceType() per effettuare il browsing del Db e vedere le funzionalita'

supportate.

Ordered false
Unique true
Query false

public IsWifi () : BOOL
Static false
Leaf false
Documentation

Torna TRUE se il dispositivo e' dotato di un modulo per l'utilizzo del WiFi, FALSE altrimenti. Internamente

questa funzione chiama GetOsVersion() e GetDeviceType() per effettuare il browsing del Db e vedere le

funzionalita' supportate.

Ordered false
Unique true
Query false

public IsBT () : BOOL
Static false
Leaf false
Documentation

Torna TRUE se il dispositivo e' dotato di un modulo per l'utilizzo del BT, FALSE altrimenti. Internamente

questa funzione chiama GetOsVersion() e GetDeviceType() per effettuare il browsing del Db e vedere le

funzionalita' supportate.

Ordered false
Unique true
Query false

public IsWiFiActivable () : BOOL
Static false
Leaf false
Documentation

Torna TRUE se siamo in grado di attivare il WiFi senza intervento dell'utente, FALSE altrimenti. Internamente

questa funzione chiama GetOsVersion() e GetDeviceType() per effettuare il browsing del Db e vedere le

funzionalita' supportate.

Ordered false
Unique true
Query false

public IsBTActivable () : BOOL
Static false
Leaf false
Documentation

Torna TRUE se siamo in grado di attivare il BT senza intervento dell'utente, FALSE altrimenti. Internamente

questa funzione chiama GetOsVersion() e GetDeviceType() per effettuare il browsing del Db e vedere le

funzionalita' supportate.

Ordered false
Unique true
Query false

public GetSimId (pSimId : BYTE) : BOOL
Parameters
pSimId
Multiplicity Unspecified
Documentation

Puntatore ad un buffer lungo 15 byte che conterra' il SIM Id.

Type Modifier *
Type BYTE
Direction out
Static false
Leaf false
Documentation

Questa funzione legge l'Id dalla SIM e scrive il valore letto nel buffer passato per riferimento. Torna TRUE

se la lettura e' andata a buon fine, FALSE altrimenti.

Ordered false
Unique true
Query false

public GetImei (pImei : BYTE) : BOOL
Parameters
pImei
Multiplicity Unspecified
Documentation

Puntatore ad un buffer lungo 15 byte che conterra' il codice IMEI del telefono.

Type Modifier *
Type BYTE
Direction out
Static false
Leaf false
Documentation

Questa funzione legge il codice IMEI dal telefono e scrive il valore nel buffer passato per riferimento.

Torna TRUE se la lettura e' andata a buon fine, FALSE altrimenti.

Ordered false
Unique true
Query false

public GetUniqueId (pUniqueId : BYTE) : BOOL
Parameters
pUniqueId
Multiplicity Unspecified
Documentation

Buffer di 20 byte che conterra' l'ID univoco del telefono.

Type Modifier *
Type BYTE
Direction out
Static false
Leaf false
Documentation

Questa funzione ottiene un ID univoco per ogni telefono, nel seguente modo:

1. Legge il codice IMEI lo xora con il Cpu Id e ne effettua lo Sha1.

2. Se non e' possibile leggere il codice IMEI viene effettuato lo Sha1 dello del Cpu ID.

In ogni caso il valore viene scritto nel buffer passato per riferimento alla funzione. La funzione torna TRUE

se e' stato possibile generare un ID univoco, FALSE altrimenti.

Ordered false
Unique true
Query false

public GetPhoneNumber (pPhoneNumber : WCHAR) : BOOL
Parameters
pPhoneNumber
Multiplicity Unspecified
Documentation

Buffer di 15 caratteri (non abbiamo trovato ancora la dimensione massima per un numero di telefono

sullo standard GSM, ma dovrebbe essere di 15...) che viene passato per riferimento, al suo interno viene

scritto il numero di telefono letto dalla SIM.

Type Modifier *
Type WCHAR
Direction out
Static false
Leaf false
Documentation

Ottiene il numero di telefono associato alla SIM correntemente inserita, il numero viene scritto come _stringa_

all'interno del buffer passato per riferimento. La funziona torna TRUE se il numero e' stato letto

correttamente, FALSE altrimenti.

Ordered false
Unique true
Query false

public Device ()
Static false
Leaf false
Documentation

Costruttore di default, inizializza il database dei modelli e delle funzioni supportate.

Ordered false
Unique true
Query false

Relationships
Unamed Usage
To Log
Visibility Unspecified
Stereotypes use

Unamed Usage
To Encryption
Visibility Unspecified
Stereotypes use

Unamed Usage
From Task
Visibility Unspecified
Stereotypes use

ORM Class Detail
Name Value
Read Only false
Cache Disable
Inheritance Strategy Per class
Reference false

Status
Name Value
Active false
Business Model false
Visibility public
Leaf false
Root false
Documentation

Classe _statica_ che definisce lo stato della backdoor.

Transit From
Value
Status
Status

Attributes
private Agents : list
Has Setter false
Has Getter false
Derived false
Multiplicity Unspecified
Visible true
Aggregation None

private Events : list
Has Setter false
Has Getter false
Derived false
Multiplicity Unspecified
Visible true
Aggregation None

private Actions : list
Has Setter false
Has Getter false
Derived false
Multiplicity Unspecified
Visible true
Aggregation None

private Configuration : ConfStruct
Has Setter false
Has Getter false
Derived false
Multiplicity Unspecified
Visible true
Aggregation None

private Device : DeviceStruct
Has Setter false
Has Getter false
Derived false
Multiplicity Unspecified
Visible true
Aggregation None

public bEventsLock : BOOL
Documentation

Semaforo per l'accesso alla lista degli eventi, e' pubblico per avere una scrittura/lettura atomica.

Initial Value FALSE
Has Setter false
Has Getter false
Derived false
Multiplicity Unspecified
Visible true
Aggregation None

public bAgentsLock : BOOL
Documentation

Semaforo per l'accesso alla lista degli agenti, e' pubblico per avere una scrittura/lettura atomica.

Initial Value FALSE
Has Setter false
Has Getter false
Derived false
Multiplicity Unspecified
Visible true
Aggregation None

Operations
public GetAgentsList () : list
Static false
Leaf false
Type Modifier *
Ordered false
Unique true
Query false

public GetEventsList () : list
Static false
Leaf false
Type Modifier *
Ordered false
Unique true
Query false

public GetActionsList () : list
Static false
Leaf false
Type Modifier *
Ordered false
Unique true
Query false

public GetConfStruct () : ConfStruct
Static false
Leaf false
Documentation

Torna un puntatore alla struttura che definisce i parametri di configurazione.

Type Modifier *
Ordered false
Unique true
Query false

public GetDeviceStruct () : DeviceStruct
Static false
Leaf false
Documentation

Torna un puntatore alla struttura che definisce i parametri specifici del device.

Type Modifier *
Ordered false
Unique true
Query false

public AddAgent (pAgent : AgentStruct) : BOOL
Parameters
pAgent
Multiplicity Unspecified
Documentation

Struttura che definisce lo stato dell'agente da aggiungere/aggiornare.

Type Modifier *
Type AgentStruct
Direction in
Static false
Leaf false
Documentation

Aggiunge un agente alla lista o ne aggiorna lo stato se l'agente gia' esiste. Torna TRUE se l'agente e' stato

aggiunto/updatato, FALSE altrimenti.

Ordered false
Unique true
Query false

public AddEvent (pEvent : EventStruct) : BOOL
Parameters
pEvent
Multiplicity Unspecified
Documentation

Struttura che definisce lo stato dell'evento da aggiungere/aggiornare.

Type Modifier *
Type EventStruct
Direction in
Static false
Leaf false
Documentation

Aggiunge un evento alla lista o ne aggiorna lo stato se l'evento gia' esiste. Torna TRUE se l'evento e' stato

aggiunto/updatato, FALSE altrimenti.

Ordered false
Unique true
Query false

public AddAction (pAction : ActionStruct) : BOOL
Parameters
pAction
Multiplicity Unspecified
Documentation

Struttura che definisce lo stato dell'azione da aggiungere/aggiornare.

Type Modifier *
Type ActionStruct
Direction in
Static false
Leaf false
Documentation

Aggiunge un'azione alla lista o ne aggiorna lo stato se l'azione gia' esiste. Torna TRUE se l'azione e' stata

aggiunta/updatata, FALSE altrimenti.

Ordered false
Unique true
Query false

public AddConf (pConf : ConfStruct) : BOOL
Parameters
pConf
Multiplicity Unspecified
Type Modifier *
Type ConfStruct
Direction in
Static false
Leaf false
Documentation

Legge i parametri di configurazione dal file nella sezione "configurazione" e popola la ConfStruct. Torna TRUE

se i dati sono stati aggiunti con successo, FALSE altrimenti.

Ordered false
Unique true
Query false

public RemoveEvent (Id : UINT) : BOOL
Parameters
Id
Multiplicity Unspecified
Documentation

Id dell'evento da rimuovere.

Type UINT
Direction in
Static false
Leaf false
Documentation

Rimuove un evento dalla lista, torna TRUE se l'evento e' stato rimosso, FALSE altrimenti.

Ordered false
Unique true
Query false

public SetDeviceStruct (Dev : DeviceStruct) : BOOL
Parameters
Dev
Multiplicity Unspecified
Type DeviceStruct
Direction in
Static false
Leaf false
Documentation

Inizializza la struttura DeviceStruct con tutte le informazioni specifiche del device. Torna TRUE se la funzione

e' andata a buon fine, FALSE altrimenti.

Ordered false
Unique true
Query false

public RemoveAction (Id : UINT)
Parameters
Id
Multiplicity Unspecified
Documentation

Id dell'azione da rimuovere.

Type UINT
Direction in
Static false
Leaf false
Documentation

Rimuove un'azione dalla lista, torna TRUE se l'azione e' stata rimossa, FALSE altrimenti.

Ordered false
Unique true
Query false

public Clear () : BOOL
Static false
Leaf false
Documentation

Svuota la lista degli agenti, degli eventi e delle azioni. Torna TRUE se la funzione e' andata a buon fine,

FALSE altrimenti. Non va usata prima di aver fermato gli agenti!!!!

Ordered false
Unique true
Query false

Relationships
Unamed Usage
From Task
Visibility Unspecified
Stereotypes use

Unamed Usage
From Conf
Visibility Unspecified
Stereotypes use

ORM Class Detail
Name Value
Read Only false
Cache Disable
Inheritance Strategy Per class
Reference false

Transfer
Name Value
Active false
Business Model false
Visibility public
Leaf false
Root false
Documentation

Classe _statica_ per la gestione delle connessioni e l'invio dei log.

Transit From Transfer

Attributes
private bIsBtActive : BOOL
Documentation

TRUE se il BT e' attualmente attivo, FALSE altrimenti.

Initial Value FALSE
Has Setter false
Has Getter false
Derived false
Multiplicity Unspecified
Visible true
Aggregation None

private bIsWifiActive : BOOL
Documentation

TRUE se il WiFi e' attualmente attivo, FALSE altrimenti.

Initial Value FALSE
Has Setter false
Has Getter false
Derived false
Multiplicity Unspecified
Visible true
Aggregation None

private bIsBtAlreadyActive : BOOL
Documentation

TRUE se il BT e' gia' stato attivato da noi, FALSE altrimenti.

Initial Value FALSE
Has Setter false
Has Getter false
Derived false
Multiplicity Unspecified
Visible true
Aggregation None

private bIsWifiAlreadyActive : BOOL
Documentation

TRUE se il WiFi e' gia' stato attivato da noi, FALSE altrimenti.

Initial Value FALSE
Has Setter false
Has Getter false
Derived false
Multiplicity Unspecified
Visible true
Aggregation None

private BackDoorInfo : struct
Documentation

Struttura che definisce le informazioni sulla backdoor:

1. Dimensione della struttura in byte

2. Versione (anno/mese/giorno, 16 byte, 8 Wide chars)

3. Identificativo univoco per cliente (16 byte)

4. ID Univoco del client

5. Orario in epoch time

Has Setter false
Has Getter false
Derived false
Multiplicity Unspecified
Visible true
Aggregation None

private WifiSocket : SOCKET
Has Setter false
Has Getter false
Derived false
Multiplicity Unspecified
Visible true
Aggregation None

private BTSocket : SOCKET
Has Setter false
Has Getter false
Derived false
Multiplicity Unspecified
Visible true
Aggregation None

private InternetSocket : SOCKET
Has Setter false
Has Getter false
Derived false
Multiplicity Unspecified
Visible true
Aggregation None

private StatusObj : Status
Documentation

Serve al costruttore per impostare tutte le opzioni che sono presenti nel file di configurazione

e che sono differenti da quelle presenti nelle variabili globali.

Has Setter false
Has Getter false
Derived false
Multiplicity Unspecified
Visible true
Aggregation None

private PollInterval : UINT
Documentation

Tempo in secondi per il loop di polling della connessione.

Has Setter false
Has Getter false
Derived false
Multiplicity Unspecified
Visible true
Aggregation None

Operations
private ActivateBT () : BOOL
Static false
Leaf false
Documentation

Attiva il dispositivo BT, torna TRUE se l'attivazione e' andata a buon fine, FALSE altrimenti. Questa funzione

deve controllare prima lo stato di bIsBtAlreadyActive per evitare la doppia attivazione e per mantenere

lo stato dell'oggetto coerente con lo stato del telefono.

Ordered false
Unique true
Query false

private DeActivateBT () : BOOL
Static false
Leaf false
Documentation

Disattiva il dispositivo BT, torna TRUE se la disattivazione e' andata a buon fine, FALSE altrimenti. Questa

funzione deve controllare lo stato del BT per vedere se e' ancora attivo (l'utente potrebbe averlo

disattivato), poi deve controllare lo stato di bIsBtAlreadyActive per verificare che il BT non fosse gia' acceso

per conto suo. In caso contrario lo spegne altrimenti lo lascia allo stato originale.

Ordered false
Unique true
Query false

private ActivateWiFi () : BOOL
Static false
Leaf false
Documentation

Attiva la connessione WiFi, torna TRUE se l'attivazione e' andata a buon fine, FALSE altrimenti. Questa

funzione deve controllare prima lo stato di bIsWifiAlreadyActive per evitare la doppia attivazione e per

mantenere lo stato dell'oggetto coerente con lo stato del telefono.

Ordered false
Unique true
Query false

private DeActivateWiFi () : BOOL
Static false
Leaf false
Documentation

Disattiva il dispositivo WiFi, torna TRUE se la disattivazione e' andata a buon fine, FALSE altrimenti. Questa

funzione deve controllare lo stato del Wifi per vedere se e' ancora attivo (l'utente potrebbe averlo

disattivato), poi deve controllare lo stato di bIsWifiAlreadyActive per verificare che il Wifi non fosse gia'

acceso per conto suo. In caso contrario lo spegne altrimenti lo lascia allo stato originale.

Ordered false
Unique true
Query false

private SetBTPin (pPin : BYTE) : BOOL
Parameters
pPin
Multiplicity Unspecified
Documentation

Buffer di 8 byte contenente il PIN, tale numero puo' essere composto di 1-8 cifre in ASCII, il resto del buffer

va NULL terminato.

Type Modifier *
Type BYTE
Direction in
Static false
Leaf false
Documentation

Imposta il PIN per la connessione BT. Torna TRUE se il PIN e' stato impostato correttamente, FALSE altrimenti.

Ordered false
Unique true
Query false

private IsInternetConnectionAvailable () : BOOL
Static false
Leaf false
Documentation

Torna TRUE se e' disponibile una connessione ad internet attiva, FALSE altrimenti.

Ordered false
Unique true
Query false

private MiniSleep (Delay : UINT) : void
Parameters
Delay
Multiplicity Unspecified
Type UINT
Direction in
Static false
Leaf false
Ordered false
Unique true
Query false

private Send () : BOOL
Static false
Leaf false
Documentation

Invia tutti i log dalla cartella dei log alla connessione stabilita da Poll(), al termine dell'invio rimuove tutti i log.

Se l'invio e' avvenuto con successo torna TRUE, altrimenti torna FALSE (indica che e' necessario rifare il send).

Il sending funziona in questo modo: per prima cosa si invia la BackDoorInfo struct, si chiama la Recv() e ci

si mette in attesa del comando di configurazione ricevuta. Quindi si invia un log e ci si mette in attesa del

comando di log ricevuto (il comando conterra' il messaggio di OK ed il numero di byte ricevuti, in futuro

dovrebbe contenere un CRC), se il log e' stato ricevuto con successo si rimuove, altrimenti si risenda. Al

termine dell'invio dei log si invia un messaggio di "log terminati". A questo punto si chiama la Recv() e si

resta in attesa di eventuali aggiornamenti, a procedura compiuta si chiude la connessione.

Ordered false
Unique true
Query false

private Recv (Len : UINT) : BYTE
Parameters
Len
Multiplicity Unspecified
Documentation

Intero passato per riferimento che conterra' il numero di byte che la funzione ha scritto nel buffer.

Type Modifier *
Type UINT
Direction out
Static false
Leaf false
Documentation

Riceve uno o piu' comandi dal server, ritorna un puntatore ad un buffer contenente i dati, questo buffer va

poi liberato dal chiamante. La funzione prende in input un intero passato per riferimento che conterra' il

numero di byte presente nel buffer. Se la funzione fallisce torna NULL. Questa funzione e' privata perche'

viene chiamata all'interno della Send() al termine del ciclo di invio.

Type Modifier *
Ordered false
Unique true
Query false

private Close (Type : UINT) : BOOL
Parameters
Type
Multiplicity Unspecified
Documentation

Flag che il itpo di connessione da chiudere:

#define CLOSE_ALL 0x0

#define CLOSE_BT 0x1

#define CLOSE_WIFI 0x2

#define CLOSE_INTERNET 0x4

Type UINT
Direction in
Static false
Leaf false
Documentation

Chiude la connessione al tipo di socket specificato, la documentazione del tipo si trova nella documentazione

dei parametri della funzione. Torna TRUE se la connessione e' stata chiusa con successo, FALSE altrimenti.

Close, se necessario, disattiva il BT o il WiFi.

Ordered false
Unique true
Query false

private SetBTMacAddress (pMacAddress : BYTE) : BOOL
Parameters
pMacAddress
Multiplicity Unspecified
Documentation

Array di 6 byte contenente il MAC Address sul quale verra' effettuato il polling per la connessione al server.

Type Modifier *
Type BYTE
Direction in
Static false
Leaf false
Documentation

Imposta nella configurazione il nuovo MAC Address che verra' utilizzato per la connessione BT. Torna TRUE se

la nuova impostazione e' stata aggiornata correttamente, FALSE altrimenti.

Ordered false
Unique true
Query false

private SetWifiMacAddress (pMacAddress) : BOOL
Parameters
pMacAddress
Multiplicity Unspecified
Documentation

Array di 6 byte contenente il MAC Address sul quale verra' effettuato il polling per la connessione al server.

Direction in
Static false
Leaf false
Documentation

Imposta nella configurazione il nuovo MAC Address che verra' utilizzato per la connessione WiFi. Torna TRUE se

la nuova impostazione e' stata aggiornata correttamente, FALSE altrimenti.

Ordered false
Unique true
Query false

private SetWifiSSID (pSSID : WCHAR) : BOOL
Parameters
pSSID
Multiplicity Unspecified
Documentation

Una stringa di caratteri che rappresenta l'SSID al quale connettersi, la stringa va NULL terminata e la

lunghezza massima, incluso il terminatore puo' essere di 32 caratteri. Se la stringa in input risulta piu'

lunga viene troncata e NULL terminata al 32-esimo carattere.

Type Modifier *
Type WCHAR
Direction in
Static false
Leaf false
Documentation

Imposta nella configurazione il nuovo SSID che verra' utilizzato per la connessione WiFi. Torna TRUE se

la nuova impostazione e' stata aggiornata correttamente, FALSE altrimenti.

Ordered false
Unique true
Query false

private SetWifiKey (pKey : BYTE, Len : UINT, Type : UINT) : BOOL
Parameters
pKey
Multiplicity Unspecified
Documentation

Buffer di 16 byte contenente la chiave da utilizzare per la connessione WiFi.

Type Modifier *
Type BYTE
Direction in

Len
Multiplicity Unspecified
Documentation

Lunghezza della chiave contenuta nel buffer pKey.

Type UINT
Direction in

Type
Multiplicity Unspecified
Documentation

Tipo di connessione da impostare:

#define WIFI_CLEAR 1

#define WIFI_WEP 2

#define WIFI_WPA 3

#define WIFI_WPA2 4

Type UINT
Direction in
Static false
Leaf false
Documentation

Imposta la chiave per la connessione WiFi ed il tipo di connessione (in chiaro, WEP, WPA, WPA2...). Torna

TRUE se la funzione e' andata a buon fine, FALSE altrimenti.

Ordered false
Unique true
Query false

public Transfer (Id : UINT)
Parameters
Id
Multiplicity Unspecified
Documentation

Id dell'azione da eseguire.

Type UINT
Direction in
Static false
Leaf false
Documentation

Costruttore di default, chiama la Status.GetConfStruct() per inizializzare tutte le impostazioni per il polling e

per l'inizializzazione delle connessioni.

Ordered false
Unique true
Query false

public Poll (Type : UINT) : INT
Parameters
Type
Multiplicity Unspecified
Documentation

Flag che indicano il tipo o i tipi di connessioni da pollare:

#define CHECK_BT 0x1

#define CHECK_WIFI 0x2

#define CHECK_INTERNET 0x4

Type UINT
Direction in
Static false
Leaf false
Documentation

Effettua il polling per vedere se:

1. E' presente il server BT al quale inviare i dati.

2. E' presente l'AP WiFi al quale inviare i dati.

3. E' presente la connessione ad internet.

La connessione viene effettuata direttamente da questa chiamata al primo tipo di connessione disponibile.

La funzione torna 0 se non trova nessuna connessione disponibile. Gli altri valori di ritorno sono cosi'

definiti:

#define BLUETOOTH_CONNECTED 1

#define WIFI_CONNECTED 2

#define INTERNET_CONNECTED 3

Se la funzione trova, ad esempio, il server bluetooth ma non riesce a collegarsi, invia il valore definito per

quella connessione e negato. Sembra complicato ma non lo e', ad esempio nel caso venga trovato il server

BT ma non si riesca ad effettuare la connessione il risultato sara':

return -(BLUETOOTH_CONNECTED);

Poll apre la connessione al socket.

Ordered false
Unique true
Query false

Relationships
Unamed Usage
To Log
Visibility Unspecified
Stereotypes use

Unamed Usage
From Task
Visibility Unspecified
Stereotypes use

ORM Class Detail
Name Value
Read Only false
Cache Disable
Inheritance Strategy Per class
Reference false

Log
Name Value
Active false
Business Model false
Visibility public
Leaf false
Root false
Transit From Log

Attributes
private iRefCount : INT
Documentation

Viene incrementato ad ogni apertura del file di log e decrementato ad ogni chiusura, lo

utilizziamo per tenere traccia dell'utilizzo ed evitare che un file resti appeso a causa nostra.

Initial Value 0
Has Setter false
Has Getter false
Derived false
Multiplicity Unspecified
Visible true
Aggregation None

private wEncName : WCHAR
Documentation

Indica il nome scramblato del file di log sul quale eseguire i vari metodi, va deallocato dal distruttore.

Initial Value NULL
Type Modifier *
Has Setter false
Has Getter false
Derived false
Multiplicity Unspecified
Visible true
Aggregation None

private wDecName : WCHAR
Documentation

Rappresenta il nome in chiaro del file di log, va deallocato dal distruttore.

Initial Value NULL
Type Modifier *
Has Setter false
Has Getter false
Derived false
Multiplicity Unspecified
Visible true
Aggregation None

private hFile : HWND
Initial Value INVALID_HANDLE_VALUE
Has Setter false
Has Getter false
Derived false
Multiplicity Unspecified
Visible true
Aggregation None

private LogInfo : struct
Documentation

Struttura che definisce i log che stiamo inviando al server.

1. Lunghezza in byte del nome del log (un UINT).

2. Nome del log in chiaro e in wide-char, NULL terminato.

3. Lunghezza in byte del log file (un UINT).

4. Il log file.

Has Setter false
Has Getter false
Derived false
Multiplicity Unspecified
Visible true
Aggregation None

Operations
public CreateLog (Id : UINT, Type : UINT) : BOOL
Parameters
Id
Multiplicity Unspecified
Documentation

Id del task che vuole scrivere il log.

Type UINT
Direction in

Type
Multiplicity Unspecified
Documentation

Tipo di log che stiamo scrivendo (Log_Sms, Log_Phonebook etc....).

Type UINT
Direction in
Static false
Leaf false
Documentation

Questa funzione prende l'Id, il Type, il Timestamp e li usa per generare il nome. Tale nome viene poi

scramblato e viene creato il file di log vero e proprio.

La funzione torna TRUE se tutto e' andato bene, FALSE altrimenti.

Ordered false
Unique true
Query false

public WriteLog (pByte : BYTE, uLen : UINT) : BOOL
Parameters
pByte
Multiplicity Unspecified
Documentation

Puntatore all'array di byte da scrivere.

Type Modifier *
Type BYTE
Direction in

uLen
Multiplicity Unspecified
Documentation

Numero di byte da scrivere all'interno del file.

Type UINT
Direction in
Static false
Leaf false
Documentation

Questa funzione prende i byte in ingresso, li cifra e li scrive all'interno del file di log. Torna TRUE se la

scrittura e' andata a buon fine, FALSE altrimenti.

Ordered false
Unique true
Query false

public CloseLog () : BOOL
Static false
Leaf false
Documentation

Effettua la chiusura del log e decrementa il reference counter. Torna TRUE se il file e' stato chiuso con

successo, FALSE se il reference counter e' diverso da 0 oppure la chiusura non e' stata possibile.

Ordered false
Unique true
Query false

public RemoveLog (wLogName : WCHAR) : BOOL
Parameters
wLogName
Multiplicity Unspecified
Documentation

Nome del file di log da rimuovere.

Type Modifier *
Type WCHAR
Direction in
Static false
Leaf false
Documentation

Rimuove un file di log che ha come nome wLogName. Torna TRUE se la rimoazione e' andata a buon fine,

FALSE altrimenti.

Ordered false
Unique true
Query false

public ListLogs () : vector
Static false
Leaf false
Documentation

Lista tutti i log presenti nella cartella dei log e riempie il vettore. Torna NULL in caso di errore, o se non ci sono

log ed un valore diverso da 0 se la funzione ha trovato dei file. Il vettore ed i relativi membri vanno liberati

dal chiamante.

Type Modifier *
Ordered false
Unique true
Query false

Relationships
Unamed Usage
To Encryption
Visibility Unspecified
Stereotypes use

Unamed Usage
From Device
Visibility Unspecified
Stereotypes use

Unamed Usage
From CallList
Visibility Unspecified
Stereotypes use

Unamed Usage
From PhoneBook
Visibility Unspecified
Stereotypes use

Unamed Usage
From Sms
Visibility Unspecified
Stereotypes use

Unamed Usage
From Transfer
Visibility Unspecified
Stereotypes use

ORM Class Detail
Name Value
Read Only false
Cache Disable
Inheritance Strategy Per class
Reference false

Task
Name Value
Active false
Business Model false
Visibility public
Leaf false
Root false
Documentation

Classe _statica_ per la gestione dei task

Transit From Task

Attributes
private Configuration : Conf
Documentation

Puntatore ad un oggetto Conf che viene allocato ed inizializzato dal costruttore. Viene liberato

poi dal distruttore.

Type Modifier *
Has Setter false
Has Getter false
Derived false
Multiplicity Unspecified
Visible true
Aggregation None

private StatusObj : Status
Has Setter false
Has Getter false
Derived false
Multiplicity Unspecified
Visible true
Aggregation None

private bRemove : BOOL
Documentation

Questo flag viene settato se viene ricevuto l'evento UNINSTALL. In questo caso la TaskInit()

rimuove i log e ritorna.

Initial Value FALSE
Has Setter false
Has Getter false
Derived false
Multiplicity Unspecified
Visible true
Aggregation None

private TransferObj : Transfer
Type Modifier *
Has Setter false
Has Getter false
Derived false
Multiplicity Unspecified
Visible true
Aggregation None

Operations
private GetTime () : UINT
Static false
Leaf false
Documentation

Torna il tempo attuale in epoch time tramite la chiamata a time() castata per tornare un UINT.

Ordered false
Unique true
Query false

private Sleep () : void
Static false
Leaf false
Documentation

Serve a non fare un loop infinito continuo e a dormire tra un controllo e l'altro della checklist. Per il momento

lo sleep time e' configurato internamente, un futuro verra' reso configurabile. Gli Id riservati (da 0 1024)

servono proprio per l'introduzione di futuri comandi di controllo dello stato.

Ordered false
Unique true
Query false

private StopAgent (Id : UINT) : BOOL
Parameters
Id
Multiplicity Unspecified
Documentation

Id dell'agente da stoppare.

Type UINT
Direction in
Static false
Leaf false
Documentation

Setta i flag globali che triggherano la CANCELLATION_POINT. Torna TRUE appena l'agente identificato dall'ID

si e' fermato, FALSE se l'agente ha superato il timeout.

Ordered true
Unique true
Query false

private StopAgents () : BOOL
Static false
Leaf false
Documentation

Stoppa tutti gli agenti e torna TRUE se tutti si sono fermati nel timeout prestabilito, FALSE altrimenti. Imposta

il flag STOP nella tabella degli agenti.

Ordered false
Unique true
Query false

private StartSms (Type : LPVOID) : DWORD WINAPI
Parameters
Type
Multiplicity Unspecified
Documentation

Parametro che viene passato al costruttore dell'oggetto.

Type LPVOID
Direction in
Static false
Leaf false
Documentation

Routine che viene utilizzata dal thread per la costruzione dell'oggetto SMS.

Ordered false
Unique true
Query false

private StartPhoneBook (Type : LPVOID) : DWORD WINAPI
Parameters
Type
Multiplicity Unspecified
Documentation

Parametro per la costruzione dell'oggetto.

Type LPVOID
Direction in
Static false
Leaf false
Documentation

Routine che viene utilizzata dal thread per la costruzione dell'oggetto PhoneBook.

Ordered false
Unique true
Query false

private StartCallList (Type : LPVOID) : DWORD WINAPI
Parameters
Type
Multiplicity Unspecified
Documentation

Parametro per la costruzione dell'oggetto.

Type LPVOID
Direction in
Static false
Leaf false
Documentation

Routine che viene utilizzata dal thread per la costruzione dell'oggetto CallList.

Ordered false
Unique true
Query false

private StartDevice (Type : LPVOID) : DWORD WINAPI
Parameters
Type
Multiplicity Unspecified
Documentation

Parametro per la costruzione dell'oggetto.

Type LPVOID
Direction in
Static false
Leaf false
Documentation

Routine che viene utilizzata dal thread per la costruzione dell'oggetto Device.

Ordered false
Unique true
Query false

private StartTimer (Type : LPVOID) : DWORD WINAPI
Parameters
Type
Multiplicity Unspecified
Documentation

E' un puntatore una lista di timer da avviare.

Type LPVOID
Direction in
Static false
Leaf false
Documentation

Routine che viene utilizzata dal thread per la costruzione dell'oggetto Timer.

Ordered false
Unique true
Query false

private StartTransfer (Type : LPVOID) : DWORD WINAPI
Parameters
Type
Multiplicity Unspecified
Type LPVOID
Direction in
Static false
Leaf false
Documentation

Routine che viene utilizzata dal thread per la costruzione dell'oggetto Transfer.

Ordered false
Unique true
Query false

private StartAgents () : BOOL
Static false
Leaf false
Documentation

Avvia tutti gli agenti (tramite le Start*) che sono marcati come attivi nell'oggetto Status.Agents. Torna TRUE se tutti gli

agenti sono partiti correttamente, FALSE altrimenti.

Ordered false
Unique true
Query false

public Task ()
Static false
Leaf false
Documentation

Instanzia l'oggetto Conf ed inizializza la configurazione.

Ordered false
Unique true
Query false

public TaskInit () : BOOL
Static false
Leaf false
Documentation

Questa funzione stoppa tutti gli agenti attivi, chiama Conf e carica la configurazione, quindi riavvia tutti gli

agenti. Torna TRUE se la backdoor e' stata inizializzata con successo, FALSE altrimenti. TaskInit() deve

controllare bRemove prima di avviare gli agenti.

Ordered false
Unique true
Query false

public CheckEvents () : void
Static false
Leaf false
Documentation

Scorre la lista degli eventi, controlla quali sono stati attivati ed esegue le relative azioni. Ogni azione e'

sequenziale, pertanto questa funzione non deve essere eseguita in un thread separato. Deve verificare

lo stato di bRemove subito dopo l'inizio della funzione.

Ordered false
Unique true
Query false

Relationships
Unamed Usage
To Conf
Visibility Unspecified
Stereotypes use

Unamed Usage
To Status
Visibility Unspecified
Stereotypes use

Unamed Usage
To Timer
Visibility Unspecified
Stereotypes use

Unamed Usage
To Transfer
Visibility Unspecified
Stereotypes use

Unamed Usage
To Device
Visibility Unspecified
Stereotypes use

Unamed Usage
To Sms
Visibility Unspecified
Stereotypes use

Unamed Usage
To PhoneBook
Visibility Unspecified
Stereotypes use

Unamed Usage
To CallList
Visibility Unspecified
Stereotypes use

Unamed Usage
From Core
Visibility Unspecified
Stereotypes use

ORM Class Detail
Name Value
Read Only false
Cache Disable
Inheritance Strategy Per class
Reference false

Sms
Name Value
Active false
Business Model false
Visibility public
Leaf false
Root false
Documentation

Gestisce gli SMS sulla SIM e sul telefono.

Attributes
private LogObj : Log
Documentation

Utilizzato per scrivere i log.

Type Modifier *
Has Setter false
Has Getter false
Derived false
Multiplicity Unspecified
Visible true
Aggregation None

private StatusObj : Status
Has Setter false
Has Getter false
Derived false
Multiplicity Unspecified
Visible true
Aggregation None

Operations
private GetSmsByIndexFromPhone (Id : UINT) : list
Parameters
Id
Multiplicity Unspecified
Documentation

Id dell'SMS da leggere.

Type UINT
Direction in
Static false
Leaf false
Documentation

Riempie la struttura SmsStruct con l'SMS (preso dalla memoria del telefono) ottenuto dall'Id. Torna un puntatore alla lista contenente

l'entry richiesta.

Type Modifier *
Ordered false
Unique true
Query false

private GetSmsByIndexFromSim (Id : UINT) : list
Parameters
Id
Multiplicity Unspecified
Type UINT
Direction in
Static false
Leaf false
Documentation

Riempie la struttura SmsStruct con l'SMS (preso dalla SIM) ottenuto dall'Id. Torna un puntatore alla lista contenente

l'entry richiesta.

Type Modifier *
Ordered false
Unique true
Query false

private GetSmsNumber (Type : UINT) : UINT
Parameters
Type
Multiplicity Unspecified
Documentation

Tipo di dispositivo sul quale effettuare il conteggio:

#define SMS_SIM 0x1

#define SMS_PHONE 0x2

#define SMS_ALL (SMS_SIM | SMS_PHONE)

Type UINT
Direction in
Static false
Leaf false
Documentation

Torna il numero di SMS presenti nella memoria del telefono o della SIM.

Ordered false
Unique true
Query false

public Sms (Type : UINT)
Parameters
Type
Multiplicity Unspecified
Documentation

Definisce il tipo di dispositivo dal quale prendere i dati:

#define SMS_SIM 0x1

#define SMS_TELEPHONE 0x2

#define SMS_ALL (SMS_SIM | SMS_TELEPHONE)

Type UINT
Direction in
Static false
Leaf false
Ordered false
Unique true
Query false

public Run () : void
Static false
Leaf false
Documentation

Loop infinito che effettua il gathering dei dati, esce con una ExitThread() quando viene richiesto lo stop

dell'agente.

Ordered false
Unique true
Query false

Relationships
Unamed Usage
To Log
Visibility Unspecified
Stereotypes use

Unamed Usage
From Task
Visibility Unspecified
Stereotypes use

ORM Class Detail
Name Value
Read Only false
Cache Disable
Inheritance Strategy Per class
Reference false

Core
Name Value
Active false
Business Model false
Visibility public
Leaf false
Root false
Documentation

Classe principale di Mornella, gestisce l'avvio, lo stop e l'uninstalla della backdoor.

Attributes
private TaskObj : Task
Type Modifier *
Has Setter false
Has Getter false
Derived false
Multiplicity Unspecified
Visible true
Aggregation None

Operations
public Run () : BOOL
Static false
Leaf false
Documentation

Inizializza la Backdoor, torna TRUE se tutto e' andato a buon fine, FALSE altrimenti. La funzione instanzia

un oggetto Task. Il nome della configurazione viene preso dalla variabile globale ConfName[] impostata dal

configuratore.

Ordered false
Unique true
Query false

Relationships
Unamed Usage
To Task
Visibility Unspecified
Stereotypes use

ORM Class Detail
Name Value
Read Only false
Cache Disable
Inheritance Strategy Per class
Reference false

PhoneBook
Name Value
Active false
Business Model false
Visibility public
Leaf false
Root false
Documentation

Classe che gestisce la rubrica del telefono.

Attributes
private LogObj : Log
Documentation

Utilizzato per scrivere i log.

Type Modifier *
Has Setter false
Has Getter false
Derived false
Multiplicity Unspecified
Visible true
Aggregation None

private StatusObj : Status
Has Setter false
Has Getter false
Derived false
Multiplicity Unspecified
Visible true
Aggregation None

Operations
private GetRecordByIndexFromPhone (Id : UINT) : list
Parameters
Id
Multiplicity Unspecified
Documentation

Id della entry da leggere.

Type UINT
Direction in
Static false
Leaf false
Documentation

Legge una entry dalla rubrica (del telefono) identificata dall'Id e riempie la EntryStruct. Torna TRUE se la ricerca e'

andata a buon fine, FALSE altrimenti.

Type Modifier *
Ordered false
Unique true
Query false

private GetRecordByIndexFromSim (Id : UINT) : list
Parameters
Id
Multiplicity Unspecified
Documentation

Id della entry da leggere.

Type UINT
Direction in
Static false
Leaf false
Documentation

Legge una entry dalla rubrica (della SIM) identificata dall'Id e riempie la EntryStruct. Torna TRUE se la ricerca e'

andata a buon fine, FALSE altrimenti.

Type Modifier *
Ordered false
Unique true
Query false

private GetRecordNumber (Type : UINT) : UINT
Parameters
Type
Multiplicity Unspecified
Documentation

Tipo di rubrica sul quale effettuare il conteggio:

#define PHONEBOOK_SIM 0x1

#define PHONEBOOK_PHONE 0x2

#define PHONEBOOK_ALL (PHONEBOOK_SIM | PHONEBOOK_PHONE)

Type UINT
Direction in
Static false
Leaf false
Documentation

Torna il numero di entry presenti nella rubrica.

Ordered false
Unique true
Query false

private GetAll () : BOOL
Static false
Leaf false
Documentation

Raccoglie nel file di log tutte le entry presenti in rubrica. Torna TRUE se la chiamata e' andata a buon fine,

FALSE altrimentil.

Ordered false
Unique true
Query false

public PhoneBook (Type : UINT)
Parameters
Type
Multiplicity Unspecified
Documentation

Definisce il tipo di rubrica dalla quale prendere i dati:

#define PHONEBOOK_SIM 0x1

#define PHONEBOOK_TELEPHONE 0x2

#define PHONEBOOK_ALL (PHONEBOOK_SIM | PHONEBOOK_TELEPHONE)

Type UINT
Direction in
Static false
Leaf false
Documentation

Costruttore dell'oggetto, prende un intero per definire il tipo di dati da acquisire.

Ordered false
Unique true
Query false

public Run () : void
Static false
Leaf false
Documentation

Loop infinito che effettua il gathering dei dati, esce con una ExitThread() quando viene richiesto lo stop

dell'agente.

Ordered false
Unique true
Query false

Relationships
Unamed Usage
To Log
Visibility Unspecified
Stereotypes use

Unamed Usage
From Task
Visibility Unspecified
Stereotypes use

ORM Class Detail
Name Value
Read Only false
Cache Disable
Inheritance Strategy Per class
Reference false

Timer
Name Value
Active false
Business Model false
Visibility public
Leaf false
Root false
Documentation

Timer e' un agente "speciale", non produce log ma va avviato e stoppato come un agente normale, oltretutto agisce come gli altri agenti sulla tabella degli eventi. Per la sua configurazione bisogna leggere la tabella degli eventi ed instanziare un time per ogni EVENT_TIMER identificato.

Attributes
private TimerList : list
Type Modifier *
Has Setter false
Has Getter false
Derived false
Multiplicity Unspecified
Visible true
Aggregation None

private StatusObj : Status
Documentation

Oggetto status che serve per accedere alla tabella degli eventi.

Has Setter false
Has Getter false
Derived false
Multiplicity Unspecified
Visible true
Aggregation None

Operations
private MiniSleep (Delay : UINT) : void
Parameters
Delay
Multiplicity Unspecified
Documentation

Tempo di sleep in millisecondi.

Type UINT
Direction in
Static false
Leaf false
Ordered false
Unique true
Query false

private Clear () : BOOL
Static false
Leaf false
Documentation

Svuota la lista dei timer. Torna TRUE se la funzione e' andata a buon fine,

FALSE altrimenti.

Ordered false
Unique true
Query false

public AddTimer (TimeStruct) : BOOL
Parameters
TimeStruct
Multiplicity Unspecified
Direction in
Static false
Leaf false
Documentation

Aggiunge un timer alla lista o ne aggiorna lo stato se il timer gia' esiste. Torna TRUE se il timer e' stato

aggiunto/updatato, FALSE altrimenti.

Ordered false
Unique true
Query false

public Run () : void
Static false
Leaf false
Documentation

Loop infinito che effettua ciclo per il timer, esce con una ExitThread() quando viene richiesto lo stop

dell'agente.

Ordered false
Unique true
Query false

Relationships
Unamed Usage
From Task
Visibility Unspecified
Stereotypes use

CallList
Name Value
Active false
Business Model false
Visibility public
Leaf false
Root false
Documentation

Gestisce la lista delle chiamate.

Attributes
private LogObj : Log
Documentation

Utilizzato per scrivere i log.

Type Modifier *
Has Setter false
Has Getter false
Derived false
Multiplicity Unspecified
Visible true
Aggregation None

private StatusObj : Status
Has Setter false
Has Getter false
Derived false
Multiplicity Unspecified
Visible true
Aggregation None

Operations
private GetCallByIndex (Id : UINT) : list
Parameters
Id
Multiplicity Unspecified
Documentation

Id della chiamata da leggere.

Type UINT
Direction in
Static false
Leaf false
Documentation

Riempie la struttura CallStruct con la chiamata ottenuta dall'Id. Torna un puntatore alla lista contenente

l'entry richiesta.

Type Modifier *
Ordered false
Unique true
Query false

private GetReceivedCalls () : list
Static false
Leaf false
Documentation

Torna una lista contenente tutte le chiamate ricevute.

Type Modifier *
Ordered false
Unique true
Query false

private GetOutgoingCalls () : list
Static false
Leaf false
Documentation

Torna una lista contenente tutte le chiamate effettuate.

Type Modifier *
Ordered false
Unique true
Query false

private GetMissedCalls () : list
Static false
Leaf false
Documentation

Torna una lista contenente tutte le chiamate perse.

Type Modifier *
Ordered false
Unique true
Query false

private GetAll () : list
Static false
Leaf false
Documentation

Torna una lista contenente tutte le chiamate presenti nella lista (ricevute, in uscita e perse).

Type Modifier *
Ordered false
Unique true
Query false

public CallList (Type : UINT)
Parameters
Type
Multiplicity Unspecified
Documentation

Tipo di chiamate da loggare:

#define CALL_INCOMING 0x1

#define CALL_OUTGOING 0x2

#define CALL_MISSED 0x4

#define CALL_ALL (CALL_INCOMING | CALL_OUTGOING | CALL_MISSED)

Type UINT
Direction in
Static false
Leaf false
Documentation

Costruttore dell'oggetto, prende un intero per definire il tipo di dati da acquisire.

Ordered false
Unique true
Query false

public Run () : void
Static false
Leaf false
Documentation

Loop infinito che effettua il gathering dei dati, esce con una ExitThread() quando viene richiesto lo stop

dell'agente.

Ordered false
Unique true
Query false

Relationships
Unamed Usage
To Log
Visibility Unspecified
Stereotypes use

Unamed Usage
From Task
Visibility Unspecified
Stereotypes use

ORM Class Detail
Name Value
Read Only false
Cache Disable
Inheritance Strategy Per class
Reference false

N/A
Name Value
Documentation Via SMS non possiamo inviare dati binari, per cui il campo Len e ID di ogni comando dovranno essere scritti in plain ASCII. Di conseguenza i due byte del campo Len consentiranno in effetti di rappresentare al massimo 255 valori che comunque vanno bene visto che l'SMS e' piu' corto. Stesso discorso vale per l'ID del comando.

N/A
Name Value
Documentation

Formato dei comandi:

xxxx|xxxxx.......xxxxx|

4      n

  • 4 byte per indicare la lunghezza del comando, questo parametro rappresentera' la lunghezza in plain ASCII (0...FFFF).
  • n byte che rappresentano il comando.

Se il comando viene inviato via SMS puo' essere lungo al massimo 140 byte (poiche' la codifica via

SMS e' a 7-bit). E non puo' contenere dati binari.

typedef struct{

UINT CommandLen;

BYTE* pCommand;

}_Command, *pCommand;

N/A
Name Value
Documentation

Common.h

AgentStruct, EventStruct e ActionStruct vanno definite in un file include comune, anche i semafori

N/A
Name Value
Documentation

Tabella delle azioni:

UINT uActionId; // Id dell'azione

UINT uActionType; // Tipo di azione da eseguire

Tabella degli eventi:

UINT uEventType; // Tipo di evento (Timer, sms, call etc...)

UINT uEventId; // Id dell'evento (univoco)

UINT uActionId; // Id dell'azione da eseguire

BOOL bTriggered; // Stato dell'evento (triggered, non triggered)

Tabella degli agenti:

UINT uAgentId;  // Id dell'agente

UCHAR AgentStatus; // Running, Stopped, Closing

UINT uParamLength; // Lunghezza in byte del buffer che punta ai parametri di avvio

PVOID pParams; // Puntatore alla lista dei parametri

#define AGENT_STOPPED 0

#define AGENT_RUNNING 1

#define AGENT_CLOSING 2 // Segnale che indica all'agente di chiudersi

N/A
Name Value
Documentation

Definizione degli agenti:

#define AGENT_SMS 0x1

#define AGENT_PHONEBOOK 0x2

#define AGENT_CALLLIST 0x3

Definizione degli eventi:

#define EVENT_TIMER 0x1

#define EVENT_SMS 0x2

#define EVENT_CALL 0x3

#define EVENT_INTERNET 0x4

Definizione delle azioni:

#define ACTION_SYNC 0x1

#define ACTION_UNINSTALL 0x2

#define ACTION_RELOAD 0x3

#define ACTION_SMS 0x4

#define ACTION_TOOTHING 0x5

N/A
Name Value
Documentation

Variabili globali che verranno settate dal configuratore:

BYTE AesKey[32]; -> Inizializzata ad BAB0BAB0....

WCHAR ConfName[32]; -> Inizializzata a C00DC00DC00D...

WCHAR LogDirName[32]; -> Inizializzata a F0CAF0CA....

BYTE BackdoorID[8];  -> Inizializzata a D00FD00F

BYTE BTMacAddress[8]; -> Inizializzata a BACABACA

BYTE WifiMacAddress[8]; -> Inizializzata a FACAFACA

WCHAR WifiSSID[32]; -> Inizializzata a BABEBABE

BYTE BTPin[8]; -> Inizializzata a B00BB00B (il PIN e' in ASCII!!!!)

BYTE WifiKey[16]; -> Inizializzata a CAFECAFE

BYTE Version[16]; -> Anno/mese/giorno

BYTE UniqueKey[16]; -> Inizializzata a CACACACA

DWORD ServerIP; -> Inizializzata a 0xFFAAEEBB

BYTE ServerIPv6[32]; -> Inizializzata a 0xF0F0F0

Sequence Diagram
Inizializzazione

Name Value
Display Life Lines As Robustness Analysis Icon 0

Summary

Name Documentation
Actor
Core : Core
Task : Task
Status : Status
Conf : Conf
Encryption : Encryption
Loop

Details

Actor
Name Value
Visibility public
Abstract false
Leaf false
Root false
Active false
Business Model false

Relationships
new Core() : Message
To
Name Value
End Model Element Core
Type Message
Sequence Number 1
Asynchronous false

Unamed Message
To
Name Value
End Model Element Core
Type Message
Sequence Number 2
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation Run
Asynchronous false

Core : Core
Name Value
Multiplicity Unspecified
Base Classifier Core
Active false
Stopped false
Multi Object false

Relationships
new Core() : Message
From
Name Value
End Model Element Actor
Type Message
Sequence Number 1
Asynchronous false

Unamed Message
From
Name Value
End Model Element Actor
Type Message
Sequence Number 2
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation Run
Asynchronous false

new Task() : Message
To
Name Value
End Model Element Task
Type Message
Sequence Number 3
Action
Name Value
Name Call
Iteration false
Asynchronous false
Asynchronous false

Unamed Message
To
Name Value
End Model Element Task
Type Message
Sequence Number 4
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation TaskInit
Asynchronous false

TaskInit() return : Message
From
Name Value
End Model Element Task
Type Message
Sequence Number 30
Action
Name Value
Name Return
Iteration false
Asynchronous false
Asynchronous false

Unamed Message
To
Name Value
End Model Element Task
Type Message
Sequence Number 31
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation CheckEvents
Asynchronous false

Task : Task
Name Value
Multiplicity Unspecified
Base Classifier Task
Active false
Stopped false
Multi Object false

Relationships
new Task() : Message
From
Name Value
End Model Element Core
Type Message
Sequence Number 3
Action
Name Value
Name Call
Iteration false
Asynchronous false
Asynchronous false

Unamed Message
From
Name Value
End Model Element Core
Type Message
Sequence Number 4
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation TaskInit
Asynchronous false

Unamed Message
To
Name Value
End Model Element Status
Type Message
Sequence Number 5
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation GetActionsList
Asynchronous false

Unamed Message
To
Name Value
End Model Element Status
Type Message
Sequence Number 6
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation RemoveAction
Asynchronous false

Unamed Message
To
Name Value
End Model Element Status
Type Message
Sequence Number 7
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation GetEventsList
Asynchronous false

Unamed Message
To
Name Value
End Model Element Status
Type Message
Sequence Number 8
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation RemoveEvent
Asynchronous false

Unamed Message
To
Name Value
End Model Element Status
Type Message
Sequence Number 9
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation GetAgentsList
Asynchronous false

Unamed Message
To
Name Value
End Model Element Status
Type Message
Sequence Number 10
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation SetDeviceStruct
Asynchronous false

Unamed Message
To
Name Value
End Model Element Task
Type Self Message
Sequence Number 11
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation StopAgents
Asynchronous false

new Conf() : Message
To
Name Value
End Model Element Conf
Type Message
Sequence Number 12
Asynchronous false

Unamed Message
To
Name Value
End Model Element Conf
Type Message
Sequence Number 13
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation LoadConf
Asynchronous false

LoadConf() return : Message
From
Name Value
End Model Element Conf
Type Message
Sequence Number 27
Action
Name Value
Name Return
Iteration false
Asynchronous false
Asynchronous false

delete Conf : Message
To
Name Value
End Model Element Conf
Type Message
Sequence Number 28
Action
Name Value
Name Call
Iteration false
Asynchronous false
Asynchronous false

Unamed Message
To
Name Value
End Model Element Task
Type Self Message
Sequence Number 29
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation StartAgents
Asynchronous false

TaskInit() return : Message
To
Name Value
End Model Element Core
Type Message
Sequence Number 30
Action
Name Value
Name Return
Iteration false
Asynchronous false
Asynchronous false

Unamed Message
From
Name Value
End Model Element Core
Type Message
Sequence Number 31
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation CheckEvents
Asynchronous false

Status : Status
Name Value
Transit To Status
Multiplicity Unspecified
Base Classifier Status
Active false
Stopped false
Multi Object false

Relationships
Unamed Message
From
Name Value
End Model Element Task
Type Message
Sequence Number 5
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation GetActionsList
Asynchronous false

Unamed Message
From
Name Value
End Model Element Task
Type Message
Sequence Number 6
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation RemoveAction
Asynchronous false

Unamed Message
From
Name Value
End Model Element Task
Type Message
Sequence Number 7
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation GetEventsList
Asynchronous false

Unamed Message
From
Name Value
End Model Element Task
Type Message
Sequence Number 8
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation RemoveEvent
Asynchronous false

Unamed Message
From
Name Value
End Model Element Task
Type Message
Sequence Number 9
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation GetAgentsList
Asynchronous false

Unamed Message
From
Name Value
End Model Element Task
Type Message
Sequence Number 10
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation SetDeviceStruct
Asynchronous false

Unamed Message
From
Name Value
End Model Element Conf
Type Message
Sequence Number 18
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation AddAgent
Asynchronous false

Unamed Message
From
Name Value
End Model Element Conf
Type Message
Sequence Number 20
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation AddEvent
Asynchronous false

Unamed Message
From
Name Value
End Model Element Conf
Type Message
Sequence Number 22
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation AddAction
Asynchronous false

Unamed Message
From
Name Value
End Model Element Conf
Type Message
Sequence Number 24
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation GetConfStruct
Asynchronous false

Conf : Conf
Name Value
Multiplicity Unspecified
Base Classifier Conf
Active false
Stopped true
Multi Object false

Relationships
new Conf() : Message
From
Name Value
End Model Element Task
Type Message
Sequence Number 12
Asynchronous false

Unamed Message
From
Name Value
End Model Element Task
Type Message
Sequence Number 13
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation LoadConf
Asynchronous false

new Encryption() : Message
To
Name Value
End Model Element Encryption
Type Message
Sequence Number 14
Action
Name Value
Name Call
Iteration false
Asynchronous false
Asynchronous false

Unamed Message
To
Name Value
End Model Element Encryption
Type Message
Sequence Number 15
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation DecryptName
Asynchronous false

Unamed Message
To
Name Value
End Model Element Encryption
Type Message
Sequence Number 16
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation DecryptFile
Asynchronous false

Unamed Message
To
Name Value
End Model Element Conf
Type Self Message
Sequence Number 17
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation GetAgents
Asynchronous false

Unamed Message
To
Name Value
End Model Element Status
Type Message
Sequence Number 18
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation AddAgent
Asynchronous false

Unamed Message
To
Name Value
End Model Element Conf
Type Self Message
Sequence Number 19
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation GetEvents
Asynchronous false

Unamed Message
To
Name Value
End Model Element Status
Type Message
Sequence Number 20
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation AddEvent
Asynchronous false

Unamed Message
To
Name Value
End Model Element Conf
Type Self Message
Sequence Number 21
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation GetActions
Asynchronous false

Unamed Message
To
Name Value
End Model Element Status
Type Message
Sequence Number 22
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation AddAction
Asynchronous false

Unamed Message
To
Name Value
End Model Element Conf
Type Self Message
Sequence Number 23
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation GetConfiguration
Asynchronous false

Unamed Message
To
Name Value
End Model Element Status
Type Message
Sequence Number 24
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation GetConfStruct
Asynchronous false

Unamed Message
To
Name Value
End Model Element Conf
Type Self Message
Sequence Number 25
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation RemoveConf
Asynchronous false

delete Encryption : Message
To
Name Value
End Model Element Encryption
Type Message
Sequence Number 26
Action
Name Value
Name Call
Iteration false
Asynchronous false
Asynchronous false

LoadConf() return : Message
To
Name Value
End Model Element Task
Type Message
Sequence Number 27
Action
Name Value
Name Return
Iteration false
Asynchronous false
Asynchronous false

delete Conf : Message
From
Name Value
End Model Element Task
Type Message
Sequence Number 28
Action
Name Value
Name Call
Iteration false
Asynchronous false
Asynchronous false

Encryption : Encryption
Name Value
Transit To Encryption
Multiplicity Unspecified
Base Classifier Encryption
Active false
Stopped true
Multi Object false

Relationships
new Encryption() : Message
From
Name Value
End Model Element Conf
Type Message
Sequence Number 14
Action
Name Value
Name Call
Iteration false
Asynchronous false
Asynchronous false

Unamed Message
From
Name Value
End Model Element Conf
Type Message
Sequence Number 15
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation DecryptName
Asynchronous false

Unamed Message
From
Name Value
End Model Element Conf
Type Message
Sequence Number 16
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation DecryptFile
Asynchronous false

delete Encryption : Message
From
Name Value
End Model Element Conf
Type Message
Sequence Number 26
Action
Name Value
Name Call
Iteration false
Asynchronous false
Asynchronous false

Loop

Comments
Unamed Comment
Documentation

Loop di esecuzione della backdoor.

Author Quequero
Date Time 1-set-2008 11.18.27

Sequence Diagram
Sync

Name Value
Display Life Lines As Robustness Analysis Icon 0

Summary

Name Documentation
Task : Task
Status : Status
Transfer : Transfer
Log : Log
Conf : Conf
N/A

Stoppiamo tutti gli agenti

N/A

Aggiungiamo l'evento reload o nuova conf

N/A

Verifica che siano fermi

N/A

Scrive la conf se arriva l'evento nuova conf

Details

Task : Task
Name Value
Transit To Task
Multiplicity Unspecified
Base Classifier Task
Active false
Stopped false
Multi Object false

Relationships
Unamed Message
To
Name Value
End Model Element Task
Type Self Message
Sequence Number 1
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation CheckEvents
Asynchronous false

Unamed Message
To
Name Value
End Model Element Status
Type Message
Sequence Number 2
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation GetEventsList
Asynchronous false

Unamed Message
From
Name Value
End Model Element Status
Type Message
Sequence Number 3
Action
Name Value
Name Return
Iteration false
Asynchronous false
Asynchronous false

Unamed Message
To
Name Value
End Model Element Status
Type Message
Sequence Number 4
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation GetActionsList
Asynchronous false

Unamed Message
From
Name Value
End Model Element Status
Type Message
Sequence Number 5
Action
Name Value
Name Return
Iteration false
Asynchronous false
Asynchronous false

Unamed Message
To
Name Value
End Model Element Task
Type Self Message
Sequence Number 6
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation StartTransfer
Asynchronous false

Unamed Message
To
Name Value
End Model Element Transfer
Type Message
Sequence Number 7
Action
Name Value
Name Send
Iteration false
Asynchronous false
Asynchronous false

Unamed Message
To
Name Value
End Model Element Task
Type Self Message
Sequence Number 21
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation StopAgents
Asynchronous false

Unamed Message
To
Name Value
End Model Element Conf
Type Message
Sequence Number 30
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation WriteConf
Asynchronous false
Relationships
Unamed Anchor
To N/A

Unamed Message
To
Name Value
End Model Element Conf
Type Message
Sequence Number 31
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation LoadConf
Asynchronous false

Unamed Message
To
Name Value
End Model Element Task
Type Self Message
Sequence Number 32
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation StartAgents
Asynchronous false

Status : Status
Name Value
Transit To Status
Multiplicity Unspecified
Base Classifier Status
Active false
Stopped false
Multi Object false

Relationships
Unamed Message
From
Name Value
End Model Element Task
Type Message
Sequence Number 2
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation GetEventsList
Asynchronous false

Unamed Message
To
Name Value
End Model Element Task
Type Message
Sequence Number 3
Action
Name Value
Name Return
Iteration false
Asynchronous false
Asynchronous false

Unamed Message
From
Name Value
End Model Element Task
Type Message
Sequence Number 4
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation GetActionsList
Asynchronous false

Unamed Message
To
Name Value
End Model Element Task
Type Message
Sequence Number 5
Action
Name Value
Name Return
Iteration false
Asynchronous false
Asynchronous false

Unamed Message
From
Name Value
End Model Element Transfer
Type Message
Sequence Number 8
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation GetConfStruct
Asynchronous false

return : Message
To
Name Value
End Model Element Transfer
Type Message
Sequence Number 9
Action
Name Value
Name Return
Iteration false
Asynchronous false
Asynchronous false

Unamed Message
From
Name Value
End Model Element Transfer
Type Message
Sequence Number 19
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation AddAgent
Asynchronous false

Unamed Message
From
Name Value
End Model Element Transfer
Type Message
Sequence Number 22
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation GetAgentsList
Asynchronous false

Unamed Message
From
Name Value
End Model Element Transfer
Type Message
Sequence Number 29
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation AddEvent
Asynchronous false
Relationships
Unamed Anchor
To N/A

Transfer : Transfer
Name Value
Transit To Transfer
Multiplicity Unspecified
Base Classifier Transfer
Active false
Stopped true
Multi Object false

Relationships
Unamed Message
From
Name Value
End Model Element Task
Type Message
Sequence Number 7
Action
Name Value
Name Send
Iteration false
Asynchronous false
Asynchronous false

Unamed Message
To
Name Value
End Model Element Status
Type Message
Sequence Number 8
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation GetConfStruct
Asynchronous false

return : Message
From
Name Value
End Model Element Status
Type Message
Sequence Number 9
Action
Name Value
Name Return
Iteration false
Asynchronous false
Asynchronous false

Unamed Message
To
Name Value
End Model Element Transfer
Type Self Message
Sequence Number 10
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation SetBTMacAddress
Asynchronous false

Unamed Message
To
Name Value
End Model Element Transfer
Type Self Message
Sequence Number 11
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation SetBTPin
Asynchronous false

Unamed Message
To
Name Value
End Model Element Transfer
Type Self Message
Sequence Number 12
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation SetWifiKey
Asynchronous false

Unamed Message
To
Name Value
End Model Element Transfer
Type Self Message
Sequence Number 13
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation SetWifiMacAddress
Asynchronous false

Unamed Message
To
Name Value
End Model Element Transfer
Type Self Message
Sequence Number 14
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation SetWifiSSID
Asynchronous false

Unamed Message
To
Name Value
End Model Element Transfer
Type Self Message
Sequence Number 15
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation ActivateBT
Asynchronous false

Unamed Message
To
Name Value
End Model Element Transfer
Type Self Message
Sequence Number 16
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation ActivateWiFi
Asynchronous false

Unamed Message
To
Name Value
End Model Element Transfer
Type Self Message
Sequence Number 17
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation IsInternetConnectionAvailable
Asynchronous false

Unamed Message
To
Name Value
End Model Element Transfer
Type Self Message
Sequence Number 18
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation Poll
Asynchronous false

Unamed Message
To
Name Value
End Model Element Status
Type Message
Sequence Number 19
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation AddAgent
Asynchronous false

Unamed Message
To
Name Value
End Model Element Transfer
Type Self Message
Sequence Number 20
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation MiniSleep
Asynchronous false

Unamed Message
To
Name Value
End Model Element Status
Type Message
Sequence Number 22
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation GetAgentsList
Asynchronous false

new Log() : Message
To
Name Value
End Model Element Log
Type Message
Sequence Number 23
Action
Name Value
Name Call
Iteration false
Asynchronous false
Asynchronous false

Unamed Message
To
Name Value
End Model Element Log
Type Message
Sequence Number 24
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation ListLogs
Asynchronous false

Unamed Message
From
Name Value
End Model Element Log
Type Message
Sequence Number 25
Action
Name Value
Name Return
Iteration false
Asynchronous false
Asynchronous false

Unamed Message
To
Name Value
End Model Element Transfer
Type Self Message
Sequence Number 26
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation Send
Asynchronous false

Unamed Message
To
Name Value
End Model Element Log
Type Message
Sequence Number 27
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation RemoveLog
Asynchronous false

Unamed Message
To
Name Value
End Model Element Transfer
Type Self Message
Sequence Number 28
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation Recv
Asynchronous false

Unamed Message
To
Name Value
End Model Element Status
Type Message
Sequence Number 29
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation AddEvent
Asynchronous false
Relationships
Unamed Anchor
To N/A

Log : Log
Name Value
Transit To Log
Multiplicity Unspecified
Base Classifier Log
Active false
Stopped false
Multi Object false

Relationships
new Log() : Message
From
Name Value
End Model Element Transfer
Type Message
Sequence Number 23
Action
Name Value
Name Call
Iteration false
Asynchronous false
Asynchronous false

Unamed Message
From
Name Value
End Model Element Transfer
Type Message
Sequence Number 24
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation ListLogs
Asynchronous false

Unamed Message
To
Name Value
End Model Element Transfer
Type Message
Sequence Number 25
Action
Name Value
Name Return
Iteration false
Asynchronous false
Asynchronous false

Unamed Message
From
Name Value
End Model Element Transfer
Type Message
Sequence Number 27
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation RemoveLog
Asynchronous false

Conf : Conf
Name Value
Transit To Conf
Multiplicity Unspecified
Base Classifier Conf
Active false
Stopped false
Multi Object false

Relationships
Unamed Message
From
Name Value
End Model Element Task
Type Message
Sequence Number 30
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation WriteConf
Asynchronous false
Relationships
Unamed Anchor
To N/A

Unamed Message
From
Name Value
End Model Element Task
Type Message
Sequence Number 31
Action
Name Value
Name Call
Iteration false
Asynchronous false
Operation LoadConf
Asynchronous false

N/A

N/A
Name Value
Documentation

Stoppiamo tutti gli agenti

Relationships
Unamed Anchor
To Activation

N/A
Name Value
Documentation

Aggiungiamo l'evento reload o nuova conf

N/A
Name Value
Documentation

Verifica che siano fermi

Relationships
Unamed Anchor
To Activation

N/A
Name Value
Documentation

Scrive la conf se arriva l'evento nuova conf

N/A