Ir para conteúdo
Fórum Script Brasil
  • 0

MAC ADRESS e IP


bareta

Pergunta

<%@ 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>

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Bala Bareta! PORÉM testei aqui e pra minha surpresa:

Microsoft VBScript runtime error '800a0046'

Permission denied

/mac.asp, line 9, que vem a ser:

sh.run "%comspec% /c nbtstat -A " & strIP & " > c:\" & strIP & ".txt",0,true

Me lembrei de um user que estava exatamente com essa dúvida...

você testou em server próprio ou datacenter?

Link para o comentário
Compartilhar em outros sites

  • 0

bom basicamente a coisa só funciona se:

1- o IIS estiver rodando atrelado a autenticação de administrador o q gera em seguida que em hospedagem você não conseguira rodar.... pois pega as info do servidor...

2- para pegar info de cada cliente o buraco e mais embaixo... shuiadisau só com activex mesmo....

Link para o comentário
Compartilhar em outros sites

  • 0

Exatamente esse o problema... pega sempre do server!

Testei aqui no meu server e rodou perfeito... mas no datacenter nem pensar!

Tava querendo implementar algo no datacenter... mas não achei grandes coisas por aí pela net... tenho um bom começo... quem sabe tentamos algo? Vou dar uma organizada nele aqui fazer mais uns testes e posto aqui pra testarmos!

Edit.: parece que php tem um jeito facinho de fazer isso... vou dar uma sondada nisso tb!

Link para o comentário
Compartilhar em outros sites

  • 0

EM PHP

function returnmacAddress() { 
// This code is under the GNU Public Licence 
// Written by michael_stankiewicz {don't spam} at yahoo {no spam} dot com 
// Tested only on linux, please report bugs 

// WARNinG: the commands 'which' and 'arp' should be executable 
// by the apache user; on most linux boxes the default configuration 
// should work fine 

// get the arp executable path 
$location = `which arp`; 
$location = rtrim($location); 
// Execute the arp command and store the output in $arpTable 
$arpTable = `$location -n`; 
// Split the output so every line is an entry of the $arpSplitted array 
$arpSplitted = split("\n",$arpTable); 
// get the remote ip address (the ip address of the client, the browser) 
$remoteIp = $GLOBALS['REMOTE_ADDR']; 
$remoteIp = str_replace(".", "\\.", $remoteIp); 
// Cicle the array to find the match with the remote ip address 
foreach ($arpSplitted as $value) { 
// Split every arp line, this is done in case the format of the arp 
// command output is a bit different than expected 
$valueSplitted = split(" ",$value); 
foreach ($valueSplitted as $spLine) { 
if (preg_match("/$remoteIp/",$spLine)) { 
$ipFound = true; 
} 
// The ip address has been found, now rescan all the string 
// to get the mac address 
if ($ipFound) { 
// Rescan all the string, in case the mac address, in the string 
// returned by arp, comes before the ip address 
// (you know, Murphy's laws) 
reset($valueSplitted); 
foreach ($valueSplitted as $spLine) { 
if (preg_match("/[0-9a-f][0-9a-f][:-]". 
"[0-9a-f][0-9a-f][:-]". 
"[0-9a-f][0-9a-f][:-]". 
"[0-9a-f][0-9a-f][:-]". 
"[0-9a-f][0-9a-f][:-]". 
"[0-9a-f][0-9a-f]/i",$spLine)) { 
return $spLine; 
} 
} 
} 
$ipFound = false; 
} 
} 
return false; 
}

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...