Skip to content

LEA-SF23/DroidAugmentor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

530 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DroidAugmentor

Ferramenta de treinamento e avaliação de cGANs para geração de dados sintéticos para o contexto de detecção de malwares Android.

Topologia da rede neural

Overview da Topologia da cGAN

Resultados dos experimentos (campanhas) do paper

Gráfico resumo das métricas de aplicabilidade das três topologias testadas

Features dos dados sintéticos

Os gráficos e links para os resultados completos de cada um dos três experimentos (campanhas) estão disponíveis nos arquivos a seguir.

Preparação e Execução

  1. Clonar o repositório

     git clone https://github.com/LEA-SF23/DroidAugmentor.git
     cd DroidAugmentor
  2. Executar a demonstração de funcionamento da ferramenta:

    Opção 1: instalar as dependências e executar a aplicação em um ambiente Linux.

    ./run_demo_app.sh

    Opção 2: baixar a imagem do hub.docker.com e instanciar um container Docker.

    ./run_demo_docker.sh

    Opção 3: construir uma imagem Docker localmente a partir do Dockerfile e instanciar um container.

    ./scripts/docker_build.sh
    ./scripts/docker_run_solo.sh
  3. Executar os mesmos experimentos (campanhas) do paper

     ./run_sf23_experiments.sh

Executando outros experimentos

A ferramenta conta com o run_campaign.py para automatizar o treinamento e a avaliação da cGAN. O run_campaign.py permite executar várias campanhas de avaliação com diferentes parâmetros, registrando os resultados em arquivos de saída para análise posterior. O usuário poderá visualmente realizar uma análise comparativa das diferentes configurações em relação aos conjuntos de dados utilizados.

Configurar o pipenv

pip install pipenv
pipenv install -r requirements2.txt

Execução básica:

pipenv python3 run_campaign.py

Execução da mesma campanha utilizada no artigo:

pipenv run python3 run_campaign.py -c sf23_1l_256,sf23_1l_1024,sf23_1l_4096

Exemplo de execução de uma campanha pré-configurada:

pipenv run python3 run_campaign.py -c sf23_1l_256

Mesma campanha (sf23_1l_256) sendo executada diretamente na aplicação (main.py):

pipenv run python main.py --verbosity 20 --output_dir outputs/out_2023-08-05_12-04-18/sf23_1l_256/combination_2 --input_dataset datasets/drebin215_original_5560Malwares_6566Benign.csv --dense_layer_sizes_g 256 --dense_layer_sizes_d 256 --number_epochs 1000 --training_algorithm Adam

Parâmetros dos testes automatizados:

  --------------------------------------------------------------

--campaign ou -c:    Especifica a campanha de avaliação que você deseja executar. 
                     Você pode fornecer o nome de uma campanha específica ou uma  
                     lista de campanhas separadas por vírgula. 
                     Por exemplo: --campaign sf23_1l_64 ou --campaign 
                     sf23_1l_64,sf23_1l_128.

--demo ou -d:
                     Ativa o modo demo. Quando presente, o script será executado 
                     no modo demo, o que pode ter comportamento reduzido 
                     ou exibir informações de teste.
                     --verbosity ou -v: Especifica o nível de verbosidade do log.
                     Pode ser INFO (1) ou DEBUG (2). 
                     Por padrão, o nível de verbosidade é definido como INFO.


 Outros parâmetros de entrada são definidos dentro das campanhas de avaliação em 
 campaigns_available. Cada campanha tem suas próprias configurações específicas, 
 como input_dataset, number_epochs, training_algorithm, dense_layer_sizes_g, 
 dense_layer_sizes_d, classifier, activation_function, dropout_decay_rate_g, 
 dropout_decay_rate_d, e data_type. As configurações podem variar dependendo do 
 objetivo e das configurações específicas de cada campanha.  


 Em campaigns_available o script irá iterar sobre as combinações de configurações 
 especificadas e executar os experimentos correspondentes.

--------------------------------------------------------------

Executando a ferramenta no Google Colab

from google.colab import drive
drive.mount('/content/drive')
!pip install -r requirements.txt
input_file_path = "/content/dataset.csv"
!python main.py -i "$input_file_path" 

Obs.: Lembre-se de ter Models, Tools e a main devidamente importada no seu drive.

Parâmetros da ferramenta:

--------------------------------------------------------------

      (main.py):

       -i ,  --input_dataset        Caminho para o arquivo do dataset real de entrada         
       -o ,  --output_dir           Diretório para gravação dos arquivos de saída.
       --data_type                  Tipo de dado para representar as características das amostras.
       --num_samples_class_malware  Número de amostras da Classe 1 (maligno).
       --num_samples_class_benign   Número de amostras da Classe 0 (benigno).
       --number_epochs              Número de épocas (iterações de treinamento) da cGAN.
       --k_fold                     Número de subdivisões da validação cruzada 
       --initializer_mean           Valor central da distribuição gaussiana do inicializador.
       --initializer_deviation      Desvio padrão da distribuição gaussiana do inicializador.
       --latent_dimension           Dimensão do espaço latente para treinamento cGAN.
       --training_algorithm         Algoritmo de treinamento para cGAN. Opções: 'Adam', 'RMSprop', 'Adadelta'.
       --activation_function        Função de ativação da cGAN. Opções: 'LeakyReLU', 'ReLU', 'PReLU'.
       --dropout_decay_rate_g       Taxa de decaimento do dropout do gerador da cGAN.
       --dropout_decay_rate_d       Taxa de decaimento do dropout do discriminador da cGAN.
       --dense_layer_sizes_g        Valores das camadas densas do gerador.
       --dense_layer_sizes_d        Valores das camadas densas do discriminador.
       --batch_size                 Tamanho do lote da cGAN.
       --verbosity                  Nível de verbosidade.
       --save_models                Opção para salvar modelos treinados.
       --path_confusion_matrix      Diretório de saída das matrizes de confusão.
       --path_curve_loss            Diretório de saída dos gráficos de curva de treinamento.

    --------------------------------------------------------------

Ambientes de teste

A ferramenta foi executada e testada na prática nos seguintes ambientes:

  1. Windows 10
    Kernel Version = 10.0.19043
    Python = 3.8.10
    Módulos Python conforme requirements.

  2. Linux Ubuntu 22.04.2 LTS
    Kernel Version = 5.15.109+
    Python = 3.8.10
    Módulos Python conforme requirements.

  3. Linux Ubuntu 22.04.2 LTS
    Kernel Version = 5.19.0-46-generic
    Python = 3.10.6
    Módulos Python conforme requirements.

  4. Linux Ubuntu 20.04.6 LTS
    Kernel Version = 5.19.0-46-generic
    Python = 3.8.10
    Módulos Python conforme requirements.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors