String-X: Manipulação de Strings para Operadores Cansados

Ferramenta de Automatização para Manipulação de Strings

Salve, Osinteir(o|a)s!

Em meus estudos de Python + OSINT, resolvi codar uma tool compatível com minhas necessidades atuais de automação e execução modular de comandos shell.

Bom, depois de diversas cervejas e muito code Python, criei a tool STRING-X (aka strx). Ferramenta criada com ideias de um ser humano preguiçoso. Afinal, existe algo mais empolgante para um preguiçoso do que eliminar processos e comandos repetidos? Atribuí o nome STRING-X à ferramenta porque utilizo, em boa parte dos processos da tool, o conceito de replace de strings para criar comandos e passar informações para módulos internos.

Piadocas de um senhor de idade avançada.

Se tem uma coisa que aprendemos nas trincheiras do OSINT e nas coletas da vida, é que nem sempre a quantidade de dados garante a qualidade informacional. Scripts, comandos, regex e tools com diversas gambiarras podem ajudar no processo para coletar um intel mais relevante, eliminando ruídos desnecessários.

Tendo em mente o contexto operacional no qual nem sempre atuamos dentro de um ambiente corp (com regras e playbooks), efetuamos diligências dentro de um cenário, às vezes, informal ou clandestino. Visando isso, estabeleci na ferramenta um padrão de módulos e organização com nomenclaturas claras que ajudam o operador a organizar melhor seu fluxo de extração.


WARNING: Esta ferramenta foi desenvolvida para usuários adultos com conhecimentos básicos de shell, Linux, OPSEC e minimamente alfabetizados. Espera-se que o operador compreenda o impacto de suas ações, saiba interpretar comandos antes de executá-los e não atribua comportamentos inesperados à “mágica” do sistema.

Seguindo a filosofia da preguiça

Faça uma coisa, mas, se for repetir, crie um script.

mrcl0wn

STRING-X (strx)

Pois é. Eu estava cansado de ver scripts quebrando por causa de aspas, explodindo a RAM com subprocessos desnecessários ou, simplesmente, de nem lembrar dos comandos usados.

Foi nessa busca por ordem no caos que “pari” o String-X (strx). Não é só mais um utilitário para encher linguiça no seu arsenal; é um orquestrador desenvolvido em Python 3.12+ que traz a lógica de scripts parrudos direto para linha de comando. É a ferramenta que transforma dados estáticos em pipelines de inteligência ativa.

Se você deseja um contexto rápido sobre a ferramenta, disponibilizei este vídeo gerado pelo Notebook LM. É possível que existam alguns erros técnicos ou de escrita, mas ele ajuda a introduzir a ideia.

Instalação via pip (Recomendado)

# Instalar diretamente do repositório
pip install git+https://github.com/MrCl0wnLab/string-x.git

# Ou instalar em modo desenvolvimento
git clone https://github.com/MrCl0wnLab/string-x.git
cd string-x
pip install -e .

# Teste a instalação
strx -help

# Lista tipos de módulos 
strx -types

# Lista módulos e exemplos de uso
strx -examples

# Lista funções
strx -funcs

# Testando com string única
strx -s "exemplo.com" -st "dig {STRING}"
Code language: PHP (php)

Fluxo de Processamento

  1. Entrada: Dados via arquivo (-l) ou stdin (pipe)
  2. Template: Aplicação do template com {STRING}
  3. Processamento: Execução de comandos/módulos
  4. Pipe: Processamento adicional opcional (-p)
  5. Saída: Resultado final (tela ou arquivo)

Estrutura de Diretórios

string-x/
.
├── asset # Imagens, banners e logos usados na documentação e interface CLI
├── config # Arquivos de configuração global do projeto (settings)
├── core # Núcleo da aplicação, engine principal e lógica central
│ └── banner # Submódulo para banners ASCII art
│ └── asciiart # Arquivos de arte ASCII para exibição no terminal
├── output # Diretório padrão para arquivos de saída e logs
└── utils # Utilitários e módulos auxiliares para extensões e integrações
├── auxiliary # Módulos auxiliares organizados por função
│ ├── ai # Módulos de inteligência artificial (ex: prompts Gemini)
│ ├── clc # Módulos coletores (busca, DNS, whois, APIs externas)
│ ├── con # Módulos de conexão (SSH, FTP, HTTP probe)
│ ├── ext # Módulos extratores (regex: email, domínio, IP, hash, etc)
│ └── out # Módulos de saída/integradores (JSON, CSV, banco de dados, APIs)
└── helper # Funções utilitárias e helpers usados em todo o projeto

Menu

usage: strx [-h] [-types] [-examples] [-functions] [-list file] [-s string] [-str cmd]
            [-out file] [-pipe cmd] [-verbose] [-thread <10>] [-pf] [-of]
            [-filter value] [-sleep <5>] [-module <type:module>] [-pm] [-proxy PROXY]
            [-format <format>] [-upgrade] [-retry <1>] [-no-shell]

 
                                             _
                                            (T)          _
                                        _         .=.   (R)
                                       (S)   _   /\/(`)_         ▓
                                        ▒   /\/`\/ |\ 0`\      ░
                                        b   |░-.\_|_/.-||
                                        r   )/ |_____| \(    _
                            █               0  #/\ /\#  ░   (X)
                             ░                _| + o |_                ░
                             b         _     ((|, ^ ,|))               b
                             r        (1)     `||\_/||`                r  
                                               || _ ||      _
                                ▓              | \_/ ░     (V)
                                b          0.__.\   /.__.0   ░
                                r           `._  `"`  _.'           ▒
                                               ) ;  \ (             b
                                        ░    1'-' )/`'-1            r
                                                 0`     
                        
                              ██████    ▄▄▄█████▓    ██▀███     ▒██   ██▒ 
                            ▒██    ▒    ▓  ██▒ ▓▒   ▓██ ▒ ██▒   ░▒ █ █ ▒░
                            ░ ▓██▄      ▒ ▓██░ ▒░   ▓██ ░▄█ ▒   ░░  █   ░
                              ▒   ██▒   ░ ▓██▓ ░    ▒██▀▀█▄      ░ █ █ ▒ 
                            ▒██████▒▒     ▒██▒ ░    ░██▓ ▒██▒   ▒██▒ ▒██▒
                            ▒ ▒▓▒ ▒ ░     ▒ ░░      ░ ▒▓ ░▒▓░   ▒▒ ░ ░▓ ░
                            ░ ░▒  ░ ░       ░         ░▒ ░ ▒░   ░░   ░▒ ░
                            ░  ░  ░       ░           ░░   ░     ░    ░  
                                  ░                    ░         ░    ░  
                                  ░                                      
                                
                              String-X: Tool for automating commands  1.0

options:
             -h, -help             show this help message and exit
             -types                 Lista tipos de módulos
             -examples              Lista módulos e exemplos de uso
             -functions, -funcs     Lista funções
             -list, -l file         Arquivo com strings para execução
             -s string              String única para execução
             -str, -st cmd          String template de comando
             -out, -o file          Arquivo output de valores da execução shell
             -pipe, -p cmd          Comando que será executado depois de um pipe |
             -verbose, -v           Modo verboso
             -thread, -t <10>       Quantidade de threads
             -pf                    Mostrar resultados da execução de função, ignora shell
             -of                    Habilitar output de valores da execução de função
             -filter, -f value      Valor para filtrar strings para execução
             -iff value             Filtrar resultados de função: retorna apenas resultados que contenham o valor especificado
             -ifm value             Filtrar resultados de módulo: retorna apenas resultados que contenham o valor especificado
             -sleep <5>             Segundos de delay entre threads
             -module <type:module>  Selecionar o tipo e module, possível usar encadeamento type1:module1|type:module2
             -pm                    Mostrar somente resultados de execução do module
             -pmc                   Mostrar resultados de cada módulo no encadeamento separadamente
             -no-shell, -ns         Processar entrada diretamente através de módulos/funções sem execução de comandos shell
             -proxy PROXY           Setar um proxy para request
             -format <format>       Formato de saída (txt, csv, json)
             -upgrade               Atualizar String-X via Git
             -retry, -r <1>         Quantidade de tentativas
Code language: HTML, XML (xml)

Exemplos práticos

Elaborei uns 20 comandos práticos, organizados por categorias, para uma introdução do uso

1. Análise de Phishing e Reconhecimento

  • Verificar palavras-chave suspeitas em sites: strx -l domains_suspicious.txt -st "curl -skL https://{STRING}/" -p "grep -i 'phish\|scam\|fake'"
  • Extrair títulos de páginas para identificar clones: strx -l domains.txt -st "curl -sL https://{STRING}" -p "grep -o '<title>.*</title>'"
  • Análise inteligente de URLs com Gemini IA: strx -l urls.txt -st "echo 'Analisar URL em busca de comportamentos maliciosos: {STRING}'" -module "ai:gemini" -pm
  • Coletar informações de certificados SSL/TLS: strx -l domains.txt -st "echo {STRING}" -module "clc:crtsh" -pm
  • Sondagem HTTP/HTTPS para análise de cabeçalhos de servidor: strx -l urls.txt -st "echo {STRING}" -module "clc:http_probe" -pm

2. Fuzzing e Testes de Força Bruta

  • Fuzzing de diretórios em massa: strx -l wordlist.txt -st "curl -s -o /dev/null -w '%{http_code}' https://target.com/{STRING}" -p "grep '^200$'"
  • Verificação massiva de status HTTP com 50 threads: strx -l urls.txt -st "curl -I {STRING}" -p "grep 'HTTP/'" -t 50
  • Geração dinâmica de nomes de subdomínios comuns: strx -l domains.txt -st "subdomain_gen({STRING})" -ns -pf
  • Fuzzing de parâmetros de API com valores aleatórios: strx -l apis.txt -st "curl '{STRING}?id=int_rand(6)'" -pf
  • Port scanning automatizado com filtragem de portas abertas: strx -l ip_list.txt -st "nmap -p 80,443 {STRING}" -p "grep 'open'" -t 20

3. Google Dorking e Motores de Busca

  • Dorking básico automatizado a partir de uma lista: strx -l dorks.txt -st "echo {STRING}" -module "clc:google" -pm
  • Busca por arquivos confidenciais em sites governamentais: echo 'site:gov filetype:pdf "confidential"' | strx -st "echo {STRING}" -module "clc:google" -pm
  • Localizar painéis de login expostos usando Yahoo: echo 'inurl:admin intitle:"login"' | strx -st "echo {STRING}" -module "clc:yahoo" -pm
  • Comparar resultados de busca entre Google e Bing simultaneamente: strx -l dorks.txt -st "echo {STRING}" -module "clc:google|clc:bing" -pmc -pm

4. Grep de Dados e Filtragem Inteligente

  • Buscar padrões específicos em arquivos de leaks ou diretórios: strx -l patterns.txt -st "grep -Ei '{STRING}' -R ./database/" -v 1
  • Extrair apenas e-mails de domínios governamentais de um dump: strx -l data.txt -st "echo {STRING}" -module "ext:email" -pm -f ".gov"
  • Extrair e-mails únicos de um dump SQL: strx -l dump.txt -st "echo {STRING}" -module "ext:email" -pm | sort -u
  • Filtrar resultados de funções que contenham o termo “admin”: strx -l urls.txt -st "{STRING}; md5({STRING})" -pf -iff "admin"

5. Extração de URLs e Domínios

  • Web spider para coleta recursiva de URLs de um alvo: strx -s "https://example.com" -st "echo {STRING}" -module "clc:spider" -op depth=3,max_urls=50 -pm
  • Extração de URLs diretamente de uma página via pipe: curl -s "https://target.com" | strx -st "{STRING}" -module "ext:url" -ns -pm
  • Pipeline completo: extrair URL -> extrair domínio -> coletar DNS: strx -l data.txt -st "{STRING}" -module "ext:url|ext:domain|clc:dns" -ns -pm
  • Execução básica: cat hosts.txt | strx -str 'host {STRING}'
  • Executando comando shell com uma complexidade: cat hosts.txt | strx -str "curl -Iksw 'CODE:%{response_code};IP:%{remote_ip};HOST:%{url.host};SERVER:%header{server}' https://{STRING}" -p "grep -o -E 'CODE:.(.*)|IP:.(.*)|HOST:.(.*)|SERVER:.(.*)'" -t 30

Dica de Performance: Utilize sempre a flag -ns (No-Shell) ao trabalhar apenas com módulos e funções integradas para obter uma execução mais rápida e segura.


Cenário – Threat Intelligence

Você faz parte da rotina de análises de phishing para mapear paths, verificar a existência de keywords relacionadas ao cliente e executar processos de fuzzing.

Suponha que, durante um processo de fuzzing aplicado a uma campanha de phishing, você identifique, de forma inesperada, o acesso a um painel admin. No entanto, você não deseja repetir manualmente todo esse procedimento sempre que precisar reproduzir o acesso, e sim reutilizar o “bypass” identificado para chegar ao painel de forma consistente.

Para atender a esse cenário, foram criadas estruturas modulares, permitindo o desenvolvimento de módulos personalizados voltados para tarefas específicas, como a automação de bypasses, o reaproveitamento de fluxos de acesso e a padronização de técnicas já validadas.

Exemplo de uso para seu módulo personalizado adicionada na categoria clc (utils/auxiliary/clc):

strx -l urls.txt -st "{STRING}" -module "clc:meu_module" -ns -pm

# Efetuando filtro de URLS usando módulo URL antes de enviar para seu coletor personalizado.

strx -l urls.txt -st "{STRING}" -module "ext:url|clc:meu_module" -ns -pm
Code language: Bash (bash)

O Caos das Strings

Para o profissional de Infosec moderno, simplicidade demais às vezes atrapalha. Você quer processar volumes massivos de dados brutos, criar um padrão para execução de tarefas mas as vezes só o uso comandos anotados em um bloco de texto qualquer vira um caos. O strx chega para resolver isso, permitindo manipular strings de forma dinâmica, segura e modular. É sair do “grep” básico e ir para uma estrutura de automação de verdade.

O “Pulo do Gato”: O Placeholder {STRING}

A curva de aprendizado de automação costuma ser chata, mas o String-X nivela o jogo com o placeholder {STRING}.

Aqui entra a diferença de mindset (palavra proibida de coaching): validar 10 mil domínios não é difícil por causa do código, e sim porque ninguém quer digitar, lembrar e repetir o mesmo ritual indefinidamente.

Abordagem Tradicional (Com bondade no coração):

cat dominios.txt | while read line; do host $line; done
# E rezar para não travar no meio...
Code language: Bash (bash)

Abordagem String-X (Coração peludo e sem tempo):

strx -l dominios.txt -st "host {STRING}"
Code language: Bash (bash)

Essa redução não é só estética, é estratégica. O sistema de templates dinâmicos elimina a necessidade daqueles loops manuais chatos, permitindo que até quem tá começando agora automatize tarefas de nível possa brincart um pouco em segundos (claro seja alfabetizado e leia a documentação).

Arquitetura Modular: De Extratores à Inteligência Artificial

O grande diferencial do strx é a estrutura modular. Quem curte a vibe do Nuclei vai se sentir em casa. Ele cobre todas as fases do engajamento:

Comando: strx -types

Comando: strx -examples

Funções Integradas

São mais de 25 functions integradas. Você decodifica payloads com jwt_decode, expande redes com cidr_expand e audita certificados com cert_info sem sair da ferramenta. Detalhe você pode criar suas functions para uso.

Comando: strx -funcs

Sintaxe

# Função simples
strx -l data.txt -st "funcao({STRING})" -pf

# Múltiplas funções
strx -l data.txt -st "{STRING}; md5({STRING}); base64({STRING})" -pf

# Função com parâmetros
strx -l data.txt -st "str_rand(10); int_rand(5)" -pf
Code language: Bash (bash)

Modo “No-Shell”: Velocidade e Segurança

Aqui tá o ouro. O processamento via shell tradicional tem um overhead monstro de criar novos subprocessos para cada linha. Sem contar o risco de Command Injection se você não sanitizar a entrada.

O strx traz a flag -no-shell (-ns).

Ao ativar o -ns, a ferramenta processa tudo pelos módulos internos do Python, sem invocar o shell do sistema.

Você é adulto, então se der merda é sua responsabilidade

Elimina riscos de injeção shell e remove overhead de subprocessos.
E para garantir que ninguém faça “besteira”, existe um if de segurança nativo que bloqueia padrões perigosos (mas dá para desabilitar com -ds se você for root na vida e souber o que tá fazendo).

O Próximo Nível: Google Gemini no Pipeline

A integração com o módulo ai:gemini transforma o strx num analista automatizado. Você espeta sua API Key e pode mandar prompts em lote.

Exemplo prático de Threat Intel: Coletar URLs suspeitas e pedir para IA analisar vulnerabilidades em massa.

strx -l urls.txt -st "Analisar comportamento desta URL: {STRING}" -module "ai:gemini" -pm
Code language: Bash (bash)

Você pode carregar uma lista de prompts complexos e processar logs identificando anomalias, mantendo a saída limpa com a flag -pm (Print Module).

Multi-Threading e Pipes Complexos

Para galera do Recon pesado, o String-X usa multi-threading configurável (-t). Mas o poder de depuração surge com a flag -pmc (Print Module Chain).

Dá para encadear módulos tipo pipe unix (ext:url|ext:domain|clc:dns) e visualizar o resultado de cada etapa. E o suporte a Dorking pode ajudar: Google, Bing, Naver (Coreano) e Sogou (Chinês).

Exemplo de Pipeline:

strx -l targets.txt -st "{STRING}" -module "ext:url|ext:domain|clc:dns" -ns -pmc -pm -t 50

# Executar uma lista de dorks no Google
strx -l dorks.txt -st "echo {STRING}" -module "clc:google" -pm

# Buscar PDFs confidenciais em sites governamentais
echo 'site:gov filetype:pdf "confidential"' | strx -st "echo {STRING}" -module "clc:googlecse" -pm

# Localizar arquivos PDF de um domínio específico (exemplo: FBI)
echo 'site:fbi.gov filetype:pdf' | strx -st "echo {STRING}" -module "clc:google" -pm

# Descoberta de Painéis e Possíveis Exposições
echo 'inurl:admin intitle:"login"' | strx -st "echo {STRING}" -module "clc:yahoo" -pm

# Buscar diretórios administrativos no GitHub
echo 'site:github.com inurl:admin' | strx -st "echo {STRING}" -module "clc:googlecse" -pm

# Identificar termos de uso interno via DuckDuckGo
echo 'intext:"internal use only"' | strx -st "echo {STRING}" -module "clc:duckduckgo" -pm

# Consulta simultânea em Google, Yahoo e Bing
strx -l dorks.txt -st "echo {STRING}" -module "clc:google|clc:yahoo|clc:bing" -pmc -pm

# Análise encadeada com extração de domínios e resolução DNS
strx -l dorks.txt -st "echo {STRING}" -module "clc:google|ext:domain|clc:dns" -pmc

# Uso de lista de proxies para coleta distribuída
cat proxy_list.txt | while read proxy; do
  strx -l target_dorks.txt -st "echo {STRING}" -module "clc:bing" -proxy "$proxy" -pm -t 3 -sleep 2
done

# Salvar resultados em formato JSON
echo 'com.br' | strx -st "echo {STRING}" -module "clc:bing" -format json -o resultados.json -pm

# Dorking com saída JSON utilizando proxy autenticado
strx -l sqli_dorks.txt -st "echo {STRING}" -module "clc:googlecse|out:json" -proxy "http://user:pass@host:port" -pm

Code language: Bash (bash)

STRING-X como Python lib

Para criar um script Python avulso utilizando o String-X (strx) como biblioteca para realizar dorking no Google, você deve aproveitar a arquitetura modular da ferramenta, especificamente o núcleo (Core) e os módulos de coleta (Collector)

Como você já instalou via pip, a estrutura da biblioteca está disponível no seu ambiente Python. Abaixo, apresento um exemplo de como instanciar o módulo de dorking do Google dentro de um código Python:

Exemplo de Script Python (Dorking Google)
Este script demonstra como importar e utilizar o módulo clc:google diretamente:

import sys
# A importação depende de como o pacote foi estruturado no site-packages
# Baseado na arquitetura, os módulos ficam em utils.auxiliary
from stringx.utils.auxiliary.clc.google import Google 

def realizar_dork(termo_busca):
    # Instancia o módulo do Google
    google_search = Google()

    # Define as opções necessárias para o módulo
    # O "data" é o placeholder que o módulo usará como dork
    google_search.options.update({
        "data": termo_busca,
        "proxy": "" # Você pode adicionar um proxy aqui se necessário
    })

    print(f"[*] Iniciando busca por: {termo_busca}")
    
    # Executa a lógica de coleta
    google_search.run()

    # Obtém os resultados capturados
    resultados = google_search.get_result()

    if resultados:
        for link in resultados:
            print(f"[+] Encontrado: {link}")
    else:
        print("[-] Nenhum resultado encontrado ou bloqueio de bot.")

if __name__ == "__main__":
    minha_dork = 'site:gov.ar ".sql"'
    realizar_dork(minha_dork)
Code language: Python (python)

Conclusão

O String-X não foi projetado para uso pontual, mas sim para automatização, reutilização de fluxos e padronização de processos. O foco não está apenas na dork em si, mas na cadeia de execução, permitindo repetir análises complexas com consistência e menor esforço operacional.

O STRX não tem como objetivo substituir ferramentas consagradas nem ser superior a um bash script bem executado. Seu valor está em cenários onde o analista precisa reutilizar código, requisições ou fluxos de execução, oferecendo uma forma organizada, modular e consistente de estruturar essas tarefas.

Em um campo onde cada segundo conta, continuar dependendo de scripts Bash frágeis ou da sua memória bugada é pedir para ter dor de cabeça. A automação inteligente e modular do String-X tá pronta para substituir aqueles seus arquivos .txts jogados no /Documents.

E como disse o grande profeta: Hacker Hackeia!


Post feito ao som de: