HackRoom
   Home  .  News  .  Wiki  .  Community  .  Programs  .  How-To  .  Projects  .  Admin   
 How-To

Cisco
FreeBSD
HTML
J2Me
Lastlog
Linux
Motori di ricerca
Threads
Proto ITA
Proto ENG

Login
Register

Powered by Apache

Powered by PHP

Powered by DokuWiki

Creative Commons License

Get Mozilla FireFox

HTML Validated

CSS Validated

Get Avira AntiVir

Acquista gli oggetti firmati HackRoom.

Effettua i tuoi pagamenti con PayPal.


When connecting to a channel the following things happen:
1. Server sends down "1" to the client indicating WinMX Compatibility
2. Client sends Encryption Key (Type 0x57 for Chat Client)
3. Server sends Encryption Key (Type 0x58 for Chat Server)
4. Client and server need to use the encryption key sent in step 3 to generate the send and receive pairs.
---- Communication from here on uses encryption based on the keys extracted in step 4 ----
5. Client sends 3.53 compatibility message (skipped for 3.31 clients)
6. Client sends join request
7. Server sends Join Reply (with luck)
8. Server sends 3.53 compatibility message (skipped for 3.31 servers)
9. Server sends Topic
10. Server sends MOTD
11. Server sends "some idiot joined" messages to everyone :-)

If you are making your own Server then its best to send any identifying signals between steps 8 and 9 (for example if you want to send down a type 0xFFFF so clients can know its your server). If clients wish to send off a certain data type to indicate the client then it should be done anywhere after the join request, but best to send after the join reply from the server.

Message Types:

Messages are in the form of:
[Type - 2 Bytes] [Length of data - 2 Bytes] [Data - Any Size]

Format shown is the "Data" part of the message, in the form [Data:Length] [Data:Length] (length is in bytes) {[Data:Length]} means optional field

Things to note:
Although the protocol uses 4 Bytes for File Count, WinMX only allows up to 65535, The reason for this is unknown.
Some Message Types have no requirements for data format (ie. you can send anything in the message content, it will ignore it and only nother with the message type), I have left the Data Format blank for these.
A Length of N means a Null Terminated String of any length.
The Primary IP and Port are the IP and UDP Port of your primary user, used for directing Browse/Whois/PM's etc.
There are 4 Protocol's listed, 3.31 indicates the WinMX 3.31 protocol,3.53 indicates the WinMX 3.53 protocol, RoboMX indicates Benders additions to the protocol, and Extended indicate KM's additions to the protocol.

Type Sender Name Protocol Description Data Format
0x0064 Client Join Request Both Request to join the room [RoomName:N] [Connection:2] [PrimaryIP:4] [PrimaryPort:2] [Files:4] [UserName:N]
0x0065 Client User rename Both Request to change username [Connection:2] [PrimaryIP:4] [PrimaryPort:2] [Files:4] [UserName:N]
0x0066 Server Join Reply Both You have joined the room
0x0068 Server 3.53 Support 3.53 Indicates the server supports the 3.53 Protocol
0x0069 Server RoboMX Channel RoboMX Indicates the channel is hosted on RoboMX, Disconnect if you receive that! :-)
0x006E Server User Entered 3.31 A New User has Entered [UserName:N] [PrimaryIP:4] [PrimaryPort:2] [Connection:2] [Files:4]
0x006F Server User Notification 3.31 For sending the initial user list to the user [UserName:N] [PrimaryIP:4] [PrimaryPort:2] [Connection:2] [Files:4]
0x0070 Server User Rename 3.31 User has changed Name [OldName:N] [OldPrimaryIP:4] [OldPrimaryPort:2] [NewName:N] [NewPrimaryIP:4] [NewPrimaryPort:2] [Connection:2] [Files:4]
0x0071 Server User Entered 3.53 New User Entered (no IP shown) [UserName:N] [PrimaryIP:4] [PrimaryPort:2] [Connection:2] [Files:4] [Rank:1]
0x0072 Server User Notification 3.53 For sending the initial user list to the user [UserName:N] [PrimaryIP:4] [PrimaryPort:2] [Connection:2] [Files:4] [Rank:1]
0x0073 Server User Exit Both User has left [UserName:N] [PrimaryIP:4] [PrimaryPort:2]
0x0074 Server User Rename 3.53 User has changed Name, Note: Renames are also used for changes in a users level [OldName:N] [OldPrimaryIP:4] [OldPrimaryPort:2] [NewName:N] [NewPrimaryIP:4] [NewPrimaryPort:2] [Connection:2] [Files:4] [Rank:1]
0x0075 Server User Entered 3.53 New User Entered (IP Shown) [UserName:N] [PrimaryIP:4] [PrimaryPort:2] [Connection:2] [Files:4] [Rank:1] [IP:4]
0x0078 Server MOTD Both Initial MOTD / MOTD Change [MOTD:N]
0x00C9 Server Normal Text Both For Normal text in the channel: <John> hello bob [UserName:N] [Text:N]{[Rank:1]}
0x00C9 Client Normal Text 3.31 Sends Normal Text [Text:N]
0x00CA Client Action Text 3.31 Sends Action Text [Text:N]
0x00CB Server Action Text Both For Action text in the channel: John waves to bob [UserName:N] [Text:N]
0x00D2 Server General Text 3.53 Normally used for Server responses (eg. "Unknown Command")
Also used for OPMsg/Watchcmds and other such messages.
Also used for Colour Text
[Text:N]
0x00D3 Server Admin Command 3.53 Typed Command (echo's back the command you entered) [Text:N]
0x012C Server Topic Both Initial Topic / Topic Change [Topic:N]
0x012D Server Channel Renamed 3.53 The Channel name has changed (/setchannelname command) [ChannelName:N]
0x0190 Server Redirect Both Room Redirected [ChannelName:N]
0x13ED Client 3.53 Support 3.53 Sent by client before join request to indicate 3.53 support [0x31:1]
0x13EE Client Redirected 3.53 Sent by 3.53 clients that have been redirected (for Redirect blocking) [Channel Name:N]
0x1450 Client Text 3.53 Sends Text to the room (Text should be sent exactly as typed) [Text:N]
0x9900 Server IP Send Support Extended When users are admined, Checks if they support IPSend
0x9901 Client IP Send Support Extended Response to IPSend Support Test (indicates IPSend is Supported)
0x9902 Server Users IP Extended Sending of the IP to the client
Note: the IP can either be the IP Address "1.2.3.4" or the IP with Hostname in square brackets "1.2.3.4 [some.hostname.com]"
[UserName:N] [PrimaryIP:4] [PrimaryPort:2] [Files:4] [Connection:2] [Rank:1] [IP:N]
0x9903 Server IPSend Complete Extended Indicates Completion of IPSend
0x9904 Server Colour Code Extended Used by Colour Servers to inform Clients of the channels Colour Codes (for Compatible Bots to detect UserNames properly) [ColourCodeString:N]
0x9905 Both Identify Extended So compatible Clients and Servers can detect each others version number [Name:N] [Version:N]
0x9906 Server Text Flood Extended Indicates either about to send a large amount of text, or finished sending Parameter is 1 for start, 0 for end [StartOrEnd:1]
0x9907 Server User Menus Extended Allows the Server to transmit Right click menu's to clients Type: 0=Supported, 1=UserMenu, 2=ChannelMenu, 3=Scroll Wheel [Type:1] [Title:N] [MenuType:2] [Command:N]
0x9907 Client User Menus Extended Indicates Support for User Menu Send (response to 0x9907 type 0)
0xFDE8 Both Ping Both Pings should be sent every 45-60 seconds to keep the connection alive Note: Official WinMX 3.53 Sends every 300 seconds but this causes problems with some firewalls so lower values are recommended.
This Table was Take From KM's Old Website www.mxtools.net
© Copyright 2005 Winmx Unlimited All Rights Reserved
Revisioned & corrected by Eagle.


Powered by HackRoom

03