2010-12-13 46 views
7

Khi bạn viết một nhà phân tích cho Wireshark, làm thế nào để bạn kiểm tra nó? Tìm kiếm đầu ra trực quan trong giao diện người dùng không đủ cho một giao thức không tầm thường.Làm thế nào để bạn kiểm tra một Wireshark dissector?

Có cách nào tốt để thử nghiệm đơn vị của người mổ xẻ không?

EDIT:

Cấu trúc của khung giao thức là năng động. Người mổ xẻ phải bằng cách nào đó giải thích nội dung.

Ví dụ: nếu trường thứ năm là một mảng byte sau trường thứ sáu. Nếu đó là hai bạn có một mảng đôi và nếu đó là ba bạn phải thêm một chuỗi không chấm dứt.

Điều này thường không bao giờ xảy ra trong hoạt động chụp hàng ngày. Đó là lý do tại sao bạn cần một dữ liệu chụp tổng hợp ngay cả với nội dung "không thể".

Trả lời

6

Để kiểm tra một người mổ xẻ Wireshark Tôi thấy điều này rất hữu ích:

  • Xác định một tập hợp các gói tin rằng người mổ xẻ nên phân tích bao gồm các gói dữ liệu bị thay đổi
  • Thực hiện các gói như một bãi chứa hex
  • Xác định sản lượng dự kiến
  • Đối với mỗi gói đổ
    • Tạo file pcap với text2pcap
    • Chạy mổ xẻ với tshark
    • Giải nén tải trọng từ đầu ra PDML của tshark
    • Hãy so sánh đầu ra XML với sản lượng XML dự kiến ​​

Điều này có thể được cải thiện bằng cách lọc đầu ra XML từ PDML cũng bao gồm các byte gói, những gì có thể gây phiền nhiễu nếu tải trọng lớn hoặc phức tạp.

Các gợi ý đối số để thực thi Wireshark là

text2pcap -T 1024,9876 foo.txt foo.pcap 
tshark -T pdml -r "foo.pcap" 

Để trích xuất các đầu ra mổ xẻ nó là hữu ích để sử dụng một biểu thức XPath với XmlNode .NET CLR lớp. Điều này có thể được thực hiện tức là theo cách này:

XmlNode output = tsharkOutput.SelectSingleNode("packet/proto[@name='foo']"); 
XmlNodeList refList = referenceDocument.SelectNodes("proto[@name='foo']"); 
-1

Tôi đoán tôi đã lỗi thời. Mục đích chính của người mổ xẻ là chuyển đổi dữ liệu thành dạng người có thể đọc được, vì vậy tôi đã thử nghiệm của tôi bằng cách để con người đọc nó.

Tôi cho rằng bạn có thể thực hiện kiểm tra tự động hơn bằng cách xuất sang txt hoặc pdml từ file->export hoặc triển khai một số loại trình bao bọc thử nghiệm xung quanh DLL plugin của bạn.

+0

Bạn chỉ có thể kiểm tra đầu ra của dữ liệu thực tế. Nhưng bạn cũng nên kiểm tra hành vi của người mổ xẻ nếu nó nhận dữ liệu không phù hợp với đặc tả giao thức hiện tại, tức là phiên bản tiếp theo. – harper

+0

Bạn có hỏi cách tạo dữ liệu thử nghiệm không? Định dạng tệp libpcap cũng được ghi lại tại http://wiki.wireshark.org/Development/LibpcapFileFormat –

+0

Không. Thế hệ chỉ là một điểm trong thử nghiệm. Thú vị hơn là đầu ra của người mổ xẻ. – harper

0

Bạn có thể phân tích đầu ra của tshark.

+0

Âm thanh hợp lý. Nhưng tôi có rất nhiều loại khung, các biến thể khung và muốn kiểm tra hành vi với các khung chứa dữ liệu không hợp lệ. Vì vậy, tôi cần một vật cố để cung cấp một tập hợp dữ liệu và đoán cách người mổ xẻ tìm thấy dữ liệu và có thể tái đồng bộ hóa nếu nó không đồng bộ. Một cách tiếp cận chính thức hóa sẽ là sản lượng pdml tsharks được so sánh với một mẫu XML. Nhưng làm cách nào để bỏ qua những phần không cần thiết? – harper

0

Chỉ để cập nhật bài đăng.

Tshark sử dụng cùng các plugin như Wireshark và tải chúng theo cùng cách .tshark cũng được sử dụng theo cách này trong các bài kiểm tra Wireshark CI build , xem thư mục kiểm tra của các nguồn Wireshark cho một số ví dụ mẫu thử nghiệm .
https://code.wireshark.org/review/gitweb?p=wireshark.git;a=tree;f=test
- grahamb.

nguồn: https://ask.wireshark.org/questions/36721/tshark-for-plugin-testing

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