aboutsummaryrefslogtreecommitdiffstats
path: root/packet-yhoo.c
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2003-03-01 00:09:03 +0000
committerGuy Harris <guy@alum.mit.edu>2003-03-01 00:09:03 +0000
commite59e9b9bab3a28ea78a58fff8be2df165f8b25b7 (patch)
treecc3a5793d992ae7b820fd30986a8a58fe32aefd6 /packet-yhoo.c
parent16db97a28cec8a3fab9e35589d2f34f4e5488ac7 (diff)
downloadwireshark-e59e9b9bab3a28ea78a58fff8be2df165f8b25b7.tar.gz
wireshark-e59e9b9bab3a28ea78a58fff8be2df165f8b25b7.tar.bz2
wireshark-e59e9b9bab3a28ea78a58fff8be2df165f8b25b7.zip
Yahoo Messenger YMSG protocol support, from Wayne Parrott.
Pull "packet-yhoo.h" into "packet-yhoo.c". svn path=/trunk/; revision=7226
Diffstat (limited to 'packet-yhoo.c')
-rw-r--r--packet-yhoo.c66
1 files changed, 64 insertions, 2 deletions
diff --git a/packet-yhoo.c b/packet-yhoo.c
index 53a580b4d7..9b3636cf98 100644
--- a/packet-yhoo.c
+++ b/packet-yhoo.c
@@ -2,7 +2,7 @@
* Routines for yahoo messenger packet dissection
* Copyright 1999, Nathan Neulinger <nneul@umr.edu>
*
- * $Id: packet-yhoo.c,v 1.25 2002/08/28 21:00:40 jmayer Exp $
+ * $Id: packet-yhoo.c,v 1.26 2003/03/01 00:09:00 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -34,7 +34,6 @@
#include <string.h>
#include <glib.h>
#include <epan/packet.h>
-#include "packet-yhoo.h"
static int proto_yhoo = -1;
static int hf_yhoo_version = -1;
@@ -52,6 +51,62 @@ static gint ett_yhoo = -1;
#define TCP_PORT_YHOO 5050
+/* This is from yahoolib.h from gtkyahoo */
+
+/* Service constants */
+#define YAHOO_SERVICE_LOGON 1
+#define YAHOO_SERVICE_LOGOFF 2
+#define YAHOO_SERVICE_ISAWAY 3
+#define YAHOO_SERVICE_ISBACK 4
+#define YAHOO_SERVICE_IDLE 5
+#define YAHOO_SERVICE_MESSAGE 6
+#define YAHOO_SERVICE_IDACT 7
+#define YAHOO_SERVICE_IDDEACT 8
+#define YAHOO_SERVICE_MAILSTAT 9
+#define YAHOO_SERVICE_USERSTAT 10
+#define YAHOO_SERVICE_NEWMAIL 11
+#define YAHOO_SERVICE_CHATINVITE 12
+#define YAHOO_SERVICE_CALENDAR 13
+#define YAHOO_SERVICE_NEWPERSONALMAIL 14
+#define YAHOO_SERVICE_NEWCONTACT 15
+#define YAHOO_SERVICE_ADDIDENT 16
+#define YAHOO_SERVICE_ADDIGNORE 17
+#define YAHOO_SERVICE_PING 18
+#define YAHOO_SERVICE_GROUPRENAME 19
+#define YAHOO_SERVICE_SYSMESSAGE 20
+#define YAHOO_SERVICE_PASSTHROUGH2 22
+#define YAHOO_SERVICE_CONFINVITE 24
+#define YAHOO_SERVICE_CONFLOGON 25
+#define YAHOO_SERVICE_CONFDECLINE 26
+#define YAHOO_SERVICE_CONFLOGOFF 27
+#define YAHOO_SERVICE_CONFADDINVITE 28
+#define YAHOO_SERVICE_CONFMSG 29
+#define YAHOO_SERVICE_CHATLOGON 30
+#define YAHOO_SERVICE_CHATLOGOFF 31
+#define YAHOO_SERVICE_CHATMSG 32
+#define YAHOO_SERVICE_FILETRANSFER 70
+
+/* Message flags */
+#define YAHOO_MSGTYPE_NONE 0
+#define YAHOO_MSGTYPE_NORMAL 1
+#define YAHOO_MSGTYPE_BOUNCE 2
+#define YAHOO_MSGTYPE_STATUS 4
+#define YAHOO_MSGTYPE_OFFLINE 1515563606 /* yuck! */
+
+struct yahoo_rawpacket
+{
+ char version[8]; /* 7 chars and trailing null */
+ unsigned char len[4]; /* length - little endian */
+ unsigned char service[4]; /* service - little endian */
+ unsigned char connection_id[4]; /* connection number - little endian */
+ unsigned char magic_id[4]; /* magic number used for http session */
+ unsigned char unknown1[4];
+ unsigned char msgtype[4];
+ char nick1[36];
+ char nick2[36];
+ char content[1]; /* was zero, had problems with aix xlc */
+};
+
static const value_string yhoo_service_vals[] = {
{YAHOO_SERVICE_LOGON, "Pager Logon"},
{YAHOO_SERVICE_LOGOFF, "Pager Logoff"},
@@ -232,5 +287,12 @@ proto_register_yhoo(void)
void
proto_reg_handoff_yhoo(void)
{
+ /*
+ * DO NOT register for port 5050, as that's used by the
+ * old and new Yahoo messenger protocols.
+ *
+ * Just register as a heuristic TCP dissector, and reject stuff
+ * not to or from that port.
+ */
heur_dissector_add("tcp", dissect_yhoo, proto_yhoo);
}