2016-10-03 61 views
1

是否有可能將傳入的REST API請求捕獲到tomcat服務器,以驗證外部客戶端是否使用正確的憑證。產生了401個響應,但我們需要證明REST API不是問題,而是請求。使用tshark在apache服務器上捕獲傳入的RESTAPI流量

我成功安裝wireshark,並根據建議使用tshark嘗試捕獲傳入數據包。

tshark -D 
1. usbmon1 (USB bus number 1) 
2. eth2 
3. any (Pseudo-device that captures on all interfaces) 
4. lo 

我會假設http請求是'tcp'?正確?那爲什麼不在這裏展示?我試着在網上找到以下命令:

tshark 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)' -R 'http.request.method == "GET" || http.request.method == "HEAD"' 

但是這樣會導致錯誤;

That string isn't a valid capture filter (USB link-layer type filtering 
not implemented). 
See the User's Guide for a description of the capture filter syntax. 
0 packets captured 

我知道具體的傳入請求的URL我期待,我想我可以與https://xxxxxxxxxxxxxxxx/termAPI/list 過濾這裏真的很感謝一些幫助。

編輯:

屢試不爽如下:

tshark -i 2 -f 'port 80' 

然後跑一個示例API請求,並得到了以下捕獲:

Capturing on eth2 
0.000000000 192.1xx.xxx -> 192.168.cc.xxxx TCP 66 49330 > http [SYN] 
Seq=0 Win=8192 Len=0 MSS=1400 WS=4 SACK_PERM=1 
0.000146849 192.168.cc.xxxx -> 192.1xx.xxx TCP 66 http > 49330 [SYN, ACK] 
Seq=0 Ack=1 Win=14100 Len=0 MSS=1410 SACK_PERM=1 WS=128 
0.005808528 192.1xx.xxx -> 192.168.cc.xxxx TCP 54 49330 > http [ACK] 
Seq=1 Ack=1 Win=65800 Len=0 
0.031745954 192.1xx.xxx -> 192.168.cc.xxxx HTTP 220 
GET /termsapi/google/search/main/rules/active HTTP/1.1 
0.031845414 192.168.cc.xxxx -> 192.1xx.xxx TCP 54 http > 49330 [ACK] Seq=1 
Ack=167 Win=15232 Len=0 
0.063554179 192.168.cc.xxxx -> 192.1xx.xxx TCP 2854 [TCP segment of a 
reassembled PDU] 
0.063568626 192.168.cc.xxxx -> 192.1xx.xxx TCP 2854 [TCP segment of a 
reassembled PDU] 
0.063572832 192.168.cc.xxxx -> 192.1xx.xxx HTTP 695 HTTP/1.1 200 
OK  (application/json) 
0.064066260 192.168.cc.xxxx -> 192.1xx.xxx TCP 54 http > 49330 [FIN, ACK] 
Seq=6242 Ack=167 Win=15232 Len=0 
0.075055934 192.1xx.xxx -> 192.168.cc.xxxx TCP 54 49330 > http [ACK] 
Seq=167 Ack=2801 Win=65800 Len=0 
0.075067927 192.1xx.xxx -> 192.168.cc.xxxx TCP 54 49330 > http [ACK] 
Seq=167 Ack=6243 Win=65800 Len=0 
0.075095146 192.1xx.xxx -> 192.168.cc.xxxx TCP 54 49330 > http [FIN, ACK] 
Seq=167 Ack=6243 Win=65800 Len=0 
0.075098758 192.168.cc.xxxx -> 192.1xx.xxx TCP 54 http > 49330 [ACK] 
Seq=6243 Ack=168 Win=15232 Len=0 

,但我看不出憑據

回答

1

根據手冊頁tshark -D

打印TShark可以捕獲並退出的接口列表。

然後您必須選擇一個。對於你的情況,你可能想聽eth2。

你可以聽上ETH2所有流量:

tshark -ieth2 

如果你想捕捉只有GET請求,你可以使用一個capture filter expression, from the documentation

tshark -ieth2 "port 80 and tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420" 

然後,您將看到所有的GET請求來到您的服務器。

==編輯

如果你想看到你的數據包的所有細節(憑證,......),你可以通過添加-T pdml選項要求tshark的在包詳細信息標記語言的輸出數據包。

+0

對不起,只是在我添加了其他信息後纔看到這一點。感謝您的迴應。你知道我們是否可以看到獲取請求中使用的實際憑證? – vbNewbie

+0

@vbNewbie我的編輯應該回答你的問題。 –

+0

完美。你太棒了。非常感謝! – vbNewbie