Foros del Web » Programando para Internet » ASP Clásico »

Detectar numero de tarjeta de red

Estas en el tema de Detectar numero de tarjeta de red en el foro de ASP Clásico en Foros del Web. Alguien me podria decir como capturar el numero de tarjeta de red de un cliente que visite mi web? en winxp lo puedo ver desde ...
  #1 (permalink)  
Antiguo 22/06/2005, 16:43
 
Fecha de Ingreso: junio-2005
Mensajes: 2
Antigüedad: 19 años, 10 meses
Puntos: 0
Detectar numero de tarjeta de red

Alguien me podria decir como capturar el numero de tarjeta de red de un cliente que visite mi web?
en winxp lo puedo ver desde DOS con el comando configip/all
pero lo que quiero es tenerlo en una variable para poder controlarlo programando en ASP

Gracias de antemano
  #2 (permalink)  
Antiguo 22/06/2005, 19:17
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
recuerdo que hace tiempo había un post sobre capturar desde ASP la MAC Adress de los clientes y, creo, no llegaron a nada. O si, pero mediante un ActiveX (que serviría para entornos controlados como una intranet).

Buscá MacAdress en el foro ASP a ver qué encontrás
Saludos y bienvenido al foro
__________________
...___...
  #3 (permalink)  
Antiguo 23/06/2005, 21:08
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 23 años, 4 meses
Puntos: 4
hola, tengo este codigo que no recuerdo de donde lo baje, nunca lo he probado asi que no se si sirva, pruebalo y nos comentas.

Código:
 
<%@ LANGUAGE="VBSCRIPT"%>
	<%
	 strIP = Request.ServerVariables("REMOTE_ADDR")
	 strMac = GetMACAddress(strIP)
	 strHost = Request.ServerVariables("REMOTE_HOST")
	function GetMACAddress(strIP)
	Set net = Server.CreateObject("wscript.network")
	Set sh = Server.CreateObject("wscript.shell")
	sh.run "%comspec% /c nbtstat -A " & strIP & " > c:\" & strIP & ".txt",0,true
	Set sh = nothing
	Set fso = createobject("scripting.filesystemobject")
	Set ts = fso.opentextfile("c:\" & strIP & ".txt")
	macaddress = null
	Do While Not ts.AtEndOfStream
	data = ucase(trim(ts.readline))
	if instr(data,"MAC ADDRESS") Then
	macaddress = trim(split(data,"=")(1))
	Exit Do
	End if
	loop
	ts.close
	Set ts = nothing
	fso.deletefile "c:\" & strIP & ".txt"
	Set fso = nothing
	GetMACAddress = macaddress
	End function 
	%>
	<HTML>
	<HEAD>

	<TITLE>Say Hello To the MAC MAN</TITLE>
	</HEAD>
	<BODY>
	<%Response.Write("Your IP is : " & strIP & "<BR>" & vbcrlf)%>	<%Response.Write("Your MAC is : " & strMac & vbcrlf)%>
	</BODY>
	</HTML>
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com
  #4 (permalink)  
Antiguo 27/06/2005, 10:48
 
Fecha de Ingreso: junio-2005
Mensajes: 2
Antigüedad: 19 años, 10 meses
Puntos: 0
Hola;
El Codigo me funciono muy bien despues de hacer el siguiente cambio
DICE:
strIP = Request.ServerVariables("REMOTE_ADDR")
DEBE DECIR:
strIP = Request.ServerVariables("HTTP_X_FORWARDED_FOR")

NOTA : A tener en consideracion este codigo crea un archivo Txt en el disco C: del servidor, lo que puede producir error por derechos de escritura para ello se debe direccionar a un directorio de tu Web con derechos de escritura, se recomienda hacer lo siguiente :

rutafile = Server.MapPath(".")+"\tmpfiles\"
sh.run "%comspec% /c nbtstat -A " & strIP & " > "&rutafile & strIP & ".txt",0,true

Como se ve creo un variable "rutafile" el que me apunta al directorio de mi web donde he creado un directorio temporal con derechos de escritura.
GRACIAS LEXUS...!

Cualquier cosa estamos para comunicarnos

[email protected]
  #5 (permalink)  
Antiguo 27/06/2005, 12:56
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 23 años, 4 meses
Puntos: 4
hola, gracias por corregirlo, puedes pegar por favor el codigo completo para que no quede duda de como es la forma correcta de hacerlo?
gracias..
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com
  #6 (permalink)  
Antiguo 27/06/2005, 15:19
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
¿Pero eso funciona fuera del entorno de una LAN?
(Si, si, no me cuesta casi nada problarlo.. pero la verdad que no tengo ganas ;)
__________________
...___...
  #7 (permalink)  
Antiguo 27/06/2005, 15:24
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
Muy bien, predicando con el ejemplo!

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #8 (permalink)  
Antiguo 27/06/2005, 15:37
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 21 años
Puntos: 4
bueno que es esto :

Request.ServerVariables("HTTP_X_FORWARDED_FOR")

que se supone que devuelve ?
  #9 (permalink)  
Antiguo 27/06/2005, 15:45
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 20 años, 8 meses
Puntos: 18
la IP del usuario incluso si está detrás de algún proxy transparente
  #10 (permalink)  
Antiguo 27/06/2005, 15:59
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 21 años
Puntos: 4
Gracias x responder.

Nunca la habia visto, es una IIS server variable ??? x que no me funciona.
  #11 (permalink)  
Antiguo 27/06/2005, 16:19
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 20 años, 8 meses
Puntos: 18
en local no te irá (a mi tampoco me va) pero en un servidor en internet va perfectamente
  #12 (permalink)  
Antiguo 27/06/2005, 16:23
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 20 años, 1 mes
Puntos: 2
Hola

La idea de como hacerlo esta padre, es decir, obtengo la IP y con un comando local jalo el MAC ADRESS, pero tragus tiene razon, a mi tampoco me funciona en local, no se si haya a algun otro objeto o comando que saque el MAC ADRESS, seria seguir usando el metodo pero cambiar el comando segun el caso.

Suerte!!
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #13 (permalink)  
Antiguo 27/06/2005, 17:00
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 20 años, 8 meses
Puntos: 18
A tí no te vale, pero puede ser que a alguno que venga detrás sí.

Otra forma para conseguirlo (en una LAN) sería ésta:

supongamos este escenario
-tarjeta para recuperar la MAC debe conseguir la IP por DHCP
-IIS debe correr en el mismo servidor que esta el servidor DHCP

y el funcionamiento básico sería
-copiar el .log de DHCP (\windows\system32\dhcp\dhcpsrvlog.DÍA.) a un directorio con permisos suficientes( Hay que copiarlo porque el archivo del día actual está en uso por el servidor DHCP y no puede abrirse directamente).
-Este fichero tiene la estructura

ID,Date,Time,Description,IP Address,Host Name,MAC Address
11,12/25/99,00:04:00,Renew,255.255.255.255,testbench,00C0F0 XXYYZZ


-Conseguir la IP del cliente
-buscarla en el log
-rescatar de esa línea la MAC (último campo de la línea)
-borrar el archivo copiado

y ahora, al turrón:
Código:
<% Option Explicit %>
<%
'<<<<< DECLARE ALL VARIABLES >>>>>'
Dim sRIPa
Dim sDate
Dim intRandom
Dim objFSO
Dim objTextFile
Dim sLine
Dim sMacAddr


'<<<<< OBTAIN CLIENT's IP ADDRESS >>>>>'
sRIPa = Request.ServerVariables("HTTP_X_FORWARDED_FOR")

'<<<<< OBTAIN DATE AND FORMAT FOR APPROPRIATE DHCP LOG EXTENSION >>>>>'
sDate = LEFT(FormatDateTime(Date, 1), 3)


'<<<<< REDIRECT BAD IP RANGES TO APPROPRIATE PAGE >>>>>'
If LEFT(sRIPa,  7) <> "255.255" Then

	Response.Redirect ("error_page.asp")

End If


'<<<<< CREATE TEMP FILE NAME - RANDOMLY GENERATED >>>>>'
Randomize
intRandom = Int((99999 - 11111 + 1) * Rnd + 1)


'<<<<< COPY THE DHCP LOG TO WORKING DIRECTORY>>>>>'
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
objFSO.CopyFile "C:\winnt\system32\dhcp\DhcpSrvLog." & _
                sDate, "C:\working\"
& intRandom & ".txt"
Set objFSO = Nothing


'<<<<< OBTAIN THE MAC ADDRESS FROM THE COPIED DHCP LOG >>>>>'
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile("C:\working\" & _
                  intRandom & ".txt")

Do While Not objTextFile.AtEndOfStream
	sLine = objTextFile.ReadLine 

	If InStr(sLine, sRIPa) Then
		sMacAddr = LCASE(RIGHT(sLine,12))
	End If

Loop


'<<<<< CLEAN UP AND DELETE THE TEMPORARY FILE >>>>>'
objTextFile.Close
Set objTextFile = Nothing
objFSO.DeleteFile ("C:\working\" & intRandom & ".txt")
Set objFSO = Nothing


'<<<<< FORMAT THE MAC ADDRESS >>>>>'
sMacAddr = LEFT(sMacAddr, 4) & "." & MID(sMacAddr, 5, 4) & "." &
RIGHT(sMacAddr, 4)


'<<<<< GENERATE THE HTML OUTPUT >>>>>'
Response.Write ("<HTML><FORM><TABLE BORDER=0 ALIGN=LEFT><TR><TD>")
Response.Write ("<B>IP Address:</B></TD><TD><INPUT TYPE='TEXT'")
Response.Write (" SIZE=15 VALUE='" & sRIPa & "'>")
Response.Write ("</TD></TR>")
Response.Write ("<TR><TD><B>MAC Address:</B>  </TD><TD>")
Response.Write ("<INPUT TYPE=TEXT SIZE=15 VALUE='" & sMacAddr)
Response.Write ("'></TD>")
Response.write ("</TR></TABLE></FORM></HTML>")

%>
Nota: la MAC de los usuarios de Macintosh es más larga que las demás, pero los 12 últimos caracteres son, en sí, la MAC real.
Nota:Los permisos necesarios para el usuario IUSR son LEER en \windows\system32\dhcp y LEER,ESCRIBIR Y BORRAR en el directorio de copia

**traducción libre de un artículo en http://www.4guysfromrolla.com/
  #14 (permalink)  
Antiguo 27/06/2005, 23:34
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 20 años, 1 mes
Puntos: 2
Hola!

Muy buen script y muy buena explicación, muy completo, gracias.

El único detalle que veo, y no se que pasaría, es que por lo general para lograr tener una red más estable, se recomienda apagar el DHCP y poner IP's fijas en las computadoras, de hecho así lo hago yo por esa misma razón, una red más estable, y si, si funciona muy bien tener el DHCP apagado, entonces este método para ese caso creo que no funcionaría bien, porque el DHCP no guarda un LOG, bueno, eso creo.

Imagino que por esta razón de que existen varios casos diferentes, es que como dijo AZ, se utiliza algún ActiveX para asegurar mejor el caso.

O como dije, habria que buscar un comando que diga, si no existe mac en netbios, entonces buscalo en dhcp, si no existe en dhcp, entonces busca en otro comando, no se cual otro haya que te regrese el mac adress.

Suerte!!
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #15 (permalink)  
Antiguo 29/08/2005, 15:52
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 21 años, 6 meses
Puntos: 27
funciona para obtener la mac de una maquina fuera de la intranet?
__________________
JuanRa Pérez
San Salvador, El Salvador
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:49.