Perl에서 아주 기본적인 것과 관련된 질문이 있지만 효율적인 해결책을 찾을 수 없습니다.패킷의 대상 MAC 주소는 어떻게 수정합니까?
먼저 약간의 컨텍스트가 있습니다. 나는 Net::Pcap 등을 사용하고 내가 패킷을 처리하는 기능을 할 때 (pcap_loop
에 의해 사용됨) 나는 내 전체 패킷 (이더넷 헤더 + ip 헤더 + tcp/udp 헤더 + 페이로드)을 포함하는 $packet
스칼라를 얻는다. 내가 원하는 무엇
사용자 정의 대상 MAC 주소를 사용하여, 나는 pcap_sendpacket
를 사용하여 보낼 수있는 $packet
을 얻기 위해이 $packet
(이더넷 목적지)의 첫 6 바이트를 변경하는 것입니다 (예를 들어로 전달 명령 줄 인수 또는 그 이상) (예 : 00:11:22:33:44:55
). 따라서 사용자 정의 주소 (예 : split
사용)를 분할하여 대상 MAC 주소의 6 개 부분을 얻은 다음 hex
함수를 사용하여 16 진수로 변환 할 수 있습니다. 그러나 이제는 내 패킷의 첫 바이트를 수정하여 바꿉니다. 이 숫자는 hex
바이트입니다. 어떻게해야합니까?
일부 연결 (.)을 사용하여 생각했지만이 솔루션이 더러울 것이라고 생각합니다.
C로 생각했기 때문에 (이전에 C에서했기 때문에 Perl에서이 작업을 수행하고 싶습니다.) 일단 "u_char packet[]
"을 얻었 으면 내 사용자 제공 이더넷의 memcpy
주소는 내 packet[]
의 첫 번째 6 바이트이며 작동했습니다.
pack을 사용하여 항목을 바이트로 변환 할 수도 있습니다. – Eric