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实现文件快照加密保护的方法
Jun 30 Python
微信跳一跳python辅助脚本(总结)
Jan 11 Python
Python 单元测试(unittest)的使用小结
Nov 14 Python
对Python的zip函数妙用,旋转矩阵详解
Dec 13 Python
Python中super函数用法实例分析
Mar 18 Python
python爬取Ajax动态加载网页过程解析
Sep 05 Python
Python搭建代理IP池实现接口设置与整体调度
Oct 27 Python
python-OpenCV 实现将数组转换成灰度图和彩图
Jan 09 Python
Python3.x+pyqtgraph实现数据可视化教程
Mar 14 Python
Python BeautifulReport可视化报告代码实例
Apr 13 Python
解决keras使用cov1D函数的输入问题
Jun 29 Python
Python pysnmp使用方法及代码实例
Aug 24 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
html中select语句读取mysql表中内容
2006/10/09 PHP
THINKPHP+JS实现缩放图片式截图的实现
2010/03/07 PHP
php小经验:解析preg_match与preg_match_all 函数
2013/06/29 PHP
PHP+jquery实时显示网站在线人数的方法
2015/01/04 PHP
WampServer搭建php环境时遇到的问题汇总
2015/07/23 PHP
用PHP写的一个冒泡排序法的函数简单实例
2016/05/26 PHP
Javascript 按位左移运算符使用介绍(
2014/02/04 Javascript
jQuery中eq()方法用法实例
2015/01/05 Javascript
详解如何在React组件“外”使用父组件的Props
2018/01/12 Javascript
详解vue静态资源打包中的坑与解决方案
2018/02/05 Javascript
在Vue中使用icon 字体图标的方法
2019/06/14 Javascript
JavaScript使用表单元素验证表单的示例代码
2019/08/20 Javascript
vue使用原生swiper代码实例
2020/02/05 Javascript
Vue的Options用法说明
2020/08/14 Javascript
Django日志模块logging的配置详解
2017/02/14 Python
python使用mysql数据库示例代码
2017/05/21 Python
python实现读Excel写入.txt的方法
2018/04/29 Python
PyQt5实现类似别踩白块游戏
2019/01/24 Python
keras实现基于孪生网络的图片相似度计算方式
2020/06/11 Python
python将YUV420P文件转PNG图片格式的两种方法
2021/01/22 Python
webView加载html图片遇到的问题解决
2019/10/08 HTML / CSS
Under Armour美国官网:美国知名高端功能性运动品牌
2016/09/05 全球购物
在家更换处方镜片:Lensabl
2019/05/01 全球购物
有abstract方法的类一定要用abstract修饰吗
2016/03/14 面试题
应届生文秘专业个人自荐信格式
2013/09/21 职场文书
护理专业本科生自荐信
2013/10/01 职场文书
运动会通讯稿50字
2014/01/30 职场文书
董事长助理工作职责
2014/06/08 职场文书
五五普法心得体会
2014/09/04 职场文书
图书借阅制度范本
2015/08/06 职场文书
幼儿园开学家长寄语(2016秋季)
2015/12/03 职场文书
小学语文教学反思范文
2016/03/03 职场文书
职工趣味运动会开幕词
2016/03/04 职场文书
Java实现多文件上传功能
2021/06/30 Java/Android
Windows Server 版本 20H2 于 8 月 9 日停止支持,Win10 版本 21H1 将于 12 月结束支
2022/07/23 数码科技
GO中sync包自由控制并发示例详解
2022/08/05 Golang