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函数的周期性执行实现方法
Aug 13 Python
Python装饰器知识点补充
May 28 Python
python之cv2与图像的载入、显示和保存实例
Dec 05 Python
Python离线安装PIL 模块的方法
Jan 08 Python
简单了解Django应用app及分布式路由
Jul 24 Python
基于Python安装pyecharts所遇的问题及解决方法
Aug 12 Python
Python Subprocess模块原理及实例
Aug 26 Python
利用python实现PSO算法优化二元函数
Nov 13 Python
python 实现Flask中返回图片流给前端展示
Jan 09 Python
Python tkinter和exe打包的方法
Feb 05 Python
python词云库wordcloud的使用方法与实例详解
Feb 17 Python
pytorch 中nn.Dropout的使用说明
May 20 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方法调用模式与函数调用模式简例
2011/09/20 PHP
php数组函数序列之array_unique() - 去除数组中重复的元素值
2011/10/29 PHP
摘自织梦CMS的HTTP文件下载类
2015/08/08 PHP
php代码检查代理ip的有效性
2016/08/19 PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
2020/04/04 PHP
js购物车实现思路及代码(个人感觉不错)
2013/12/23 Javascript
js 3秒后跳转页面的实现代码
2014/03/10 Javascript
nodejs npm包管理的配置方法及常用命令介绍
2014/06/05 NodeJs
浅谈Node.js中的定时器
2015/06/18 Javascript
使用伪命名空间封装保护独自创建的对象方法
2016/08/04 Javascript
分享JS代码实现鼠标放在输入框上输入框和图片同时更换样式
2016/09/01 Javascript
基于javascript实现最简单选项卡切换
2017/02/01 Javascript
nodejs图片处理工具gm用法小结
2018/12/12 NodeJs
Vue实现多页签组件
2021/01/14 Vue.js
Python设计足球联赛赛程表程序的思路与简单实现示例
2016/06/28 Python
python变量不能以数字打头详解
2016/07/06 Python
Python机器学习之K-Means聚类实现详解
2018/02/22 Python
Python3中关于cookie的创建与保存
2018/10/21 Python
我就是这样学习Python中的列表
2019/06/02 Python
Python大数据之使用lxml库解析html网页文件示例
2019/11/16 Python
详解css3自定义滚动条样式写法
2017/12/25 HTML / CSS
html5 canvas绘制矩形和圆形的实例代码
2016/06/16 HTML / CSS
小程序canvas中文字设置居中锚点
2019/04/16 HTML / CSS
德国古洛迷亚百货官网:GALERIA Kaufhof
2017/06/20 全球购物
英国鲜花速递:Serenata Flowers
2018/04/03 全球购物
美国农场鲜花速递:The Bouqs
2018/07/13 全球购物
法律工作求职自荐信
2013/10/31 职场文书
《最佳路径》教学反思
2014/04/13 职场文书
小学学习雷锋活动总结
2014/07/03 职场文书
小学生国庆节演讲稿
2014/09/05 职场文书
教师党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
党员进社区活动总结
2015/05/07 职场文书
第一军规观后感
2015/06/12 职场文书
CocosCreator入门教程之网络通信
2021/04/16 Javascript
默认网关不可用修复后过一会又不好使了解决方法
2022/04/08 数码科技
win10系统xps文件怎么打开?win10打开xps文件的两种操作方法
2022/07/23 数码科技