Ok I understand I can accomplish -1 ping by using the following code:
Case &H25
If Val(GetStuff("Other", "Spoof -1 Ping")) = 1 Then
Exit Sub
And I get normal ping by this code:
Else
With PBuffer
.InsertNonNTString Mid(Data, 5, 4)
.SendPacket &H25
End With
End If
That is my 0x25 Packet sending and receiving. Now how do I go about getting 0 ping? I read, and have interpreted in my own words, the title "Post-Reply Pre-Login Ping" to "Reply After the Pre-Login Ping as been sent". To get -1 is "Ignore Pre-Login Ping" as you see above. It just ignores it completely. How do you reply to the packet after it has already been sent? By a timer?
Any help is appreciated.
-1 = Ignoring it
Normal = Normal
0 = Sending it before you get it
You can get 0 by sending packet 0x25 (SID_PING) before you recive it. Send it with a value of 0 right after you send 0x50 (SID_AUTH_INFO)
~-~(HDX)~-~
.SendPacket 0?
Because that gets me IPBanned.
.InsertDWORD 0
.SendPacket &H25
~-~(HDX)~-~
I sent that packet in my &H50, after the rest of the coding, and I also put changed it to this in the above coding:
If Val(GetStuff("Other", "Spoof 0 Ping")) = 1 Then
Else
So it doesn't do anything in the &H25, it moves to &H50 and then sends the packet with a value of 0.
Result: Normal Ping.
I even put it in my &H25 Packet.
If Val(GetStuff("Other", "Spoof 0 Ping")) = 1 Then
With PBuffer
.InsertDWORD 0
.SendPacket &H25
End With
Same result, normal ping.
Send it when you send 0x50, not when you recive 0x50.
~-~(HDX)~-~
There we go, thanks man. I appreciate it much! :)
Quote from: Securify on August 26, 2005, 02:30 PMI read, and have interpreted in my own words, the title "Post-Reply Pre-Login Ping" to "Reply After the Pre-Login Ping as been sent". To get -1 is "Ignore Pre-Login Ping" as you see above. It just ignores it completely.
No. Isn't it obvious? "Ignore Pre-Login Ping," pre-logon ping being the SID_PING message Battle.net sends before login (hence, "pre login") to determine your "ping time." The bot will ignore that message, but respond to all future requests. This gives you what people tend to call "-1 ping"(?)
"Post-Reply Pre-Login Ping," again referring to the ping that is sent before login ("pre-login ping"). But here instead of ignoring the request, the bot will now reply before it even receives the message (hence, "post reply"). This sort of tricks Battle.net allowing you to achieve an extraordinary low ping time--usually zero.
There you have it.
Spht, I have a question. After I've received 0x25, can I echo back a different value? If I can echo back a different value would this mean that I can make up my own ping timestamp?
You can echo back any 4 bytes you want. It doesn't make a change in the ping though.
Quote from: Spht on August 26, 2005, 04:23 PM
Quote from: Securify on August 26, 2005, 02:30 PMI read, and have interpreted in my own words, the title "Post-Reply Pre-Login Ping" to "Reply After the Pre-Login Ping as been sent". To get -1 is "Ignore Pre-Login Ping" as you see above. It just ignores it completely.
No. Isn't it obvious? "Ignore Pre-Login Ping," pre-logon ping being the SID_PING message Battle.net sends before login (hence, "pre login") to determine your "ping time." The bot will ignore that message, but respond to all future requests. This gives you what people tend to call "-1 ping"(?)
"Post-Reply Pre-Login Ping," again referring to the ping that is sent before login ("pre-login ping"). But here instead of ignoring the request, the bot will now reply before it even receives the message (hence, "post reply"). This sort of tricks Battle.net allowing you to achieve an extraordinary low ping time--usually zero.
There you have it.
I appreciate you going, kind of, in depth about this subject. I was a bit confused on the true meaning, but I got it now.
Again, thanks.
Quote from: Yegg on August 26, 2005, 04:50 PM
Spht, I have a question. After I've received 0x25, can I echo back a different value? If I can echo back a different value would this mean that I can make up my own ping timestamp?
You can however time your response to SID_PING and get an
approximate ping that you want.
Quote from: Warrior on August 26, 2005, 05:34 PM
Quote from: Yegg on August 26, 2005, 04:50 PM
Spht, I have a question. After I've received 0x25, can I echo back a different value? If I can echo back a different value would this mean that I can make up my own ping timestamp?
You can however time your response to SID_PING and get an approximate ping that you want.
I see. Thanks Warrior.
You can also add to your ping time.
Eg. Let's say you normal ping is 172ms.
By doing:
Case &H25
'Code to Pause for 3 seconds
With PBuffer
.InsertNonNTString Mid(Data, 5, 4)
.SendPacket &H25
End With
Your ping will be: 3172ms.
However it's very hard to make it do this accurately, and by causing your ping to exceed 59999ms you won't establish a connection to Battle.net.
Yet, not sure how but people have exceeded Battle.net pings over 60 seconds.. but there unstable and usually only last 2-10 minutes.
Quote from: FrOzeN on August 27, 2005, 01:35 AM
Yet, not sure how but people have exceeded Battle.net pings over 60 seconds..
They still send the keepalive packet, which keeps the connection alive.
Quote
but there unstable and usually only last 2-10 minutes.
Where did you get that from?
Don't remember, remembered this from over a year ago.
Probably from someone who didn't send the KeepAlive packet. :P
QuoteHowever it's very hard to make it do this accurately, and by causing your ping to exceed 59999ms you won't establish a connection to Battle.net.
Battle.net stores user ping values in a doubleword which can be any numerical value from 0 to 4294967295. Perhaps you failed to send the version check data before the
hash values changed?
Quote from: LoRd[nK] on August 27, 2005, 02:33 AM
QuoteHowever it's very hard to make it do this accurately, and by causing your ping to exceed 59999ms you won't establish a connection to Battle.net.
Battle.net stores user ping values in a doubleword which can be any numerical value from 0 to 4294967295. Perhaps you failed to send the version check data before the hash values changed?
There may be a limit on how long logons can take. So you would need to keep the other packets going while holding off the ping packet. </speculation>
Quote from: LoRd[nK] on August 27, 2005, 02:33 AM
QuoteHowever it's very hard to make it do this accurately, and by causing your ping to exceed 59999ms you won't establish a connection to Battle.net.
Battle.net stores user ping values in a doubleword which can be any numerical value from 0 to 4294967295. Perhaps you failed to send the version check data before the hash values changed?
I was lazy testing this, I've never done it properally by making the code pause.
With StealthBot on Windows 98SE. I'd click 'Connect', then wait..
Once it said "[TimeStamp] [BNET] Connected!" I would suddenly click the Title bar and hold the mouse down counting to 59 before releasing. When holding the title bar down it pauses everything the program does. Once i'd release it would continue connecting giving me pings around 57,000ms.. I tried getting it as close to 60,000ms. Anytime that I exceeded 60 seconds it wouldn't connect. And the closest I got was 57,### so I fiqured 60 seconds was the maximum.
Also another story I remember, I had StealthBot set to give me 0 ms. During the connection my computer was LAGGING EXTREMELY BAD and somehow it gave me 16ms, the best i've ever got properally is 156ms so don't know how it happened but it did.
Public Sub Send0x50(bZeroPing As Boolean)
With Buffer
.InsertDWORD 0 '(DWORD) Protocol ID (0)
.InsertDWORD GetDWORD(modINI.GetGameID) '(DWORD) Platform ID
.InsertDWORD GetDWORD("68XI") '(DWORD) Product ID
.InsertDWORD GetVerbyte(modINI.GetGameID) '(DWORD) Version Byte
.InsertDWORD 0 '(DWORD) Product language
.InsertDWORD 0 '(DWORD) Local IP for NAT compatibility*
.InsertDWORD 0 '(DWORD) Time zone bias*
.InsertDWORD &H1033 '(DWORD) Locale ID*
.InsertDWORD &H1033 '(DWORD) Language ID*
.InsertNTString "USA" '(STRING) Country abreviation
.InsertNTString "United States" '(STRING) Country
.Push &H50
If bZeroPing = True Then
.InsertDWORD 0
.Push &H25
End If
.Flush
End With
End Sub
Public Sub Parse(Data As String)
With Debuffer
.Buffer = Data
.RemoveVoid 1 'Remove sanity byte
Select Case .RemoveByte
Case &H25
Select Case modINI.PingValue
Case "-1"
'Nothing
Case Else
sckBnet.SendData Data
End Select
'Handle the rest of the packets here
End Select
End With
End Sub
Quote from: Blaze on August 27, 2005, 01:57 AM
Quote from: FrOzeN on August 27, 2005, 01:35 AM
Yet, not sure how but people have exceeded Battle.net pings over 60 seconds..
They still send the keepalive packet, which keeps the connection alive.
Quote
but there unstable and usually only last 2-10 minutes.
Where did you get that from?
You can either manually send it or not? Not sure. Maybe the user disconnected locally.
Quote from: FrOzeN on August 27, 2005, 03:03 AM
Quote from: LoRd[nK] on August 27, 2005, 02:33 AM
QuoteHowever it's very hard to make it do this accurately, and by causing your ping to exceed 59999ms you won't establish a connection to Battle.net.
Battle.net stores user ping values in a doubleword which can be any numerical value from 0 to 4294967295. Perhaps you failed to send the version check data before the hash values changed?
I was lazy testing this, I've never done it properally by making the code pause.
With StealthBot on Windows 98SE. I'd click 'Connect', then wait..
Once it said "[TimeStamp] [BNET] Connected!" I would suddenly click the Title bar and hold the mouse down counting to 59 before releasing. When holding the title bar down it pauses everything the program does. Once i'd release it would continue connecting giving me pings around 57,000ms.. I tried getting it as close to 60,000ms. Anytime that I exceeded 60 seconds it wouldn't connect. And the closest I got was 57,### so I fiqured 60 seconds was the maximum.
I wrote a simple bot explicitly to test this. I have successfully gotten over 1 million ping. All you do is call Sleep() in the ms delay you want to have for a ping before sending the first 0x25 to Battle.Net (only when you recieve, do not send with 0x50), then sending following 0x25 responses normally.
...thanks for repeating what I showed above?
Eh...I probably should have read the whole first page ;\