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元组操作实例解析
Sep 23 Python
讲解Python中的递归函数
Apr 27 Python
Python 错误和异常代码详解
Jan 29 Python
python实现数据导出到excel的示例--普通格式
May 03 Python
python实现换位加密算法的示例
Oct 14 Python
浅析Python 读取图像文件的性能对比
Mar 07 Python
Python高级特性与几种函数的讲解
Mar 08 Python
Python通过递归获取目录下指定文件代码实例
Nov 07 Python
python-xpath获取html文档的部分内容
Mar 06 Python
python shapely.geometry.polygon任意两个四边形的IOU计算实例
Apr 12 Python
Numpy 多维数据数组的实现
Jun 18 Python
Python连接Postgres/Mysql/Mongo数据库基本操作大全
Jun 29 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
qq登录,新浪微博登录接口申请过程中遇到的问题
2014/07/22 PHP
javascript demo 基本技巧
2009/12/18 Javascript
js或css实现滚动广告的几种方案
2010/01/28 Javascript
javascript笔记 String类replace函数的一些事
2011/09/22 Javascript
js不能跳转到上一页面的问题解决方法
2013/03/01 Javascript
JS添加删除一组文本框并对输入信息加以验证判断其正确性
2013/04/11 Javascript
javascript获取checkbox复选框获取选中的选项
2014/08/12 Javascript
JavaScript字符串对象charAt方法入门实例(用于取得指定位置的字符)
2014/10/17 Javascript
jQuery mobile 移动web(4)
2015/12/20 Javascript
javascript运算符——逻辑运算符全面解析
2016/06/27 Javascript
jQuery中select与datalist制作下拉菜单时的区别浅析
2016/12/30 Javascript
微信小程序的分类页面制作
2017/06/27 Javascript
jQuery实现的事件绑定功能基本示例
2017/10/11 jQuery
浅析前端路由简介以及vue-router实现原理
2018/06/01 Javascript
JavaScript对象拷贝与Object.assign用法实例分析
2018/06/20 Javascript
Vue插值、表达式、分隔符、指令知识小结
2018/10/12 Javascript
Angular 实现输入框中显示文章标签的实例代码
2018/11/07 Javascript
JS实现的贪吃蛇游戏案例详解
2019/05/01 Javascript
[02:36]DOTA2混沌骑士 英雄基础教程
2013/11/26 DOTA
用Python的线程来解决生产者消费问题的示例
2015/04/02 Python
Python使用xlrd模块操作Excel数据导入的方法
2015/05/26 Python
Python脚本简单实现打开默认浏览器登录人人和打开QQ的方法
2016/04/12 Python
Python判断有效的数独算法示例
2019/02/23 Python
Python定时任务框架APScheduler原理及常用代码
2020/10/05 Python
python 基于wx实现音乐播放
2020/11/24 Python
长安大学毕业生自我鉴定
2014/01/17 职场文书
财务总监管理职责范文
2014/03/09 职场文书
保研推荐信
2014/05/09 职场文书
金融系毕业生自荐书
2014/07/08 职场文书
财务工作个人总结
2015/02/27 职场文书
护士自我推荐信范文
2015/03/24 职场文书
2015社区爱国卫生工作总结
2015/04/21 职场文书
幼儿园端午节活动总结
2015/05/05 职场文书
《植物妈妈有办法》教学反思
2016/02/23 职场文书
完美处理python与anaconda环境变量的冲突问题
2021/04/07 Python
Redis如何实现分布式锁
2021/08/23 Redis