Test Foro de elhacker.net SMF 2.1

Programación => .NET (C#, VB.NET, ASP) => Programación General => Programación Visual Basic => Mensaje iniciado por: Fucko en 25 Marzo 2014, 20:52 PM

Título: Como enviar hexa en visual basic?
Publicado por: Fucko en 25 Marzo 2014, 20:52 PM
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

Título: Re: Como enviar hexa en visual basic?
Publicado por: Fucko en 25 Marzo 2014, 21:34 PM
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....

Título: Re: Como enviar hexa en visual basic?
Publicado por: Mad Antrax en 26 Marzo 2014, 01:27 AM
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
Título: Re: Como enviar hexa en visual basic?
Publicado por: BlackZeroX en 26 Marzo 2014, 05:30 AM
.
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!¡.
Título: Re: Como enviar hexa en visual basic?
Publicado por: Fucko en 26 Marzo 2014, 06:26 AM
Hola, gracias a ambos...

esto funcionaría en un windows chino??

porque intenté como convertirlo a ascii

http://foro.elhacker.net/programacion_visual_basic/problema_con_winsocksendata_en_sistema_operativo_chino-t411129.0.html

gracias
Título: Re: Como enviar hexa en visual basic?
Publicado por: Fucko en 27 Marzo 2014, 07:53 AM
SOLUCIONADO!!!

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

gracias!!!

(http://i.imgur.com/oSrwjaA.jpg)