Diablo II Packet Sender v3.01 Preview:
by TechWarrior

This version is a preview release. It was started from scratch, and rewritten, improving the old functions, and adding some new ones in as well. It doesn't have near as many functions I have planned for it, and I have released early because it's been too long coming already.

Expect updates every month or two. I have fixed an insane amount of errors, 3 major ones just a few hours before release - and you can expect a few more too. 

If you want to get in touch with me for comments, discussion, suggestions, bug reports, etc about the packet sender, I suggest you come to the cheatlist or diabloworld forums, and look up my Packet Sender thread. The current topic threads will be linked from my homepage. Preferably don't email, because I do get a load of emails, and find it hard to keep up to be honest.

New versions will be posted at http://come.to/TechWarrior
Latest version details will be viewable at 
http://techwarrior.d2network.com/Version.txt



V3.01 changes so far:

Phew, I fixed 3 major bugs a few hours before release.

I hope (but doubt) I got all of the bugs out of this program before release, but I'm sure that people will find some. Come to the diabloworld or cheatlist forums if you want to give feedback on the packet sender, or bug reports, or need new packets, or information on how to run it more effectively.

-Send simple text option. This also allows you to /w people in battle.net chat, or in games. This option has been requested by people for a long time now.
-Interface overhaul - the old version looks pretty ugly now.
-New Options: Autoload last file opened was my idea, Unload on exit was Antilectual/WolfBane's idea.
-Range function completely improved by request. Now you type R## to use a range, and can have it 2 bytes long (up to 65535 combinations) by typing &R for the second byte.
-Color range changed from RC to CR due to Range changes.
-Add color button to save time. Check basic help to learn how this works.
-A great many fixes and improvements like fixing the problem of cfg files being saved all over the place, but in particular a major c++ overhaul because I intend to release the source code soon.
-New and unpredictable bugs that I haven't managed to fix yet ;)
-More coming asap.

Changes I intend to impliment soon:
Range & Color Range in simple text packets.
Send data packets to the chat server.
Send packets while on the chat server.
Maybe add location co-ords L1, L2.

Further away are:
Multiple sends per key press - this will take a load of work to impliment.
Reply packets when receive certain descrambled server packets.
I've also thought of extending the packet senders functionality to Diablo 1 as well.

Feel free to tell me your ideas for additions/improvements, no matter how improbable. I'm in the mood to program right now, and you could see it in the next release. Preferably put the info on one of my topic threads on cheatlist or diabloworld forums, for other people to comment on.



Basic Help:

Don't email me asking me how to work this program. I have included all this help information for that purpose. I have limited time, and hardly get to check my email =( and certainly wouldn't use that time by responding to questions like that except on the packet sender threads on the cheatlist and diabloworld forums - you can get to them by pressing the 'Forum' buttons.

What it is:
This program is a packet sender that is triggered from within Diablo II. It applies a memory patch which attaches itself to the Diablo II process and allows you to send packets directly from within the game. It can store up to 10 packets at once and can send any number of the same packet specified per key press. The purpose of the Packet Sender is to be able to test for possible vulnerabilities in the realm host game program, and exploit them directly.

How to Use Diablo II Packet Sender:
This program loads and uses Diablo II Packet files (*.d2p). When you start the program for the first time a configuration file is created, which causes the packet sender to load the demo.d2p file. You can also load other *.d2p files, save *.d2p files and input or edit the information manually. You can sort your packet information if you have too many working packets that you like to use, like I do, and save them to separate files.

To activate the packet sending process while in a game you have to first 'Apply' the patch. You must have started a game for the right dlls to be loaded that D2Packet applies to. You then press the corresponding keypad number displayed in the Packet Sender to activate that packet. eg: Keypad 1 for Packet #1, etc, Keypad 0 for Packet #10. NOTE: You will need to have NumLock on. Packet sending replaces the regular effects the keypad numbers do, however if you wish to use the default talk functions, just re-assign them to other keys.

How to use all the buttons and boxes:
'Packet #' box, '<' and '>' buttons: for changing which packet information is displayed.
'Info' button: displays saved information about the d2p file.
'Description' box: the only purpose of this is FYI, and is loaded/saved with the packet data from the *.d2p file so you know what does what.
'On press of' check box: where you specify which packets you want to apply and use. If a packet isn't checked it won't be error checked or applied.
'send _____ packets' box: where you specify how many packets you want to send each time you press the keypad button. 65535 is the maximum, though I wouldn't recommend much over 500 at the most.
'Simple Text Send' Option: allows you to send straight text. This includes private messages.
'Add Color' button: adds the color character(s) at the end of the currently viewed packet. It needs to be edited after that to work properly.
'Fake Server to Client packet' and 'Descrambled Server Packet' check boxes are explained in the 'Advanced' Help, but simply put: shouldn't be played with by anybody who doesn't understand how packets work.
'Apply' button: applies the memory patch with all selected options into the Diablo II process.
'Unapply' button: removes all traces of the memory patch altogether.
'Load' button: loads other *.d2p files into the DII Packet Sender.
'Save' button: saves all the current packet data into a *.d2p file that you choose.
'Clear' button: clears all the data from the Packet Sender program, so you can start over. Use this when making a new *.d2p file.
'Options' button: pops up the options screen. Make sure you're using the options that work best for you.

How to work colors in to simple text:
When sending colors you need to put it in the format ÿc# or ÿ# to save space/time. Before applying the string the sender checks for ÿ, and replaces it with ÿc. The colors are as follows:
ÿ1(0xFF6331)=red, ÿ2=bright green, ÿ3=blue, ÿ4=gold, ÿ5=grey, ÿ6=black, ÿ7=gold, ÿ8=orangey yellow, ÿ9=clear yellow, ÿ:(0xFF633A)=dull green, ÿ(0xFF633B)=purple, ÿ<=(0xFF633C)bright green. I think that any other color combination makes white text, though feel free to try them all and report back )

A word of warning: You can't just input random data into the packet sender - the server won't understand the data, and will disconnect you. You need to either get d2p files from people who have made them to use with Diablo II, or learn to find/make them for yourself - go to the 'Advanced' help button to learn how. It's actually not that hard now thanks to BlackBird's D2Sniff.



Advanced Help:

Newbies:
There are some easy text packet helping programs linked from my homepage, but if you want to learn how to be able to exploit the server yourself, and find new hacks/effects with this program read on. It's actually not that hard now thanks to BlackBird's D2Sniff.

How to find/make packets to use:
This is a lot easier now thanks to Blackbird's D2Sniff. I recommend you get this program from his website, cheatlist, or diabloworld. If you need to, go to diabloworld 'Realm Cheats', or cheatlist 'Battle.net Hacking' forums (Buttons included on this screen) and check out the information there about this program and D2Sniff. Log the incoming and outgoing packets, and do something you want to be able to recreate the effect of. Stop logging, and try the data from the packets that you've logged one by one in the Packet Sender. Many packets have some effect, so you might be in for some nice surprises. If the packets are from Battle.net to your game make sure you TICK the 'Fake Server to Client Packet' option, AND the 'Descrambled Server Packet' option, if they're from your computer to Battle.net make sure those checks AREN'T ticked. If you muck up the ticks you will crash game/game stop responding/get disconnected, I guarantee. Next 'Apply' and test. You will want to join another game, to see what data changes in the packets, so you can decode it for general use.

You can also copy and paste any packet data from your favourite packet logger straight into this program to see exactly what they do. If trying a packet from Battle.net's ip address, then TICK the 'Fake Server to Client Packet' option, but NOT the 'Descrambled Server Packet' option. Packets from host games or the realm server games are all scrambled for extra protection against those people who have sniffed them in the past. Only BlackBird's D2Sniff will descramble them for you.

Once you've found a packet that works nicely, say you found one to cast a town portal in a hurry, you open a packet file you want to add it to, or press the 'Clear' button to clear all data, and start a new d2p file. Decide which key you want to use, paste the packet data in there, set how many times you want to send it, if it's a server packet you likely only want to send it once. Set the server and descrambled options correctly. Write a description for the packet: 'Cast a town portal in a hurry' or something. Additionally you can press the info button and write your name as the contributer, write something like 'A compilation of my own working packets' as the information. Hit the save button, and save it with a new name, or overwrite one of the old ones. That's all there is to it.

Most often single game, tcp, open, and closed packets are compatible, you just have to decipher the data correctly before reusing them.

If you decipher that Diablo II is sending your player slot # in the packets, you can use P# as a substitute - because it's anoying having to fix the packet with the right player number each time. That P# byte will be replaced with your real slot number before the packet is sent. You can only use P# once per packet at this point.

The function R# has been changed to R## (obviously it's still only counted as two characters, one byte). It allows you to send a range of numbers. For example if you put 50 P# 00 00 00 R## 00 00 00 as a packet: the first packet sent will be 50P#00000000000000, then 50P#00000001000000, then 50P#00000002000000, and so on. If you don't want the range to start at 0 you can put in R01 to start at 1, or R77 to start at 77, etc. You may only use a R# once per packet.

The Color Range function is seperate from the range function now, and cycles back through the valid color numbers. The only real purpose for this is spamming )

Packet #10 can send packets longer than is normally allowable by the game. Normally the sequence returns before sending if you try to send a packet longer than 516 (0x204) bytes. Packet 10 can send packets up to 3328 (0xD00) bytes long now. The other Packet #s can send packets up to 384 (0x180) bytes long.

The Simple Text function is pretty straight forward, and doesn't need much explaining. When adding color the correct format is ÿc#, you only need to use ÿ# if you want to save space/time, c will be added in whenever a ÿ is found. The simple text option doesn't support Range or Color Range function yet, but will shortly.

