2014-03-19 3 views
0

나는 서버 측에서 실행되는 scapy와 클라이언트 측에서 실행되는 scapy를 사용하여 두 개의 스크립트를 작성했습니다. 클라이언트 측에서는 스크립트가 UDP 패킷을 서버의 닫힌 포트로 보냅니다. 내 스크립트의 목적은 클라이언트가 서버로부터받은 유효하지 않은 ICMP 패킷을 수락하는지 테스트하는 것입니다. 서버 측에서는 들어오는 트래픽을 감지하고 연결할 수없는 ICMP 포트가있는 모든 UDP 패킷에 응답 할 것이며 패킷이 수신되는지 테스트 할 때마다 ICMP 패킷 (false 값)의 필드를 수정할 것입니다. 내 질문은 : 원시 필드 (페이로드)를 수정할 때 클라이언트가이 ICMP 패킷을 수락하는 것이 정상입니까? 원시 필드에 대한 제어가 없다는 의미입니다. 나는 나의 질문이 분명하기를 바랍니다. 고맙습니다.유효하지 않은 필드 ICMP 대상에 연결할 수 없음 (포트 도달 불가능) 패킷

답변

0

적어도 ID 및 시퀀스 필드의 경우 이들은 16 비트 번호가 지정된 조합 일 수 있으며 커널은 패킷을 수락하고이를 등록 된 모든 ICMP 소켓 처리기로 전달합니다.

체크섬 필드가 올바르지 않으면 수신 커널이 헤더를 처리기까지 전달하지 않습니다 (단, 레이어 스니퍼를 연결 함). 또한, 내가 테스트 한 것으로부터 타입/코드 플래그를 알려진 숫자의 잘못된 조합이나 프로토콜에 정의되지 않은 숫자로 변경하면 수신 커널이이를 처리기로 전달하지 못하지만 (링크 층 스니퍼는 여전히이를 볼 수 있습니다).

참고 나는 scapy를 사용하지 않았으며 python/socket 코드를 사용하지 않았습니다. 시스템은 Linux입니다.

관련 문제