Imsniff caindo? Nunca mais...

Publicado por Jean Carlos em 10/03/2007

[ Hits: 14.191 ]

 


Imsniff caindo? Nunca mais...



Esta dica vai para quem usa Imsniff versões 0.03 e 0.04 e essas teimam em parar o processo do nada.

Crie um arquivo qualquer em lugar algum - você já deve ter aquela pastinha cheeeeia dos seus testes e scripts :)

Então vamos lá..

$ cd /home/lnx
$ touch msnup.sh


Utilize seu editor predileto, eu gosto do 'mc' (Midnight Commander):

$ mc

Adicione as seguintes linhas:

#!/bin/bash

ps -A | grep imsniff
TEM="$?"
if [ "$TEM" != "0" ]; then
# adicione abaixo o caminho para a pasta onde se encontra o imsniff
cd /mnt/sdb2/msn/src
# o comando para carregar.. no lugar de eth0 coloque sua placa de rede
./imsniff eth0 &
fi

Depois...

$ chmod +x msnup.sh

Quando não for encontrado nenhum processo com o nome 'imsniff' o novo processo é carregado.

Agora vamos colocar isso na cron, porque senão nada adianta né :P

$ crontab -e

Aqui você irá colocar o tempo que o script verificará se o processo está ou não rodando.

Para a empresa aqui escolhi um prazo de 30 min:

30 * * * * /home/lnx/msnup.sh

É isso ai galera, fraquinho mas funciona.

Abraços.

Outras dicas deste autor
Nenhuma dica encontrada.
Leitura recomendada

YourMove - Concurso da Intel (vale a pena visitar)

TOR Browser rodando sob root ou qualquer outro usuário

Hello world em 397 linguagens

Como descompactar arquivos zip, rar, tar.gz, bz2, tar.bz2 pelo terminal

Aumentar as sombras das janelas no Compiz (Gnome 2/GTK 2)

  

Comentários
[1] Comentário enviado por neonx em 11/03/2007 - 21:38h

script bom e funcional eu tbm jah u so algo semelhante para o imsniff... e também constatei que a queda do mesmo dá-se por causa do tal do msnplus ou similiar do msn por isso cai sempre o processo do imsniff.. caso em sua rede nao tiver ninguem utilizando o mesmo ficará ativo sem problemas...

[2] Comentário enviado por badspirit em 26/03/2007 - 13:31h

Olha so .. que tal se fizessem isso:

Versao do imsniff: 0.04

Entrem no diretorio src/
Editem o arquivo msn_conntrack.cpp com seu editor preferido
Irao fazer umas inclusoes na funcao add_user_to_sb(), que logo a primeira no arquivo. As linhas com o sinal "+" na frente deverao ser acrescentadas.

void add_user_to_sb (struct msn_connection *conn, u_char *user)
{
if (conn!=NULL && conn->users!=NULL)
{
int i=0;
while (i<conn->num_users)
{
if (strcmp ((char *) conn->users[i], (char *) user)==0)
return; // Don't duplicate
i++;
}
}

log_debug (5, "Adding user [%s] to SB",user);
+ if (!conn) {
+ conn = (struct msn_connection *) malloc (sizeof (struct msn_connection));
+ if (!conn)
+ return;
+ if (msn_conns_first==NULL)
+ msn_conns_first=conn;

+ memset (conn,0,sizeof (struct msn_connection)); // All zeros is fine
+ if (msn_conns_last != NULL)
+ {
+ msn_conns_last->next=conn;
+ conn->previous=msn_conns_last;
+ }
+ msn_conns_last=conn;

+ conn->users=NULL;
+ conn->num_users=0;
+ conn->log_full_path=NULL;

+ }

conn->users=(u_char **) realloc (conn->users, sizeof (u_char *) * (conn->num_users+1));
log_debug (5, "Done realloc");
if (conn->users!=NULL)
{
conn->users[conn->num_users]=(u_char *) malloc (strlen ((char *) user) +1 );
log_debug (5, "Done malloc");
strcpy ((char *) conn->users[conn->num_users],(char *) user);
log_debug (5, "Done strcpy");
conn->num_users++;
}
log_debug (5, "Done, number of users now = %d",conn->num_users);
}

Gravem as alteracoes e editem outro arquivo, chamado util.cpp e localizem a funcao get_tokens() e novamente a linha com o sinal de "+" deve ser acrescentada e com sinal de "-", retirada.

int get_tokens (u_char *line, u_char ***tokens, int max_tokens)
{
log_debug (5, "entry in get_tokens");
int capacity = (max_tokens==0)?50:max_tokens;
/* First, delete the tokens if there are any ... */
free_array(tokens);
*tokens=(u_char **) malloc (sizeof (u_char *) * (capacity +1)); // Final one is NULL
if (*tokens==NULL)
return OUT_OF_MEMORY;
int num=0; /* Number of tokens added so far */
u_char *now = line;
u_char *newtoken;

char tmp[255];

for (;;)
{
size_t i;
/* Skip spaces and control stuff */
while (*now<=' ' && *now!=0)
{
now++;
}

if (*now==0) /* End of line */
break;

i=0;
if (max_tokens==num+1 && max_tokens!=0)
i=strlen ((char *) now);
else
{
while (now[i]>' ') /* Look ahead, how long is the next token? */
i++;
}
newtoken=(u_char *) malloc (i+1);
memcpy (newtoken, now, i);
now = now + i;
newtoken[i]=0;

if (num==capacity)
{
capacity += 10;
*tokens = (u_char **) realloc (*tokens, sizeof (u_char *) * (capacity +1));
if (*tokens==NULL) /* A bit unstable now I'm afraid */
return OUT_OF_MEMORY;
}

(*tokens)[num]=newtoken;

if (num==7)
{
+ break;
- exit (7);
}
num++;
}

(*tokens)[num]=NULL;
return num;
}

Gravem as alteracoes e compilem
Como vc estarao no diretorio src/, deverao se posicionar no diretorio linux/

cd ../linux
./build

Prontinho, so rodar e talz!!!

Abracos a todos

Qualquer onda to no msn fabiann.freitas@hotmail.com ou badspiritz@hotmail.com

[3] Comentário enviado por gregorye em 26/08/2007 - 03:08h

ótima dica, funciona mesmo, ou seja resolveu o problema...

[4] Comentário enviado por gasparsinho1980 em 19/11/2007 - 17:32h

nao consigo compilar, quando digito ./build da erro... o que fazer ja reinstalei tudo e nao adiantou ....

[5] Comentário enviado por dimmublaster em 30/11/2007 - 06:35h

Olá amigo!
Não conseguiu compilar?
Poste o erro pra que possamos te ajudar!!

[]'s

[6] Comentário enviado por brmagalhaes em 05/12/2007 - 02:24h

normalmente quando o ./build gera algum erro... é pq estão faltando as bibliotecas... ;)

aqui o link dos artigos q instalão com perfeição.. testei ambos..

http://www.vivaolinux.com.br/dicas/verDica.php?codigo=6469
http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=4824


kurynga_23: eta dika boa essa heim.. hehehe ;) ve c aparece.. ta sumido.. trabalhando é ? vem ver a empresa nova chefia ^^

[]´s
slk

[7] Comentário enviado por dimmublaster em 10/05/2008 - 04:47h

Obrigado por comentarem galera, peço desculpas pela ausência, abraços a todos e fiquem com Deus!!
;)

[8] Comentário enviado por GregorioVenturim em 03/09/2008 - 15:25h

Realizei as alterações propostas nos aquivos msn_conntrack.cpp e util.cpp, mas quando fui compilar apareceram os seguintes erros:

server:/tmp/imsniff/src # bash --debug util.cpp
util.cpp: line 6: int: command not found
util.cpp: line 8: syntax error near unexpected token `('
util.cpp: line 8: `char *gettimestring4log (char *store)'

server:/tmp/imsniff/src # bash --debug msn_conntrack.cpp
msn_conntrack.cpp: line 1: syntax error near unexpected token `('
msn_conntrack.cpp: line 1: `void add_user_to_sb (struct msn_connection *conn, u_char *user)'

Poderiam me ajudar por favor.

[9] Comentário enviado por GregorioCAPEL em 05/09/2008 - 09:42h

Agora vamos colocar isso na cron, porque senão nada adianta né :P
$ crontab -e
Aqui você irá colocar o tempo que o script verificará se o processo está ou não rodando.
Para a empresa aqui escolhi um prazo de 30 min:
30 * * * * /home/lnx/msnup.sh


Não estou conseguindo fazer isto.... alguém podeira me ajudar.

[10] Comentário enviado por el_aguiar em 28/10/2008 - 10:05h

badspirit

se eu fazer as alterações nos arquivos msn_conntrack.cpp com, util.cpp que vc colocou precisa ainda criar o msnup.sh e adicionar a linha 30 * * * * /.... no crontab ?

obrigado

[11] Comentário enviado por el_aguiar em 28/10/2008 - 16:25h

Fiz o que o badspirit postou e funcionou sem colocar o conteúdo inicial desse tópico mas tem um problema que a primeira mensagem não grava e quando as pessoas demoram para responderem também a próxima mensagem não grava no log.
alguém já viu isso?

[12] Comentário enviado por tomassoni em 24/08/2009 - 13:35h

Galera após realizar os procedimentos, e executar o ./build, obtive os seguintes erros:

A correção foi simples, bastou instalar libpcap-dev
yum install libpcap-dev
rodei o build e tudo deu certo.


O erros:
# ./build
In file included from ../src/imsniff.cpp:1:
../src/imsniff.h:4:18: error: pcap.h: Arquivo ou diretório não encontrado
../src/imsniff.h:215: error: âpcap_tâ was not declared in this scope
../src/imsniff.h:215: error: âdhâ was not declared in this scope
../src/imsniff.h:215: error: expected primary-expression before âcharâ
../src/imsniff.h:215: error: expected primary-expression before âintâ
../src/imsniff.h:215: error: initializer expression list treated as compound expression
../src/imsniff.h:216: error: âpcap_tâ was not declared in this scope
../src/imsniff.h:216: error: âdhâ was not declared in this scope
../src/imsniff.cpp: In function âvoid process_packet(long int, pcap_pkthdr*, const u_char*)â:
../src/imsniff.cpp:71: error: invalid use of undefined type âstruct pcap_pkthdrâ
../src/imsniff.cpp:65: error: forward declaration of âstruct pcap_pkthdrâ
../src/imsniff.cpp:82: error: invalid use of undefined type âstruct pcap_pkthdrâ
../src/imsniff.cpp:65: error: forward declaration of âstruct pcap_pkthdrâ
../src/imsniff.cpp:97: error: invalid use of undefined type âstruct pcap_pkthdrâ
../src/imsniff.cpp:65: error: forward declaration of âstruct pcap_pkthdrâ




[13] Comentário enviado por djbino em 17/11/2009 - 09:39h

Valeu Jean pelo help...
Pessoal esse sript funciona muito bem
####
#!/bin/bash
ps -A | grep imsniff
TEM="$?"
if [ "$TEM" != "0" ]; then
# adicione abaixo o caminho para a pasta onde se encontra o imsniff
cd /mnt/sdb2/msn/src
# o comando para carregar.. no lugar de eth0 coloque sua placa de rede
./imsniff eth0 &
fi
########

O que percebi é que o IMsniff cai devido a versão do msn... atualizei para a versão mais recente
e os problemas acabaram...
Pessoal tive um problema aqui também em converter os logs em .txt para .html, por isso irei postar o script aqui, tambem é necessario instalar o txt2tags
Na versão que utilizo o comando para instalação do txt2tags
root@localhost:/etc# apt-get install txt2tags
Ai vai o script para conversão dos log .txt para .html, configure o caminho dos diretorios de acordo com que for necessário...
Crie um arquivo no /etc com o script abaixo
vim /etc/gerahtml

###Inicio do script###
#!/bin/bash
diratu=$(date +%d%b%Y)
mkdir -p /srv/www/htdocs/msnlog/$diratu #Caminho
cd /var/www/imsniff/msnlog #Caminho
# incluir aqui linhas de comando para backup.
for i in * ; do
#coloque aqui seus comandos
arqespac=`echo $i | sed 's:\@: :g'`
nome=`echo $arqespac | awk '{print $1}'`
mkdir -p /var/www/imsniff/logmsn/$nome #Caminho
mv $i/*.* /var/www/imsniff/logmsn/$nome #Caminho
done
#for2 entrar nos diretórios
cd /var/www/imsniff/logmsn/ #Caminho
for diretorio in * ; do
cd $diretorio
mkdir -p /srv/www/htdocs/msnlog/$diratu/$diretorio #Caminho
#for3 inserir linha em branco nos arquivos e gerar html
for arqlog in *.log ; do
sed -i 's/$/\n/' $arqlog
python /usr/bin/txt2tags -t html $arqlog #Caminho
done
mv *.html /srv/www/htdocs/msnlog/$diratu/$diretorio/ #Caminho
cd ..
done
cd /var/www/imsniff #Caminho
mv /var/www/imsniff/logmsn /tmp/msnlog$diratu #Caminho
rm -rf /var/www/imsniff/logmsn/* #Caminho
### Fim do script ###
Agende ele no crontab para executar uma vez por dia as 22:01hs
vim /etc/crontab
1 22 * * * root /etc/gerahtml

Abraço galera... espero que seja util...



[14] Comentário enviado por paulop em 18/05/2010 - 15:30h

resolvi meu problema de queda do imsn com o scrip aqui postado


porem to com o mesmo problema do el aguiar

o imsniff nunca faz log da primeira mensagem da conversa
e se fika muito tempo parado, quando for mandar alguma mensagem a 1 nao grava tb

e é isso

se algum puder da uma luz ai agradeço



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts