2009-03-29 21 views
10

Tôi muốn viết một gói sniffer và trình soạn thảo cho Windows. Tôi muốn có thể xem nội dung của tất cả các gói nhập và rời khỏi hệ thống của tôi và có thể sửa đổi chúng. Bất kỳ ngôn ngữ nào cũng tốt nhưng tôi muốn nó chạy đủ nhanh để nó không gây gánh nặng cho hệ thống.Làm cách nào để móc ngăn xếp TCP trong Windows để đánh hơi và sửa đổi các gói?

Tôi đã đọc một chút về WinPcap nhưng tài liệu tuyên bố rằng bạn không thể sử dụng WinPcap để tạo tường lửa vì nó không thể thả gói. Những công cụ nào sẽ giúp tôi viết phần mềm này?

Trả lời

1

Tôi chắc chắn bạn cần phải viết trình điều khiển bộ lọc. http://en.wikipedia.org/wiki/Filter_driver Tôi không biết nhiều hơn thế :). Nó chắc chắn sẽ là một ứng dụng Win32 C/C++ và bạn có thể sẽ làm một số công việc phụ của nhân. Bắt đầu bằng cách tải xuống DDK và tìm một số trình điều khiển lọc mẫu.

Nếu bạn chỉ muốn theo dõi những gì đi vào và ra khỏi IIS, hãy xem xét bộ lọc ISAPI. Vẫn còn C/C++ trong Win32, nhưng tương đối dễ hơn viết một trình điều khiển thiết bị.

1

C# code để làm điều này là here

+0

Kể từ khi nó socket thô dựa , nó sẽ không thể đánh hơi các gói TCP đến trên Windows 7. (Microsoft đã làm tê liệt các ổ cắm thô trên các phiên bản không phải của máy chủ) – CodesInChaos

+0

Tôi không cần một giải pháp/ví dụ WFP. – ChopperCharles

0

Tôi thực sự đã làm điều này, cách đây vài năm. Tôi mơ hồ về các chi tiết tại thời điểm này, nhưng tôi đã phải phát triển một trình điều khiển lọc/pass-thru/trung gian bằng cách sử dụng Windows DDK. Tôi nhận được rất nhiều thông tin tốt từ pcausa. Đây là url trỏ đến sản phẩm của họ thực hiện điều này: http://www.pcausa.com/pcasim/Default.htm

0

Nếu bạn làm điều này vì lý do thực tế và không chỉ để giải trí, thì bạn nên xem Microsoft Network Monitor. Trang chủ nói về phiên bản 3.3 beta, nhưng bạn có thể tải xuống phiên bản 3.2 từ trang Tải xuống. Ngoài ra còn có một SDK cho NM, và khả năng viết các trình phân tích cú pháp cho các giao thức mạng của riêng bạn.

8

Đã ở đó, thực hiện điều đó :-) Quay lại năm 2000 chương trình Windows đầu tiên của tôi là filter hook driver.

Điều tôi đã làm là triển khai trình điều khiển móc lọc và viết ứng dụng không gian người dùng đã chuẩn bị bảng lọc trên những gì cho phép và những gì không cho phép. Khi bạn nhận được xung quanh thiết lập ban đầu của màn hình màu xanh (xem dưới đây cho mẹo gỡ lỗi của tôi trong chế độ hạt nhân) trình điều khiển chế độ lọc khá dễ sử dụng ... nó cung cấp cho mỗi gói đến một hàm bạn đã viết và tùy thuộc vào mã trả về. hoặc cho phép nó vượt qua.

Các gói Unfortunatley ở cấp đó là QUITE thô, các mảnh không được ráp lại và có vẻ giống như "thẻ mạng" kết thúc mọi thứ (nhưng không có tiêu đề ethernet nữa). Vì vậy, bạn sẽ có một thời gian khá giải mã các gói tin để lọc với giải pháp đó.

Ngoài ra còn có trình điều khiển móc tường lửa, như được thảo luận trong số codeproject article này.

Nếu bạn đang sử dụng Vista hoặc Server 2008, bạn nên xem WFP (Windows Filtering Platform), đó dường như là API bắt buộc của ngày để viết tường lửa. Tôi không biết về nó khác với google turing nó lên một vài phút trước khi tôi googled cho trình điều khiển móc lọc.

Cập nhật: Quên mũi debug:

Sysinternals DbgView cho thấy sản lượng DbgPrint kernel-mode, và quan trọng hơn - nó cũng có thể đọc chúng từ các bãi chứa tập tin màn hình xanh cuối cùng của bạn tạo ra. Vì vậy, rắc mã của bạn với dbgprint và nếu nó bluescreens chỉ tải dump vào dbgview để xem những gì đã xảy ra trước khi nó chết ... Rất hữu ích. Sử dụng này tôi quản lý mà không có một trình gỡ lỗi hạt nhân.

+0

Trình điều khiển móc lọc không phải là một lựa chọn tốt vì bạn chỉ có thể cài đặt một trong các trình điều khiển này bất cứ lúc nào. Nếu bạn cố gắng cài đặt trên một hệ thống mà đã có một người nào đó elses móc, bạn đang nhồi. –

+0

Đồng ý. Tôi nghĩ rằng trình điều khiển móc tường lửa là cách để đi, mặc dù nó không được chấp nhận trong WinXP và hơn thế nữa để chạy quá cao trong ngăn xếp mạng. NDIS được khuyên dùng cho WinXP. Tuy nhiên, NDIS có vẻ như có nhiều công việc hơn. – Eyal

0

Có một câu hỏi bạn cần phải hỏi bạn không biết mình cần hỏi gì; Bạn có muốn biết các ổ cắm ứng dụng nào thuộc về? hoặc bạn có vui khi bị giới hạn IP: cổng quad cho kết nối không?

Nếu bạn muốn biết ứng dụng, bạn cần viết trình điều khiển bộ lọc TDI, nhưng điều đó làm cho việc xử lý nhận hầu như không thể, vì bạn không thể chặn trên đường dẫn nhận.

Nếu bạn hài lòng với IP: cổng, hãy vào ở cấp độ NDIS và tôi tin rằng bạn có thể chặn khi nhận được nội dung trái tim của bạn.

Một lời cảnh báo; nếu bạn không có kinh nghiệm hạt nhân trước, hãy viết một trong các trình điều khiển này (mặc dù TDI khó hơn đáng kể) sẽ mất khoảng hai năm, toàn thời gian.

0

này:

TdiFw là một TDI dựa trên mã nguồn mở Personal Firewall đơn giản cho Windows NT4/2000/XP/2003

http://tdifw.sourceforge.net/

có thể giúp bạn

+0

Nếu đó là những gì tôi nghĩ rằng nó là, nó sucks! mã nguồn KHÔNG được viết hay hiểu được. Tôi nhìn vào nó khi tôi đang viết bộ lọc TDI của riêng tôi và nó không giúp tôi chút nào. –