extract.sh: Script baseado no extract da phrack
Publicado por Marcos Paulo Ferreira (última atualização em 09/10/2010)
[ Hits: 5.467 ]
Homepage: http://daemoniolabs.wordpress.com
Download 1286311278.extract.sh (versão 2)
Para quem lia ou lê a phrack magazine já deve ter usado o programa extract lançado na revista
na edição #50 [1]. Esse programa é de grande utilidade, pois com ele podemos extrair conteúdos específicos
de um arquivo texto e salvá-los em um arquivo qualquer.
O conteúdo mencionado deve estar entre as tags <++> e <-->. O nome do arquivo de saída deve estar
após a tag <++> (obs: Pode-se utilizar diretórios também. Se eles não existirem, então serão criados.)
Confira um exemplo:
$ cat arquivo.txt
aaaaa
bbbbb
<++> saida.txt
1111
2222
3333
<-->
cccc
dddd
Utilizando o script:
$ ./extract.sh arquivo.txt
- Extracting saida.txt
Depois disso, o arquivo saida.txt será criado e seu conteúdo será:
$ cat saida.txt
111
222
333
[1] http://www.phrack.com/issues.html?issue=50&id=16
Espero que gostem.
t+
Versão 2 - Enviado por Marcos Paulo Ferreira em 03/10/2010
Changelog: É... parece que a regex para casar com as tags de abertura e fechamento não estava funcionando.
Não sei por quê, mas aqui em casa o script rodou sem problemas.
Bem, troquei a tag '<[+][+]>' para \<[+][+]\>, pois as versões recentes do bash não precisam das aspas para delimitar a regexp (e se você usar as aspas, o resultado será diferente :S ).
Outra coisa que mudei foi a robustez do script. Agora ele verifica alguns errinhos básicos que o script anterior não verificava.
Opa... fuçando pela net encontrei o Meleu Extracting Utility que faz a mesma coisa que esse script aqui.
Para falar a verdade, eu nem peguei o código do meleu para ler a fundo, mas posso garantir que o script tá bem diferente do meu e com muito mais esquemas interessantes :|
Página pessoal do meleu:
http://www.meleuzord.hpg.ig.com.br
Bem, acho que é isso!
t+
Download 1286311278.extract.sh
#!/bin/bash # # Autor: Marcos Paulo Ferreira (Daemonio) # Contato: undefinido at gmail com # # =[ Script : extract.sh ]= # Dom Ago 22 13:43:09 BRT 2010 Inicio # Seg Ago 23 00:34:38 BRT 2010 Fim da primeira versao # Seg Ago 23 14:21:32 BRT 2010 Inclusao do read -r no while # # =[ Descricao ]= # Extrai o conteudo delimitado entre as tags <++> e <--> # de um arquivo texto. O nome do arquivo a ser salvo # deve vir depois da tag <++>. # Esse script foi baseado no extract.c da phrack #50. # # =[ Uso ]= # $ ./extract.sh arquivo.txt # # =[ Exemplo ]= # $ cat arquivo.txt # <++> saida.txt # 111 # 222 # 333 # <--> # $ ./extract.sh arquivo.txt # - Extracting saida.txt # $ cat saida.txt # 111 # 222 # 333 # extract() { while read -r LINE do # Procura pelo padrao <++> no inicio da linha if [[ $LINE =~ '^<[+][+]>' ]] then # Extrai o nome do arquivo ( tudo apos o <++> ) FILENAME=${LINE#* } # Precisa criar diretorios? if [[ $FILENAME =~ '/' ]] then DIRNAME=${FILENAME%/*} mkdir -p $DIRNAME fi # Se arquivo existe, entao o deleta. [ -e "$FILENAME" ] && rm -f "$FILENAME" 2> /dev/null # Confere se e' possivel criar arquivo if ! touch $FILENAME 2> /dev/null then echo "Could not extract $FILENAME" exit 1 fi echo "- Extracting $FILENAME" # Gravar no arquivo ate encontrar <--> else if ! [[ $LINE =~ '^<-->' ]] then echo -E "$LINE" >> $FILENAME fi fi done } [ -z "$1" ] && echo "Usage: $0 <inputfile>" && exit 1 sed -n '/^<++>/,/^<-->/p' "$1" | extract
Download automatizado de instaladores para fileserver e afins
Menu para liberar / bloquear laboratórios no Squid
Script simples de backup de arquivos em máquina remota
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
É cada coisa que me aparece! - não é só 3% (1)
Alguma pessoa pode me ajudar com drriver Core i3 7020u (Debian 12)? (2)
Mikrotik não mostra bytes nem packtes (1)
Melhores Práticas de Nomenclatura: Pastas, Arquivos e Código [RESOLVID... (4)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta