2010-02-06 35 views
5

Có cách nào trong C++ trên cửa sổ để theo dõi chương trình và chuyển hướng bất kỳ yêu cầu gửi đi nào mà nó thực hiện trên một cổng cụ thể không? Tôi có một proxy http C++ http đơn giản và muốn nó có thể tự động chuyển hướng tất cả các yêu cầu trình duyệt trên cổng 80 thông qua chính nó.C++ chuyển hướng kết nối gửi đi

+0

bạn không chỉ định hệ điều hành - dễ dàng hơn trên các biến thể Unix. –

+0

Cửa sổ xin lỗi. trên linux nó là một iptables oneliner lol. –

+1

Các chương trình thông thường không thể can thiệp vào các chương trình khác. Đó sẽ là một vi phạm an ninh. Bạn cần đặt trình duyệt của mình (hoặc ứng dụng khác) để sử dụng proxy một cách rõ ràng. –

Trả lời

5

Cách đơn giản để thực hiện là tạo một móc nối nhân Windows để bẫy các yêu cầu ổ cắm và định tuyến lại chúng tới proxy của bạn.

Một số tài liệu hữu ích về vấn đề này là:

http://www.internals.com/articles/apispy/apispy.htm

Nếu bạn đang sử dụng Windows Vista hoặc tốt hơn, hãy xem xét Windows Filtering Platform (WFP):

http://www.microsoft.com/whdc/device/network/wfp.mspx

Cũng xem xét tìm kiếm tại Detours (thương mại) và EasyHook (miễn phí). Chúng đơn giản hóa đáng kể quá trình viết móc và chuyển hướng các cuộc gọi API (cả Win32 và Ứng dụng).

0

Chương trình sẽ phải chạy với quyền quản trị trong chế độ lõi của hệ điều hành máy chủ.

Mặc dù tôi không có nhiều kinh nghiệm về các móc khóa cửa sổ, trong BSD và Linux, nó không cần thiết để cài đặt mô-đun hạt nhân ghi đè lên hệ thống. .

+1

Nếu mọi người sử dụng Linux, công việc của chúng tôi sẽ dễ dàng hơn rất nhiều. –

1

Nếu bạn ngụ ý [bất kỳ cổng đích] nào đến [một cổng] thì bạn sẽ phải dựa vào các trình điều khiển đặc biệt. Vấn đề với các cửa sổ là không có khả năng tự nhiên chặn các gói [drop]. Ví dụ một giải pháp phổ biến là winpcap. Tuy nhiên, trong khi bạn có thể theo dõi lưu lượng truy cập, bạn không thể ngừng lưu lượng truy cập hoặc sửa đổi nó một cách hữu ích.

Trên cửa sổ, giải pháp duy nhất tôi đã thấy sẽ là sử dụng một số open TUN/TAP adapter. Với điều đó, bạn sẽ có thể sửa đổi mọi gói tin rời khỏi hệ thống của bạn.

Nếu bạn biết trước cổng đích bạn sẽ sử dụng thì nó trở nên khá đơn giản. Đơn giản chỉ cần viết một chương trình socket C++ passthrough mà sẽ chỉ thay đổi cổng đích.

Nếu bạn muốn chuyển hướng các yêu cầu của trình duyệt thì bạn có thể chỉ cần chỉnh sửa cài đặt trong trình duyệt của mình.

Các vấn đề liên quan