Resolvendo o problema de instabilidade do imsniff

Publicado por Rauflin Baldini em 11/09/2006

[ Hits: 20.014 ]

 


Resolvendo o problema de instabilidade do imsniff



O imsniff é uma das ferramentas de captura de pacotes do tráfego MSN e trabalha em cima da biblioteca libpcap. Sua instalação e configuração está descrita aqui no site por leoberbert:
A atual versão, 0.04 (beta), apresenta um bug que faz com que em alguns sistemas o processo seja finalizado sem motivo e aleatoriamente. Uma solução seria um script que reiniciasse o processo toda vez que ele caísse, mas a melhor é obter a versão 0.02 ou 0.03 (estáveis):
O processo de instalação para estas versões é o mesmo já descrito aqui no site.

[]'s a galera vol

Outras dicas deste autor
Nenhuma dica encontrada.
Leitura recomendada

Mozplugger: plugin polivalente para Mozilla/Firefox

Bloquear acesso não autorizado ao Facebook com iptables

Plugin do flash no Fedora Core 6

PHP + jQuery - Monitorando link de internet em tempo real

Verificar e-mails não lidos no Gmail pelo terminal

  

Comentários
[1] Comentário enviado por metall em 22/09/2006 - 11:52h

Dai Fio!! blz
seguinte ainda continuo com este problema mesma com esta versao mais antiga!! voce podeira me passar um script q fize-se esta funcao de ver se o servico ta startado ou nao se nao estiver que ele start novamente
fico no aguardo!!
Abraco[]

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

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 dcyrillo em 10/04/2007 - 09:46h

Olá!
Eu utilizava o serviço restartd para ficar monitorando o imsniff, toda hora que ele parava o restartd subia o serviço novamente do imsniff. Lógico que não é uma alternativa elegante, e resolvi testar o que o amigo acima citou.
Eu tinha entrado em contato com o rapaz que desenvolveu o imsniff e o mesmo falou que nao tinha solução, porém recomendo a todos a fazer o procedimento que o badspirit citou, funciona mesmo!
Galera, façam as alterações acima e o problema será solucionado.

[4] Comentário enviado por xantecler em 24/04/2007 - 12:33h

Oi Pessoal !! Fiz as Modificações !! e Rolou Certinho !! tb !!!

Eu tb tinha as instabilidades do imsniff... de cair a cada 2/5 ou 10 minutos no maximo !!!

Agora parece que resolveu !! Valeus !!

Abraços

[5] Comentário enviado por tguazzelli em 28/05/2007 - 09:31h

badspirit ajudou muito com essa dica, funcionou mesmo.

Valeu, Abraço.

[6] Comentário enviado por badspirit em 20/06/2007 - 10:01h

Opa ... eh isso ai!!

Se notarem alguma cagada, entrem em contato, tem meus msn's acima ai, q a gente tenta resolver.

Abracos


[7] Comentário enviado por Vento em 18/10/2007 - 08:14h

fiz essa alteração e funcionou beleza, não cai... mas recentemente comecei a perceber o sumiços de alguns dos logs (conversas)... aleatoriamente desaparecem... tinha notado a um mês atras q um ou outro tinha sumido, achei q tivesse sido por uma queda de energia q o no-break não segurou... mas de semana passada prá cá a coisa ficou feia, minha pasta chats que tava com mais de 60 pastas de usuários, hj não passa de 30 usuários... alguma idéia ? meu conhecimento de linux é básico. a distro usada é Fedora 5

[8] Comentário enviado por danilocastilho em 07/11/2007 - 08:50h

Bom dia senhores.

estou com um problema no im-sniff.
todas as conversas estão sendo capturadas e salvas.
porem o im-sniff esta capturando tudo dobrado.

mas esta gravando 20 até 30 vezes a mesmo menssagem enviada ou recebida de todos os usuarios.

sera que alguem pode me ajudar.

[9] Comentário enviado por marcaoguitarra em 15/11/2007 - 21:20h

Cara, realmente funcionou bacana no meu caso aki...
Obrigado pela sua contribuição e continua ajudando, pois nós precisamos.

Valews.

[10] Comentário enviado por iniciantemesmo em 21/12/2007 - 08:38h

Quando eu mando compilar da um erro
-bash-2.05b# ./build
./build: line 1: g++: command not found
Alguem pode me ajudar

[11] Comentário enviado por removido em 22/07/2008 - 00:20h

Realmente, você é iniciantemesmo. Precisa instalar o gcc, que é um compilador e geralmente está na parte dos pacotes relacionados a desenvolvimento da sua distribuição.

[12] Comentário enviado por rogeriofox em 11/12/2008 - 12:23h

Danilo Castilho, isso pode estar acontecendo por estar carregando o IMSNIFF em várias instâncias. Chamar ele várias vezes, gerará vários logs dentro do mesmo arquivo, pois cada um que estiver carregado vai capturar o pacote e gerar o log.

Dê uma olhada no seus serviços ativado com:

ps aux | grep imsniff

Deverá aparece um com o imsniff sendo executado e com o grep que vc acabou de usar.

Se aparecer mais do que esses dois é porque têm várias instâncias dele abertas. Dê uma olhada em algum script seu que está carregando ele, pois talvez possa estar gerando um loop abrindo várias instâncias de execução para o mesmo comando.
Colocar no inittab com respawn acontece isso.

Isso aconteceu comigo.

Abraço!

[13] Comentário enviado por jbla em 01/06/2009 - 16:46h

Bom, sobre o imsniff fiz as alterações mas apresentou alguns erros segue abaixo;
quando vou compila pelo comando: sh build da esse erro.

../src/util.cpp: In function âint get_tokens(u_char*, u_char***, int)â:
../src/util.cpp:414: error: expected primary-expression before âifâ
../src/util.cpp:414: error: expected `;' before âifâ
../src/util.cpp:422: error: expected primary-expression before â{â token
../src/util.cpp:422: error: expected `;' before â{â token
../src/util.cpp:515: error: expected `}' at end of input
../src/msn_conntrack.cpp: In function âvoid add_user_to_sb(msn_connection*, u_char*)â:
../src/msn_conntrack.cpp:22: error: expected primary-expression before âifâ
../src/msn_conntrack.cpp:22: error: expected `;' before âifâ
../src/msn_conntrack.cpp:300: error: expected `}' at end of input

e não estou conseguindo resolver esse problema...se puderem colocar as mudanças do arquivos aqui ja ajuda muito, desde ja agradeço até mais.

[14] Comentário enviado por pelo em 13/08/2009 - 09:33h

Olá meus caros,

Tenho um squid rodando e as conexões estão passando por eles.
Como faço para as conexões não passarem pelo squid?
Testei sem o squid e funcionou perfeitamente.

Sérgio Abrantes
[]'s

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

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â

[16] Comentário enviado por eltonhbm em 25/09/2009 - 00:51h

aki deu certo tbm.. hehe!!

[17] Comentário enviado por nobios em 10/11/2009 - 12:19h

Quem quiser pegar o pacote deb já com a correção do código, disponibilizei o mesmo em meu site.

http://everson.com.br/2009-11/imsniff-Pacote-deb-com-correcao-de-codigo



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor HostGator.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Viva o Android

Tópicos

Top 10 do mês

Scripts