ec_dissector_pop.c
上传用户:nilegod
上传日期:2007-01-08
资源大小:220k
文件大小:2k
源码类别:

网络截获/分析

开发平台:

C/C++

  1. /*
  2.     ettercap -- dissector POP3
  3.     Copyright (C) 2001  ALoR <alor@users.sourceforge.net>, NaGA <crwm@freemail.it>
  4.     This program is free software; you can redistribute it and/or modify
  5.     it under the terms of the GNU General Public License as published by
  6.     the Free Software Foundation; either version 2 of the License, or
  7.     (at your option) any later version.
  8.     This program is distributed in the hope that it will be useful,
  9.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  10.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  11.     GNU General Public License for more details.
  12.     You should have received a copy of the GNU General Public License
  13.     along with this program; if not, write to the Free Software
  14.     Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  15. */
  16. #include "include/ec_main.h"
  17. #include <string.h>
  18. #include <stdio.h>
  19. #include <stdlib.h>
  20. #include <errno.h>
  21. #include "include/ec_dissector.h"
  22. #include "include/ec_inet_structures.h"
  23. #include "include/ec_error.h"
  24. #ifdef DEBUG
  25.    #include "include/ec_debug.h"
  26. #endif
  27. // protos
  28. FUNC_DISSECTOR(Dissector_pop);
  29. // --------------------
  30. FUNC_DISSECTOR(Dissector_pop)
  31. {
  32.    TCP_header *tcp;
  33.    u_char *payload;
  34.    char *fromhere;
  35.    
  36.    ONLY_CONNECTION;
  37.    
  38.    tcp = (TCP_header *) data;
  39.    if (ntohs(tcp->source) == 110) return 0;           // skip server messages...
  40.    payload = (char *)((int)tcp + tcp->doff * 4);
  41.    if ((fromhere = strstr(payload, "USER")) || (fromhere = strstr(payload, "user")))
  42.    {
  43.       char user[25];
  44.       strncpy(user, fromhere + strlen("USER ") , 25 );
  45.       strcat(data_to_ettercap->user, user);
  46.       #ifdef DEBUG
  47.          Debug_msg("tDissector_POP USER");
  48.       #endif
  49.    }
  50.    if ((fromhere = strstr(payload, "PASS")) || (fromhere = strstr(payload, "pass")))
  51.    {
  52.       char pass[25];
  53.       strncpy(pass, fromhere + strlen("PASS ") , 25 );
  54.       strcat(data_to_ettercap->pass, pass);
  55.       #ifdef DEBUG
  56.          Debug_msg("tDissector_POP PASS");
  57.       #endif
  58.    }
  59.    return 0;
  60. }
  61. /* EOF */