工作中遇到c/s的通訊介面測試,經常會遇到由於請求的結構不對或者包傳送錯誤,導致很多問題,通常需要通過抓包工具,把傳送的包抓下來,然後做進一步的分析,就可以一很容易看出存在的錯誤。
這是乙個登陸請求的抓包:
0x0010
0a01 03a6 50a5 2d6f df20 f96b 2f09 fa4d
....p.-o...k/..m
0x0020
5010 825b ec59 0000 0000 0000 0000
p..[.y........
14:23:10.184430 88.120.40.59.broad.sz.gd.dynamic.163data.com.cn.20645 > pcs3166.11631: p [tcp sum ok] 150:306(156) ack 26 win 33371 (df) (ttl 109, id 23149, len 196)
0x0000
4500 00c4 5a6d 4000 6d06 f19f 3b28 7858
[email protected]...;(xx
0x0010
0a01 03a6 50a5 2d6f df20 f96b 2f09 fa4d
....p.-o...k/..m
0x0020
5018 825b afcc 0000 0001 9c00 0100 0000
p..[............
0x0030
0100 0000 0000 0000 3c72 6571 3e3c 6d73
........
6973 646e 3e31 3336 3332 3631 3734 3339
isdn>13632617439
0x0050
3c2f 6d73 6973 646e 3e3c 7077 643e 3733
730x0060
3432 3830 3c2f 7077 643e 3c75 613e 506f
4280
po0x0070
636b 6574 5f50 433c 2f75 613e 3c76 6572
cket_pc
3e6d 7075 7368 2e31 2e31 2e31 2e30 3835
>mpush.1.1.1.085
0x0090
3c2f 7665 723e 3c63 6f6d 6d5f 7665 723e
0x00a0
313c 2f63 6f6d 6d5f 7665 723e 3c6d 6574
1 6169 643e 303c 2f6d 6574 6169 643e 3c2f
aid>0
7265 713e
req>
那麼根據自定義的介面文件來參考:
登陸的訊息包頭組建格式為:
client->csvr的訊息的介面格式
protocal version
2位元組,數字
length
4位元組,數字
type
2位元組,數字
transactionid
4位元組,數字
session id
4位元組,數字
msg body
xml格式,長度不定
length:表示整條訊息的總長度,包括protocal version, length, type, session id及msg body欄位。
type表示訊息型別,其型別和取值為 登入請求:1(client->server)
按照以上的協議分析:
msgbody前面的共:2+4+2+4+4=16個位元組
所以找到從msgbody向前找,找到16個位元組,就正確了,
下面的就是從向前找, 就可以找到這16個位元組:
0001 9c00 0100 0000 0100 0000 0000 0000
對比協議可以看出:
0001
9c00 0100
0000
0100 0000
0000 0000
nversion
nlength
ntype
ntransactionid;4
nsessionid
由於網路位元組序與主機位元組序的區別,不同cpu的位元組序不一樣,有些cpu是高位元組在前面,有些是低位元組在前面。網路上傳輸的訊息碼流是網路位元組序的,
我們如果分析抓包工具的訊息,由於主機是奔騰的cpu,先要將網路序轉換為主機序,需要前後左右置換一下。置換後為:
0100
0001 009c
0000
0000 0001
0000 0000
nversion
nlength
ntype
ntransactionid;4
nsessionid
轉化為10進製分別為:256 、65692、0、1、0
而實際的length的值我們可以數一下: 16+msgbody包共(140位元組)= 156
而且也看出ntype不對,實際上應該是1。版本也不對。
通過這樣一分析,就知道是登陸請求發錯了,而且知道了錯誤的原因。
(一般抓包:我是用root使用者直接用命令列抓,沒有用相關工具)
抓包命令為:
/usr/sbin/tcpdump/ -vvx -s 2048 -i etho port 埠號
App 開發中的抓包工具
第一種方式 在 windows 環境下,我使用 fiddler。首先得有乙個網路環境,我使用獵豹免費 wifi 構建乙個 wifi 網路,如果已經有 wifi 並且能互聯互通的就忽略。然後將手機連到這個 wifi,並且設定 為電腦上的 fiddler 監聽埠。已經有很多教程就不詳細介紹了,可以參考 ...
測試過程中的問題定位與分析
出現問題之後,可以從以下方面進行分析 1.看日誌,或者程式返回的錯誤碼 如 可以通過檢視日誌來確定程式是由於什麼原因出錯的,一般都可以在日誌中找到解決的方法 看錯誤碼也可以,如檢視資料庫的錯誤碼,大概知道是哪個地方出錯。像一些,不能讀取檔案,建立檔案失敗之類的,基本上都是檔案許可權,磁碟空間,hos...
軟體測試過程中的度量與分析
本文中考慮的軟體測試過程專指第三方的軟體測試過程,即在測試的過程中,不涉及開發人員的修復過程。度量和分析的目的是開發和維持乙個用於支援專案資訊需要的度量能力。通過對專案的度量,一方面可以逐漸豐富和完善公司的度量財富庫,從而為專案經理進行專案工作量 進度等的預估時提供可靠的參考依據 另一方面,通過度量...