I've found that libpurple is really good about being cross platform and extendable, so why not extend it to where I chat most?
I'm making this plugin for libpurple (Pidgin) that allows you to connect to and chat on Classic Battle.net.
(http://img718.imageshack.us/img718/9236/pid.png)
Current functionality:
- Log in (STAR, SEXP, D2DV, D2XP, W2BN, WAR3, W3XP)
- Chat (appears as Chats)
- Whisper (appears as IMs)
- Friend list support (uses buddy list)
- Away/DND states
- User info and statistics (getting whois and getting profile and record, setting profile)
- Windows installer
Future functionality:
- More libpurple features that make sense (blocking comes to mind)
- Chat queue
- Clan support, after W3
- User and clan statistics, after W3
- Account creation and password changing
- Testing on Linux, and possibly other libpurple-based programs (Finch, Adium)
Possible future functionality:
- Legacy client emulation, and possibly more correct logon sequence emulation
- icons.bni and MPQ reading
- Local version checking
- Diablo II MCP
- Game list reading
- Ladder reading
Screenshots:
[hs width=300 height=185]http://img811.imageshack.us/img811/9783/pidginprplriboseclbnet1.png[/hs]
[hs width=300 height=189]http://img253.imageshack.us/img253/4335/pidginprplriboseclbnet2.png[/hs]
[hs width=300 height=168]http://img192.imageshack.us/img192/9945/pidginprplriboseclbnet3.png[/hs]
[hs width=300 height=204]http://img263.imageshack.us/img263/3133/pidginprplriboseclbnet4.png[/hs]
[hs width=300 height=225]http://img830.imageshack.us/img830/2653/bnetpidgin.png[/hs]
[hs width=300 height=225]http://img51.imageshack.us/img51/5716/bnetpidgin2.png[/hs]
For those technical people:
Language: C
Check revision: BNLS only
CD-Key decoding and password hashing: local
Logon Sequence: SID_AUTH_INFO (0x50), SID_AUTH_CHECK (0x51), SID_LOGONRESPONSE2 (0x3A)
I have the idea to follow up this project with one for Battle.net 2. By then more reversing will have been done and I will be more comfortable with libpurple anyway.
For this plugin, post comments and ideas (new topic), please.