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

  1. /*
  2.   decode_irc.c
  3.  
  4.   Internet Relay Chat.
  5.   
  6.   Copyright (c) 2000 Dug Song <dugsong@monkey.org>
  7.  
  8.   $Id: decode_irc.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 "decode.h"
  15.  
  16. int
  17. decode_irc(u_char *buf, int len)
  18. {
  19.     int got_auth = 0;
  20.     char *p, *q;
  21.     
  22.     Buf[0] = '\0';
  23.     
  24.     for (p = strtok(buf, "\r\n"); p != NULL; p = strtok(NULL, "\r\n")) {
  25.         if (p[0] == ';') {
  26.             if ((q = strchr(p, ' ')) == NULL)
  27.                 continue;
  28.             q++;
  29.         }
  30.         else q = p;
  31.         
  32.         if (strncasecmp(q, "USER ", 5) == 0 ||
  33.             strncasecmp(q, "NICK ", 5) == 0) {
  34.             strlcat(Buf, p, sizeof(Buf));
  35.             strlcat(Buf, "\n", sizeof(Buf));
  36.         }
  37.         else if (strncasecmp(q, "PASS ", 5) == 0 ||
  38.              strncasecmp(q, "OPER ", 5) == 0 ||
  39.              (strncasecmp(q, "MODE ", 5) == 0 && strstr(q, " +k ") != NULL) ||
  40.              (strncasecmp(q, "JOIN ", 5) == 0 &&
  41.               (q = strchr(q + 5, ' ')) != NULL && q[1] != '\0')) {
  42.             got_auth = 1;
  43.             strlcat(Buf, p, sizeof(Buf));
  44.             strlcat(Buf, "\n", sizeof(Buf));
  45.         }
  46.     }
  47.     if (!got_auth)
  48.         return (0);
  49.     
  50.     return (strlen(Buf));
  51. }
  52.