elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Seriales de Pen-Drives conectados (SRC)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] 3 Ir Abajo Respuesta Imprimir
Autor Tema: Seriales de Pen-Drives conectados (SRC)  (Leído 11,646 veces)
Maurice_Lupin


Desconectado Desconectado

Mensajes: 356

GPS


Ver Perfil WWW
Re: Seriales de Pen-Drives conectados (SRC)
« Respuesta #10 en: 7 Octubre 2011, 21:36 pm »

mmm... me parece q me fuí al carajo  >:D




:xD


En línea

Un error se comete al equivocarse.
Hasseds

Desconectado Desconectado

Mensajes: 145



Ver Perfil
Re: Seriales de Pen-Drives conectados (SRC)
« Respuesta #11 en: 7 Octubre 2011, 21:49 pm »

Nada, leí mal y me equivoqué en una respuesta, pero ya está editado. xD





En línea

Sergio Desanti
Maurice_Lupin


Desconectado Desconectado

Mensajes: 356

GPS


Ver Perfil WWW
Re: Seriales de Pen-Drives conectados (SRC)
« Respuesta #12 en: 8 Noviembre 2011, 17:58 pm »

Intente pasar tu code a VB2005 yo utilizo el Sharpdevelop
Estoy averiguando como utilizar la API
SetWindowLong(hWnd, GWL_WNDPROC, AddressOf WindowProc)

me da problemas con AddressOf WindowProc si tienes alguna recomendación, algún link que puedas compartir te lo agradeceria. Seguiré averiguando.

Saludos


En línea

Un error se comete al equivocarse.
Hasseds

Desconectado Desconectado

Mensajes: 145



Ver Perfil
Re: Seriales de Pen-Drives conectados (SRC)
« Respuesta #13 en: 8 Noviembre 2011, 19:05 pm »

En VB.Net no tengo ni idea de como capturar los mensajes del Form, pero mirá este link, aparentemente es un hook al mouse... tal vez te sirva de ejemplo para AddressOf .

http://support.microsoft.com/kb/319524






« Última modificación: 8 Noviembre 2011, 19:20 pm por Hasseds » En línea

Sergio Desanti
Maurice_Lupin


Desconectado Desconectado

Mensajes: 356

GPS


Ver Perfil WWW
Re: Seriales de Pen-Drives conectados (SRC)
« Respuesta #14 en: 9 Noviembre 2011, 04:11 am »

Funciona muy bien, gracias por el dato, seria muy bueno pasar tu code de los seriales a VB2005. Yo uso el http://www.icsharpcode.net/OpenSource/SD/ para no pagar licencia.

Gracias.
En línea

Un error se comete al equivocarse.
Maurice_Lupin


Desconectado Desconectado

Mensajes: 356

GPS


Ver Perfil WWW
Re: Seriales de Pen-Drives conectados (SRC)
« Respuesta #15 en: 4 Diciembre 2011, 20:09 pm »

Hola tengo una consulta la clase: "{53f56307-b6bf-11d0-94f2-00a0c91efb8b}" me detecta hasta las unidades de disco IDE, si alguien tuviera discos SATA para ver si los detecta
Código
  1. Public Function FlashSerials() As String
  2.    Dim cad As String
  3.   Dim TGUID As GUID
  4.  
  5.   Call IIDFromString(StrPtr("{53f56307-b6bf-11d0-94f2-00a0c91efb8b}"), TGUID)
  6.  
  7.   Dim hDev As Long
  8.   ' puntero a la clase de los USB
  9.   hDev = SetupDiGetClassDevs(TGUID, &H0, &H0, &H12)
  10.  
  11.   If hDev = -1 Then Exit Function
  12.  
  13.   Dim lCount       As Long
  14.   Dim lSize        As Long
  15.   Dim DTL          As SP_DEVICE_INTERFACE_DETAIL_DATA
  16.   Dim DTA          As SP_DEVICE_INTERFACE_DATA
  17.  
  18.   DTA.cbSize = Len(DTA)
  19.   DTL.cbSize = &H5
  20.   lCount = &H0
  21.  
  22.   While Not (SetupDiEnumDeviceInterfaces(hDev, &H0, TGUID, lCount, DTA) = &H0)
  23.  
  24.     Call SetupDiGetDeviceInterfaceDetail(hDev, DTA, ByVal &H0, &H0, lSize, ByVal &H0)
  25.  
  26.     Call SetupDiGetDeviceInterfaceDetail(hDev, DTA, DTL, ByVal lSize, lSize, ByVal &H0)
  27.  
  28.     If UBound(Split(DTL.strDevicePath, "#")) > 1 Then
  29.        cad = cad & Split(UCase$(DTL.strDevicePath), "#")(1) & _
  30.         " - " & Split(UCase$(DTL.strDevicePath), "#")(2) & Chr$(&HD)
  31.        'cad = cad & DTL.strDevicePath & Chr(10)
  32.     End If
  33.  
  34.     lCount = lCount + 1
  35.   Wend
  36.  
  37.   Call SetupDiDestroyDeviceInfoList(hDev)
  38.   FlashSerials = cad
  39.   If FlashSerials = "" Then FlashSerials = "No hay conexiones"
  40.  
  41. End Function
  42.  
En línea

Un error se comete al equivocarse.
Hasseds

Desconectado Desconectado

Mensajes: 145



Ver Perfil
Re: Seriales de Pen-Drives conectados (SRC)
« Respuesta #16 en: 4 Diciembre 2011, 22:24 pm »

Hola Maurice_Lupin , la clase 53f56307-b6bf-11d0-94f2-00a0c91efb8b si detecta los discos Sata 1 y sata 2, todavia no pude probar con Sata 3 pero seguramente tambien los detecta ya que es la misma interface.

Esta clase tambien detecta (o enumera mejor dicho) Discos IDE, ZIP de interface IDE y Dispositivos de almacenamiento USB... por lo tanto deberás filtrar los retornos de acuerdo a lo que quieras listar, por ejemplo en el codigo original solo listé la interface USB

 If InStr(UCase$(DTL.strDevicePath), "USB") Then      

http://foro.elhacker.net/programacion_visual_basic/seriales_de_pendrives_conectados_src-t331333.0.html;msg1664147#msg1664147



Nota: Las interfaces "IDE" & Sata no retornan el Serial verdadero por esta vía... A Diferencia de la interface USB que sí se puede obtener con este método


La clase a5dcbf10-6530-11d2-901f-00c04fb951ed solo enumera Dispositivos de almacenamiento USB, por lo tanto no hay que "filtrar retornos"
http://foro.elhacker.net/programacion_visual_basic/seriales_de_pendrives_conectados_src-t331333.0.html;msg1629437#msg1629437








« Última modificación: 5 Diciembre 2011, 01:39 am por Hasseds » En línea

Sergio Desanti
Maurice_Lupin


Desconectado Desconectado

Mensajes: 356

GPS


Ver Perfil WWW
Re: Seriales de Pen-Drives conectados (SRC)
« Respuesta #17 en: 5 Diciembre 2011, 06:51 am »

Gracias Hasseds, usando WMI me devuelve casi el mismo serial de IDE que utilizando la clase 53f56307-b6bf-11d0-94f2-00a0c91efb8b , estas seguro que no es el serial verdadero?  :-[

Saludos.

En línea

Un error se comete al equivocarse.
BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: Seriales de Pen-Drives conectados (SRC)
« Respuesta #18 en: 5 Diciembre 2011, 09:12 am »

.
Aclarando un punto crucial es que NO SE LE CONOCE COMO CLASES son GUID esos identificadores...

Dulces Lunas!¡.
En línea

The Dark Shadow is my passion.
Hasseds

Desconectado Desconectado

Mensajes: 145



Ver Perfil
Re: Seriales de Pen-Drives conectados (SRC)
« Respuesta #19 en: 5 Diciembre 2011, 18:52 pm »

Sí, en adelante será mejor referirse a estas clases de dispositivos como GUID.





estas seguro que no es el serial verdadero?  :-[


Segurísimo !!!


Seriales de Hard Disk conectados (Solo funciona como usuario Administrador ):


Código
  1.  
  2. Option Explicit
  3.  
  4. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  5. ' Function: SerialHD
  6. ' Autor: Adrian Desanti (Dessa)
  7. ' Creditos: es una adaptacion a mis necesidades de una clase de Antonio Giuliana
  8. ' Agradecimientos: Karcrak (IsAdministrador)
  9. ' Requisitos : Windows NT + Administrador
  10. ' Rertorno: retorna el serial verdadero de Discos IDE o S-ATA conectados
  11. ' Serial verdadero: Es el que figura en la etiqueta del Disco y no cambia al formatear
  12. ' Fecha : V.2 Septiembre 2010
  13. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  14.  
  15. Private Declare Function CheckTokenMembership Lib "ADVAPI32" (ByVal TokenHandle As Long, ByVal pSidToCheck As Long, ByRef IsMember As Boolean) As Long
  16.  
  17. Private Declare Function GetVersion Lib "KERNEL32" () As Long
  18. Private Declare Function CreateFile Lib "KERNEL32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByVal lpSecurityAttributes As Long, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
  19. Private Declare Function CloseHandle Lib "KERNEL32" (ByVal hObject As Long) As Long
  20. Private Declare Function DeviceIoControl Lib "KERNEL32" (ByVal hDevice As Long, ByVal dwIoControlCode As Long, lpInBuffer As Any, ByVal nInBufferSize As Long, lpOutBuffer As Any, ByVal nOutBufferSize As Long, lpBytesReturned As Long, ByVal lpOverlapped As Long) As Long
  21. Private Declare Sub ZeroMemory Lib "KERNEL32" Alias "RtlZeroMemory" (dest As Any, ByVal numBytes As Long)
  22.  
  23. Private Type IDEREGS
  24.    bFeaturesReg As Byte: bSectorCountReg As Byte: bSectorNumberReg As Byte: bCylLowReg As Byte: bCylHighReg As Byte: bDriveHeadReg As Byte: bCommandReg As Byte: bReserved As Byte
  25. End Type
  26. Private Type SENDCMDINPARAMS
  27.    cBufferSize As Long: irDriveRegs As IDEREGS: bDriveNumber As Byte: bReserved(1 To 3) As Byte: dwReserved(1 To 4) As Long
  28. End Type
  29. Private Type DRIVERSTATUS
  30.    bDriveError As Byte: bIDEStatus As Byte: bReserved(1 To 2) As Byte: dwReserved(1 To 2) As Long
  31. End Type
  32. Private Type SENDCMDOUTPARAMS
  33.    cBufferSize As Long: DStatus As DRIVERSTATUS: bBuffer(1 To 512) As Byte
  34. End Type
  35.  
  36. Private Declare Function IIDFromString Lib "ole32" (ByVal lpsz As Long, ByRef lpiid As GUID) As Long
  37. Private Declare Function SetupDiGetClassDevs Lib "setupapi.dll" Alias "SetupDiGetClassDevsA" (ByVal ClassGuid As Long, ByVal Enumerator As Long, ByVal HwndParent As Long, ByVal flags As Long) As Long
  38. Private Declare Function SetupDiEnumDeviceInterfaces Lib "setupapi.dll" (ByVal DeviceInfoSet As Long, ByVal DeviceInfoData As Long, ByRef InterfaceClassGuid As GUID, ByVal MemberIndex As Long, ByRef DeviceInterfaceData As SP_DEVICE_INTERFACE_DATA) As Long
  39. Private Declare Function SetupDiDestroyDeviceInfoList Lib "setupapi.dll" (ByVal DeviceInfoSet As Long) As Long
  40.  
  41. Private Type GUID
  42.    Data1 As Long: Data2 As Integer: Data3 As Integer: Data4(0 To 7) As Byte
  43. End Type
  44.  
  45. Private Type SP_DEVICE_INTERFACE_DATA
  46.    cbSize As Long: InterfaceClassGuid As GUID: flags As Long: Reserved As Long
  47. End Type
  48.  
  49.  
  50. Private Sub Form_Load()
  51.  
  52.  If (GetVersion And &HFF) > &H5 Then
  53.    If App.LogMode = 0 Then
  54.        MsgBox "En Vista o Seven ejecutar compilado en modo Administrador"
  55.        End
  56.    End If
  57.  End If
  58.  
  59.  
  60.  AutoRedraw = True
  61.  FontBold = True
  62.  Caption = ""
  63.  Print SerialHD()
  64.  
  65.  
  66.  
  67. End Sub
  68.  
  69. Public Function SerialHD() As String
  70.  
  71.  If (GetVersion And &HFF) < 5 Then
  72.    SerialHD = "Sistema Operativo No válido"
  73.    Exit Function
  74.  End If
  75.  
  76.  If IsAdministrador = False Then
  77.    SerialHD = "Se requiere usuario Administrador"
  78.    Exit Function
  79.  End If
  80.  
  81.  Dim RetDiskCount  As Long
  82.  
  83.  RetDiskCount = DiskCount()
  84.  
  85.  If RetDiskCount < 0 Then
  86.    SerialHD = "DiskCount No válido"
  87.    Exit Function
  88.  End If
  89.  
  90.  Dim nDisco        As Long
  91.  Dim hdh           As Long
  92.  Dim hddfr         As Byte
  93.  Dim hddln         As Byte
  94.  Dim bin           As SENDCMDINPARAMS
  95.  Dim bout          As SENDCMDOUTPARAMS
  96.  Dim br            As Long
  97.  Dim x             As Byte
  98.  Dim s             As String
  99.  
  100.  For nDisco = 0 To RetDiskCount - 1 ' los ciclos del For serán solo la cantidad de "PhysicalDrive" conectados
  101.  
  102.      hdh = CreateFile("\\.\PhysicalDrive" & nDisco, &H3, &H0, &H0, &H3, &H0, &H0)
  103.  
  104.      If hdh = -1 Then
  105.          If nDisco = 0 Then
  106.              SerialHD = " IDE " & nDisco & " = " & "Error en CreateFile" & vbNewLine
  107.          Else
  108.              SerialHD = SerialHD & " IDE " & nDisco & " = " & "Error en CreateFile" & vbNewLine
  109.          End If
  110.      Else
  111.          hddfr = 21 ' Posicion en el buffer del SerialNumber
  112.          hddln = 20 ' Tamaño resrvado en el buffer para el SerialNumber
  113.  
  114.          Call ZeroMemory(bin, Len(bin))
  115.          Call ZeroMemory(bout, Len(bout))
  116.  
  117.          With bin
  118.              .bDriveNumber = nDisco
  119.              .cBufferSize = 512
  120.            With .irDriveRegs
  121.                If (nDisco And 1) Then
  122.                    .bDriveHeadReg = &HB0
  123.                Else
  124.                    .bDriveHeadReg = &HA0
  125.                End If
  126.                .bCommandReg = &HEC
  127.                .bSectorCountReg = 1
  128.                .bSectorNumberReg = 1
  129.            End With
  130.          End With
  131.  
  132.          'DFP_RECEIVE_DRIVE_DATA = &H7C088
  133.          Call DeviceIoControl(hdh, &H7C088, bin, Len(bin), bout, Len(bout), br, 0)
  134.  
  135.          s = ""
  136.          For x = hddfr To hddfr + hddln - 1 Step 2
  137.              If bout.bBuffer(x + 1) = 0 Then Exit For
  138.              s = s & Chr(bout.bBuffer(x + 1))
  139.              If bout.bBuffer(x) = 0 Then Exit For
  140.              s = s & Chr(bout.bBuffer(x))
  141.          Next x
  142.          Call CloseHandle(hdh)
  143.  
  144.          If Trim$(s) <> "" Then
  145.              SerialHD = SerialHD & " IDE " & nDisco & " = " & Trim$(s) & vbNewLine
  146.          End If
  147.      End If
  148.  
  149.  Next nDisco
  150.  
  151. End Function
  152.  
  153. Private Function DiskCount() As Long
  154.  
  155.    Dim TGUID   As GUID
  156.    Dim hDev    As Long
  157.  
  158.    Call IIDFromString(StrPtr("{53f56307-b6bf-11d0-94f2-00a0c91efb8b}"), TGUID)
  159.  
  160.    '&H12 ===> DIGCF_PRESENT = &H10 Or DIGCF_DEVICEINTERFACE = &H2
  161.    hDev = SetupDiGetClassDevs(VarPtr(TGUID), &H0, &H0, &H12)
  162.  
  163.    If hDev = -1 Then
  164.      DiskCount = -1
  165.      Exit Function
  166.    End If
  167.  
  168.    Dim Cnt As Long
  169.    Dim DTA  As SP_DEVICE_INTERFACE_DATA
  170.    DTA.cbSize = Len(DTA)
  171.  
  172.    While Not (SetupDiEnumDeviceInterfaces(hDev, &H0, TGUID, Cnt, DTA) = &H0)
  173.        Cnt = Cnt + 1
  174.    Wend
  175.  
  176.    Call SetupDiDestroyDeviceInfoList(hDev)
  177.  
  178.    DiskCount = Cnt
  179.  
  180. End Function
  181.  
  182. Private Function IsAdministrador() As Boolean
  183.   Dim SID(1)  As Currency
  184.   SID(0) = 36028797018964.0193@
  185.   SID(1) = 233646220.9056@
  186.   Call CheckTokenMembership(&H0, VarPtr(SID(0)), IsAdministrador)
  187. End Function
  188.  
  189.  
  190.  



« Última modificación: 6 Diciembre 2011, 00:23 am por Hasseds » En línea

Sergio Desanti
Páginas: 1 [2] 3 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines