Skip to content

ccesarfp/dsa-tools

Repository files navigation

dsa-tools CLI

Visão Geral

dsa-tools é uma ferramenta de linha de comando (CLI) projetada para auxiliar em diversas tarefas de automação de desenvolvimento e segurança. Suas duas principais funcionalidades são:

  • Migrations: Gerencie, versiona e aplique mudanças no esquema do banco de dados de forma fácil.
  • Obfuscate: Ofusque arquivos e diretórios JavaScript para proteção de código.

Funcionalidades

  • Migrations:
    • Inicialize o sistema de migrações
    • Aplique, simule (fake) e verifique o status das migrações
    • Controle e versionamento das alterações no esquema do banco de dados
  • Obfuscate:
    • Ofusque arquivos JavaScript (.js) ou diretórios inteiros
    • Controle detalhado sobre as opções de ofuscação (arrays de strings, embaralhamento de identificadores, controle de fluxo, etc.)
    • Processamento recursivo de diretórios, preservando a estrutura no resultado
  • Integração com Node.js e npm para gerenciamento de dependências

Instalação

Certifique-se de ter os seguintes pré-requisitos:

  • Go (para compilar/executar a CLI)
  • Node.js e npm (para ofuscação de JavaScript)

Clone o repositório e construa a CLI:

git clone <repo-url>
cd dsa-tools
go build -o dsa-tools ./cmd/dsa-tools

Uso

Comando Obfuscate

O comando obfuscate permite ofuscar arquivos ou diretórios JavaScript. Ele utiliza o pacote javascript-obfuscator internamente.

Uso Básico

./dsa-tools obfuscate:run --path <caminho_entrada> --dest <caminho_saida> [opções]
  • --path, -p: Caminho para o diretório ou arquivo a ser ofuscado (obrigatório)
  • --dest, -d: Diretório de destino para os arquivos ofuscados (obrigatório)

Exemplo

./dsa-tools obfuscate:run --path ./src --dest ./dist

Isso irá encontrar recursivamente todos os arquivos .js em ./src, ofuscá-los e gravar os resultados nos caminhos correspondentes em ./dist.

Opções

Você pode customizar o processo de ofuscação usando as seguintes flags:

Transformações de Array de Strings:

  • --string-array (padrão: true): Habilita transformação de array de strings
  • --string-array-rotate (padrão: true): Habilita rotação do array de strings
  • --string-array-shuffle (padrão: true): Habilita embaralhamento do array de strings
  • --string-array-threshold (padrão: 0.75): Limite para array de strings (0-1)
  • --string-array-index-shift (padrão: true): Habilita deslocamento de índice do array de strings
  • --string-array-indexes-type (padrão: hexadecimal-number): Tipo de índice do array de strings (hexadecimal-number|hexadecimal-numeric-string)
  • --string-array-wrappers-count (padrão: 1): Quantidade de wrappers do array de strings
  • --string-array-wrappers-type (padrão: variable): Tipo de wrapper do array de strings (variable|function)
  • --string-array-wrappers-chained-calls (padrão: true): Habilita chamadas encadeadas de wrappers do array de strings
  • --string-array-encoding (padrão: none): Codificação do array de strings (none|base64|rc4)

Transformações de Identificadores:

  • --identifier-names-generator (padrão: hexadecimal): Gerador de nomes de identificadores (hexadecimal|mangled|dictionary)
  • --identifiers-prefix: Prefixo para identificadores
  • --rename-globals (padrão: false): Renomeia identificadores globais
  • --rename-properties (padrão: false): Renomeia propriedades

Outras Transformações:

  • --compact (padrão: true): Habilita saída compacta
  • --simplify (padrão: true): Habilita simplificação de código
  • --transform-object-keys (padrão: false): Transforma chaves de objetos
  • --numbers-to-expressions (padrão: false): Converte números em expressões
  • --control-flow-flattening (padrão: false): Habilita achatamento do fluxo de controle
  • --control-flow-flattening-threshold (padrão: 0.75): Limite para achatamento do fluxo de controle (0-1)
  • --dead-code-injection (padrão: false): Habilita injeção de código morto
  • --dead-code-injection-threshold (padrão: 0.4): Limite para injeção de código morto (0-1)

Ajuda

Para ver todas as opções disponíveis e suas descrições, execute:

./dsa-tools obfuscate:run --help

Comando Migrations

dsa-tools também oferece um conjunto de comandos para gerenciar migrações de banco de dados, facilitando o versionamento, aplicação e acompanhamento das mudanças no seu esquema de banco de dados.

Comandos Disponíveis de Migração

  • migrate:init – Inicializa o sistema de migrações no seu projeto, criando a estrutura de diretórios e arquivos de configuração necessários.
  • migrate:run – Aplica todas as migrações pendentes ao banco de dados.
  • migrate:status – Mostra o status atual das migrações (quais foram aplicadas, quais estão pendentes).
  • migrate:fake-run – Marca migrações como aplicadas sem realmente executá-las (útil para sincronizar o estado).

Uso Básico

./dsa-tools migrate:init
./dsa-tools migrate:run
./dsa-tools migrate:status
./dsa-tools migrate:fake-run

Exemplo de Fluxo

  1. Inicialize as migrações:
    ./dsa-tools migrate:init
  2. Aplique as migrações:
    ./dsa-tools migrate:run
  3. Verifique o status das migrações:
    ./dsa-tools migrate:status
  4. Simule a aplicação das migrações (marcar como aplicadas):
    ./dsa-tools migrate:fake-run

Observações

  • Os arquivos de migração devem ser colocados no diretório de migrações criado pelo migrate:init.
  • Cada migração deve seguir as convenções de nome e estrutura descritas na documentação ou configuração gerada.
  • Sempre faça backup do seu banco de dados antes de rodar migrações em ambientes de produção.

Como Funciona

  1. A CLI verifica a presença do pacote javascript-obfuscator via npm e o instala globalmente se necessário.
  2. Ela escaneia recursivamente o caminho de entrada em busca de arquivos .js.
  3. Para cada arquivo, invoca o javascript-obfuscator via Node.js, passando as opções selecionadas.
  4. O resultado ofuscado é gravado no diretório de destino, preservando a estrutura de diretórios original.
  5. Para migrações, a CLI gerencia os arquivos de migração, aplica no banco de dados e acompanha seu status.

Solução de Problemas

  • Certifique-se de que Node.js e npm estão instalados e disponíveis no seu PATH.
  • Se encontrar problemas com o ofuscador, tente rodar npm install -g javascript-obfuscator manualmente.
  • Para problemas com migrações, verifique a conexão com o banco de dados e a estrutura dos arquivos de migração.
  • Para erros de permissão, verifique as permissões dos seus arquivos e diretórios.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors