All pastes #484140 Raw Edit

Stuff

public text v1 · immutable
·published 2007-05-12 01:44 UTC
rendered paste body
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=