This is in response to this blog post.
First of all, the “NLS” protocol mentioned in the post has basically nothing to do with Battle.net. It is the so-called Grunt protocol. This protocol is a hacky, ad-hoc protocol that most Blizzard games used up until around World of Warcraft’s Wrath of the Lich King expansion. After that came the Battle.net 2.0 protocol (which still seems to differ across games). Battle.net 2.0, as opposed to Grunt, actually brings authentication together with Battle.net features like chatting, friend lists, etc. Battle.net 2.0 uses SRP v6a and uses SHA-256 instead of SHA-1. That’s not all — the process is much more involved (even involves the server sending the client raw machine code modules that the client then executes; similar to, but not quite the same as, Warden) — but the details are beyond the scope of this post.
Grunt is entirely unused by World of Warcraft, Starcraft 2, and Diablo 3 today. The World of Warcraft client does still have the code necessary to perform authentication using Grunt, but it takes some binary patching to get there (most WoW 3.x private servers do this). In other words, the aforementioned blog post sheds light on a protocol that is almost entirely unused today, and the information is therefore not relevant to understanding modern Blizzard games’ authentication processes.
The Grunt protocol was reverse engineered years ago, and has been reversed further as Blizzard added more stuff to it. The results have always been public in just about every World of Warcraft emulator ever, such as MaNGOS, TrinityCore, WCell, etc. One example of an implementation can be found here and here. Further, the opcodes are defined here. This stuff is not exactly revolutionary. Also, the packet names you see in those sources are what they are actually called in the client.
I really don’t want to appear to be a giant dick, but this stuff is not news, nor are the results published on the aforementioned blog and wiki entirely accurate.
(All this being said, the author of the aforementioned blog post is correct in his analysis of SRP.)