Valhalla Legends Forums Archive | Battle.net Bot Development | Packet Tutorials

AuthorMessageTime
Lenny
Any tutorials about packet buffers and battle.net packets available?
July 24, 2003, 4:20 AM
CrAz3D
I think feanor wrote one. try some where within http://blizzside.com/feanor/
July 24, 2003, 4:29 AM
Lenny
Its not posted anymore...
July 24, 2003, 4:47 AM
Lenny
Also I remember Camel posting a very good feature that shows the 0x packets....But cant seem to find it
July 24, 2003, 5:13 AM
Camel
[quote author=Lenny link=board=17;threadid=2048;start=0#msg15867 date=1059023613]
Also I remember Camel posting a very good feature that shows the 0x packets....But cant seem to find it
[/quote]

https://davnit.net/bnet/vL/phpbbs/index.php?board=17;action=display;threadid=1698
July 24, 2003, 6:28 AM
Lenny
Thanks

Any packet tutorials available?
July 25, 2003, 4:25 AM
MesiaH
http://www.valhallalegends.com/arta/bnetdocs
July 25, 2003, 4:37 AM
Lenny
Down....BNET Docs is down :'(
July 25, 2003, 5:07 AM
MesiaH
yeah arta was never very reliable :P

you may be able to find a few packet examples at the bot development site: http://botdev.valhallalegends.com

also i have a really really old out-of-date thingy on zorms forums: http://zorm.phactorx.com/forum/viewtopic.php?t=5

might wanna check that out too. (i think there might be a few common errors in it though, beware.)
July 25, 2003, 5:36 PM
Skywing
[quote author=MesiaH link=board=17;threadid=2048;start=0#msg16017 date=1059154605]
yeah arta was never very reliable :P

you may be able to find a few packet examples at the bot development site: http://botdev.valhallalegends.com

also i have a really really old out-of-date thingy on zorms forums: http://zorm.phactorx.com/forum/viewtopic.php?t=5

might wanna check that out too. (i think there might be a few common errors in it though, beware.)
[/quote]Actually, this was planned, unavoidable downtime for him.
July 25, 2003, 7:03 PM
Adron
Didn't he say he'd be back within a few days though? Seems he's been gone longer?
July 25, 2003, 7:27 PM
Lenny
Anything a little more introductory?
July 26, 2003, 4:21 AM
CrAz3D
http://blizzside.com/illed/?
July 27, 2003, 3:49 AM
Lenny
Ironically the programing area is down on that site exept for open sources....
July 27, 2003, 4:11 AM
CrAz3D
I don't have any idea where then, all the good palces are down.
[code]
'Eventos
Public Const ID_USER As Integer = &H1
Public Const ID_JOIN As Integer = &H2
Public Const ID_LEAVE As Integer = &H3
Public Const ID_WHISPER As Integer = &H4
Public Const ID_TALK As Integer = &H5
Public Const ID_BROADCAST As Integer = &H6
Public Const ID_MOVE As Integer = &H7
Public Const ID_FLAGS As Integer = &H9
Public Const ID_SEND As Integer = &HA
Public Const ID_FULL As Integer = &HD
Public Const ID_NOTEXIST As Integer = &HE
Public Const ID_RESTRICTED As Integer = &HF
Public Const ID_INFO As Integer = &H12
Public Const ID_ERROR As Integer = &H13
Public Const ID_EMOTE As Integer = 23

'Flagage
Public Const BNFLAGS_BLIZZ = &H1
Public Const BNFLAGS_OP = &H2
Public Const BNFLAGS_SPKR = &H4
Public Const BNFLAGS_SYSOP = &H8
Public Const BNFLAGS_PLUG = &H10
Public Const BNFLAGS_SQUELCH = &H20
Public Const BNFLAGS_GLASSES = &H40
[/code]
July 27, 2003, 4:27 AM
Camel
You're missing a few flags, CrAz3D

[code]   'Flags (in order of appearance)
   '0x1 - Blizzard rep
   '0x8 - Bnet rep
   '0x2 - Channel op
   '0x4 - Speaker
   '0x40 - Blizzard guest
   '0x20 - Squelched
   '0x400 - PGL official
   '0x200 - PGL player

   '0x10 - No UDP support (plug replaces lag)[/code]
July 27, 2003, 6:41 AM
Lenny
Can someone teach me how to utilize the Packet Buffer? THe one created by Darkminion specifially :-\
July 27, 2003, 8:13 AM
CrAz3D
My oops, thnx Camel.
[quote]
Can someone teach me how to utilize the Packet Buffer? THe one created by Darkminion specifially [/quote]
Like PacketBuffer.sendPacket?
July 27, 2003, 1:59 PM
DaRk-FeAnOr
I will post my tutorial thing up here. It is still incomplete, but it gets the job done.
[quote]Information on reading packetlog information (hex) and using DarkMinion's PacketBuffer Class.
-Writen by Feanor[xL] aka DaRk-FeAnOr

Most of battle.net connection is run on TCP packets. A good packet
logger to use is WPE packet logger or Ufasoft's packet logger
(found at www.ufasoft.com). When you packet log a program, you will get
a whole lot of hex, that for new programmers is difficult to
understand.

Your first question is probably: Why is packet logging important?

The answer to this is, that in order to write about anything that has to do with battle.net,
you must packetlog it and emulate the packets that your computer sends to battle.net and
recieves from them. For example, we will anaylze Packet 0x1C. You must send this packet to
battle.net in order to create a game.


Here is an example of packet: 0x1C (which is used to create games)
- Packet log taken from Barumonk[xL]'s Melee winbot.

0000 FF 1C 5B 00 00 00 00 00 00 00 00 00 02 00 01 00 ..[.............
0010 1F 00 00 00 00 00 00 00 53 6F 6D 65 47 61 6D 65 ........SomeGame
0020 4E 61 6D 65 00 00 2C 34 34 2C 31 34 2C 36 2C 32 Name..,44,14,6,2
0030 2C 32 2C 31 2C 36 38 36 34 34 37 30 33 2C 34 2C ,2,1,68644703,4,
0040 2C 6E 65 74 77 6F 72 6B 7A 0D 54 68 65 20 4C 6F ,networkz.The Lo
0050 73 74 20 54 65 6D 70 6C 65 0D 00 FF 10 04 00 st Temple......

The first collum of information with (0000, 0010, 0020 etc.) should be ignored.
The hex begins with the packet FF. Most battle.net packets begin with FF and the Pbuffer class
writen by DarkMinion, takes this into account when sending packets. The next packet after FF is
the name of the packet that you are sending. The Visual Basic for this packet would look like:

With PacketBuf
.InsertDWORD &H0
.InsertDWORD &H0
.InsertWORD &H2
.InsertWORD &H1
.InsertDWORD &H1
.InsertDWORD &H0
.InsertNTString gamename
.InsertNTString gamename
.InsertNonNTString gameinfo
.sendPacket &H1C
End With

Now compare this to the hex you see above. Lets brake the hex down:

FF 1C (header of hex)
5B 00 (ignore)
00 00 00 00 (first DWord) .InsertDWORD &H0
00 00 00 00 (Second DWord) .InsertDWORD &H0
02 00 (first Word)        .InsertWORD &H1
01 00 (second word)        .InsertWORD &H1
1F 00 00 00 (third DWord)   .InsertDWORD &H1F
00 00 00 00 (forth DWord) .insertDWord &H0

The rest of the information is the gamename and gameinfo writen into the hex.
FF 10 04 00 (start of next packet)-
sometimes you get two packets being sent in the same packet log.

You might be asking yourself what a DWOrd and word is. Here is how it works

DWord is the inserted byte, followed by three 0s.
Example:
.InsertDWORD &H1

in the hex it translates to
01 00 00 00

Word inserts the byte, followed by one 0.
Example:
.insertWord &H1
01 00

Some other functions are:
.insertbyte &H1
Which inserts the selected byte followed by no 0s
.insertbytes "01 00 00 00"
which inserts a bitch load of bytes at the same time
Insertbytes is good to use if you are too lazy to put everything into DWords and words.

Also, for inserting strings to hex you can use
.insertNTstring "hey"
and
.insertnonNTstring "hey"
I am pretty sure that the difference is that a NTstring is followed by a 0x00 (null) packet and an NONnTstring is not.


That is about it. The best way to learn is by trial and error, but I hope this helped. [/quote[/quote]
July 28, 2003, 2:39 PM
MesiaH
Not bad, but i think your using your terms wrong in a few places, might wanna overlook it.
July 28, 2003, 4:43 PM
Lenny
[quote author=CrAz3D link=board=17;threadid=2048;start=15#msg16137 date=1059314371]
My oops, thnx Camel.
[quote]
Can someone teach me how to utilize the Packet Buffer? THe one created by Darkminion specifially [/quote]
Like PacketBuffer.sendPacket?
[/quote]

Yes...
July 29, 2003, 8:39 AM
DaRk-FeAnOr
I just posted that two up.
July 29, 2003, 2:49 PM
Lenny
[quote author=DaRk-FeAnOr link=board=17;threadid=2048;start=15#msg16374 date=1059490190]
I just posted that two up.
[/quote]

It's helped me understand packet tutorials but I'm still not quite sure how to create packets
July 30, 2003, 4:22 AM
MesiaH
its all in your structure, in binary protocol, there are bytes (00), words (00 00), dwords (00 00 00 00), qwords (00 00 00 00 00 00 00 00), strings (hi my name is bob), and null terminated strings (hi my name is bob, followed by a null byte {00}), you will need to format your data for each term that is required.

here are the examples once again to see more clearly:

byte - 00
word - 00 00
dword - 00 00 00 00
qword - 00 00 00 00 00 00 00 00
string - hi my name is bob
null terminated string - hi my name is bob + 00

using darkminions packet buffer will allow you to stack these in order to form your packet, then you just need to slap the header on it, and send it...
July 31, 2003, 12:00 AM
Lenny
Do I always need to send the null string? And how do I process recieved packets?
July 31, 2003, 3:35 AM
DaRk-FeAnOr
It automatically does the null bytes for you, based on the type of byte you added (Dword, Word, Byte, ect.)
July 31, 2003, 4:34 AM
Lenny
How Do I process recieved packets from battle.net?
August 1, 2003, 4:32 AM
CrAz3D
By parsing it all
August 2, 2003, 4:46 AM
Lenny
[quote author=CrAz3D link=board=17;threadid=2048;start=15#msg16784 date=1059799577]
By parsing it all
[/quote]Any Examples?
August 2, 2003, 4:49 AM
Eibro
I fail to understand what a "Packet Tutorial" would entail. It seems to me what ye lassies really need is a basic understanding of computer organization/architecture.
August 2, 2003, 6:11 AM
Lenny
I need to understand how to build packets to send to battle.net and what to send....
August 2, 2003, 7:07 AM
Lenny
Can anyone give a good summary on how creating a packet works and how checksum works?
August 4, 2003, 8:20 AM

Search