ok this is for the curious hackers out there:
D3 Bnet Unencrypted Packet Sniffer
TUTORIAL
1. Have D3 running at the main lobby
2. Open CheatEngine ( http://www.cheatengine.org/ )
- 2.1. <File/Open Process/Diablo III.exe>
- 2.2. Hit [Memory View] button
- 2.3. <Tools/Lua Engine>
- 2.4. Pasted the code below into the lower section and hit [Execute]
- 2.5. uncheck: <view/show on print>
3. In D3 open chat window and say something.
- 3.1. You will see that packet in the CheatEngine LUA window.
- 3.2. Now explore the AH! 
NOTES
- Bnet packets are split into multiple messages. These are seperated out by this sniffer
- Each message is displayed in character then byte format. Paste into a fixed width editor like notepad to see it aligned.
- Each message is in the format
id: 1 bytes
length: 1 or 2 bytes
content: <length> bytes
- If you guys find this useful I'll find the recv version next 
- WARNING: Warden may detect this!
Code:
local send_call = getAddress('battle.net.dll') + 0x158c72
function debugger_onBreakpoint()
if EIP == send_call then
print('SIZE:' .. EDI)
local packet = readBytes(EBX, EDI, true)
local offset = 0
while offset < #packet do
local length
local p1, p2 = packet[offset + 2] or 0, packet[offset + 3] or 0
if p1 >= 0x80 then
length = (p1 % 0x80) + (p2 * 0x80) + 3
else
length = p1 + 2
end
local bytes = ''
local chars = ''
for i=1, length do
local value = packet[offset+i] or 0
bytes = bytes .. string.format('%0.2X ', value)
if value >= 0x20 and value <= 0x7e then
chars = chars .. string.format('%c ', value)
else
chars = chars .. '. '
end
end
print(chars)
print(bytes)
offset = offset + length
end
print('')
debug_continueFromBreakpoint(co_run)
return 1
end
end
debug_setBreakpoint(send_call)