프로그램의 직렬 출력을 jpnevulator와 같은 직렬 스니퍼가 사용하는 의사 터미널로 보냅니다.

프로그램의 직렬 출력을 jpnevulator와 같은 직렬 스니퍼가 사용하는 의사 터미널로 보냅니다.
  1. e.g. /dev/ttyS0실제 직렬 포트를 통해 원격 장치와 통신하는 응용 프로그램을 실행하고 있습니다 . 정규화된 이름 대신 숫자 접미사를 프로그램에 전달하여 등을 /dev/ttyS0사용 하도록 이 애플리케이션을 구성할 수 있습니다 ./dev/ttyS1

  2. 나는 이 직렬 포트를 통과하는 트래픽을 스니핑하는 것과 비슷한 것을 사용하고 싶습니다 jpnevulator. 그러면 jpnevulator모니터링할 애플리케이션이 연결되어야 하는 의사 터미널이 열립니다.

응용 프로그램이 를 통해 투명하게 연결되도록 포트 이름을 /dev/ttyS1실제 의사 터미널(예: ) 에 다시 할당하는 방법이 있습니까 ? 파일 링크를 통해 이를 달성할 수 있나요?/dev/pty/23/dev/pty/23/dev/ttyS1ln

답변1

내가 당신이라면 바이너리를 편집하고 /dev/ttyS%d유사한 문자열을 대체한 다음 /dev/ptyX%d(대체 문자열은 원래 문자열과 길이가 동일함) /dev/ptyX0의사 터미널의 슬레이브 측 경로를 가리키는 심볼릭 링크를 생성할 것입니다.

다소 어색한 다른 솔루션이 많이 있습니다.

a) 시스템이 Linux인 경우 일시적으로 mount --bind /dev/pts/<pty used by the sniffer> /dev/ttyS2(프로그램을 직렬 회선에 연결 2)

b) 다시 제거 /dev/ttyS2하고 pty에 대한 링크로 교체합니다.

c) qemu에서 실행하고 vm의 직렬 포트를 pty로 리디렉션합니다.

d) 일부 가짜 경로/파일 시스템 솔루션이 사용됨LD_PRELOAD

e) 네임스페이스, Unionfs, chroots 등

관련 정보