home *** CD-ROM | disk | FTP | other *** search
/ Power Hacker 2003 / Power_Hacker_2003.iso / Exploit and vulnerability / w00w00 / sectools / dsniff / decode_pop.c < prev    next >
Encoding:
C/C++ Source or Header  |  2000-05-16  |  1.6 KB  |  74 lines

  1. /*
  2.   decode_pop.c
  3.  
  4.   Post Office Protocol.
  5.   
  6.   Copyright (c) 2000 Dug Song <dugsong@monkey.org>
  7.  
  8.   $Id: decode_pop.c,v 1.1 2000/05/16 17:31:14 dugsong Exp $
  9. */
  10.  
  11. #include <sys/types.h>
  12. #include <stdio.h>
  13. #include <string.h>
  14. #include "base64.h"
  15. #include "options.h"
  16. #include "decode.h"
  17.  
  18. int
  19. decode_poppass(u_char *buf, int len)
  20. {
  21.     char *p;
  22.     
  23.     Buf[0] = '\0';
  24.     
  25.     for (p = strtok(buf, "\r\n"); p != NULL; p = strtok(NULL, "\r\n")) {
  26.         if (strncasecmp(p, "user ", 5) == 0 ||
  27.             strncasecmp(p, "pass ", 5) == 0 ||
  28.             strncasecmp(p, "newpass ", 8) == 0) {
  29.             strlcat(Buf, p, sizeof(Buf));
  30.             strlcat(Buf, "\n", sizeof(Buf));
  31.         }
  32.     }
  33.     if (strip_lines(Buf, Opt_lines) < 3)
  34.         return (0);
  35.     
  36.     return (strlen(Buf));
  37. }
  38.  
  39. int
  40. decode_pop(u_char *buf, int len)
  41. {
  42.     char *p;
  43.     int i, j;
  44.     
  45.     Buf[0] = '\0';
  46.     
  47.     for (p = strtok(buf, "\r\n"); p != NULL; p = strtok(NULL, "\r\n")) {
  48.         if (strncasecmp(p, "AUTH PLAIN", 10) == 0 ||
  49.             strncasecmp(p, "AUTH LOGIN", 10) == 0) {
  50.             strlcat(Buf, p, sizeof(Buf));
  51.             strlcat(Buf, "\n", sizeof(Buf));
  52.             
  53.             /* Decode SASL auth. */
  54.             for (i = 0; i < 2 && (p = strtok(NULL, "\r\n")); i++) {
  55.                 strlcat(Buf, p, sizeof(Buf));
  56.                 j = base64_pton(p, p, strlen(p));
  57.                 p[j] = '\0';
  58.                 strlcat(Buf, " [", sizeof(Buf));
  59.                 strlcat(Buf, p, sizeof(Buf));
  60.                 strlcat(Buf, "]\n", sizeof(Buf));
  61.             }
  62.         }
  63.         /* Save regular POP2, POP3 auth info. */
  64.         else if (strncasecmp(p, "USER ", 5) == 0 ||
  65.              strncasecmp(p, "PASS ", 5) == 0 ||
  66.              strncasecmp(p, "HELO ", 5) == 0) {
  67.             strlcat(Buf, p, sizeof(Buf));
  68.             strlcat(Buf, "\n", sizeof(Buf));
  69.         }
  70.     }
  71.     return (strlen(Buf));
  72. }
  73.  
  74.