阅读maltrail源码所遇到问题

maltrail结构

整个系统分为sensor.py和server.py,首先分析sensor.py
在setting.py中定义了一些常量,包括版本号,项目名称,服务端端口号,trails_file等

python 语法问题

  1. 函数参数传入时,list变量前面增加*,表示解包,每个list的元素作为参数传入函数中。
  2. enumerate 对象,能将序列变成[(0,x1),(1,x2)…],每个元素变为一个元组,元组第一个元素时序号,序号的起始序号能够通过enumerate对象的构造函数指定,x1、x2是原序列中的元素。
  3. zip(iterate),将两个可迭代对象,压缩为[(x1,y1),(x2,y2),(x3,y3)…],x、y分别是两个可迭代对象。
  4. re.compile(pattern,flags)返回一个正则表达对象,这个对象的行为可通过flag改变
  5. sys.dont_write_bytecode = True 这个True则python文件在import时不会写成pyc
  6. os.path.dirname(path)返回path路径的目录路径,os.path.join(path, *paths)将路径连接起来
  7. 判断字符串为空,if not a_str:
  8. any(iterable) 如果iterable里任意一个元素不为空就返回True
  9. isinstance(getattr(options, option), (basestring, bool)) 这个isinstance判断
  10. xrange与range的差别是xrange产生一个生成器,这样不需要一开始就开辟内存空间,除非需要list,则优先使用xrange。
  11. 统计代码行数使用命令find . -name “*.py” | xargs cat | wc -l
  12. 默认监听所有的网卡,此时pcapy.findalldevs返回中选择any
  13. 在linux中有两种特殊的open标识,分别是O_DIRCT和O_SYNC。O_DIRCT表示无缓冲的输入输出,使得用户的数据在进行磁盘IO时,能够绕过缓冲区高速缓存,从用户空间直接将数据传递到文件或磁盘,适用于那些需要自己接管缓存功能的应用,比如数据库。在python中,使用open()不能直接使用O_DIRCT作为参数,参考资料
  14. inspect模块有许多方法用来获得模块、类、函数里面的信息
  15. 正则表达式finditer匹配得到的re.MatchObject,其中有re.MatchObject.group(0)表示整个正则表达式匹配所得,group(1)表示第一个所得,group(2)表示第二个匹配到的对象

optparse

optparse已经被argparse取代,他们的用法很相近。

设置网卡为混杂模式

sudo ifconfig promisc

使用cmake+clion编译wireshark

因为不需要使用gui,所以在wireshark的根目录下的CMakeLists.txt中开头部分增加

set(BUILD_wireshark 0)  
set(BUILD_wireshark_gtk 0)  

然后build_all,可以到cmake-build-debug下看到tshark了,tshark的功能和wireshark差不多。在wireshark源码中的wireshark/epan/dissectors/下有许多网络协议的代码,其中就包括s7comm

ubuntu 16.04安装wireshark

sudo add-apt-repository ppa:wireshark-dev/stable
sudo apt-get update
sudo apt-get install wireshark

阅读wireshark时遇到的Linux函数

  1. dladdr将检测是不是addr这个地址中的共享库被当期程序所加载,如果是,那么info中储存shared object信息
#define _GNU_SOURCE
#include 
int dladdr(void *addr, Dl_info *info);

安装pyenv

首先安装依赖

sudo apt install make git build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev
sudo apt install libsqlite3-dev wget curl llvm libncurses5-dev xz-utils tk-dev

然后安装pyenv

curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash

然后修改.bashrc

vi ~/.bashrc
# 加上如下部分
export PATH="/home/wjmr/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
# 保存并运行source使得.bashrc生效
source ~/.bashrc

ubuntu 安装wireshark

首先

sudo add-apt-repository ppa:wireshark-dev/stable
sudo apt-get update
sudo apt-get install wireshark
sudo wireshark

如果出现以下错误

couldn't run /usr/bin/dumpcap in child process: Permission Denied

则输入以下命令

sudo dpkg-reconfigure wireshark-common

输入yes,然后添加用户到wireshark的用户组

sudo adduser $USER wireshark

你可能感兴趣的:(Python学习)