2009-08-31 4 views
1

ASP.NET (C#) 웹 응용 프로그램에서는 방문자 PC의 IP를 쉽게 얻을 수 있지만 ASP.NET 웹 응용 프로그램에서 방문자 PC의 MAC 주소를 얻는 방법은 무엇입니까?ASP.NET 웹 애플리케이션에서 방문자 PC의 MAC 주소를 얻는 방법은 무엇입니까?

그리고이 ASP.NET 응용 프로그램은 회사 내부의 인트라넷에서 실행되며 방문객은 회사의 동일한 인트라넷에도 있습니다.

+0

같은 인트라넷에 있다고해도 MAC에 액세스 할 수 있음을 보장하지 않습니다. 동일한 네트워크 세그먼트에 있어야합니다 (용어가 확실하지 않습니다). 이는 서버와 클라이언트 사이에 라우터가 없음을 의미합니다. 소규모 네트워크 (또는 설정이 제대로되지 않은 네트워크)를 사용하는 경우가 아니면 그렇지 않을 수 있습니다. –

+0

MAC 주소는 IP 주소와 달리 스푸핑 될 수 있으며 어떤 보안 양식에도 사용되어서는 안됩니다. – UnkwnTech

+0

예, 웹 서버와 클라이언트 PC는 우리 회사의 동일한 네트워크에서 동일한 라우터를 사용합니다. – Mike108

답변

6

MAC 주소는 IP header (또는 위의 다른 프로토콜)의 일부가 아니므로 HTTP 트래픽 만 표시되면 사용할 수 없습니다.

EDIT (OP 업데이트 후) : 클라이언트와 서버가 동일한 내부 네트워크에 있으므로 MAC 주소 대신 IP 주소에서 호스트 이름을 얻는 것이 더 좋지 않습니까? IP 주소를 기반으로 호스트 이름을 쉽게 찾을 수 있습니다.

+1

특히 MAC 주소는 사용자와 사용자 사이의 첫 번째 라우터를 넘어서 유용하지 않습니다 (네트워크 통신이 진행되는 한). –

+0

왜 downvote? –

+0

@ -1 : * 사용할 수 있기 때문에 IP 헤더의 일부가 아니라고 말하는 것이 조금 무관합니다. 물리적 주소 지정이 살아있는 곳이 아니기 때문입니다.그것은 CPU 레지스터에있는 것이 Windows API의 일부가 아니라는 것을 말하는 것과 같기 때문에 사용할 수 없습니다 .... –

1

당신은 쉽게 이것을 할 수 없습니다. 은 MAC 주소와 IP 주소 사이의 변환을 허용하는 ARP와 같은 프로토콜입니다. 그러나이 트래픽은 일반적으로 방화벽 뒤에 있기 때문에 공개 웹 사이트에서는 사용할 수 없습니다.

인트라넷에서는 ASP.NET을 통해서가 아니라 무언가를 할 수 있습니다. 이 정보를 수집하려면 다른 메커니즘을 사용해야하지만 일반적으로 이러한 도구 (예 : 패킷 스니퍼)는 개발자가 사용할 수 없으며 기업의 IS 정책에 위배 될 수 있습니다.

3

즉시 생각해 볼 수있는 대답은 사용자를 대신하여이 정보를 얻기 위해 클라이언트 브라우저에서 실행되는 ActiveX 컨트롤을 작성하는 경우에만 가능하다는 것입니다. 반면에 자바 스크립트가 정보를 얻을 COM 객체를 인스턴스화 할 수 있다면 클라이언트에서 JavaScript로 가능할 수 있습니다. 내가 생각할 수있는 또 다른 유일한 방법은 IP가 캡처되면 ARP 요청을 수행하는 Windows 서비스입니다.

1

동일한 서브넷에 있으므로 웹 서버의 ARP 테이블을 얻으려면 P/InvokeGetIpNetTable을 사용할 수 있습니다. 이 작업을 실시간으로 수행하면 추가 작업이 필요하지 않습니다. 클라이언트와 대화 중이므로 ARP 정보를 얻게됩니다. 그렇지 않으면 ARP 요청이나 일부 IP 트래픽 (예 : ap ing)을 캐시에 저장해야하며 DHCP 및 기타 네트워크 변경 (시스템이 꺼져있는 것처럼)으로 인해 가능하다는 점에 유의해야합니다 MAC에서 나중에 MAC로 변환하면 다른 대답이 생깁니다.

외부 클라이언트 (예 : 라우터의 모든 클라이언트)는 table에 나타나지 않으므로이를 처리 할 수도 있습니다. 어떤 이유로 MAC을 필요로하는 경우 기술적으로 라우터의 MAC입니다.

관련 문제