第四天:第一個基於NetBIOS over TCP/IP報文格式的Name Query程序發送

今天是3月17日,由於前兩天連續跟美國那邊調試bug,人也有點體力透支。這裏事情也耽誤了,主要是晚上回來啥也不想幹。坐在電腦前或者發呆,或者看幾集無聊的肥皂劇就睡覺了。這兩天知道項目的發佈時間延後,所以今天有時間把這個程序調試一下。


開始的時候,我發現發送的報文格式不能被Wireshark正確的解析。調試後加上了一些具體的分隔符'/0',使得Level2Encoding後的報文內容已經跟標準答案一樣了,可是最後發送報文的格式還是不對。從wireshark看,是一部分內容被截斷了,導致了問題的出現。

 

最後,發現問題就出在發送內容時,數據內容長短的指定上。我用strlen來進行內存區長度的計算。另外,我用strcpy來進行內存區拷貝也是造成一開始報文內容不正確的原因。由於strcpy拷貝字符串時,是以'/0'作爲結束字符的。所以如果在拷貝報文中含有0x00這樣的字節,那麼需要拷貝的內容就會被截斷。而這樣的情況,在報文成包的過程中會大量出現。所以,正確的方法應該是,使用memcpy之類的函數,另外,strlen這樣的函數也不能用來計算內存區長度的。


最後,第一個報文終於正確的被wireshark捕獲出來。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章