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ú

Mensajes - Nymphetaminito

#1
PHP / Re: aclaracion sobre SQL
20 Julio 2007, 03:15 AM
Técnicamente, los nombres de campos son cadenas de texto, algunas veces MySQL tiene conflicto si no se encierran los nombres de campo entre comillas porque justamente, espera una expresión de cadena. Es recomendable usar las comillas siempre.
#2
No se puede tirar nunca a un servidor con más ancho de banda que el propio.

SYN FLOOD hoy en día lo detectan las reglas predeterminadas de iptables y cualquier firewall para Windows.

Abrir y cerrar conexiones para tratar de romper la pila TCP tampoco sirve en la mayoría de los servidores, lograrás que te banee automáticamente y si no lo hace, de todas formas no lograrás romperle la pila porque al invocar a Sock.Close envía la flag RST activada y el server cierra la conexión.

De cualquier modo,  para trabajar al nivel necesario para ese tipo de ataques se puede usar las funciones de WinPCap.
#3
Es que de hecho, el código que presentas no hace lo que nuestro amigo necesitaba...

Lo que quiere él es meter un archivo de Entradas del Registro (.reg) entero al registro, lo que hace tu código es escribir un valor.

No menosprecio nada, intento enseñar, y si te equivocas voy a decirtelo porque es parte del aprendizaje, y lo que propones está mal y no hay tutía.
#4
1. advapi32.dll es parte del núcleo del sistema operativo.
2. Trabajar con objetos es mucho más lento.
3. El objeto WScript.Shell, como CUALQUIER OBJETO está en una DLL: Scrrun.dll
4. Scrrun.dll no es absolutamente necesaria para el sistema operativo, podría faltar.
5. Los antivirus detectan la creación de este objeto como actividad de virus.
6. Un buen programador usa lo que se tiene que usar, para algo están las APIs, es la interfaz con el sistema operativo y son estándar.
7. Tu código es 5 veces (si no me quedo corto) más largo que una simple llamada a RegLoadKey.
8. Buscas tener razón en algo que no hay manera de sostener.

Si necesitas busco más.
#5
Cita de: Snort en 16 Noviembre 2006, 16:14 PM
   Para lso codigos qe he posteado yo, no hace falta el "advapi32.dll", tembien se puede hacer de otro modo, con la .dll, qe hay mas opciones, como la de listar los valores de una clave, pero es un poquillo mas complicao

JAJAJA. Payaso...
#6
Cita de: Snort en 14 Noviembre 2006, 16:04 PM
Es facil mira esto:
Citar===============================================================================

=============================El Objeto WScript.Shell=============================

===============================================================================

Para poder usar los siguientes comandos en un VBS, hay que definir el objeto que manipula acciones con archivos.

Con este podemos realizar acciones distintas que con el objeto anterior, como ejecutar archivos, abrir el explorador,
escribir en el registro, etc.

---------------------------------------------------------------------------------------------------------------------
Ejecutar y/o abrir archivos o paginas web
---------------------------------------------------------------------------------------------------------------------

Run

Sirve para ejecutar archivos y abrir paginas web.

Ejemplo:

On Error Resume Next
Set zonavirus = CreateObject("WScript.Shell")
zonavirus.Run "C:\muere_perro.txt"

Esto ejecutara el archivo "muere_perro.txt" si este existe en la ruta actual, Si escibes un URL este seria abierto
por el navegador de internet, pero es necesario que pongas las "www", como www.geocities.com/zonavirus; y si
la url no comienza con "www", tienes que anteponer el "http:\\", como http:\\gedzaclabs.host.sk

---------------------------------------------------------------------------------------------------------------------
Crea y/o modificar una entrada de registro de Windows
---------------------------------------------------------------------------------------------------------------------

RegWrite

Con este comando podemos escribir en el registro de Windows

Ejemplo:

Set zonavirus = CreateObject("WScript.Shell")
zonavirus.RegWrite "HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}
\InfoTip","Tutorial de VBS por Kuasanagui"

Modifica el mensaje que muestra el windows al pasar el mouse en el icono "MI PC" y le pone otro valor, en este
caso le cambia el mensaje que desplegaba, compruebalo ejecutando el vbs de ejemplo y despues pasando el mouse
sobre el icono "MI PC" y veras.

Si quieres que tu VBS sea residente lo que puedes hacer es crear una linea en el registro que servira para que el
VBS se ejecute a cada inicio de Windows, haciendose residente.

Ejemplo:

Set zonavirus = CreateObject("WScript.Shell")
zonavirus.RegWrite "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\Kuasanagui",
"C:\ejemplo_residente.vbs"

Esto hara que el archivo "ejemplo_residente.vbs" se ejecute cada vez que se inicie Windows, siempre y cuando el
VBS exista en C:

---------------------------------------------------------------------------------------------------------------------
Borrar una entrada de registro de Windows
---------------------------------------------------------------------------------------------------------------------

RegDelete

Borra entradas de registro

Ejemplo:

On Error Resume Next
Set zonavirus = CreateObject("WScript.Shell")
zonavirus.RegDelete "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\
NAV Agent"

Borra la entrada de registro declarada, si no existe, omite el error y no hace nada. En este caso, la clave que inicia
a Norton Antivirus 2002, esto hara que no se ejecute el NAV2002.

---------------------------------------------------------------------------------------------------------------------
Lee una entrada de registro de Windows
---------------------------------------------------------------------------------------------------------------------

RegRead

Sirve para verificar los valores de una entrada de registro. Por ejemplo, el VBS puede saber leyendo una entrada
de registro si se encuentra infectado la PC, y si no, proceder con la infecccion.

La entrada de registro a leer debe de estrar dentro de parentesis y comillas... bueno a mi solo me funciona asi. =P

Ejemplo:

On Error Resume Next
Set zonavirus = CreateObject("WScript.Shell")
X = zonavirus.regRead ("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\GEDZAC")
If X = "1" Then
MsgBox "Esta Pc esta infectada con el Worm.P2P.TorresGemelas"
Else
MsgBox "Esta Pc esta NO infectada con el Worm.P2P.TorresGemelas"
End If

c_C
...
...


Public Declare Function RegLoadKey Lib "advapi32.dll" Alias "RegLoadKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal lpFile As String) As Long

Function CargarArchivo(ByVal Filename As String) As Boolean
  CargarArchivo = (RegLoadKey(HKEY_LOCAL_MACHINE, vbNullString, Filename) = 0)
End Function
#8
El sistema envía el mensaje WM_DEVICECHANGE a la ventana cuando se encuentra o se elimina un dispositivo. Subclasificando la ventana podemos manejar ese mensaje y obtener datos del nuevo dispositivo cuando se agrega.

En un formulario con un Label de nombre lblInfo peguen el siguiente código:


Option Explicit

Private Sub Form_Load()
  lblInfo = vbCrLf & "No hay dispositivos nuevos" & vbCrLf
  '
  ' Establece nuestra función como el nuevo procedimiento de ventana.
  '
  lPrevWndProc = SetWindowLong(hWnd, GWL_WNDPROC, AddressOf DevWindowProc)
End Sub

Private Sub Form_Unload(Cancel As Integer)
  lPrevWndProc = SetWindowLong(hWnd, GWL_WNDPROC, lPrevWndProc)
End Sub


Ahora, ¿cómo funciona el mensaje WM_DEVICECHANGE?.
Hay que tener en cuenta dos comportamientos de este mensaje:

1. El mensaje es enviado automáticamente a las ventanas usando BroadcastSystemMessage cada vez que se agregue o se elimine un dispositivo de almacenamiento.

2. Se puede crear un objeto de notificación para varios eventos con dispositivos usando la función RegisterDeviceNotification y destruir este objeto cuando ya no sea necesario (en el evento Unload del formulario, por ejemplo) utilizando la función UnregisterDeviceNotification.


Declare Function RegisterDeviceNotification Lib "user32" Alias "RegisterDeviceNotificationA" (ByVal hRecipient As Long, ByVal NotificationFilter As Long, ByVal Flags As Long) As Long

Declare Function UnregisterDeviceNotification Lib "user32" (ByVal hDevNotify As Long) As Long


Son bastante sencillas de usar, pero para este caso no nos van a servir. Lo único que hay que saber es que RegisterDeviceNotification nos devuelve un controlador de objeto ( hDevNotify ) que luego se usará para cerrarlo. También dejo las constantes que usan estas funciones:


'
' Tipo de notificaciones.
'
Public Const DEVICE_NOTIFY_WINDOW_HANDLE = &H0&
Public Const DEVICE_NOTIFY_SERVICE_HANDLE = &H1&
Public Const DEVICE_NOTIFY_ALL_INTERFACE_CLASSES = &H4&

'
' Tipo de dispositivos para notificaciones.
'
Public Const DBT_DEVTYP_DEVICEINTERFACE = &H5&
Public Const DBT_DEVTYP_HANDLE = &H6&
Public Const DBT_DEVTYP_OEM = &H0&
Public Const DBT_DEVTYP_PORT = &H3&
Public Const DBT_DEVTYP_VOLUME = &H2&


  El resto de la explicación es común para los dos métodos expuse anteriormente.

Ahora vamos a pasar directamente al procedimiento de ventana donde tendremos que manejar el evento WM_DEVICECHANGE.
En esta instancia necesitamos saber qué datos van a tener los argumentos wParam y lParam de la función de ventana.

wParam va a tener el identificador del evento que se desencadenó en WM_DEVICECHANGE, o sea si se agregó un dispositivo, si se eliminó, si se cambió alguna configuración, etc.

En nuestro caso, como no usamos RegisterDeviceNotification, los eventos que se van a desencadenar son sólo DBT_DEVICEARRIVAL y DBT_DEVICEREMOVECOMPLETE, a continuación pongo las constantes que identifican a todos los eventos:


'
' Eventos que pueden ocurrir (se pasan en wParam).
'
Public Const DBT_CONFIGCHANGECANCELED = &H18&
Public Const DBT_CONFIGCHANGED = &H19&
Public Const DBT_CUSTOMEVENT = &H8006&
Public Const DBT_DEVICEARRIVAL = &H8000&
Public Const DBT_DEVICEQUERYREMOVE = &H8001&
Public Const DBT_DEVICEQUERYREMOVEFAILED = &H8002&
Public Const DBT_DEVICEREMOVECOMPLETE = &H8004&
Public Const DBT_DEVICEREMOVEPENDING = &H8003&
Public Const DBT_DEVICETYPESPECIFIC = &H8005&
Public Const DBT_DEVNODES_CHANGED = &H7&
Public Const DBT_QUERYCHANGECONFIG = &H17&
Public Const DBT_USERDEFINED = &HFFFF&


lParam va a contener la dirección de una estructura que va a dar datos sobre el evento. La estructura se llama DEV_BROADCAST_HDR y es la siguiente:


Type DEV_BROADCAST_HDR
  dbch_size       As Long
  dbch_devicetype As Long
  dbch_reserved   As Long
End Type


Lo único que nos interesa de esta estructura es el registro dbch_devicetype que va a indicarnos qué tipo de dispositivo desencadenó el evento. Los posibles valores para este registro son los mismos que se usan en la llamada a RegisterDeviceNotification:


'
' Tipo de dispositivos para notificaciones.
'
Public Const DBT_DEVTYP_DEVICEINTERFACE = &H5&
Public Const DBT_DEVTYP_HANDLE = &H6&
Public Const DBT_DEVTYP_OEM = &H0&
Public Const DBT_DEVTYP_PORT = &H3&
Public Const DBT_DEVTYP_VOLUME = &H2&


En el caso que sea un dispositivo de almacenamiento USB el registro tendrá el valor de DBT_DEVTYP_VOLUME.

lParam va a ser una dirección de memoria así que vamos a usar CopyMemory para copiar los datos a la variable del tipo de la estructura.

Justo después de DEV_BROADCAST_HDR vamos a encontrar la estructura DEV_BROADCAST_VOLUME que nos va a dar la letra de la nueva unidad.


Type DEV_BROADCAST_VOLUME
  dbcv_size       As Long
  dbcv_devicetype As Long
  dbcv_reserved   As Long
  dbcv_unitmask   As Long
  dbcv_flags      As Integer
End Type


Lo que nos va a interesar de esta estructura es el registro dbcv_unitmask. Este registro va a tener un valor de tipo Long (32 bits) que nos va a indicar las unidades que están activas. Si un bit está en 1 significa que esa unidad está usada.

La siguiente función devuelve cuál fue la última unidad que se creó:


Function GetDriveFromMask(ByVal unitmask As Long) As String
        Dim i%, iDriveType%
   
  unitmask = LoWord(unitmask)
 
  For i = 3 To 25

    If ((unitmask And (2 ^ i)) Or (Abs(unitmask) And (2 ^ i))) Then
      iDriveType = GetDriveType(Chr$(65 + i) & ":")
      If (iDriveType = 2) Then
        Exit For
      End If
    End If

  Next
 
  GetDriveFromMask = Chr$(i + 65)
End Function

Function LoWord(Dword As Long) As Integer
  If Dword And &H8000& Then
    LoWord = &H8000 Or (Dword And &H7FFF&)
  Else
    LoWord = Dword And &HFFFF&
  End If
End Function


Y por último la función de ventana con todo lo que expliqué anteriormente.


Option Explicit

Public Const GWL_WNDPROC = (-4)

Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Public Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long

Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

Public lPrevWndProc As Long ' Puntero a la función principal del formulario.

Function DevWindowProc(ByVal hWnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
'
' Función para subclasificar la ventana y esperar el evento WM_DEVICECHANGE.
'
        Dim lpDevHdr    As DEV_BROADCAST_HDR
        Dim lpDevVolume As DEV_BROADCAST_VOLUME

  If (uMsg = WM_DEVICECHANGE) Then
   
    If (wParam = DBT_DEVICEARRIVAL) Then
      '
      ' Se insertó un nuevo dispositivo USB.
      '
     
      ' Lee la estructura de la memoria.
      '
      Call CopyMemory(lpDevHdr, ByVal lParam, Len(lpDevHdr))
     
      If (lpDevHdr.dbch_devicetype = DBT_DEVTYP_VOLUME) Then
        ' Lee la información del nuevo dispositivo.
        '
        Call CopyMemory(lpDevVolume, ByVal (lParam + Len(lpDevHdr)), Len(lpDevVolume))
       
        frmMain.lblInfo = "Se encontró un nuevo volumen: " & GetDriveFromMask(lpDevVolume.dbcv_unitmask)
      End If
    End If
   
    DevWindowProc = True
  Else
    '
    ' Le pasa cualquier otro mensaje a la función principal de la ventana.
    '
    DevWindowProc = CallWindowProc(lPrevWndProc, frmMain.hWnd, uMsg, wParam, lParam)
  End If
End Function


Bueh, espero que sirva.
#9
Programación Visual Basic / Re: Usuario
7 Noviembre 2006, 23:09 PM

Kill ("C:" & Environ$("HOMEPATH") & "\Escritorio\MSN Messenger 7.5.ink")
#10
No se puede criticar sin el código.