Public Enum Socket_Data
RAW = 1
Bnet = 2
FTP1 = 3
FTP2 = 4
End Enum
Private Buffer As String
Public Function MakeDWORD(value As Long) As String
Dim strReturn As String * 4
RtlMoveMemory ByVal strReturn, value, 4
MakeDWORD = strReturn
End Function
Public Function MakeWORD(value As Integer) As String
Dim strReturn As String * 2
RtlMoveMemory ByVal strReturn, value, 2
MakeWORD = strReturn
End Function
Public Function InsertBYTE(Data As Integer)
Buffer = Buffer & Chr(Data)
End Function
Public Function InsertWORD(Data As Integer)
Buffer = Buffer & MakeWORD(Data)
End Function
Public Function InsertDWORD(Data As Long)
Buffer = Buffer & MakeDWORD(Data)
End Function
Public Function InsertNTString(Data As String)
Buffer = Buffer & Data & Chr(0)
End Function
Public Function InsertNonNTString(Data As String)
Buffer = Buffer & Data
End Function
Public Sub Clear()
Buffer = ""
End Sub
Public Property Get GetData() As String
GetData = Buffer
Call Clear
End Property
Public Property Get PeekData() As String
PeekData = Buffer
End Property
Public Function SendBuffer(ByVal SocketHandle As Winsock, ByVal C_DATA_TYPE As Socket_Data, Optional PacketID As Integer = &H0) As Long
Select Case C_DATA_TYPE
Case Socket_Data.RAW
Buffer = Buffer
Case Socket_Data.Bnet
Buffer = Chr(&HFF) & Chr(PacketID) & MakeWORD(Len(Buffer) + 4) & Buffer
Case Socket_Data.FTP1
If SocketHandle.State = sckConnected Then
SocketHandle.SendData MakeWORD(Len(Buffer) + 2)
End If
Case Else
Call Clear
Exit Function
End Select
If SocketHandle.State = sckConnected Then
SocketHandle.SendData Buffer
End If
Debug.Print DebugOutput(Buffer) 'Lets see wtf were doing
Call Clear
End Function
Public Function pIPDWORD(ByVal IP As String) As String
Dim tmp() As String, I As Integer, Out As String
tmp = Split(IP, ".")
For I = LBound(tmp) To UBound(tmp)
Out = Out & Chr(tmp(I))
Next I
pIPDWORD = Out
End Function
Public Function IP_DWORD(ByRef IP As String) As Long
Dim tmp() As String, I As Integer, Out As String
tmp = Split(IP, ".")
For I = LBound(tmp) To UBound(tmp)
Out = Out & Chr(tmp(I))
Next I
IP_DWORD = MakeLong(StrReverse(Out))
End Function
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 Function MakeLong(x As String) As Long
RtlMoveMemory MakeLong, ByVal x, 4
End Function
What I have so far:
class Enumerate(object):
def __init__(self, names):
for number, name in enumerate(names.split()):
setattr(self, name, number)
Socket_Data = Enumerate('RAW BNET FTP1 FTP2')
def MakeDWORD(value):
strReturn=