O Linux oferece um arsenal poderoso de ferramentas para manipulação e análise de arquivos. Este guia apresenta comandos fundamentais que toda profissional de TI e especialista em segurança cibernética deveria dominar.
Análise binária e engenharia reversa
Explorando arquivos binários
Todos os arquivos do sistema são armazenados como dados binários no disco rígido. Para examinar esses dados em formato hexadecimal:
user:$ hexdump file.bin #Dump hexadecimal básico- Usado para visualizar conteúdo de um arquivo binário em formato hexadecimal (base 16) e em caracteres legíveis (ASCII)
user:$ hexdump -C file.bin #Formato canônico (hex + ASCII)- “
-C” mostra o conteúdo do arquivo dividido em 16 bytes por linha e cria três colunas automáticas. A primeira coluna exibe a posição exata (o endereço do byte), a segunda mostra os dados em formato hexadecimal, e a terceira traz a tradução em texto comum (ASCII). Se um byte for um código de controle ou um caractere que não pode ser exibido na tela, o comando o substitui por um ponto (.). Isso evita que o terminal fique desconfigurado e permite que você identifique rapidamente qualquer texto ou padrão escondido no arquivo.
user:$ hexdump -n 100 file.bin #Exibe apenas os primeiros 100 bytes- “
-n 100"instrui o comando a ler e exibir apenas os primeiros 100 bytes do arquivo, interrompendo a leitura logo em seguida. Essa flag é útil para arquivos grandes,. Como o comando foi usado sem a flag “-C“, a saída padrão mostrará os dados agrupados em blocos de dois bytes no formato hexadecimal de duas colunas.
O comando strings na segurança cibernética
O comando strings é uma ferramenta fundamental na engenharia reversa e na análise de malware:
user:$ strings executable_file #extrai strings legíveis
user:$ strings -n 8 file.bin #mostra apenas strings de 8+ caracteres
user:$ strings -o file.bin #mostra o offset de cada stringExemplo prático:
user:$ strings -n 6 /usr/bin/passwd | grep -i passwordEsse comando extrai todas as sequências de caracteres legíveis de um arquivo binário, sendo inestimável para descobrir textos embutidos, URLs ou dados de configuração em executáveis.
Redirecionamento de arquivos e gerenciamento de saída
Criando e redirecionando a saída
O símbolo > redireciona a saída para um arquivo:
user:$ echo "kidcoders-is-amazing" > truths.log #Sobrescreve o arquivo
user:$ echo "additional-truth" >> truths.log #Anexa ao arquivo
user:$ ls -la > directory_listing.txt #Salva a saída do comandoTratamento de erros com redirecionamento
O Linux usa fluxos de saída diferentes. O fluxo 2 representa os erros:
<command> 2>/dev/null #Não mostra os erros, ou informações não encontradas
<command> >/dev/null 2>&1 #Não mostra nenhuma saída, oculta tudo
find / -name "*.txt" 2>/dev/null #Busca os arquivos e ignora os erros de permissãoGerenciamento de arquivos de log
Navegando pelos arquivos de log
Os logs do sistema normalmente ficam armazenados em /var/log:
cd /var/log #Navega até o diretório de logs
ls /var/log #Lista todos os arquivos de log com detalhes
du -sh /var/log/* #Mostra o tamanho de cada arquivo de log
Removendo arquivos
Para apagar arquivos com segurança:
rm filename #Apaga um único arquivo
rm -i filename #Remoção interativa (pede confirmação)
rm -r directory/ #Apaga o diretório recursivamente
rm *.log #Apaga todos os arquivos .log<br>Processamento e análise de texto
Visualizando o conteúdo de arquivos
Primeiras linhas com head:
head file.txt #Mostra as primeiras 10 linhas
head -n 5 file.txt #Mostra as primeiras 5 linhas
head -c 100 file.txt #Mostra os primeiros 100 caracteresÚltimas linhas com tail:
tail file.txt #Mostra as últimas 10 linhas
tail -n 5 file.txt #Mostra as últimas 5 linhas
tail -f file.txt #Acompanha as atualizações do arquivo (tempo real)
sudo tail -f /var/log/syslog #Monitora os logs do sistema em tempo real
Exibição invertida com tac:
tac file.txt # Exibe o conteúdo do arquivo em ordem reversaNumeração de linhas
nl file.txt # Adiciona números de linha à saída
nl -b a file.txt # Numera todas as linhas (incluindo as vazias)
nl -w 3 file.txt # Define a largura do número em 3 caracteres
Automação e operações em lote
Geração de arquivos com loops
Crie múltiplas entradas de log com eficiência:
# Loop básico - gera 50 eventos numerados
for i in {1..50}do echo "Event $i" >> done
# Loop com marcações de data e hora
for i in {1..10}; do echo "$(date): Event $i" >> timestamped_events.log; done
# Gera dados de teste
for i in {1..100}; do echo "User$i,user$i@domain.com,$(( RANDOM % 100 + 18 ))" >> users.csv; done
# Cria múltiplos arquivos
for i in {1..5}; do echo "Content for file $i" > "test_file_$i.txt"; done
Permissões de arquivos e segurança
Encontrando arquivos por permissões
find . -perm 777 -type f # Arquivos com permissão total
find . -perm 755 -type d # Diretórios com permissões padrão
find /home -perm 666 -type f 2>/dev/null # Arquivos legíveis/graváveis por todos
find . -name "*.sh" -perm +111 # Scripts shell executáveis
Decomposição dos números de permissão:
- 7 = rwx (leitura, escrita, execução)
- 6 = rw- (leitura, escrita)
- 5 = r-x (leitura, execução)
- 4 = r– (somente leitura)
Processamento avançado de texto
Combinando comandos: cat e grep
cat gile.txt #Uso básico, mostra o conteúdo do arquivo sem abrir ele
cat file.txt | grep "pattern" #Filtra o conteúdo por padrão
cat *.log | grep "ERROR" #Encontra erros em todos os arquivos de log
cat file.txt | grep -i "case_insensitive" #Busca sem diferenciar maiúsculas
cat file.txt | grep -v "exclude_this" #Inverte a correspondência (exclui o padrão)
cat file.txt | grep -n "pattern" #Mostra os números das linhas
# Flags avançadas do grep
grep -r "pattern" /var/log/ #Busca recursiva no diretório
grep -A 3 "ERROR" logfile.txt #Mostra 3 linhas depois da ocorrência
grep -B 2 "ERROR" logfile.txt #Mostra 2 linhas antes da ocorrência
grep -w "word" file.txt #Corresponde apenas palavras inteirasExemplos práticos:
cat /var/log/auth.log | grep "Failed password" | head -10
ps aux | grep"apache" # Encontra processos do Apache
cat /etc/passwd | grep -E "/bin/(bash|sh)$" # Encontra usuários com acesso a shellEdição de fluxos com sed
O comando sed é essencial para modificações de arquivos em larga escala:
sed 's/old/new/' file.txt #Substitui a primeira ocorrência por linha
sed 's/old/new/g' file.txt #Substitui todas as ocorrências (global)
sed 's/old/new/gi' file.txt #Global, sem diferenciar maiúsculas
sed '5d' file.txt #Apaga a linha 5
sed '/pattern/d' file.txt #Apaga as linhas que correspondem ao padrão
sed '/^$/d'file.txt #Apaga as linhas vazias
sed -i 's/old/new/g' file.txt #Modifica o arquivo diretamente
sed -i.bak 's/old/new/g' file.txt #Cria backup antes de modificarExemplos práticos:
sed -i 's/DEBUG/INFO/g' application.conf # Muda o nível de log
sed 's/^/[PROCESSED] /' logfile.txt # Adiciona prefixo a cada linha
sed 's/[[:space:]]*$//' file.txt # Remove espaços em branco no final<br>Expressões regulares
As expressões regulares (regex) oferecem correspondência de padrões poderosa:
grep "^start" file.txt #Linhas que começam com "start"
grep "end$" file.txt #Linhas que terminam com "end"
grep "[0-9]" file.txt #Qualquer dígito
grep "[a-zA-Z]" file.txt #Qualquer letra
#Padrões avançados
grep -E "word1|word2" file.txt #word1 ou word2
grep -E "[0-9]{3}" file.txt #Exatamente 3 dígitos
grep -E "\b[0-9]{1,3}(\.[0-9]{1,3}){3}\b" file.txt #Endereços IPConclusão
Esses comandos do Linux formam a base de um gerenciamento e uma análise de arquivos eficazes. Seja para diagnosticar problemas do sistema, analisar logs ou conduzir investigações de segurança, dominar essas ferramentas vai aumentar significativamente sua produtividade e suas capacidades.
Lembre-se de sempre testar os comandos em um ambiente seguro antes de aplicá-los em sistemas de produção, especialmente ao lidar com modificações e exclusões de arquivos.


