Resolvendo o problema de instabilidade do imsniff

Publicado por Rauflin Baldini em 11/09/2006

[ Hits: 20.885 ]

 


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

Sites hospedados pela UOL (BOL, FOLHA, ...) não abrem. Como resolver?

Rodando Apache em máquina com IP falso (rede interna)

MEGAsync no Linux Mint 20 via Repositório

Alternando entre proxies diferentes no Firefox com facilidade

Atualizando PHP e MySQL 4 para 5 e outros programas no CentOS 4.5

  

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 RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts