문자를 네트워크에 직접 에코할 수 있습니까?

문자를 네트워크에 직접 에코할 수 있습니까?

이것이 네트워크 문제라고 하더라도 경험이 풍부한 Unix/Linux 사용자 문제라고 말하고 싶습니다.

노력하고있어수동으로 네트워크 보내기마법의 가방을 사용하여에코와 리디렉터(파일 설명자).
이것은 하나입니다컴퓨터를 깨우려면 네트워크 브로드캐스트(255.255.255.255)를 통해 데이터를 전송해야 합니다.맥 00:17:31:3F:D3:A9(FFFFFFFFFFFF 다음에 콜론 없이 16번의 MAC이 옵니다):

ffffffffffff0017313fd3a90017313fd3a90017313fd3a90017313fd3a90017313fd3a90017313fd3a90017313fd3a90017313fd3a90017313fd3a90017313fd3a90017313fd3a90017313fd3a90017313fd3a90017313fd3a90017313fd3a90017313fd3a9

평소 프로그램에서 Wake on LAN 매직 패킷을 보냈습니다(IH월또는 wakeonlanLinux용 도구)가 나에게 잘 작동합니다.캡처됩니다WireShark의 네트워크 트래픽:

매직백 작업

강조 표시된 녹색 부분을 참고하세요. 마법 가방은바르게16진수로 전송됩니다.

지금이 절호의 기회 다리디렉터 에코방법.
IP 주소, UDP 프로토콜, 포트 번호 4000을 브로드캐스트하기 위해 매직 패킷을 에코합니다.

exec 6<>/dev/udp/255.255.255.255/4000
echo "ffffffffffff0017313fd3a90017313fd3a90017313fd3a90017313fd3a90017313fd3a90017313fd3a90017313fd3a90017313fd3a90017313fd3a90017313fd3a90017313fd3a90017313fd3a90017313fd3a90017313fd3a90017313fd3a90017313fd3a9" >&6

결과가 없다(원격 컴퓨터를 깨울 수 없습니다.) WireShark의 패킷 캡처입니다.다른:

매직백이 작동하지 않아요

binary area보시다시피 이제 매직 패킷이 메시지 오른쪽(!)에 위치합니다. 왼쪽 영역에는 각각이 (ASCII 코드로 가정) F로 표시되고 , 각각은 ...등 으로 표시됩니다 . 그런데 WireShark는 데이터를 "MagicPacket"으로 감지하지 않습니다.66030

무엇인가요올바른 보내는 방법내 데이터를 쉘을 통해 네트워크 카드로 직접 전송할 수 있습니까?

추신: 이 문제를 ServerFault로 옮겨야 할까요? 나는 이것이 ASCII 또는 바이너리 변환 문제에 대한 일종의 16진수와 같다고 생각합니다.

답변1

정말 간단합니다.

  • 다음에 추가16진수 사양 "\x"두 문자마다.
  • echo -e16진수 의 경우설명했다. 다른 쉘에서 다른 작업이 수행되므로 printf사용할 수도 있습니다 .echo

동일한 샘플 데이터 사용:

echo -e "\xff\xff\xff\xff\xff\xff\x00\x17\x31\x3f\xd3\xa9\x00\x17\x31\x3f\xd3\xa9\x00\x17\x31\x3f\xd3\xa9\x00\x17\x31\x3f\xd3\xa9\x00\x17\x31\x3f\xd3\xa9\x00\x17\x31\x3f\xd3\xa9\x00\x17\x31\x3f\xd3\xa9\x00\x17\x31\x3f\xd3\xa9\x00\x17\x31\x3f\xd3\xa9\x00\x17\x31\x3f\xd3\xa9\x00\x17\x31\x3f\xd3\xa9\x00\x17\x31\x3f\xd3\xa9\x00\x17\x31\x3f\xd3\xa9\x00\x17\x31\x3f\xd3\xa9\x00\x17\x31\x3f\xd3\xa9\x00\x17\x31\x3f\xd3\xa9" >&6

이번에는 컴퓨터가 깨어나야 합니다.

  • 노트: 모든 껍질이 이렇지는 않습니다이 기능을 지원하세요. 실제로 소수만이 그렇게 합니다. 인용하다이 스레드누가 그랬는지 알아보세요. 나를 위한,시빈최신 버전의 Windows(2015년 6월)는 Bash 4.3.39(2)-release (i686-pc-cygwin)완벽하게 실행됩니다.
  • 노트 2: 안타깝게도 Ubuntu(v14.04)와 Kali(v1.1.0)는지원하지 않음오늘은 설명드린 대로이 스레드. 네트워크 호환성 문제로 인해 Bash에서 비활성화되었을 수 있습니다.
  • 노트 3/dev/protocol/host/port:글쎄요, 이것이 올바른 접근 방식이 아니라고 보고한 사람들(위 스레드 참조)이 절대적으로 옳다는 점을 인정해야 합니다 . 예를 들어, 16진수 코드는 \x0a네트워크 데이터그램에 대한 일부 제어 코드 역할을 하여 패킷을 분할합니다. 따라서 0a:11:22:33:44:55이 방법으로는 MAC 주소를 사용할 수 없습니다 . 이제 전환할 시간입니다 netcat.socat.

관련 정보