我開始我的第一個Lua解剖器。在兩個硬編碼的以太網地址 之間,我的負載協議正在運行。如何在解剖器內進行正確的比較?Lua wireshark解剖器:比較以太網地址
喜歡的東西
if buf(0,6):ether() == ??? and buf(6,6):ether() == ??? then
...
在此先感謝 沃爾夫岡·R.
我開始我的第一個Lua解剖器。在兩個硬編碼的以太網地址 之間,我的負載協議正在運行。如何在解剖器內進行正確的比較?Lua wireshark解剖器:比較以太網地址
喜歡的東西
if buf(0,6):ether() == ??? and buf(6,6):ether() == ??? then
...
在此先感謝 沃爾夫岡·R.
調用上TvbRange ether()
(這是你在做什麼)給你回一個地址對象。不幸的是,Address對象本身並不是很有用 - 關於唯一可以做的事情是調用tostring(addr)
來獲得一個字符串表示,然後將其與您期望的結果進行比較。就像這樣:
if tostring(buf(0,6):ether()) == "00:12:34:56:78:9a" then
-- do stuff
end
有一點需要注意的是:如果你的Wireshark首選項設置設置爲啓用名稱解析,然後你回來的字符串可能有替換的以太網MAC地址的OUI部分它分配給的組織/公司名稱。也就是說,它可能類似於「cisco:56:78:9a」或其他。
在最新的(每晚)wireshark 1.11版本中,您可以獲得原始Lua字符串的原始緩衝區字符串,並將其與您的以太網地址(作爲二進制Lua字符串,而不是ASCII字符)進行比較。也有功能可以轉換爲/從十六進制,所以你可以將其轉換爲十六進制ASCII等等。
當然,你可以做的另一件事是獲得每個字節或一對字節,如buf(0,2):uint()
和buf(2,2):uint()
和buf(4,2):uint()
,並將它們作爲數字進行比較。