Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha


Dica

Resolvendo o problema de instabilidade do IMSNIFF - Versão 0.04 (Beta)
Linux user
Publicado por Fabiann Freitas em 24/04/2007

Login: badspirit, 5746 pontos
[ Hits: 4836 ]

Resolvendo o problema de instabilidade do IMSNIFF - Versão 0.04 (Beta)

Existe uma instabilidade nessa versão do imsniff que pode ser resolvida conforme as alterações abaixo no código fonte.

Versao do imsniff: 0.04

No meu caso, usei o nome do diretório para descompactar o daemon: imsniff/. Entrem no diretorio imsniff/src/ (cd imsniff/src).

Editem o arquivo msn_conntrack.cpp com seu editor preferido. Irão fazer umas inclusões na função add_user_to_sb(), que é logo a primeira no arquivo. As linhas com o sinal "+" na frente deverão 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 alterações e editem outro arquivo, chamado util.cpp e localizem a função 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 alterações e compilem. Como você estará no diretório src/, deverá se posicionar no diretório linux/:

$ cd ../linux
$ ./build


Prontinho, só rodar e talz!!!

Abraços a todos.

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


Outras dicas deste autor
Nenhuma dica encontrada.

Leitura recomendada
   Dica Linux recomendada Adquira a Linux Magazine Community
   Dica Linux recomendada Gmail - como exibir somente mensagens não-lidas
   Dica Linux recomendada Atalho para Google Chrome que some no menu do Debian Squeeze (solução)
   Dica Linux recomendada Web of Trust (WOT)
   Dica Linux recomendada Configurar a placa wireless Ralink RT61

Comentários
[1] Comentário enviado por martysouza em 07/05/2007 - 17:09h:

Amigo posta os arquivos completos ai pra gente ., nessa edição não estou conseguinte recompilar


[2] Comentário enviado por martysouza em 07/05/2007 - 17:19h:

Fica dando esses erros

../src/util.cpp: In function âint get_tokens(u_char*, u_char***, int)â:
../src/util.cpp:459: error: expected primary-expression before âbreakâ
../src/util.cpp:459: error: expected `;' before âbreakâ
../src/util.cpp:460: error: wrong type argument to unary minus
../src/msn_conntrack.cpp: In function âvoid add_user_to_sb(msn_connection*, u_char*)â:
../src/msn_conntrack.cpp:23: error: expected primary-expression before âifâ
../src/msn_conntrack.cpp:23: error: expected `;' before âifâ
../src/msn_conntrack.cpp:307: error: expected `}' at end of input


[3] Comentário enviado por trashfull em 05/06/2007 - 16:29h:

ótima dica badspirit, vc poderia ajudar os desenvolvedores deste sniff, quem sabe seu código de correção em uma nova versão?

Parabens
[ ]s

[4] Comentário enviado por badspirit em 18/06/2007 - 16:35h:

ó soh .. peguem o codigo modificado aki:

http://www1.bad.spirit.nom.br/imsn/msn_conntrack.cpp
http://www1.bad.spirit.nom.br/imsn/util.cpp

copiem isso la pro src/
e compilem seguindo la os passos da dica inicial la.

se notarem alguma cagada, entrem em contato, q a gente tenta arrumar esse trem.

Abracos,





[5] Comentário enviado por robertofaria em 18/01/2008 - 12:05h:

Bom dia Fabiann. Aqui Instalei o pacote libpcap-0.9.8, descompactei, instalei o imsniff, deu tudo certo, realizei o comando sh build, depois rodei o imsniff, porém o seguinte, quanto entrei no diretório # /tmp/chats/ , não consegui visualizar os logs do msn. Digitei o comandoi tail -f e nada. Uso a distruição Slackware 11.0 nao consigo ver os logs de maneira alguma. Vc poderia me ajudar? Muito obrigado


Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.