Imsniff caindo? Nunca mais...

Publicado por Jean Carlos em 10/03/2007

[ Hits: 14.188 ]

 


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

Repositório de modelos para Blender

Dicas no terminal para Debian, Ubuntu e distros derivadas

Diversão no terminal: TermSaver

Capturando sua tela em forma de vídeo com xvidcap

Graduação em TI via EAD - Curso gratuito de 600h pela CECIERJ

  

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