shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Ajuda urgente !!


From: MrBiTs
Subject: Re: [shell-script] Ajuda urgente !!
Date: Thu, 24 Feb 2011 07:01:59 -0300
User-agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.13) Gecko/20101207 Lightning/1.0b2 Thunderbird/3.1.7

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

On 02/23/2011 20:45 , Leonardo Bites wrote:
> Gelera desculpa ai o problema meio off-topic, mas to com um problema
> urgente e não consigo achar nada pra resolver...
> 
> Vamos lá o lance é o seguinte existia um funcionario que trabalhava
> aqui e esse FDP criptografou todos os scripts que temos rodando nos
> servidores com um programa chamado SHC e o cara foi embora sumiu e
> levou todos os fontes, e pra ficar melhor agora todos os scripts
> pararam de funcionar alguem sabe como descriptografar essa porcaria ou
> como eu posso fazer pra mostrar a execução do script linha a linha ou
> alguma coisa do tipo ????
> 
> 
> Por favor HELP PLEASE !!!!
> 
> 

Huhu. Que legal.

Usar SHC (um cara bem legal, inclusive) para "compilar" os scripts não os 
protege, na verdade. Só precisamos conhecer um pouquinho
mais o SO onde trabalhamos.

O binário decriptografa e carrega o script na memória quando ele inicia. Você 
pode, logo depois de iniciar o binário, simplesmente
gerar m segfault e ler o script do coredump gerado

Receitinha de bolo hein:

#! /bin/bash
echo "Inicia o script e faz qqr coisa"
sleep 1
echo "Pronto"

Compile-o com o shc:

shc -f test.sh

Inicie-o em bg e mate-o num segfault. Eu faço assim:

./test.sh.x&  ( sleep 0.2 && kill -SIGSEGV $! )

sleep 0.2 vai dar ao binário tempo suficiente para iniciar e decriptografar o 
script original. Não aumente muito esse valor.

A variável $! contém o PID do último processo iniciado em bg, mas isso você 
sabe. Fica fácil então matar esse processo com o
SIGSEGV, que é o mesmo que um kill -11 $!.

Olha que legal:

[1]  + segmentation fault (core dumped)  ./test.sh.x

Agora vamos procurar no dump o script original:

strings core | more

Usei o strings no dumpfile, que me mostra todos os caracteres imprimíveis no 
arquivo, e podemos ver o script original no meio do lixo:

...
4.0.35-release
BASH_VERSINFO
BASH_VERSINFO
release
x86_64-pc-linux-gnu
BASH_EXECUTION_STRING
BASH_EXECUTION_STRING
                           #! /bin/bash
echo "Inicia o script e faz qqr coisa"
sleep 1
echo "Pronto"
503
EUID
EUID
503


Se o script é muito grande, você deverá ajustar o tamanho do coredump com o 
ulimit. Certifique-se de que ulimit não está em 0, ou o
coredump não vai ser gerado.

<OFF-TOPIC TROLL>

Que esse episódio sirva de lição a todos vocês. É a coisa mais cretina do mundo 
você montar um repositório com SVN, GIT, CVS ou
qualquer outra porcaria existente por ai e baixar uma política de que todo e 
qualquer típo de código deve ser armazenado em sua
última versão nesse repositório. É a coisa mais babaca você ver quando foi o 
último commit do cara e qual é a versão corrente na
produção. Ontem ainda, no engenho, estavamos brincando de ver quem tinha feito 
mais commits. O trabalho é tão pequeno que não
justifica vocês preferirem ter esse tipo de problema. Olha só o trampo que o 
Leonardo vai ter para recuperar os scripts. Se tivesse
montando um repositório, isso não teria acontecido.

</OFF-TOPIC TROLL>

- -- 

LLAP

.0. MrBiTs - address@hidden
..0 GnuPG  - 
http://keyserver.fug.com.br:11371/pks/lookup?op=get&search=0x6EC818FC2B3CA5AB
000 http://www.mrbits.com.br


-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (Darwin)

iQEcBAEBCAAGBQJNZiyXAAoJEG7IGPwrPKWrdQ4H/RL6CiTE6h956v6b071ODWRS
yTYW2j+cDjUutnqy1q0u/jihNizDwg/XzXZg6xrvh1cVIC1xcnCvsi9zKJ0Rfw/3
ZcGLTWljpm5Q8IOI4KHMXNCji2HnnUspkQXCMwclPt+G74WGIOwuSkv50K5TN5EF
AzHKrq4ejt0LuBacywf4ef03OfQGi/ofOjmzpZ9dmIQnj85Mxz4hn7uOO4mCpOGE
izfM1dxjoNqdB87Nd5LYRC7cy4dWUnFA304sfOWKbblYvSYKHByRP4nHx+qik8Ou
GYG/kQV3p24XB5c6J17lX5ec3RffQvA/wqp+QSVvtEIPZpUre3VzLlWQbHoLw1k=
=eUFF
-----END PGP SIGNATURE-----


reply via email to

[Prev in Thread] Current Thread [Next in Thread]