下面介紹的便是如何藉著 wireshark 封包的內容,讓問題重現。
1. 假設要手動連接某台 web server,重現某一個導致錯誤的HTTP Request,此時可以使用netcat,其作法如下:
$ cat request.xml | nc 192.168.0.2 80
其中 request.xml 就是 wireshark 內的封包內容,例如下面這個例子:
POST /onvif/subscribe_service HTTP/1.0
Content-length: 2295
Content-type: application/soap+xml; charset=uft-8
Host: 192.168.0.2 User-Agent: ApacheBench/2.3
Accept: */*
<soap-env:envelope>omit</soap-env:envelope>
2. 假設需要多次重複某個步驟才會導致錯誤,則可以使用apache bench,例如若要重複發出100次request, 其作法如下:
$ ab -T "application/soap+xml; charset=uft-8" -p request.xml -n 100 -c 1 http://192.168.0.2/onvif/device_service
3. 假設需要結合多個步驟才能重現錯誤,則可以自行撰寫 script,重複上述兩種指令,例如撰寫script內容如下:
$ cat request_1.xml | nc 192.168.0.2 80
$ cat request_2.xml | nc 192.168.0.2 80
$ cat request_3.xml | nc 192.168.0.2 80