Thursday, February 10, 2011

How to create BinaryArray in VbScript?

I want to manually create a binary script and then save it as binary file.

I want to append all of the following bytes and create a binary file out of them.

&HF0
&HF1
&HF2

I want to able to do something like this :

Dim generateData(3) As Byte
generateData(0) = &HFF
generateData(1) = &HFE
generateData(2) = &HFC

But obviously As Byte doesn't work on Vbscript. I do use the following function to write binary array to disk (at least I'll when I able to create a binary array)

Function SaveBinaryData(FileName, ByteArray)
  Const adTypeBinary = 1
  Const adSaveCreateOverWrite = 2

  'Create Stream object
  Dim BinaryStream
  Set BinaryStream = CreateObject("ADODB.Stream")

  'Specify stream type - we want To save binary data.
  BinaryStream.Type = adTypeBinary

  'Open the stream And write binary data To the object
  BinaryStream.Open
  BinaryStream.Write ByteArray

  'Save binary data To disk
  BinaryStream.SaveToFile FileName, adSaveCreateOverWrite
End Function
  • I have seen something along these lines used:

    Sub WriteBinary(FileName, Buf)  
    
        Dim I, aBuf, Size, bStream  
    
        Size = UBound(Buf): ReDim aBuf(Size \ 2)  
    
        For I = 0 To Size - 1 Step 2  
    
            aBuf(I \ 2) = ChrW(Buf(I + 1) * 256 + Buf(I))  
    
        Next  
    
        If I = Size Then aBuf(I \ 2) = ChrW(Buf(I))  
    
        aBuf=Join(aBuf, "")  
    
        Set bStream = CreateObject("ADODB.Stream")  
    
        bStream.Type = 1: bStream.Open  
    
        With CreateObject("ADODB.Stream")  
    
            .Type = 2 : .Open: .WriteText aBuf  
    
            .Position = 2: .CopyTo bStream: .Close  
    
        End With  
    
        bStream.SaveToFile FileName, 2: bStream.Close  
    
        Set bStream = Nothing  
    
    End Sub
    
    dr. evil : Exactly what I was looking for! Cheers

0 comments:

Post a Comment