nic linux를 통해 직접 바이너리 파일 전달

nic linux를 통해 직접 바이너리 파일 전달

나는 내 업무를 위해 퍼저 생성을 많이 수행합니다(종종 "알 수 없는" 오래된 프로토콜에 무작위 데이터 전송). 때로는 Saleae 분석기와 나에게 맞는 Python 템플릿을 사용하여 "비트뱅"을 수행해야 합니다. 그러나 나는 좀 더 깊은 지식을 얻으려고 노력하고 있습니다. 저는 Bash에 익숙하며 TCP 소켓을 통해 직접 정보를 보내는 데 매우 경험이 많습니다.

echo "무엇이든" > /dev/tcp/[ip]/[port]

나는 역방향 쉘 호출을 가지고 놀았는데 그 중 일부는 더 낮은 수준의 소켓 함수를 직접 호출하는 것 같았고 이를 활용하는 방법을 모르겠습니다. 내 질문은 다음과 같습니다.

NIC에서 직접 바이너리 데이터를 보내는 방법은 무엇입니까? TCP/IP 인식 형식이 아니어도 상관없습니다. 스크립트로 처리할 수 있습니다. 카드에서 직접 바이너리 파일을 덤프하는 방법은 무엇입니까? 아는 사람 있나요?

Bash에서 바이너리를 덤프하는 것은 약간 까다로워서 테스트가 어려워졌습니다. 종종 "해석"되므로 프로그램과 셸 출력 자체가 다르게 처리됩니다. 16진수 덤프 ASCII를 텍스트로 변환하면 쉘이 자동으로 이를 다시 변환하므로 1/0 정보를 찾을 때 혼란스러울 수 있습니다. (echo "hex" |xxd -r -p) 내가 얻을 수 있는 가장 가까운 것은 다음과 같습니다.

실제 네트워크 트래픽의 16진수 덤프를 만듭니다.

tcpdump -nni eth0 -e -xx -XX > 새 파일

파일에는 16진수 앞의 설명과 같은 많은 "메타데이터"가 있습니다. 예를 들면 다음과 같습니다.

20:20:16.122740 80:2a:a8:8e:c4:56 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), 길이 60: 10.1.10.26이 10.1.10.1에게 말한 요청, 길이 46

그런 다음 Wireshark를 사용하여 테스트 네트워크 카드 출력을 실행합니다.

Cat 새 파일 | xxd -r -p > /dev/tcp/8.8.8.8/53

그런데 Wireshark는 이상한 일을 합니다. 브로드캐스트 패킷 ASCII를 인식하지만 bash의 자동으로 변환된 "cat newfile | xxd -r -p" 데이터에는 표시되지 않습니다...

나는 이것이 꽤 큰 주제라는 것을 알고 있습니다.

도움을 주시면 감사하겠습니다! 명확성을 위해 제 질문은 "네트워크 카드에서 직접 16진수 데이터를 덤프하는 방법입니다. "echo [무엇이든] > /dev/tcp/"를 수행할 때와 같이 하는 것이 좋습니다.

관련 정보