Điểm:1

Trích xuất dữ liệu ứng dụng TCP từ tệp pcap

lá cờ us

Đưa ra .pcap (hoặc tương tự), tôi muốn chọn một kết nối TCP và kết xuất cả hai luồng dữ liệu ứng dụng (một từ đồng đẳng khác và một hai ngang hàng khác) thành hai tệp riêng biệt trên đĩa.

Hãy giả sử rằng tôi có một .pcap tệp mà trong số những thứ khác mà tôi biết có chứa một luồng TCP đầy đủ (từ SYN đến FIN + ACK/RST cuối cùng) của kết nối văn bản thuần HTTP/1.1. Tôi muốn có hai tệp kết quả có nội dung. I E. một tập tin có

NHẬN / HTTP/1.1\r\n
máy chủ: foobar.com\r\n
\r\n

và các tập tin khác có

HTTP/1.1 200 được rồi\r\n
độ dài nội dung: ...\r\n
... \r\n
\r\n
<html>...</html>

Và tôi muốn đây chính xác là lưu lượng dữ liệu ứng dụng đã được nhìn thấy/gửi trong không gian người dùng (từ đọc/viết/gửi/recv`/...). Những gì tôi muốn làm với điều này là kết xuất một số lưu lượng truy cập và sử dụng lưu lượng truy cập đó để kiểm tra trình phân tích cú pháp của tôi đối với một số giao thức mạng nhất định. Trình phân tích cú pháp chỉ có thể đọc một trong những tệp đó và cố gắng phân tích cú pháp luồng dữ liệu.


Làm thế nào một công cụ dòng lệnh như vậy có thể trông như thế nào? Tôi không chắc điều này có cực kỳ hữu ích hay không nhưng tôi nghĩ nó có thể làm rõ hơn những gì tôi đang tìm kiếm nếu tôi cũng đưa ra một ví dụ sử dụng của một công cụ tưởng tượng có thể làm được điều này. Hãy gọi công cụ tưởng tượng (đây là thứ tôi đang tìm kiếm) tcp-stream-trích xuất. Tôi muốn gọi nó bằng một cái gì đó như

### ví dụ sử dụng tưởng tượng của công cụ mà tôi muốn tìm :)

# kết xuất từ ​​12345 thành 23456
tcp-stream-trích xuất \
    -i my-captured-packets.pcap
    -s 127.0.0.1:12345 \ # địa chỉ nguồn 127.0.0.1:12345
    -d 127.0.0.1:23456 \ # địa chỉ đích 127.0.0.1:23456
    -t '2021-01-28 09:12:00Z' \ # kết nối TCP vẫn hoạt động vào thời điểm đó
    -w from-port-12345-to-port-23456

# kết xuất từ ​​23456 thành 12345
tcp-stream-trích xuất \
    -i my-captured-packets.pcap
    -s 127.0.0.1:23456 \ # địa chỉ nguồn 127.0.0.1:12345
    -d 127.0.0.1:12345 \ # địa chỉ đích 127.0.0.1:23456
    -t '2021-01-28 09:12:00Z' \ # kết nối TCP tại thời điểm đó
    -w from-port-23456-to-port-12345
lá cờ jp
Bạn muốn `tcpflow`
Điểm:1
lá cờ ru

Nếu bạn phải thực hiện việc này theo cách thủ công, bạn cần xóa tiêu đề của các giao thức đóng gói. Tuy nhiên, có một số điều tinh tế đối với chúng và nó có thể không tầm thường:

  • Ethernet (L2): Tiêu đề Ethernet (14 byte) có thể bao gồm hoặc không bao gồm thẻ 802.1q (phía trước Ethertype, thêm 4 byte; 0x0800=IPv4, 0x86dd=IPv6, 0x8100=802.1q) và tải trọng Ethernet có thể được FCS theo dõi hoặc không (4 byte).
  • IP (L3): Tiêu đề IPv4 cơ bản là 20 byte, IPv6 sử dụng 40 byte. Mỗi cái đều có các tùy chọn hoặc tiện ích mở rộng - hãy kiểm tra IHL trường cho IPv4 (5 = không có tùy chọn) hoặc Tiêu đề tiếp theo trường cho IPv6 (6 chỉ ra TCP, không có phần mở rộng). Bất kỳ gói nào cũng có thể bị phân mảnh trên một số khung L2 (IPv4: MF được thiết lập hoặc Phần bù đắp>0; IPv6 sử dụng tiêu đề mở rộng 44). Mỗi đoạn đầu tiên bao gồm các tiêu đề L4, các đoạn sau thì không.
  • TCP (L4): Tiêu đề phân đoạn TCP cơ bản là 20 byte, nhưng nó cũng có thể bao gồm các tùy chọn (Bù trừ dữ liệu>5). TCP sử dụng các phân đoạn được phân phối không theo thứ tự (bởi Số thứ tự), vì vậy bạn có thể cần đệm một phần dữ liệu đáng kể. Các phân đoạn cũng có thể đến trùng lặp.

Tôi khuyên bạn nên sử dụng một công cụ thích hợp như tcpflow, như @AlexD đã đề xuất.

lá cờ us
Cảm ơn bạn, `tcpflow` chính xác là thứ tôi đang tìm kiếm! Đúng vậy, việc ngắt các tiêu đề của các giao thức khác nhau là một chuyện, nhiệm vụ khó khăn nhất sẽ là xử lý việc gửi và gửi lại các gói không đúng thứ tự.
Zac67 avatar
lá cờ ru
@JohannesWeiss Ồ vâng, quên mất điều đó!

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.