2010-02-13 31 views
5

im bây giờ đang phát triển một dự án bằng cách sử dụng winpcap..as tôi đã biết các gói đang bị đánh hơi thường là các gói bị phân mảnh.cách lắp ráp lại đoạn tcp?

làm thế nào để lắp ráp lại TCP này segements? .. bất kỳ ý tưởng, gợi ý hoặc hướng dẫn có sẵn? ..

này tôi giả định là cách duy nhất tôi có thể xem tiêu đề HTTP ...

cảm ơn! ..

Trả lời

4

tcp là một giao thức dòng byte. chuỗi byte được gửi bởi ứng dụng http của bạn được đóng gói trong các phân đoạn dữ liệu tcp và luồng byte được tạo lại trước khi dữ liệu được gửi đến ứng dụng ở phía bên kia. vì bạn đang truy cập vào các tệp dữ liệu tcp bằng winpcap, bạn cần phải chuyển đến phần dữ liệu của phân đoạn. tiêu đề của tcp có độ dài cố định là 20 byte + một phần tùy chọn mà bạn cần xác định bằng cách sử dụng api winpcap.

độ dài của phần dữ liệu trong phân đoạn tcp được xác định bằng cách trừ chiều dài tiêu đề tcp (được lấy từ trường trong phân đoạn tcp) và độ dài tiêu đề ip (từ trường trong datagram ip đóng gói phân đoạn tcp) từ tổng chiều dài (thu được từ một trường khác trong datagram ip).

vì vậy bây giờ bạn có tổng chiều dài phân đoạn và độ dài của phần dữ liệu trong phân đoạn. vì vậy bạn biết bù đắp nơi dữ liệu yêu cầu http bắt đầu.

offset là

total length-length of data part 
or 
length of ip-header + length of tcp header 

tôi đã không sử dụng winpcap. vì vậy bạn sẽ phải tìm hiểu làm thế nào để có được những lĩnh vực này bằng cách sử dụng api.

cũng ip datagrams có thể được phân mảnh hơn nữa nhưng tôi mong rằng bạn chỉ được cung cấp các gói dữ liệu được tái cấu trúc bằng cách sử dụng api này. bạn rất tốt để đi!

6

Không có thứ gì như một đoạn TCP. Giao thức IP có các đoạn. TCP là một giao thức luồng. Bạn có thể lắp ráp luồng theo thứ tự mong muốn của mình bằng cách làm theo các số thứ tự của cả hai bên. Mỗi gói TCP đi đến cấp IP và có thể bị phân mảnh ở đó. Bạn có thể lắp ráp mỗi gói bằng cách thu thập tất cả các mảnh và sau khi bù đắp đoạn từ tiêu đề.
Tất cả thông tin bạn cần đều nằm trong tiêu đề. Các bài viết wikipedia là khá hữu ích trong việc giải thích những gì từng lĩnh vực là

http://en.wikipedia.org/wiki/TCP_header#Packet_structure
http://en.wikipedia.org/wiki/IPv4#Header

1

Tùy thuộc vào lưu lượng truy cập mà bạn đang cố gắng tập hợp lại, bạn có thể gặp phải một số kỹ thuật lừa đảo TCP được thiết kế để gây nhầm lẫn cho những người đang cố gắng thực hiện chính xác những gì bạn đang cố gắng làm. Hãy xem this paper về các hành vi khôi phục hệ điều hành khác nhau.

2

PcapPlusPlus cung cấp khả năng này out-of-the-box cho tất cả các hệ điều hành chính (bao gồm cả Windows). Vui lòng xem ví dụ TcpReassembly để xem mã hoạt động và tài liệu API để hiểu cách sử dụng tính năng khôi phục TCP