-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmodPkts.bas
657 lines (558 loc) · 20 KB
/
modPkts.bas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
Attribute VB_Name = "modPkts"
''''This is where all your packets will go
'''We'll need to make the following BNCS packets
''' 0x50, 0x51
''' 0x3A, 0x14
''' 0x0A, 0X0B
''' 0X0C, 0x09
Public Declare Function kd_quick Lib "bncsutil.dll" _
(ByVal Cdkey As String, ByVal ClientToken As Long, _
ByVal ServerToken As Long, PublicValue As Long, _
Product As Long, ByVal HashBuffer As String, _
ByVal BufferLen As Long) As Long
Public Declare Function nls_init Lib "bncsutil.dll" (ByVal Username As String, ByVal Password As String) As Long
Public Declare Function nls_init_l Lib "bncsutil.dll" (ByVal Username As String, ByVal Username_Length As Long, ByVal Password As String, ByVal Password_Length As Long) As Long
Public Declare Function nls_reinit Lib "bncsutil.dll" (ByVal NLS As Long, ByVal Username As String, ByVal Password As String) As Long
Public Declare Function nls_reinit_l Lib "bncsutil.dll" (ByVal NLS As Long, ByVal Username As String, ByVal Username_Length As Long, ByVal Password As String, ByVal Password_Length As Long) As Long
Public Declare Sub nls_free Lib "bncsutil.dll" (ByVal NLS As Long)
Public Declare Function nls_account_create Lib "bncsutil.dll" (ByVal NLS As Long, ByVal Buffer As String, ByVal BufLen As Long) As Long
Public Declare Function nls_account_logon Lib "bncsutil.dll" (ByVal NLS As Long, ByVal Buffer As String, ByVal BufLen As Long) As Long
Public Declare Sub nls_get_A Lib "bncsutil.dll" (ByVal NLS As Long, ByVal Out As String)
Public Declare Sub nls_get_M1 Lib "bncsutil.dll" (ByVal NLS As Long, ByVal Out As String, ByVal b As String, ByVal Salt As String)
Public Declare Function nls_check_M2 Lib "bncsutil.dll" (ByVal NLS As Long, ByVal M2 As String, ByVal b As String, ByVal Salt As String) As Long
Public Declare Function nls_check_signature Lib "bncsutil.dll" (ByVal Address As Long, ByVal Signature As String) As Long
Public Declare Function nls_account_change_proof Lib "bncsutil.dll" (ByVal NLS As Long, ByVal Buffer As String, ByVal NewPassword As String, ByVal b As String, ByVal Salt As String) As Long
Public Declare Sub nls_get_S Lib "bncsutil.dll" (ByVal NLS As Long, ByVal Out As String, ByVal b As String, ByVal Salt As String)
Public Declare Sub nls_get_K Lib "bncsutil.dll" (ByVal NLS As Long, ByVal Out As String, ByVal s As String)
Public NLSVal As Long
Public Salt55 As String
Public ValB55 As String
Public WhatConnectID As String
Public Declare Function SendMessage Lib "User32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Function ReleaseCapture Lib "User32" () As Long
Public Const WM_NCLBUTTONDOWN = &HA1
Declare Function SetTimer Lib "User32" (ByVal hWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Declare Function KillTimer Lib "User32" (ByVal hWnd As Long, ByVal nIDEvent As Long) As Long
Public TimerOn As Boolean
Public WatchType As String
Public buf2 As New clsBuffer 'Publically declare buf2 to use functions in class
Public UDPToken As Long 'Grabbed from S>C 0x50
Public ServerToken As Long 'Grabbed from S>C 0x50
Public tmpFileName As String 'Grabbed from S>C 0x50
Public tmpFormula As String 'Grabbed from S>C 0x50
Public Declare Function GetTickCount Lib "kernel32" () As Long
Public Sub CreateGame_0x1C(GameName As String, GamePass As String) ', gamestatstring As String, MapName As String, GameSpeed As String, MapType As String, MapIcon As String, MapSize As Integer, GameType As String)
Chat.AddChat2 vbBlack, "Creating Game"
Dim count As Long
count = GetTickCount
With buf2
.InsertDWORD &H0 'game state
.InsertDWORD &H0 'Time since creation
'.InsertWORD &H0 'game type
.InsertDWORD &HA '"&H" & GameType '&H2 'Parameter
.InsertWORD &H1 'Unknown
.InsertWORD &HFF 'Unknown
.InsertDWORD &H0 'ladder is no
.InsertNTString GameName
.InsertNTString GamePass
'Game Stat String Below
.InsertSTRING ",,,6,6,a,,1,34eab02f,4,," 'Game Options
'.InsertSTRING "," & MapSize & ",," & GameSpeed & "," & MapIcon & "," & GameType & ",,1" & ",34eab02f," & MapType & ",,"
'44 = map size
'6 = game speed (Fastest)
'1 = map icon
'2 = game type (melee)
'1 = game penalty 1 is no penalty on disc
'after that is timestamp
.InsertNT_0DString "My$t" '"Thief" 'Username
.InsertNT_0DString "www.DarkBlizz.org" '"The Hunters" 'MapName
.InsertBYTE &H0
.InsertHEADER &H1C
.SendPacket frmMain.sckBnet
End With
End Sub
Public Sub Send0x09() '0x09 UDP
Call Chat.AddChat(vbWhite, "Sending UDP Token")
Dim P As Integer
For P = 1 To 3
With buf2
.InsertDWORD &H9
.InsertDWORD ServerToken
.InsertDWORD UDPToken
.SendPacketUDP frmMain.sckUDP
End With
Next P
End Sub
Public Sub Send0x09TCPWAR3()
'0030 fb cd 6b 7c 00 00 ff 09 17 00 00 e0 7f 00 00 00 ..k|.... ........
'0040 00 00 00 00 00 00 14 00 00 00 00 00 00 ........ .....
'0030 fb 98 41 b5 00 00 ff 09 20 00 e0 00 7f 00 00 00 ..A..... .......
'0040 00 00 00 00 00 00 14 00 00 00 00 00 00 00 00 00 ........ ........
'0050 00 00 00 00 00 00 ......
With buf2
.InsertBYTE &H0
.InsertBYTE &HE0
.InsertWORD &H7F
.InsertDWORD &H0
.InsertDWORD &H0
.InsertDWORD &H14
.InsertBYTE &H0
.InsertBYTE &H0
.InsertBYTE &H0
.InsertHEADER &H9
.SendPacket frmMain.sckBnet
End With
End Sub
Public Sub Send0x09TCP()
'0030 ff a5 2e 18 00 00 ff 09 17 00 0a 00 00 00 ff ff ........ ........
'0040 00 00 00 00 00 00 19 00 00 00 00 00 00 ........ .....
'Chat.AddChat vbWhite, "Sending 0x09TCP"
With buf2
.InsertWORD &HA 'shows melee
.InsertWORD &H0 ' condition 2
.InsertBYTE &HFF 'condiiton 3
.InsertBYTE &HFF
.InsertWORD &H0
.InsertDWORD &H0 'condition 4
.InsertDWORD &H19
.InsertBYTE &H0
.InsertBYTE &H0
.InsertBYTE &H0
.InsertHEADER &H9
.SendPacket frmMain.sckBnet
End With
End Sub
Public Sub Send0x09TCP2()
'0030 fb 09 61 05 00 00 ff 09 17 00 0a 00 00 00 ff ff ..a..... ........
'0040 00 00 00 00 00 00 19 00 00 00 00 00 00 ........ .....
'Chat.AddChat vbWhite, "Sending 0x09TCP"
With buf2
.InsertWORD &HA
.InsertWORD &H0
.InsertDWORD &H0
.InsertWORD &HFF
.InsertWORD &HFF
.InsertDWORD &H1
.InsertNTString "gName"
.InsertNTString ""
.InsertNTString ""
.InsertHEADER &H9
.SendPacket frmMain.sckBnet
End With
End Sub
Public Sub Send0x09TCPtvb()
'0030 ff a5 2e 18 00 00 ff 09 17 00 0a 00 00 00 ff ff ........ ........
'0040 00 00 00 00 00 00 19 00 00 00 00 00 00 ........ .....
'Chat.AddChat vbWhite, "Sending 0x09TCP"
With buf2
.InsertWORD &HF 'shows melee
.InsertWORD &H0 ' condition 2
.InsertBYTE &HFF 'condiiton 3
.InsertBYTE &HFF
.InsertWORD &H0
.InsertDWORD &H0 'condition 4
.InsertDWORD &H19
.InsertBYTE &H0
.InsertBYTE &H0
.InsertBYTE &H0
.InsertHEADER &H9
.SendPacket frmMain.sckBnet
End With
End Sub
Public Sub Send0x09TCPmelee()
'0030 ff a5 2e 18 00 00 ff 09 17 00 0a 00 00 00 ff ff ........ ........
'0040 00 00 00 00 00 00 19 00 00 00 00 00 00 ........ .....
'Chat.AddChat vbWhite, "Sending 0x09TCP"
With buf2
.InsertWORD &H2 'shows melee
.InsertWORD &H0 ' condition 2
.InsertBYTE &HFF 'condiiton 3
.InsertBYTE &HFF
.InsertWORD &H0
.InsertDWORD &H0 'condition 4
.InsertDWORD &H19
.InsertBYTE &H0
.InsertBYTE &H0
.InsertBYTE &H0
.InsertHEADER &H9
.SendPacket frmMain.sckBnet
End With
End Sub
Public Sub Send0x50(verbyte As String)
Call Chat.AddChat(vbGreen, "Sending 0x50")
Dim WhatProd As String
Select Case ConnectingID(IniCDKey)
Case "SC"
WhatProd = "PXES"
Case "W3"
WhatProd = "3RAW"
Case "D2"
WhatProd = "VD2D"
End Select
With buf2
.InsertDWORD &H0
.InsertSTRING "68XI" '&H49583836 '68XI"
.InsertDWORD .GetDWORD(WhatProd) 'turn string into number into packer buffer
.InsertDWORD "&H" & verbyte 'version byte for sc/bw
.InsertDWORD &H0 ' All
.InsertDWORD &H0 ' This
.InsertDWORD &H0 ' Can
.InsertDWORD &H0 ' Be
.InsertDWORD &H0 ' Null
.InsertNTString "GBR" 'null byte terminated string
.InsertNTString "United Kingdom"
.InsertHEADER &H50 'add the header FF 50 and 2 byte lengh of packet buffer
.SendPacket frmMain.sckBnet 'hand the winsock to the sub so it can use it to send the data down it
End With
End Sub
Public Sub Send0x51(tmpFormula As String, tmpFileName As String, Checksum As Long, ByVal exeversion As Long, EXEInfo As String)
Call Chat.AddChat(vbGreen, "Sending 0x51")
Dim Product As Long
Dim PublicValue As Long
Dim PrivateValue As String
Dim Cdkey As String
Cdkey = IniCDKey
' (DWORD) Client Token
' (DWORD) EXE Version
'(DWORD) EXE Hash
'(DWORD) Number of CD-keys in this packet
'(BOOLEAN) Spawn CD-key **
'For Each Key:
' (DWORD) Key Length
' (DWORD) CD-key's product value
' (DWORD) CD-key's public value
' (DWORD) Unknown (0)
' (DWORD) [5] Hashed Key Data
'(STRING) Exe Information
'(STRING) CD-Key owner name *
Dim ClientToken As Long
ClientToken = GetTickCount 'any old number (cant be 0)
'We need to remove the extra nullbytes from the extra allocated space
EXEInfo = Mid$(EXEInfo, 1, InStr(1, EXEInfo, vbNullChar) - 1) 'remove extra null bytes
''''
Dim outhash As String
outhash = String(20, 0) 'allocate space
Select Case Len(Cdkey)
Case 26
If kd_quick(Cdkey, ClientToken, ServerToken, PublicValue, Product, outhash, 20) = 0 Then
Chat.AddChat vbRed, "Failed to hash key, make sure you're using a valid CDKey!"
frmMain.sckBnet.Close
Exit Sub
End If
Case 13, 16
If decode_hash_cdkey(Cdkey, ClientToken, ServerToken, PublicValue, Product, outhash) = 0 Then
Chat.AddChat vbRed, "Failed to hash key, make sure you're using a valid CDKey!"
frmMain.sckBnet.Close
Exit Sub
End If
End Select
' Call calcHashBuf(KeyHash, Len(KeyHash), outhash)
With buf2
.InsertDWORD ClientToken 'GetTickCount()
.InsertDWORD exeversion
.InsertDWORD Checksum 'EXE hash
.InsertDWORD &H1 '1 cdkey
.InsertDWORD &H0 'no spawning
.InsertDWORD Len(Cdkey) 'length of key
.InsertDWORD Product 'Product Value of Key i.e 01 or 02
.InsertDWORD PublicValue 'Public Value of Cd Key 7digit number
.InsertDWORD &H0 'Null
.InsertSTRING outhash 'Hashed Key Data
.InsertNTString EXEInfo 'Exe Info
.InsertNTString "GameAnnouncer" 'Owner Name
.InsertHEADER &H51
.SendPacket frmMain.sckBnet
End With
End Sub
Public Sub Send0x3A()
'(DWORD) Client Token
'(DWORD) Server Token
'(DWORD) [5] Password Hash
'(STRING) Username
Chat.AddChat vbGreen, "Sending 0x3A"
Dim outhash As String
outhash = String(20, 0)
ClientToken = GetTickCount
Call double_hash_password(LCase(IniPass), ClientToken, modPkts.ServerToken, outhash)
With buf2
.InsertDWORD ClientToken
.InsertDWORD modPkts.ServerToken
.InsertSTRING outhash
.InsertNTString IniName
.InsertHEADER &H3A
.SendPacket frmMain.sckBnet
End With
End Sub
Public Sub Send0x3D()
Chat.AddChat vbGreen, "Sending 0x3D"
Dim outhash As String * 20
'Call Chat.ShowChat(i, vbGreen, "Sending 0x3D")
outhash = String(20, 0)
Call hash_password(LCase(IniPass), outhash)
With buf2
.InsertSTRING outhash
.InsertNTString IniName
.InsertHEADER &H3D
.SendPacket frmMain.sckBnet
End With
End Sub
Public Sub Send0x14()
'MsgBox udpstamp
Chat.AddChat vbGreen, "Sending 0x14"
With buf2
'.InsertDWORD udpstamp
.InsertSTRING "tenb"
.InsertHEADER &H14
.SendPacket frmMain.sckBnet
End With
End Sub
Public Sub Send0x0A()
Chat.AddChat vbGreen, "Sending 0x0A"
With buf2
.InsertNTString IniName
.InsertNTString "" 'Null
.InsertHEADER &HA
.SendPacket frmMain.sckBnet
End With
End Sub
Public Sub Send0x0B()
With buf2
.InsertSTRING "PXES"
.InsertHEADER &HB
.SendPacket frmMain.sckBnet
End With
End Sub
Public Sub Send0x0C()
Chat.AddChat vbGreen, "Sending 0x0C"
With buf2
.InsertDWORD &H2
.InsertNTString IniHome
.InsertHEADER &HC
.SendPacket frmMain.sckBnet
End With
End Sub
Public Sub Send0x0E(Text As String)
With buf2
.InsertNTString Text
.InsertHEADER &HE
.SendPacket frmMain.sckBnet
End With
Chat.AddChat "&H" & StrReverse("736AFF"), "<" & IniName & "> " & Text
End Sub
Public Sub Send0x25(Data As String)
With buf2
.InsertDWORD buf2.GetDWORD(Mid(Data, 5, 4))
.InsertHEADER &H25
.SendPacket frmMain.sckBnet
End With
End Sub
Public Sub Send0x65()
With buf2
.InsertHEADER &H65
.SendPacket frmMain.sckBnet
End With
End Sub
Public Sub ParseBinary(strData As String)
Dim Flags&, Ping&, Username$, Statstring$
If Len(strData) < 4 Then Exit Sub
GetValues strData, Ping, Flags, Username, Statstring
Select Case Asc(Mid(strData, 5, 1))
Case ID_WHISPFROM: RecvWhisper Username, Flags, Statstring
Case ID_TALK: Talk Username, Flags, Statstring, Ping
Case ID_EMOTE: Emote Username, Flags, Statstring
Case ID_JOIN: Join Username, Flags, Statstring, Ping
Case ID_USER: User Username, Flags, Statstring, Ping, strData
'Case ID_FLAGS: Event_Flags Username, Flags, Statstring, Ping
'Case ID_ERROR: Event_Error Statstring
Case ID_WHISPTO: SendWhisper Username, Flags, Statstring, Ping
Case ID_CHAN: Channel Statstring
Case ID_INFO: Info Statstring
Case ID_LEAVE: Leave Username, Flags
Case SID_FRIENDSLIST: Chat.AddChat vbRed, strData
'Case Else: Unknown strData
End Select
End Sub
Public Sub Channel(Statstring As String)
Chat.AddChat vbYellow, "Joined Channel " & Statstring
frmMain.Label1.Caption = IniName & " [" & Statstring & "]"
End Sub
Public Sub Emote(User As String, Flags As Long, Text As String)
On Error Resume Next
If InStr(1, User, "*") Then User = Mid(User, InStr(1, User, "*"))
If Flags = "17" Then
Chat.AddChat vbBlue, "<" & User & " " & Text & ">"
Else
Chat.AddChat vbYellow, "<" & User & " " & Text & ">"
End If
End Sub
Private Sub Talk(User As String, Flags, Text As String, Ping)
On Error Resume Next
If InStr(1, User, "*") Then User = Mid(User, InStr(1, User, "*"))
If Flags = "17" Then
Chat.AddChat vbWhite, ("<" & User & "> " & Text)
ElseIf Flags = BNFLAGS_OP Then
Chat.AddChat vbWhite, ("<" & User & "> " & Text)
ElseIf Flags = BNFLAGS_MOD2 Then
Chat.AddChat vbWhite, ("<" & User & "> " & Text)
Else
Chat.AddChat3 vbWhite, Text, User
End If
If Left$(Text, 1) = IniTrigger Then
'CommandHandler.ParseCommand User, Mid$(Text, 2, Len(Text) - 1)
DoWork User, Mid$(Text, 2, Len(Text) - 1)
'ElseIf PrepareCheck(Text) = "?trigger" Or _
' PrepareCheck(Text) = "?trig" Or _
' PrepareCheck(Text) = "?t" Then
' CommandHandler.ParseCommand User, Mid$(Text, 2, Len(Text) - 1)
End If
End Sub
Private Sub Join(Account As String, Flags, Statstring, Ping)
On Error Resume Next
If InStr(1, Account, "*") Then Account = Mid(Account, InStr(1, Account, "*"))
Chat.AddChat vbGreen, Account & " has joined the channel. [" & Ping & "ms]"
End Sub
Private Sub Leave(User As String, Flags)
On Error Resume Next
If InStr(1, User, "*") Then User = Mid(User, InStr(1, User, "*"))
If Flags = "17" Then
Chat.AddChat vbBlue, (User & " has left the channel")
Else
Chat.AddChat vbRed, (User & " has left the channel")
End If
End Sub
Private Sub User(User As String, Flags, Statstring, Ping, RealStatString)
On Error Resume Next
End Sub
Private Sub SendWhisper(ToUser As String, Flags, Text As String, Ping)
If InStr(1, ToUser, "*") Then ToUser = Mid(ToUser, InStr(1, ToUser, "*"))
If Not LCase(ToUser) = LCase(Username) Then
Chat.AddChat "&H" & StrReverse("99FF33"), "<To: " & ToUser & "> " & Text
End If
End Sub
Private Sub RecvWhisper(User As String, Flags, Text)
If Flags = "17" Then
Chat.AddChat "&H" & StrReverse("99FF33"), ("<From: " & User & "> " & Text)
ElseIf Flags = BNFLAGS_OP Then
Chat.AddChat "&H" & StrReverse("99FF33"), ("<From: " & User & "> " & Text)
ElseIf Flags = BNFLAGS_MOD2 Then
Chat.AddChat "&H" & StrReverse("99FF33"), ("<From: " & User & "> " & Text)
Else
Chat.AddChat "&H" & StrReverse("99FF33"), ("<From: " & User & "> " & Text)
End If
If Left$(Text, 1) = IniTrigger Then
DoWork User, Mid$(Text, 2, Len(Text) - 1)
End If
End Sub
Private Sub Info(Info As String)
Chat.AddChat vbYellow, Info
End Sub
Function MakeLong(X As String) As Long
If Len(X) < 4 Then
Exit Function
End If
CopyMemory MakeLong, ByVal X, 4
End Function
Public Sub strcpy(ByRef Source As String, ByVal nText As String)
Source = Source & nText
End Sub
Public Function KillNull(ByVal Text As String) As String
Dim i As Integer
i = InStr(1, Text, Chr(0))
If i = 0 Then
KillNull = Text
Exit Function
End If
KillNull = Left(Text, i - 1)
End Function
Public Sub GetValues(ByVal DataBuf As String, ByRef Ping As Long, ByRef Flags As Long, ByRef Name As String, ByRef Txt As String)
Dim a As Long, b As Long, C As Long, d As Long, e As Long, f As Long, recvbufpos As Long
Name = ""
Txt = ""
recvbufpos = 5
f = MakeLong(Mid$(DataBuf, recvbufpos, 4))
recvbufpos = recvbufpos + 4
a = CVL(Mid$(DataBuf, recvbufpos, 4))
recvbufpos = recvbufpos + 4
b = MakeLong(Mid$(DataBuf, recvbufpos, 4))
recvbufpos = recvbufpos + 4
C = MakeLong(Mid$(DataBuf, recvbufpos, 4))
recvbufpos = recvbufpos + 4
d = MakeLong(Mid$(DataBuf, recvbufpos, 4))
recvbufpos = recvbufpos + 4
e = MakeLong(Mid$(DataBuf, recvbufpos, 4))
recvbufpos = recvbufpos + 4
Flags = a
Ping = b
Call strcpy(Name, KillNull(Mid$(DataBuf, 29)))
Call strcpy(Txt, KillNull(Mid$(DataBuf, Len(Name) + 30)))
End Sub
Function CVL(X As String) As Long
If Len(X) < 4 Then
MsgBox "CVL(): String too short"
Stop
End If
CopyMemory CVL, ByVal X, 4
End Function
Function TimerProc(hWnd As Long, uMsg As Long, EventID As Long, dwTime As Long) As Long
TimerOn = True
Select Case WhatConnectID
Case "SC"
If FirstTime = True Then
Send0x09TCP2
Else
Select Case WatchType
Case "UMS"
Send0x09TCP
Case "TVB"
Send0x09TCPtvb
Case "MELEE"
Send0x09TCPmelee
End Select
End If
Case "W3"
Send0x09TCPWAR3
End Select
FirstTime = False
End Function
Public Sub Send0x52()
Chat.AddChat vbWhite, "Creating Account"
Dim accccount As String
accccount = IniName
Dim tmpBuf As String
tmpBuf = String(65 + Len(accccount), Chr(0)) ' Initialize buffer
If nls_account_create(NLSVal, tmpBuf, Len(tmpBuf)) = 0 Then Exit Sub
With buf2
.InsertSTRING tmpBuf ' Buffer contains entire packet body.
.InsertHEADER &H52
.SendPacket frmMain.sckBnet
End With
End Sub
Public Sub Send0x53()
Chat.AddChat vbWhite, "Sending 0x53"
Dim PassHash As String * 32
Dim Password As String
Dim Acccount As String
Acccount = IniName
Password = IniPass
NLSVal = nls_init(Acccount, LCase(Password))
Call nls_get_A(NLSVal, PassHash)
With buf2
.InsertSTRING PassHash
.InsertNTString Acccount
.InsertHEADER &H53
.SendPacket frmMain.sckBnet
End With
End Sub
Public Sub Send0x54(Data As String)
Chat.AddChat vbWhite, "Sending 0x54"
Dim M1 As String * 20, Salt As String, ValB As String
Salt = Mid(Data, 9, 32) 'value from 0x53 responce
ValB = Mid(Data, 9 + Len(Salt), 32) 'value from 0x53 responce
If Len(Salt) <> 32 Or Len(ValB) <> 32 Then Exit Sub 'messed up
Call nls_get_M1(NLSVal, M1, ValB, Salt)
With buf2
.InsertSTRING M1
.InsertHEADER &H54
.SendPacket frmMain.sckBnet
End With
End Sub