World of Warcraft protocol information (specifically, encryption algorithm?)

Started by
19 comments, last by hplus0603 17 years, 2 months ago
Ok, so lately I've been discouraged from doing alot of programming due to some serious personal issues - however, a couple nights ago I read an interesting article about (how to) beginning to make your own server emulator. One of the things suggested for figuring out the protocol was to write a simple proxy program that relays the data sent from the client to the server and vice versa, while saving the raw binary data to a log file inbetween. This made me interested in doing some programming again, and as such, I started the basis of a small proxy program for World of Warcraft. However, I figured there wouldn't be much point in doing that, and subsequently trying to figure out the encryption algorithm used to encrypt the packets, if this information was already known. I know there are some server emulators out already, and I even have the source for an emulator written in C#, my preferred language for the time being. I believe it's called WoWDeamon or something. However, this emulator seems to be for an older version of WoW, and seems to be slightly buggy. At least I haven't been able to figure out how to use it with my version of WoW yet. As a result, I decided to make a post here to see if there's any generally known information about the World of Warcraft protocol out there, aside from the fact that it seems to use TCP exclusively for communication. What I am specifically interested in is knowing a recent algorithm used for encrypting the packets ('recent' as in a recent version of WoW), as I have spent countless hours scouring the net for information about the WoW protocol in general, and there doesn't seem to be much info out there. Thanks in advance!
_______________________Afr0Games
Advertisement
That sounds awfully illegal. You want to program a piece of some software that can decrypt the data send from the client to the server? If you accomplish this what would stop you from changing the data sent(other than moral)? This would lead to compromised data and that, I guess, would not be in Blizzard's interest. So I venture a guess that the encryption protocol is classified.

regards/thallishI don't care if I'm known, I'd rather people know me
Uhm, I'm guessing nothing would stop me from changing the data sent from the client to the server if I managed to decrypt it, but that's really not my intention, and I'm guessing that if some vital data is changed, my client would probably be booted off the server right away. As a general rule, encryption is mostly used to avoid people making server emulators/gaining information about the protocol at large, not to stop people tampering with the data sent (like, for instance, gaining a huge boost in running speed, which, in the case of most MMORPGs, would cause any client doing so to get booted off immediately, as well as possibly being logged, so that the account would get a warning/be banned).
_______________________Afr0Games
There is little or no chance of the OP being able to hack anything or cheat to gain any unfair advantage in the game. However, emulating servers is illegal in the case of WoW. He should have asked more discreetly about the process of generating such a log file in general.
Everyone hates #1.That's why a lot of idiots complain about WoW, the current president, and why they all loved google so much when it was new.Forget the fact that WoW is the greatest game ever created, our president rocks and the brainless buffons of America care more about how articulate you are than your decision making skills, and that google supports adware, spyware, and communism.
Quote:Original post by sharpnova
There is little or no chance of the OP being able to hack anything or cheat to gain any unfair advantage in the game. However, emulating servers is illegal in the case of WoW. He should have asked more discreetly about the process of generating such a log file in general.

Isn't it illegal to emulate pretty much any of the big mmrpgs? I know there many Ultima Online emulators avaible and some of them are supposedly quite big as well. Isn't there Lineage emulators also?

What is it that makes it specifically illegal to write a WoW emulator than to emulate the other mmrpgs? Aren't they all illegal, or is some more/lesser illegal than the others? :P

AFAIK it isn't and legaly can't be illegal to write a server emulator. However, providing that server for public consumption is a grey area. Consequently, charging for the service is highly illegal.
------ ----- ---- --- -- -Export-Games.com is searching for talented and friendly developers. Visit our Help Wanted post for more info!My Indie development uber Journal - A game production walk through.
Regardless of whether or not it's actually legal, Blizzard takes a very dim view of people doing this sort of thing, and I'm fairly sure that the DMCA will become involved in documenting their encryption. (It is reverse engineering, after all.) They've been quite proactive in stopping anyone doing this sort of work from getting anywhere.

I'm closing this thread for now, given Blizzard's harsh attitude towards this sort of work in the past and the unclear legality of the issue.
SlimDX | Ventspace Blog | Twitter | Diverse teams make better games. I am currently hiring capable C++ engine developers in Baltimore, MD.
Re-opened after further review.
SlimDX | Ventspace Blog | Twitter | Diverse teams make better games. I am currently hiring capable C++ engine developers in Baltimore, MD.
The main reason for encryption is privacy. Any realistic company can realise that encryptions can be reversed easily by someone with access to their client, but for someone sniffing along the line, it's not such an easy task. There is the benefit of having a protocol protected from amateur hackers, but they know it'll be reversed eventually anyway. The privacy means someone on a network won't be able to peek at somebody's login for instance, infact, theres probably additional encryption/hashing for u/n and passwords.

It's not completely legal or illegal to emulate, but there are some real boundaries you shouldn't cross. The first legal issue is you're directly opposing the Terms of Agreement set by Blizzard. Particularly "4. Limitations on your use of the service". I'd advise you read it and read it again if neccesary. It sums up that you can't emulate their game, however, there are usually holes in ToA/S that can avoid court, I've not looked much into Blizzards though. There are other legal issues involved in reverse engineering encryption algorithms, attempting to 'hack' Blizzard servers (by means of sending custom structures, which is usually required to completely reverse a protocol), etc.

Copyrights are quite easy to get around if you avoid immitating their service precisely, and very importantly, use chinese wall techniques. I'd guess most server emulators have probably ripped the encryption method from the client or made a HLL version of it, but they're still similar in too many ways that it's a breach of copyright.

In most cases the developing companies do not have the resources to combat server emulators and crackers. The bigger games, although provide more resources, generally have more people cracking them. The bigger companies have realised that the way to prevent emulation is to deter people from playing the clones rather than trying hopelessly to stop it with code.

There have been relatively few legal cases in comparison to the quantity of emulators around for various games. A recent one was FBI raids on Lineage2 server emulators based in America. The scenario here was people were usng copyrighted work (leaked NCSoft code), and they were silly enough to host them in America. You'll find that most server emulators host throughout europe or elsewhere where the legality isn't so well defined.

On-topic. Encryption algorithms are simple to reverse. You need some moderate knowlegde of assembly, processor architecture and any API's involved, particularly the socket ones (I'm assuming Winsock is used). In brief, attach a debugger, set a breakpoint on recv()/WSARecv(), which will trigger when a packet is received. Look at lpBuffer or lpBuffers in memory and if neccesary set hardware breakpoints on encrypted parts, if you continue code execution, it'll break when the code tries to access or modify the packet buffers, which you can assume or check, if it's for decrypting. You now know the location of the encryption algorithm and it's usually very easy to make sense of. I'm not going to needlessly give more info than that.

Ah, and my opinion on the topic, it doesn't really belong here. I would re-clsoe it tbh. There are places other than here you can find out about this, and it's generally off topic to this forum.
Discussion of network protocols belong in this forum.

The DMCA may make it illegal to perform certain reverse engineering of certain protected digital restrictions management schemes. However, any encryption used by a networked game client/server game has nothing to do with copy protection or digital restrictions management, and thus I would be very surprised if the DMCA would apply to that case. I am, however, not a lawyer; if you want legal advice you should ask one licensed to practice in your locale.

In certain jurisdictions, I am led to understand that reverse engineering is explicitly allowed when done to enable interoperability between separate systems. A user-written server and a commercial client would be construed separate systems by me -- I have no idea what the European courts think on the matter.

Last, a word on terminology: Blizzard may have some kind of implicit contract between itself and its players. As far as I understand it, breach of that contract would not be "illegal," it would be a civil matter between you and Blizzard. I don't think that's what the word "illegal" actually means, as it doesn't usually apply to civil contract law (barring criminal fraud, etc); the term "illegal" typically refers to criminal law in my experience.
enum Bool { True, False, FileNotFound };

This topic is closed to new replies.

Advertisement