The Light! Hmm...I think I finally get it now!
Unfortunately, both the manner in which the question was asked, and the relentless repetition of the question in a confrontational way despite its having been answered, prevented you from getting the information you wanted.
Three simple reasons -
1) ToadNode was already doing something almost identical, and I had noticed my inability to decipher their version number, so I figured it was something useful and did it roughly the same way.
2) Some basics of Defender functionality were actually already implemented before the first release of BearShare. I planned on using this "opaque" query to hold tons more data including the IP address of the server and its password hash if it was a private server. Unfortunately, broadcasting the information in a query instead of just sending it in the reply had disasterous effects on bandwidth utilization throughout the network, so I had to come up with a different scheme. However, for legacy reasons the method used to encode the message cannot change without some major reworking.
3) I wanted to do my best to prevent other servents from masquerading as BearShare servents. The method used to protect the version number is strong enough that it resists any attack, except those which would violate the license agreement (reverse engineering). There is nothing that can be done about reverse engineering, but this still prevents a commercial interest from taking advantage of my hard work. Hey, I'm just one guy I gotta watch my own back! |