python解析发往本机的数据包示例 (解析数据包)


Posted in Python onJanuary 16, 2014

tcp.py

# -*- coding: cp936 -*-
import socket
from struct import *
from time import ctime,sleep
from os import system
system('title tcp sniffer')
system('color 05')
# the public network interface
HOST = socket.gethostbyname(socket.gethostname())
# create a raw socket and bind it to the public interface
s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IP)
s.bind((HOST, 0))
# Include IP headers
s.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)
# receive all packages
#s.ioctl(socket.SIO_RCVALL, socket.RCVALL_ON)
# receive a package
while 1==1:
    packet = s.recvfrom(65565)
    packet = packet[0]
    ip_header = packet[0:20]
    iph = unpack('!BBHHHBBH4s4s',ip_header)
    version = iph[0] >> 4 #Version
    ihl = iph[0] * 0xF    #IHL
    iph_length = ihl * 4  #Total Length
    ttl = iph[5]
    protocol = iph[6]
    s_addr = socket.inet_ntoa(iph[8])
    d_addr = socket.inet_ntoa(iph[9])
    print ctime()
    print 'Version : ' + str(version) + ' IHL : ' + str(ihl) + ' Total Length: '+str(iph_length) + ' TTL : ' +str(ttl) + ' Protocol : ' + str(protocol) + ' Source Address : ' + str(s_addr) + ' Destination Address : ' + str(d_addr)
    if protocol == 6:
        tcp_header = packet[20:40]
        tcph = unpack('!HHLLBBHHH' , tcp_header)
        source_port = tcph[0]
        dest_port = tcph[1]
        sequence = tcph[2]
        acknowledgement = tcph[3]
        doff_reserved = tcph[4]
        tcph_length = doff_reserved >> 4
        print 'Source Port : ' + str(source_port) + ' Dest Port : ' + str(dest_port) + ' Sequence Number : ' + str(sequence) + ' Acknowledgement : ' + str(acknowledgement) + ' TCP header length : ' + str(tcph_length)
        data = packet[40:len(packet)]
        print 'Data : ' + data

# disabled promiscuous mode
s.ioctl(socket.SIO_RCVALL, socket.RCVALL_OFF)

udp.py

# -*- coding: cp936 -*-
import socket
from struct import *
from time import ctime,sleep
from os import system
system('title udp sniffer')
system('color 05')
# the public network interface
HOST = socket.gethostbyname(socket.gethostname())
# create a raw socket and bind it to the public interface
s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IP)
s.bind((HOST, 0))
# Include IP headers
s.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)
# receive all packages
#s.ioctl(socket.SIO_RCVALL, socket.RCVALL_ON)
# receive a package
while 1==1:
    packet = s.recvfrom(65565)
    packet = packet[0]
    ip_header = packet[0:20]
    iph = unpack('!BBHHHBBH4s4s',ip_header)
    version = iph[0] >> 4 #Version
    ihl = iph[0] * 0xF    #IHL
    iph_length = ihl * 4  #Total Length
    ttl = iph[5]
    protocol = iph[6]
    s_addr = socket.inet_ntoa(iph[8])
    d_addr = socket.inet_ntoa(iph[9])
    if protocol == 17:
        udp_header = packet[20:28]
        udph = unpack('!HHHH' , udp_header)
        source_port = udph[0]
        dest_port = udph[1]
        length = udph[2]
        checksum = udph[3]
        data = packet[28:len(packet)]
        print ctime()
        print 'Version : ' + str(version) + ' IHL : ' + str(ihl) + ' Total Length: '+str(iph_length) + ' TTL : ' +str(ttl) + ' Protocol : ' + str(protocol) + ' Source Address : ' + str(s_addr) + ' Destination Address : ' + str(d_addr)
        print 'Source Port : ' + str(source_port) + ' Dest Port : ' + str(dest_port) + ' Length : ' + str(length) + ' Checksum : ' + str(checksum)
        print 'Data : ' + data 
# disabled promiscuous mode
s.ioctl(socket.SIO_RCVALL, socket.RCVALL_OFF)
Python 相关文章推荐
python进程管理工具supervisor的安装与使用教程
Sep 05 Python
Python实现定时备份mysql数据库并把备份数据库邮件发送
Mar 08 Python
python集合比较(交集,并集,差集)方法详解
Sep 13 Python
pygame实现雷电游戏雏形开发
Nov 20 Python
Pandas中resample方法详解
Jul 02 Python
python中将两组数据放在一起按照某一固定顺序shuffle的实例
Jul 15 Python
django实现web接口 python3模拟Post请求方式
Nov 19 Python
Python中sys模块功能与用法实例详解
Feb 26 Python
Pycharm pyuic5实现将ui文件转为py文件,让UI界面成功显示
Apr 08 Python
django rest framework 自定义返回方式
Jul 12 Python
Visual Studio Code搭建django项目的方法步骤
Sep 17 Python
python中entry用法讲解
Dec 04 Python
python多线程扫描端口示例
Jan 16 #Python
python发送arp欺骗攻击代码分析
Jan 16 #Python
分析python服务器拒绝服务攻击代码
Jan 16 #Python
python获取豆瓣电影简介代码分享
Jan 16 #Python
linux系统使用python获取cpu信息脚本分享
Jan 15 #Python
linux系统使用python监测系统负载脚本分享
Jan 15 #Python
linux系统使用python获取内存使用信息脚本分享
Jan 15 #Python
You might like
教大家制作简单的php日历
2015/11/17 PHP
PHP访问数据库集群的方法小结
2016/03/14 PHP
如何解决PHP使用mysql_query查询超大结果集超内存问题
2016/03/14 PHP
PHP 二维数组和三维数组的过滤
2016/03/16 PHP
根据地区不同显示时间的javascript代码
2007/08/13 Javascript
无缝滚动js代码通俗易懂(自写)
2013/06/19 Javascript
JS:window.onload的使用介绍
2013/11/13 Javascript
JS检测输入字符是否包含非法字符的示例代码
2014/02/11 Javascript
nodejs中使用多线程编程的方法实例
2015/03/24 NodeJs
js实现简易的单数字随机抽奖(0-9)
2020/03/19 Javascript
js+css实现有立体感的按钮式文字竖排菜单效果
2015/09/01 Javascript
基于javascript实现窗口抖动效果
2016/01/03 Javascript
WordPress中鼠标悬停显示和隐藏评论及引用按钮的实现
2016/01/12 Javascript
js简单实现调整网页字体大小的方法
2016/07/23 Javascript
基于Bootstrap的网页设计实例
2017/03/01 Javascript
nodejs 终端打印进度条实例代码
2017/04/22 NodeJs
Angular 4.x 路由快速入门学习
2017/05/03 Javascript
Bootstrap下拉菜单更改为悬停(hover)触发的方法
2017/05/24 Javascript
Node.js 8 中的重要新特性
2017/06/28 Javascript
使用ngrok+express解决本地环境中微信接口调试问题
2018/02/26 Javascript
解决vue-cli + webpack 新建项目出错的问题
2018/03/20 Javascript
vue3.0 CLI - 2.5 - 了解组件的三维
2018/09/14 Javascript
Vue中使用canvas方法总结
2019/02/12 Javascript
layer 关闭指定弹出层的例子
2019/09/25 Javascript
uni-app自定义导航栏按钮|uniapp仿微信顶部导航条功能
2019/11/12 Javascript
python中使用mysql数据库详细介绍
2015/03/27 Python
python基础教程之匿名函数lambda
2017/01/17 Python
Pytorch加载部分预训练模型的参数实例
2019/08/18 Python
selenium+PhantomJS爬取豆瓣读书
2019/08/26 Python
django model的update时auto_now不被更新的原因及解决方式
2020/04/01 Python
使用python实现下载我们想听的歌曲,速度超快
2020/07/09 Python
来自美国主售篮球鞋的零售商店:KICKSUSA
2017/11/28 全球购物
会计专业应届生自荐信
2014/02/07 职场文书
护理人员的自我评价分享
2014/03/15 职场文书
恋恋笔记本观后感
2015/06/16 职场文书
2019最新婚庆对联集锦!
2019/07/10 职场文书