wireshark作為一款強大的報文分析工具,其應用十分的廣泛。同時wireshark作為一個開源項目,來自全世界的開發者不斷的優化wireshark,不斷的增多其支持的協議數量和解析能力。既然是一個開源項目,我們自然是可以改造其代碼,來滿足我們定製化的需求。作為一款較偏底層的應用,wireshark是用C語言進行編寫的。C語言的好處是直接操作內存,效率高,但是比之一些面向對象的高級語言和一些腳本語言其缺點也是較為明顯,就是開發週期長,開發難度大。考慮到這一點,wireshark也為開發者們提供了相應的lua介面,通過lua 語言,調用相應的wireshark API,能夠利用絕大多數的wireshark提供的功能,在此基礎上進行二次開發。

Lua這門語言是在巴西一所大學實驗室裡面基於C語言開發出來,具有了很多現代高級語言的特性,因此其使用起來非常的方便。如果有學習過java,python,js等高級語言,相信對於lua會很快的上手。由於Lua的小巧,高效,易擴展等特性,經常用於嵌入式等方面的開發,如C混合編程等。Lua的語言特性和語法規則不是本文所涉及的內容,相關內容可自行學習。本文主要是介紹wireshark中能夠使用lua做哪些事情,包括利用其提供的lua API,藉助wireshark強大的報文解析能力來滿足一些特定的需求。

wireshark官網在介紹Lua時候這樣提到:

In Wireshark Lua can be used to write dissectors, taps, and capture file readers and writers.

我從介紹Lua腳本批量讀取報文屬性欄位開始,基於HTTP和HTTPS報文,來介紹相關介面的使用。為什麼要以HTTP和HTTPS為例呢?主要是因為,通過運營商的統計,在現網上面,這兩個協議所佔的比例高達90%。在國外的運營商統計中,HTTPS的流量就已經高達70%,但是在國內HTTPS僅僅纔有20%左右。自從稜鏡門之後,大家的安全意識都在提高,因此越來越多的網站紛紛開始從HTTP升級到HTTPS,雖然國內的發展較為滯後,但是可以預見到HTTPS站點會越來越多。通過介紹這兩種協議,相信其他的協議也是同樣的道理。

推薦閱讀:

相關文章