Autor Tema: Generar Direccion MAC Aleatoria en VB como? [SOLUCIONADO]  (Leído 9449 veces)

0 Usuarios y 3 Visitantes están viendo este tema.

Desconectado Jarmandaros

  • -*-Miembro Eterno-*-
  • The Communiter-
  • *****
  • Mensajes: 3873
  • -^- Despicable Member -^-
    • Jarmandaros Blog
Generar Direccion MAC Aleatoria en VB como? [SOLUCIONADO]
« : julio 15, 2008, 03:09:41 pm »
Necesito ayuda chamacos y chamacas, quiero generar un codigo en Visula Basic que me genere una direccion MAC aleatoria pero no doy con la formula o algoritmo para generarla,  ya busque en san Google y no hay mucha info al respecto asi es que les agradeceria su colaboracion, gracias de antemano  :thumbsup:

Direccion MAC en Wiki
Código: [Seleccionar]
http://es.wikipedia.org/wiki/Direcci%C3%B3n_MAC
ejemplo = 00-08-74-4C-7F-1D
« Última Modificación: agosto 30, 2008, 01:38:32 pm por Jarmandaros »
Queres Vender o Comprar un producto X? unite al grupo del Tiangue! en Facebook, solo necesitas una cuenta en FB. EL Tiangue!
Visita mi Blog

Desconectado Maitro...

  • The Communiter-
  • *
  • Mensajes: 2996
  • Maitrosoft ©®™
Re: Generar Direccion MAC Aleatoria en VB como?
« Respuesta #1 : julio 15, 2008, 03:34:22 pm »
Segun me acuerdo en Visual Basic hay una funcion para generar numeros aleatorios, luego ese numero aleatorio lo convertis a hexadecimal, lo convertis en una cadena de texto, le pones los guiones y ya es una direccion mac :D

algo asi se me ocurre por el momento :)

Desconectado JGuillen™

  • -^- Elite Silver -^-
  • The Communiter-
  • *
  • Mensajes: 3449
  • PHP,C#,MySQL,SQL
Re: Generar Direccion MAC Aleatoria en VB como?
« Respuesta #2 : julio 15, 2008, 03:56:16 pm »
con que fin keres hacer eso?  :big_boss:

Desconectado Jarmandaros

  • -*-Miembro Eterno-*-
  • The Communiter-
  • *****
  • Mensajes: 3873
  • -^- Despicable Member -^-
    • Jarmandaros Blog
Re: Generar Direccion MAC Aleatoria en VB como?
« Respuesta #3 : julio 15, 2008, 06:24:46 pm »
Segun me acuerdo en Visual Basic hay una funcion para generar numeros aleatorios, luego ese numero aleatorio lo convertis a hexadecimal, lo convertis en una cadena de texto, le pones los guiones y ya es una direccion mac :D

algo asi se me ocurre por el momento :)

Thanks Maitro, esta buena tu idea pero segun tengo entendido hay que cumplir con un protocolo o algo asi, pero para comenzar esta buena la idea.  :thumbsup:


con que fin keres hacer eso?  :big_boss:

Estoy trabajando en esto:
http://www.svcommunity.org/forum/index.php?topic=57551.0

 :thumbsup:
 
Queres Vender o Comprar un producto X? unite al grupo del Tiangue! en Facebook, solo necesitas una cuenta en FB. EL Tiangue!
Visita mi Blog

Desconectado vlad

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 6351
    • Qualium.net
Re: Generar Direccion MAC Aleatoria en VB como?
« Respuesta #4 : julio 15, 2008, 10:35:44 pm »
No soy mucho para Perl asi como para "traducirlo" a VB6, pero por si en caso te sirve:
http://www.perlmonks.org/?node_id=451219

Por otra parte este programa:
http://www.gorlani.com/publicprj/macmakeup/macmakeup.asp

Podria serte de utilidad como ejemplo (ya que hace lo que entiendo que tratas de conseguir).

Desconectado Jarmandaros

  • -*-Miembro Eterno-*-
  • The Communiter-
  • *****
  • Mensajes: 3873
  • -^- Despicable Member -^-
    • Jarmandaros Blog
Re: Generar Direccion MAC Aleatoria en VB como?
« Respuesta #5 : julio 15, 2008, 10:57:52 pm »
No soy mucho para Perl asi como para "traducirlo" a VB6, pero por si en caso te sirve:
http://www.perlmonks.org/?node_id=451219

Por otra parte este programa:
http://www.gorlani.com/publicprj/macmakeup/macmakeup.asp

Podria serte de utilidad como ejemplo (ya que hace lo que entiendo que tratas de conseguir).

Exactamente en el MACMakeUp me estoy basando, en cuanto al codigo en perl dejame decirte que se ve interesante, lo voy a estudiar a ver si le capto algo y sino ya voy a ver como lo paso a VB, de todas maneras te agradesco mucho tu aporte se que me va a servir de algo, gracias  :thumbsup:
Queres Vender o Comprar un producto X? unite al grupo del Tiangue! en Facebook, solo necesitas una cuenta en FB. EL Tiangue!
Visita mi Blog

Desconectado vlad

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 6351
    • Qualium.net
Re: Generar Direccion MAC Aleatoria en VB como?
« Respuesta #6 : julio 15, 2008, 11:04:10 pm »
 :drinks:

Este en Python es mas entendible:
http://www.redhat.com/docs/manuals/enterprise/RHEL-5-manual/en-US/RHEL510/Virtualization_Guide/ch18s22.html

Lo que me da una idea de como podrias hacerlo facilmente sin romper nada:

1ro obtenes la MAC (ej. 00-08-74-4C-7F-1D)

2do le extraes los primeros 3 pares (00-08-74) que son el identificador de la compañia.

3ro generas los otros 3 pares aleatoriamente de la forma que indica Maitro..., solo tendrias que generar numeros enteros entre 0 y 255 y luego usar HEX().



Editado: Por lo que veo en el ejemplo de Python, el 4º par hexadecimal no debe de pasar de 127 (decimal).
« Última Modificación: julio 15, 2008, 11:06:05 pm por Vlad »

Desconectado vlad

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 6351
    • Qualium.net
Re: Generar Direccion MAC Aleatoria en VB como?
« Respuesta #7 : julio 16, 2008, 06:27:25 am »
Agregando...

Ademas si queres cambiar los 6 primeros pares de la dirección MAC (lo que cambiaria el propietario de tu tarjeta) podes usar esta lista:

http://standards.ieee.org/regauth/oui/oui.txt

Y digamos tomar los identificadores de unas cuantas compañias que te gusten y seleccionarlas a la suerte a la hora de generar la nueva MAC.

Por ej. la que pusiste en tu ejemplo (00-08-74-4C-7F-1D) viene siendo propiedad de DELL:
MAC
00-08-74   (hex)
000874     (base 16)
Propietario
Dell Computer Corp.
One Dell Way
Round Rock TX 78682
UNITED STATES
« Última Modificación: julio 16, 2008, 09:37:50 am por Vlad »

Desconectado vlad

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 6351
    • Qualium.net
Re: Generar Direccion MAC Aleatoria en VB como?
« Respuesta #8 : agosto 29, 2008, 09:40:19 pm »
Me pregunto si llegaste a una solucion, para marcar el tema resuelto y para ver si compartes tu experiencia con este problema y no dejar el tema inconcluso.

Desconectado Jarmandaros

  • -*-Miembro Eterno-*-
  • The Communiter-
  • *****
  • Mensajes: 3873
  • -^- Despicable Member -^-
    • Jarmandaros Blog
Re: Generar Direccion MAC Aleatoria en VB como?
« Respuesta #9 : agosto 30, 2008, 09:06:44 am »
Bueno, pido disculpas si me habia olvidado de este tema y para no ser egoista aqui dejo la forma en que solucione mi problema.  :thumbsup:

Antes que nada quiero aclarar que el proyecto lo desarrolle en Visual Basic 6.0 y funciona (a mi modo de ver) de maravilla, para el uso que necesitaba me quedo perfecto y el codigo puede ser utilizado para muchas otras cosas.

Ademas si queres cambiar los 6 primeros pares de la dirección MAC (lo que cambiaria el propietario de tu tarjeta) podes usar esta lista:

http://standards.ieee.org/regauth/oui/oui.txt

Y digamos tomar los identificadores de unas cuantas compañias que te gusten y seleccionarlas a la suerte a la hora de generar la nueva MAC.

Por ej. la que pusiste en tu ejemplo (00-08-74-4C-7F-1D) viene siendo propiedad de DELL:
MAC
00-08-74   (hex)
000874     (base 16)
Propietario
Dell Computer Corp.
One Dell Way
Round Rock TX 78682
UNITED STATES

esto que dice Vlad es algo que sirve de mucho, de hecho este listado

Código: [Seleccionar]
http://svcommunity.org/redir/?http://standards.ieee.org/regauth/oui/oui.txt
lo tome de base para relalizar mi proyecto.

ahora la explicacion:  :big_boss:


Grax a la Wiki:

"En redes de computadoras la dirección MAC (Medium Access Control address o dirección de control de acceso al medio) es un identificador de 48 bits (6 bytes) que corresponde de forma única a una tarjeta o interfaz de red. Es individual, cada dispositivo tiene su propia dirección MAC determinada y configurada por el IEEE (los últimos 24 bits) y el fabricante (los primeros 24 bits) utilizando el OUI. La mayoría de los protocolos que trabajan en la capa 2 del modelo OSI usan una de las tres numeraciones manejadas por el IEEE: MAC-48, EUI-48, y EUI-64 las cuales han sido diseñadas para ser identificadores globalmente únicos. No todos los protocolos de comunicación usan direcciones MAC, y no todos los protocolos requieren identificadores globalmente únicos.

Las direcciones MAC son únicas a nivel mundial, puesto que son escritas directamente, en forma binaria, en el hardware en su momento de fabricación. Debido a esto, las direcciones MAC son a veces llamadas Quemadas En Las Direcciones (BIA).

La dirección MAC es un número único de 48 bits asignado a cada tarjeta de red. Se conoce también como la dirección física en cuanto identificar dispositivos de red."


Direcciones MAC: definidas por el IEEE (Instituto de Ingenieros en Electricidad y Electrónica), que asigna intervalos de direcciones para cada fabricante de tarjetas de redes. Están inscriptas en los chips de las tarjetas; cada tarjeta posee una dirección MAC que le es propia y, por lo tanto, única en la red.


1) Debemos entender la composicion de la direccion MAC

esta compuesta por 12 caracteres

ejemplo "00:04:5A:3D:31:39"

de los cuales los primeros 6 son asignados por el IEEE y corresponden a la compañia fabricante de la tarjeta de red (PCI, PCMCIA, USB, etc)

en este caso "00:04:5A" corresponde a Linksys

y los restantes 6 caracteres vendrian siendo la serie del Adaptador

en este caso "3D:31:39" que es asignado por el fabricante.

ahora bien, el codigo esta algo explicado porque en esto soy algo "POLLO"  :D

solo se va a necesitar en nuestro proyecto:

1 Form ("Form1")
2 cuadros de texto ("text1" y "text2")
1 Boton ("Command1")


Código: [Seleccionar]
'Ejemplo = 00:04:5A:3D:31:39
'Caracteres Base HEX = 1234567890 - ABCDEF

Private Sub Command1_Click()
Dim mien As String
Dim mien2 As String
Dim ptos As String

'se asigna a la variable ptos los dos puntos ":"
ptos = ":"

'mien toma el resultado de la funcion fabAle y luego
'extrae solamente el primer caracter a la izquierda
'ejemplo, si el fabAle es igual a "2431"
'el valor de mien pasa a ser "2"

mien = Left(fabAle, 1)

'y segun el ejemplo anterior con mien
'si mien es igual a "2", entonces mien tomara
'el valor de "00:11:50" perteneciente a Belkin
' y el cuadro de texto "text2" toma el valor "Belkin"

Select Case mien
Case Is = "1"
mien = "00:04:5A" '00-04-5A Linksys
Text2.Text = "Linksys"
Case Is = "2"
mien = "00:11:50" '00-11-50 Belkin
Text2.Text = "Belkin"
Case Is = "3"
mien = "00:11:5C" '00-11-5C Cisco
Text2.Text = "Cisco"
Case Is = "4"
mien = "00:19:0C" '00-19-0C Encore
Text2.Text = "Encore"
End Select

'luego pegamos los valores en el cuadro de texto "text1"

'"00" & ptos & "04" & ptos & "5A"

'primero se pega el valor de mien seguido por los dos puntos
'quedando de esta manera "00:11:50:"
'luego un numero aleatorio "00:11:50:1"
'luego una letra aleatoria "00:11:50:1A"
'luego los dos puntos "00:11:50:1A:"
'luego un numero aleatorio "00:11:50:1A:2"
'luego una letra aleatoria "00:11:50:1A:2B"
'luego los dos puntos "00:11:50:1A:2B:"
'luego un numero aleatorio "00:11:50:1A:2B:4"
'luego una letra aleatoria "00:11:50:1A:2B:4C"

'y al final nos queda esto "00:11:50:1A:2B:4C", ese es
'nuestra direccion MAC :)

Text1.Text = mien & _
ptos & Left(numAle, 1) & Left(letraAle, 1) & _
ptos & Left(numAle, 1) & Left(letraAle, 1) & _
ptos & Left(numAle, 1) & Left(letraAle, 1)
End Sub

'funcion para generar un aleatorio con los siguientes caracteres
'"ABCFEF" ya que vamos a generar un Hexadecimal
'ejemplo "DBCEFA"

Private Function letraAle() As String
Dim str$, i%, j%
Randomize
str = "ABCDEF"

For i = 1 To Len(str)
    j = Int((Len(str) * Rnd) + 1)
    letraAle = letraAle & Mid$(str, j, 1)
Next

End Function

'Funcion para generar un numero aleatorio con 10 digitos
'ejemplo "2583691470"

Private Function numAle() As String
Dim str$, i%, j%
Randomize
str = "0123456789"

For i = 1 To Len(str)
    j = Int((Len(str) * Rnd) + 1)
    numAle = numAle & Mid$(str, j, 1)
Next

End Function

'Funcion para generar un numero aleatorio con cuatro digitos
'que comprendan el 1 el 2 el 3 o el 4
'ejemplo "2431"

Private Function fabAle() As String
Dim str$, i%, j%
Randomize
str = "1234"

For i = 1 To Len(str)
    j = Int((Len(str) * Rnd) + 1)
    fabAle = fabAle & Mid$(str, j, 1)
Next

End Function

al final queda algo asi



Bueno, asi es como lo logre y me sirvio para el uso que queria darle  :thumbsup:

Por favor sean amables con los Comentarios porque ya dije que soy "POLLO" en esto de la programacion  :D

Saludos  :drinks:
« Última Modificación: agosto 30, 2008, 09:09:38 am por Jarmandaros »
Queres Vender o Comprar un producto X? unite al grupo del Tiangue! en Facebook, solo necesitas una cuenta en FB. EL Tiangue!
Visita mi Blog

Desconectado Juancho

  • The Communiter-
  • *
  • Mensajes: 1311
Re: Generar Direccion MAC Aleatoria en VB como? [SOLUCIONADO]
« Respuesta #10 : agosto 30, 2008, 10:56:42 pm »
Mmm a mi me entro una duda?? Y en que utilizas el proyecto que hicistes?? En que caso necesito generar una Dir. MAC Aleatoria?? QUe eso no viene impreso ya en el Hardware de la tarjeta de red?? O se peude cambiar?? Me llamo la atencio tu tema! jejejeje
<a href="http://www.gametracker.com/player/%7BAiPI%7DJuancho/94.127.17.72:11480/" target="_blank">
<img src="http://cache.www.gametracker.com/player/%7BAiPI%7DJuancho/94.127.17.72:11480/b_560x95.png" border="0" width="560" height="95" alt="" />
</a>