Author Topic: Battle.net Server Signature  (Read 29465 times)

0 Members and 5 Guests are viewing this topic.

Offline rabbit

  • x86
  • Hero Member
  • *****
  • Posts: 8092
  • I speak for the entire clan (except Joe)
    • View Profile
Re: Battle.net Server Signature
« Reply #15 on: July 02, 2005, 10:13:11 pm »
OMG I SOLVED IT!!!!
log(10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000)

I win.

Offline Joe

  • B&
  • Moderator
  • Hero Member
  • *****
  • Posts: 10319
  • In Soviet Russia, text read you!
    • View Profile
    • Github
Re: Battle.net Server Signature
« Reply #16 on: July 03, 2005, 04:47:43 am »
wtf? Anyhow, heres an (almost) port to VB of the checking function. Theres one line thats (cleary) still in Java, so iago or somebody can fix that, or I will eventually.

Code: [Select]
'---------------------------------------------------------------------------------------
' Module    : modServerSig
' Author    : Joe[x86]
'             www.x86labs.org
' Purpose   : Verification of WAR3/W3XP Battle.net server signatures.
'---------------------------------------------------------------------------------------

Option Explicit

Public Function checkServerSignature(sig As String, ip As String) As Boolean
    Dim I As Integer, Ret As Boolean
    Dim K() As Byte: Let K = Array(0, 1, 1, 0)
    Dim N() As Byte: Let N = Array(&HD5, &HA3, &HD6, &HAB, &HF, &HD, &HC5, &HF, &HC3, &HFA, &H6E, &H78, &H9D, &HB, &HE3, &H32, &HB0, &HFA, &H20, &HE8, &H42, &H19, &HB4, &HA1, &H3A, &H3B, &HCD, &HE, &H8F, &HB5, &H56, &HB5, &HDC, &HE5, &HC1, &HFC, &H2D, &HBA, &H56, &H35, &H29, &HF, &H48, &HB, &H15, &H5A, &H39, &HFC, &H88, &H7, &H43, &H9E, &HCB, &HF3, &HB8, &H73, &HC9, &HE1, &H77, &HD5, &HA1, &H6, &HA6, &H20, &HD0, &H82, &HC5, &H2D, &H4D, &HD3, &H25, &HF4, &HFD, &H26, &HFC, &HE4, &HC2, &H0, &HDD, &H98, &H2A, &HF4, &H3D, &H5E, &H8, &H8A, &HD3, &H20, &H41, &H84, &H32, &H69, &H8E, &H8A, &H34, &H76, &HEA, &H16, &H8E, &H66, &H40, &HD9, &H32, &HB0, &H2D, &HF5, &HBD, &HE7, &H57, &H51, &H78, &H96, &HC2, &HED, &H40, &H41, &HCC, &H54, &H9D, &HFD, &HB6, &H8D, &HC2, &HBA, &H7F, &H69, &H8D, &HCF)
   
    'Do the calculation
    byte []result = new BigIntegerEx(BigIntegerEx.LITTLE_ENDIAN, sig).modPow(key, mod).toByteArray();
   
    Dim CorrectResult As String: CorrectResult = String(Len(Result), Chr(&HBB))
    CorrectResult = ip & Mid(CorrectResult, 5)
       
    Ret = True
    For I = 0 To Len(Result) Step 1
        If Result(I) <> CorrectResult(I) Then
            Ret = False
        End If
    Next I
End Function

EDIT -
Hrm, got somewhere with porting BigIntegerEx too!
Code: [Select]
Public Const BIG_ENDIAN As Integer = 0
Public Const LITTLE_ENDIAN As Integer = 1
Public Const BIGINT_SIZE = 32
« Last Edit: July 03, 2005, 04:54:08 am by Joe[x86] »
I'd personally do as Joe suggests

You might be right about that, Joe.


Offline iago

  • Leader
  • Administrator
  • Hero Member
  • *****
  • Posts: 17914
  • Fnord.
    • View Profile
    • SkullSecurity
Re: Battle.net Server Signature
« Reply #17 on: July 03, 2005, 02:36:17 pm »
    byte []result = new BigIntegerEx(BigIntegerEx.LITTLE_ENDIAN, sig).modPow(key, mod).toByteArray();

That's the most important line, and the one line that I'm pretty sure you can't do in Visual Basic.  First, it creates an arbitrary length integer from the signature, then does the calculation (signaturekey % mod) (where % is modular division).  This is the standard formula for encryption/decrypting/creating keys.  ab%c with arbitrary length integers is cryptographically the most important function. 

Offline rabbit

  • x86
  • Hero Member
  • *****
  • Posts: 8092
  • I speak for the entire clan (except Joe)
    • View Profile
Re: Battle.net Server Signature
« Reply #18 on: July 03, 2005, 09:51:28 pm »
Code: [Select]
function poiuytrewq(a as long, b as long, c as long) as currency
    poiuytrewq = (a ^ b) mod c
end function
?

Offline iago

  • Leader
  • Administrator
  • Hero Member
  • *****
  • Posts: 17914
  • Fnord.
    • View Profile
    • SkullSecurity
Re: Battle.net Server Signature
« Reply #19 on: July 03, 2005, 09:53:10 pm »
Code: [Select]
function poiuytrewq(a as long, b as long, c as long) as currency
    poiuytrewq = (a ^ b) mod c
end function
?

I think he's trying to implement modpow with short variables.  A "long" isn't arbitrary length.

Offline rabbit

  • x86
  • Hero Member
  • *****
  • Posts: 8092
  • I speak for the entire clan (except Joe)
    • View Profile
Re: Battle.net Server Signature
« Reply #20 on: July 03, 2005, 11:17:27 pm »
currency is the closest to arbitrary you can get, and long ...eh...whatever I give up.  VB sucks that way.

Offline iago

  • Leader
  • Administrator
  • Hero Member
  • *****
  • Posts: 17914
  • Fnord.
    • View Profile
    • SkullSecurity
Re: Battle.net Server Signature
« Reply #21 on: July 03, 2005, 11:18:19 pm »
I don't think a currency can do 1024-bit numbers, though, which is what the server signature is.

Offline Newby

  • x86
  • Hero Member
  • *****
  • Posts: 10877
  • Thrash!
    • View Profile
Re: Battle.net Server Signature
« Reply #22 on: July 04, 2005, 03:49:41 pm »
    byte []result = new BigIntegerEx(BigIntegerEx.LITTLE_ENDIAN, sig).modPow(key, mod).toByteArray();

That's the most important line, and the one line that I'm pretty sure you can't do in Visual Basic.  First, it creates an arbitrary length integer from the signature, then does the calculation (signaturekey % mod) (where % is modular division).  This is the standard formula for encryption/decrypting/creating keys.  ab%c with arbitrary length integers is cryptographically the most important function. 

I'm pretty sure you can do ab%c.

You just have to use an API call for the ab

Wait, never mind. If the numbers are 1024-bit, good luck I guess!
- Newby
http://www.x86labs.org

Quote
[17:32:45] * xar sets mode: -oooooooooo algorithm ban chris cipher newby stdio TehUser tnarongi|away vursed warz
[17:32:54] * xar sets mode: +o newby
[17:32:58] <xar> new rule
[17:33:02] <xar> me and newby rule all

I'd bet that you're currently bloated like a water ballon on a hot summer's day.

That analogy doesn't even make sense.  Why would a water balloon be especially bloated on a hot summer's day? For your sake, I hope there wasn't too much logic testing on your LSAT.