lua脚本语言在WireShark中的使用浅析

lua语言在wireshark中的使用浅析

         最近项目中使用了一直没接触过的wireshark,从基本的使用到过滤条件的书写,数据的获取查看一步步的都要学习。一直很好奇过滤条件是怎么实现的,借助于api和一些博客的介绍,自己也简单写了个条件过滤的脚本。网上的博客介绍的也比较少,在这里对网上自己不易搜到的一些知识做个总结,分享给需要的朋友。

  1.  wireshark要使用自己编写的脚本首先要在wireshark的安装文件下的init.lua脚本里把这个脚本添加进去。
  2. 定义一个协议。
  3. 实现协议的内容。
  4. 注册协议的端口。

         具体的实现步骤网上有很多,在这里就不写了。下面主要记录在自己编写脚本的过程不容易找到的东西。

         1)buffer(1,1):uint()

                 buffoer()后面的unit()方法是把字节转化为无符号整型的值。buffer(a,b)方法第二个参数b不能大于4,因为是int取值。如果要超过4位可以使用uint64()。由于没注意   到这个细节,在这里折腾了好长时间没找到错误。

          2) buffer(a,b):string()  

                 buffer()后面的string()可以把获得的字节转化为string类型的字符串。

         3) string.format("%d",buffer(44,4):uint())

                这行代码实现的功能是从第44位开始读取4个字节长度的值,转化为十进制的整形。使用了string.format()的格式化方法。

        4) tostring(), tonumber()

               这两个方式可以分别把读取的值转换为string字符串或者number类型。

       5)时间值的转换

             os.date("%Y/%m/%d %H:%m:%S",time)  这行代码可以将time转换为1970年以后的时间格式:年/月/日   时:分:秒。os.date()里面的参数可以有好多,具体可以网上搜,在这里不一一列举了。要注意time的值不能是string类型。同时如果读取出来的是毫秒值一定要/1000转换成秒值,否则日期转换时不成功的。

      初学才几天时间,不过已经实现自己想要的脚本功能,这也说明lua脚本语言比较好学,同时如果以上内容有什么错误的地方欢迎指正,交流。

           


猜你喜欢

转载自blog.csdn.net/fengyibande/article/details/51549538