Como enviar hexa en visual basic?

Iniciado por Fucko, 25 Marzo 2014, 20:52 PM

0 Miembros y 1 Visitante están viendo este tema.

Fucko

Hola, como puedo enviar hexa en winsock??

en realidad, se hacerlo, pero no es compatible con los windows en chino, y necesito usarlo en un windows chino....


supongamos que quiero enviar este dato...

00AABBCC

yo no puedo poner winsock.senddata "00AABBCC"

sino que tengo que ponerlo en el ascii o el char de cada byte...


sería winsock.senddata Chr$(0) & Chr$(170) & Chr$(187) & Chr$(204)

o sino, convertirlo via hextoasc

winsock.senddata hextoasc ("00AABBCC")

esto va perfecto en los windows latinos, o con ingles.....

pero no sirve en los windows chinos....

de que manera enviar hexadecimal ustedes?

gracias

saludos

Cree en los que buscan la verdad, duda de los que la han encontrado...

Fucko

Bueno, se como resolverlo....

pero esto abre otro problema....

este problema se puede solucionar así:

sim st1(4) as byte

st1(0)= &H00
st1(1)=&HAA
st1(2)=&HBB
st1(3)=&HCC



pero esto sirve, cuando yo se de antemano que hay que enviar, y lo puedo codear...

pero que pasa si tengo que tomar los valores desde un textbox?? y los valores sean lo que ingresa otra persona?? o que el dato cambie basado en un calculo basado en un numero al azar?

ahí se complica la cosa....

Cree en los que buscan la verdad, duda de los que la han encontrado...

Mad Antrax

Usa el objeto ADODB.Stream para transformar una cadena de texto ascii/unicode a stream Base64 y lo envias por winsock. Un ejemplo:

Código (vb) [Seleccionar]

Function SendFile(A)
On Error Resume Next
Set objStream = CreateObject("ADODB.Stream")
objStream.Type = 1
objStream.Open()
objStream.LoadFromFile(A)
Set objXML = CreateObject("MSXml2.DOMDocument")
Set objDocElem = objXML.createElement("Base64Data")
objDocElem.dataType = "bin.base64"
objDocElem.nodeTypedValue = objStream.Read()
B = objDocElem.text
Winsock.SendData B
End Function


Llamo la función pasándole un fichero como variable:

SendFile("C:\hola.txt")
Con ADODB.Stream leo el fichero entero
Con MSXML2 transformo el stream a Base64
Envío el fichero codificado en Base64

Hay otras formas de hacerlo, por ejemplo transformar una cadena de texto a stream binario y enviarlo como un array de bytes.

Saludos
No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.

BlackZeroX

#3
.
Hace mucho en este mismo foro se crearon cientos de funciones...

Código (vb) [Seleccionar]


'
' ////////////////////////////////////////////////////////////////
' // Autor: BlackZeroX ( Ortega Avila Miguel Angel )            //
' //                                                            //
' // Web: http://InfrAngeluX.Sytes.Net/                         //
' //                                                            //
' // |-> Pueden Distribuir Este Código siempre y cuando         //
' // no se eliminen los créditos originales de este código      //
' // No importando que sea modificado/editado o engrandecido    //
' // o achicado, si es en base a este código                    //
' ////////////////////////////////////////////////////////////////

Option Explicit
Enum ActionsHexStr
   HexToString = 0
   StringToHex
End Enum
Public Function HexAndString(ByVal vData As String, Optional Accion As ActionsHexStr = HexToString) As String
Dim LenBuffer               As Long
Dim LenOfBuffer             As Integer
Dim Puntero                 As Long
Dim I                       As Long
Dim vStep                   As Integer
   If CBool(IIf(Accion = HexToString And (Len(vData) Mod 2) = 0, True, IIf(Accion = StringToHex, True, False))) Then
       LenBuffer = IIf(Accion = HexToString, Len(vData) / 2, Len(vData) * 2)
       LenOfBuffer = IIf(Accion = HexToString, 1, 2)
       HexAndString = Space(LenBuffer)
       vStep = IIf(Accion = HexToString, 2, 1)
       Puntero = 1
       For I = 1 To Len(vData) Step vStep
           If Accion = HexToString Then
               Mid(HexAndString, Puntero, LenOfBuffer) = Chr$(Val("&H" & Mid$(vData, I, 2)))
               Puntero = Puntero + 1
           Else
               Mid(HexAndString, Puntero, LenOfBuffer) = Hex$(Asc(Mid$(vData, I, 1)))
               Puntero = Puntero + 2
           End If
       Next I
   End If
End Function



P.D.: Cuando termine de re-diseñar y de re-programar mi sitio host de archivos (FileX) vuelvo a montar mi blog.

Dulces Lunas!¡.
The Dark Shadow is my passion.

Fucko

Cree en los que buscan la verdad, duda de los que la han encontrado...

Fucko

SOLUCIONADO!!!

pude encontrar para activar la compatibilidad en el windows CHINO y ahora funciona perfecto :)

gracias!!!




Cree en los que buscan la verdad, duda de los que la han encontrado...