Public Class Neopets
Public Declare Function GetTickCount Lib "kernel32" () As Long
Public Shared strDecimals(19) As String
Public Shared intBinLen As Integer
Public Shared strBin As String
''' <summary></summary>
''' <param name="iGame">Die ID des Spiels</param>
''' <param name="iScore">Die Punktezahl</param>
''' <param name="iTime">Sollte eigentlich heißen, wie lange man in ms gespielt hat??</param>
''' <param name="sHash">Der jeweilige Hash</param>
''' <param name="sKey"></param>
''' <param name="sUsername">Der Benutzername</param>
Public Shared Function GenerateURL(ByVal iGame As Integer, _
ByVal iScore As Integer, _
ByVal iTime As Integer, _
ByVal sHash As String, _
ByVal sKey As String, _
ByVal sUsername As String) As String
Dim r As String
Strings()
InitBin(sHash, sKey)
r = "http://www.neopets.com/high_scores/process_flash_score.phtml?" & _
"cn=" & iGame * 300 & _
"&gd=" & iTime & _
"&r=0." & fR(111111111, 999999999) & fR(111111, 999999) & _
"&gmd_g=" & iGame & _
"&mltpl_g=0" & _
"&gmdt_g=" & AddSlashes("ssnhsh=" & sHash & _
"&ssnky=" & sKey & _
"&gmd=" & iGame & _
"&scr=" & iScore & _
"&frmrt=24" & _
"&chllng=0" & _
"gmdrtn=" & iTime) & _
"&sh_g=" & sHash & _
"&sk_g=" & sKey & _
"&usrnm_g=" & sUsername & _
"&dc_g=0" & _
"&cmgd_g=89198" & _
"&ddNcChallenge=0" & _
"&fs_g=0"
Return r
End Function
Public Shared Sub Strings()
strDecimals(0) = "$Et-*Bmy);MH:vqwdf&XU~=72PhbWp.}3rN_LZO,sonY(cFT9{a16@!keKIlQxjVJg5+iS%D^GA0?Cu4zR8"
strDecimals(1) = "%xy1LRKsjn;6lgFA,8@{+fOM-}!DcUoav*e=(iZWQt4d$E:Yb_9kV30qB7zmP~h?)NH5CTJpI^wSr2&XG.u"
strDecimals(2) = "F8T=sl3.vfMS?nJu^r)h%$gc{@I9kqB}_+2,o1U:Qj!HaZWKeibztEwOp*y-DP0RN(5&;4L6V~mCdYxAX7G"
strDecimals(3) = "{8PjWUF_bsG+EtHv.O@0?i$~L,a2yNozQDh%=^eYx*dwV3B&7Zl;SM1nTI9(:6qC4pJ}fAgk)Kc!r-RuXm5"
strDecimals(4) = "!3g@b_Gn1ENeS0xqzJDc*pU}X%)osMd-Qku{~:7RI;?fT$WhAi&m5+t69yVBa=.8FKjZYl,4wO(PLCH2rv^"
strDecimals(5) = "oLEUbQMNpPA^J}=,u258rKZHmB(Y3q{etG$1!wDIRy;d?:j+FS.~49_fX6*kT70lxWOsg)@%-&aCihvcVnz"
strDecimals(6) = "~loagX)8=r4{:-zWB1O(+?KEL9IS$^.Chj0TqdG2w%FeU}uypA*V&5!@Q7c,NZJ6Db;xt_PskRfmiY3HMnv"
strDecimals(7) = "z5&=UhA)rd.;Im0bvS6?x@uZ9Gj(liR7q$NX:WaHTe{,Ok!^JyQFVscKg8nECoM+D%PY3~4L_t2w}f1-Bp*"
strDecimals(8) = "$&,l}Gc.RDE:(BkhpIw;zHCs{56xgY!)7LjAd1%PX24VyMUbQ3rom_-9v~f8tN*^SWT?qZnieOK+ua=FJ0@"
strDecimals(9) = "lvEbI4y+O1D8SH_fiLQY5Tk-2XW!^K.quJcnd7ja$x~om=Gp*r0:{A,CR}P@(MVtNw&hF3Z;?s%zB6)eUg9"
strDecimals(10) = "Y$*GJwqt^ZN{:pu.v(;c2O30~aD!Vsmd1%7SiHjIe@A5glP}EMnbUWf+_&BQoCKh)RTx4-698Xzky,?Lr=F"
strDecimals(11) = "ft2dMW~ncsZY:3-J%yhi{8j)*aQxA^!?z9bXpS+RuOFLwqk(B&P_HCrUl1},N@Em.TgoI547vDVGe0;$K=6"
strDecimals(12) = "U;)=iw:6(uoR7!05VHC-BsyfAcSPG~3@ZmWF_tDX8}xOk1vpNET$Y?jb&*%492e.LJ,zglaMr{d+KQnh^Iq"
strDecimals(13) = "?mF-P0Mb8,~5J(kQys$KzOL6^@2)V%w+9d}CN:n;lWjE.qH3x7RScYo!g={4teT_*iU&1GfXDBurhAIapvZ"
strDecimals(14) = "&hlS9G(Qe?^!;%scB~4r+YFDPt$uj3Nm{:5v}861z=wAo0Ly@KROp.qM-HXZ*W,2_kUIJiECdVgxb)nfTa7"
strDecimals(15) = "ZUu+NfclrKiRYAI;vM!O?L*et=~},)7@FQ:sPp$W5yEXbT8V(-qhmzw{J^nD2S.%j0da&xC1G_gBo6H943k"
strDecimals(16) = "bWT?_fMev,HVmXyNSI2GR@&$Zt=O.uQ(gLErY3Ac!*jlD9kUqad~-P14%n8xsi6p7Fh{}Jz:KC;^+0o5)Bw"
strDecimals(17) = "sy,X4O)(KS!0~{=+LbZD8edapAg%_v@:z-EuTh;xcMkVRri?F36$&tQHfl5nqIYNGj^PmUBCo.}Jw*2W719"
strDecimals(18) = ")izKWhTc%4E-IrmJ,.MZ8+bjp;2Fwu7X{stl56S9_*D=C?0o}PQqAVBHRUNaey^!&f$kYOv3L1:dn~(g@xG"
strDecimals(19) = "J=w%QM@4Ixt2!R&q0oBh*YakcXT6{g;K3CyZSFujfsEPUV,1vz.O-9(Li}_?Am+rN:bH5D$W7Gdp^~)l8ne"
End Sub
''' <summary></summary>
''' <param name="sh">Hash</param>
''' <param name="sk">Key</param>
Public Shared Sub initBin(ByVal sh As String, ByVal sk As String)
strBin = sh & sk
intBinLen = strBin.Length
End Sub
Public Shared Function addSlashes(ByVal s As String) As String
Return EscapeString(Hex2Bin(s))
End Function
Public Shared Function Hex2Bin(ByVal s As String) As String
'Diese Function stammt aus dem Internet. Der originale Bezeichner lautete Function Hex2Bin
Dim lngRandom As Long = fR(0, 19) '_loc8_ in der SWF
Dim intTemp(2) As Integer
intTemp(0) = 0
intTemp(1) = 0
intTemp(2) = 0
Dim strHex As String = strDecimals(CInt(lngRandom))
Dim strReplace As String = ""
For intTemp(1) = 0 To Len(s) - 1
If intTemp(2) >= intBinLen Then
intTemp(2) = 0
End If
intTemp(0) = InStr(1, strHex, Mid$(s, intTemp(1) + 1, 1))
If intTemp(0) = 0 Then
strReplace = strReplace & Mid$(s, intTemp(1) + 1, 1)
Else
intTemp(0) = (intTemp(0) + InStr(1, strHex, Mid$(strBin, intTemp(2) + 1, 1)) - 2) Mod 83
strReplace = strReplace & Mid$(strHex, intTemp(0) + 1, 1)
End If
intTemp(2) = intTemp(2) + 1
Next intTemp(1)
If lngRandom >= 10 Then
strReplace = strReplace & CStr(lngRandom)
Else
strReplace = strReplace & "0" & CStr(lngRandom)
End If
Return strReplace
End Function
Public Shared Function escapeString(ByVal s As String) As String
Dim strReplace As String = ""
Dim strTemp As String
For i As Integer = 1 To s.Length
strTemp = CStr(Asc(Mid$(s, i, 1))) 'Entspricht classCrypt.as, Zeile 104
For intTemp2 As Integer = 3 - strTemp.Length To 1 Step -1
strTemp = "0" & strTemp 'Entspricht classCrypt.as, Zeile 108
Next
strReplace &= strTemp 'Entspricht classCrypt.as, Zeile 111
Next
Return strReplace
End Function
Public Shared Function fR(ByVal lL As Long, ByVal lH As Long) As Long
Randomize(GetTickCount)
lH = lH + 1
lL = lL - 1
gR:
fR = CLng(Rnd() * (lH - lL) + lL)
If fR = lH Then GoTo gR
If fR = lL Then GoTo gR
End Function
End Class