UDP 패킷은 어떻게 만듭니 까?


15

다음 Netcat 명령을 수행하고 Wireshark로 패킷을 볼 때 UDP 패킷이 잘못되었다고 말합니다.

$ echo "this is a test" | nc -u 127.0.0.1 53

마찬가지로 $ echo "this is a test" > /dev/udp/127.0.0.1/53Wireshark에서 "잘못된 패킷"오류 와 같은 명령을 사용합니다 .

여기에 이미지 설명을 입력하십시오

echo 명령은 오류없이 Netcat 서버로 전송 / 전달됩니다. 그러나 이것은 궁금해 졌습니다 : echo 또는 다른 기본 Unix 도구를 사용하여 적절한 UDP 패킷을 수동으로 구성 할 수 있습니까?

데비안과 macOS를 사용하고 있습니다.


10
스크린 샷에 따르면 포트 53이 DNS에 사용되고 패킷에 유효한 DNS 요청이 포함되어 있지 않으므로 잘못된 형식의 udp-packet 자체가 아니라 내용입니다.
tkausl

@ tkausl 당신은 절대적으로 맞습니다. 53 이외의 포트를 사용할 때는 "잘못된"오류가 없습니다. 지적 해 주셔서 감사합니다.
user322500

1
표준 프로토콜을 사용하지 않는 경우 49152 ~ 65535 범위의 포트를 사용해야합니다. Linux는 기본적으로 임시 포트로 32768 ~ 60999 범위를 사용하므로 비표준 프로토콜 중 하나를 선택하지 않는 것이 좋습니다. 그러나 61000 ~ 65535는 비표준 프로토콜에 적합한 게임입니다. 나는 보통 echo $[61002+RANDOM%4532]그 범위에서 임의의 포트 번호를 선택하는데 사용 합니다.
kasperd

1
루트로 로그인하지 마십시오. 대부분의 활동은 루트가 아닌 사용자로 수행해야합니다. 루트로 작업을 수행하면 여기에 다시 컴퓨터를 고치는 방법을 묻는 메시지가 표시되며 다시 설치할 것을 권장하지 않는 한 도움을 드릴 수 없습니다.
ctrl-alt-delor

1
@tkausl 답변으로 댓글을 올리지 않은 것에 대해 잃어버린 점을 살펴보세요 ....
George Vasiliou

답변:


41

패킷은 IP 및 UDP 관점에서 완전히 유효합니다. Wireshark의 아래쪽 창에서 Ethernet / IP / UDP에 대한 프로토콜 정보를 확장하면 패킷이 성공적으로 구문 분석 된 것을 볼 수 있습니다.

그러나 포트 53으로 예정된 Wireshark는이 패킷을 DNS 패킷으로 구문 분석하려고 시도하지 않습니다 (문자열 "this is a test"는 RFC 1035 사양에 따라 유효한 DNS 요청이 아니므로 ).

해당 링크의 사양을 따르는 경우 DNS 요청으로 구문 분석 할 때 유효한 패킷을 구성 할 수 있습니다. 패킷을 다른 포트로 보내면 Wireshark가 더 이상 DNS 요청으로 구문 분석하지 않으므로 해당 경고를 표시하지 않습니다.


15

리디렉션을 사용하여 Bash 특수 별칭으로 보낼 수 있습니다.

Bash 맨 페이지에서 :

/ dev / tcp / host / port 호스트가 유효한 호스트 이름 또는 인터넷 주소이고 port가 정수 포트 번호 또는 서비스 이름 인 경우 bash는 해당 TCP 소켓을 열려고 시도합니다.

/ dev / udp / host / port host가 유효한 호스트 이름 또는 인터넷 주소이고 port가 정수 포트 번호 또는 서비스 이름 인 경우 bash는 해당 UDP 소켓을 열려고 시도합니다.

UDP 패킷을 192.168.2.11로 보내 포트 8080으로 보냅니다.

echo "This is a test" > /dev/udp/192.168.2.11/8080

이 답변에 감사드립니다. 내 질문을 업데이트했습니다. 불행히도이 방법을 사용하면 "잘못된 패킷"오류 메시지가 나타납니다.
user322500

-1

여기에는 여러 가지 질문이 있습니다. "잘못된 패킷"에 대한 주장은 체크섬 오프 로딩에 의한 것일 수 있으며, 패킷 뷰가 완전히 보이지 않는 거짓 오류 인 경우에는 오류가 발생합니다. 일부 작업은 네트워크 하드웨어에서 수행되었습니다. WireShark에 이에 대한 설명서가 있어야합니다.

그렇지 않으면, (예 : 다양한 도구 socat, nc또는 netcat, 또는 같은 껍질에 매우 유사한 기능을 통해 ksh93또는 bash) 표준 입력에서 바이트를 가지고 가고 UDP 패킷이된다 어떤로 덤프 할 수 있습니다. 이것이 "적절한 지"여부는 프로토콜에 따라 다릅니다. 이론적으로는 DNS 또는 DHCP 패킷을 구성하고 보낼 수 있지만, 더 자주 사람들은 문제의 프로토콜을 올바르게 구현하는 라이브러리 또는 전용 소프트웨어를 사용합니다. 패킷 본문 및 응답을 처리, 타임 아웃 또는 오류 후 재시도, 패킷 헤더 필드 등을 통해 유선으로 전송 더 많은 문서를 위해 Stevens에 의해.

nmap패킷 구성과 함께 매우 사용자 지정 작업을 수행 하는 등의 특정 도구 그렇지 않으면 수동 패킷 구성을 위해 프로그래밍 언어가 일반적으로 사용되지만 대부분의 소프트웨어는 기존 라이브러리 또는 시스템 서비스를 사용하여 DNS 또는 DHCP 또는 기타 UDP 패킷을 전송합니다. 처음부터 패킷.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.