Tôi có thể chuyển / chuyển hướng một ứng dụng giao diện điều khiển qua netcat để có thể sử dụng nó từ xa không?


10

Có thể 'ống dẫn' một phiên bản của ứng dụng bảng điều khiển thông qua netcat, vì vậy netcat đang lắng nghe một kết nối mới và chuyển hướng stdinstdoutqua kết nối mạng.


Vâng, nhưng nó có thể phải là một lớp lót, điều đó là tốt, đường ống là như vậy. Tôi không biết liệu bạn có thể nói nc và pipe với một cá thể đã chạy bằng pid hay không. bạn có thể nc đến một ip và chuyển nó đến một nc đang lắng nghe và chuyển nó đến một nc đang lắng nghe vv và chuyển nó thành một ip.
barlop

Tôi đã thay đổi tiêu đề bởi vì những gì bạn đề cập nghe có vẻ giống như chuyển hướng I / O hơn là sử dụng một đường ống (chỉ liên quan đến việc chuyển đầu ra của một quá trình sang đầu vào của một quá trình khác).
Đột phá

@BreakENC làm thế nào mà khác với đường ống? khi anh ấy nói về chuyển hướng IO và không nói về các tập tin, vậy nó khác với đường ống như thế nào?
barlop

@barlop Chuyển hướng I / O ( <hoặc >) khác biệt đáng kể so với đường ống ( |), mặc dù đôi khi bạn có thể đạt được một hoạt động tương đương với sự kết hợp của cả hai. Một lần nữa, với chuyển hướng I / O, bạn có thể thay đổi vị trí của cả hai luồng; đường ống chỉ chuyển hướng đầu ra tiêu chuẩn của một quá trình sang đầu vào tiêu chuẩn của một quá trình khác.
Đột phá

@BreakENC xem những gì tôi hỏi bạn mặc dù. > và <tất nhiên khác với đường ống vì <và> sử dụng tệp. Nhưng anh ấy không nói về các tập tin. Tôi đã hỏi bạn "[Chuyển hướng IO] khác với đường ống như thế nào? Khi anh ấy nói về chuyển hướng IO và không nói về các tập tin, thì nó khác với đường ống như thế nào?"
barlop

Câu trả lời:


16

Vâng, như được ghi lại trong Wikipedianetcattài liệu, có một -etùy chọn khiến nó sinh ra ( e xecute) một chương trình khi nhận được kết nối, gắn ổ cắm vào stdin, stdout và stderr của quá trình. Ví dụ sử dụng:

nc -l -pport_number -eprogram_name

Các ví dụ thường thấy /bin/shhay bashđược sử dụng như là program_name . Việc sử dụng tùy chọn này không được khuyến khích vì về cơ bản nó sẽ mở một cổng truy cập ẩn danh, không mật khẩu vào máy của bạn. Tất nhiên, điều này được giảm thiểu bằng cách sử dụng một chương trình có ít năng lượng hơn vỏ (chương trình không có khả năng thoát khỏi vỏ), giảm thiểu việc bạn sử dụng nó và giữ bí mật. Tuy nhiên, các nhà phát triển ban đầu netcatcảm thấy đủ mạnh mẽ rằng tùy chọn này là một ý tưởng tồi mà họ đã vô hiệu hóa nó theo mặc định và điều chỉnh nó theo tùy chọn biên dịch của GAPING_SECURITY_HOLE. Điều này được đề cập ngắn gọn trong Hướng dẫn NetCat này và các netcattài liệu khác .

Một tìm kiếm của Google đã đưa tôi đến các cuộc thảo luận về vấn đề này trên các trang web Stack Exchange khác: Stack OverflowServer Fault . Nhiều người đóng góp đã cung cấp kỹ thuật sau đây để làm điều tương tự mà không cần sử dụng -etùy chọn (nghĩa là trong phiên bản netcat-etùy chọn bị tắt):

Trên máy chủ:
mkfifopipe_name
nc -l -pport_number <pipe_name   | program_name >pipe_name

Trên máy khách:
nc server_machine_name  port_number

Một vài lưu ý:

  • Trên một số phiên bản netcat, -lngụ ý -p, vì vậy bạn chỉ nên nói -lvà sau đó là số cổng.
  • Bạn có thể muốn bọc giải pháp của bạn trong một while truevòng lặp.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.