Python黑客编程3网络数据监听和过滤

Python黑客编程3网络数据监听和过滤

 

  课程的实验环境如下:

      操作系统:kali Linux 2.0

      编程工具:Wing IDE

      Python版本:2.7.9

      涉及到的主要python模块:pypcapdpkt,scapyscapy-http

 

涉及到的几个python网络抓包和分析的模块,dpktscapykali linux 2.0 中默认已经被安装,如果你的系统中没有需要手动安装一下,下面是软件包安装的简单说明。

kali下安装pypcap需要两步(如果在其他系统上可能还需要安装python-dev):

apt-get install libpcap-dev

pip install pypcap

  使用pip安装scapy

root@kali:/home/pycharm# pip install scapy

使用pip安装scapy-http

root@kali:/home/pycharm# pip install scapy-http

基础环境准备好之后,我还要再唠叨一下你必须要掌握的基础。

1.1  技术没有黑白,网络编程的基础是协议

把编程挂上黑客的名义,多少有些标题党。代码怎么写,程序怎么用,完全是技术问题。不会因为叫网络编程就低人一等,叫黑客编程也不会变得神秘或者高大上,代码就在那里,不卑微也不高尚。所以学习编程,要有颗平常心。

很多听课的同学和我反应,网络编程格外的吃力,繁琐,要实现某种功能,如果Google不到类似的代码就无法下手。各种语言或者框架针对网络编程的实现基本都相同,因为我们接触到网络通信都基于统一的规范和标准,语言和框架只是在用自己的方式去描述这个规范而已。本质的问题来了,如果你连基本的网络通信的四层模型都不懂,对TCP/IP协议族毫无概念,那么我奉劝你先不要着急敲代码,找本书,打开WireShark这样的工具好好做做练习。

本次课程中的所有案例,其实都在遵循一个基本的思路(其他网络通信场景类似):

初始化以太网数据包对象à以太网数据包分离出ip数据包àIP数据包分离传输层数据包à传输层数据包分离应用层数据包。

只要我们具备基础的网络知识,结合程序中各个对象提供的字段就能得到我们想要的任何基础信息,在此基础上做些信息处理就能完成大部分网络监听和数据处理的任务。附上几幅图,如果这方面有欠缺的话,请立即去充电吧!

 

以太网帧格式

 

ip数据包格式

Tcp数据包格式

1.2  使用pypcap实时抓包

pypcap进行实时的数据包捕获,使用上很简单,我们先看一小段示例代码:

import pcap

 

pc=pcap.pcap('wlan0')  #注,参数可为网卡名,如eth0

pc.setfilter('tcp port 80')    #2.设置监听过滤器

for ptime,pdata in pc:    #ptime为收到时间,pdata为收到数据

    print ptime,pdata    #...

在上面的代码中,我们通过import pcap首先引入pypcap包,然后初始化一个pcap类实例,构造函数需要传入一个网卡用来监听,我们可以通过ifconfig获取当前机器上的网卡。

pcap类的setfilter方法用来设置监听过滤条件,这里我们设置过滤的数据包为tcp协议80端口的数据。之后程序就进入监听状态了。

接下来我们循环输出接收到的数据,ptime为时间,pdata的数据,默认数据打印为ascii字符,效果如下:

在抓到数据包之后,下一步就需要对数据进行解析,这里我们引入dpkt组件包。

1.3  使用dpkt 解析数据包

 

dpkt,简单来说是一个数据包解析工具,可以解析离线/实时pcap数据包。

1.3.1 实时解析

我们以下面的代码为例,讲解基本应用。

import pcap

import dpkt

 

def captData():

    pc=pcap.pcap('wlan0')  #注,参数可为网卡名,如eth0

    pc.setfilter('tcp port 80')    #设置监听过滤器

  • 4
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值