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实现巡检系统(solaris)示例
Apr 02 Python
Python简单获取网卡名称及其IP地址的方法【基于psutil模块】
May 24 Python
用Python分析3天破10亿的《我不是药神》到底神在哪?
Jul 12 Python
python多进程使用及线程池的使用方法代码详解
Oct 24 Python
python使用xlsxwriter实现有向无环图到Excel的转换
Dec 12 Python
Python分析彩票记录并预测中奖号码过程详解
Jul 09 Python
Python的matplotlib绘图如何修改背景颜色的实现
Jul 16 Python
pandas read_excel()和to_excel()函数解析
Sep 19 Python
详解python tkinter模块安装过程
Jan 06 Python
Python中的__init__作用是什么
Jun 09 Python
利用Python实现朋友圈中的九宫格图片效果
Sep 03 Python
python 破解加密zip文件的密码
Apr 22 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实现微信小程序授权登录功能(实现流程)
2019/11/13 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
URI、URL和URN之间的区别与联系
2006/12/20 Javascript
用jscript启动sqlserver
2007/06/21 Javascript
Node.js模块加载详解
2014/08/16 Javascript
关于Javascript加载执行优化的研究报告
2014/12/16 Javascript
浅谈javascript中自定义模版
2015/01/29 Javascript
基于Bootstrap里面的Button dropdown打造自定义select
2016/05/30 Javascript
jQuery+ajax实现实用的点赞插件代码
2016/07/06 Javascript
JS简单实现无缝滚动效果实例
2016/08/24 Javascript
轻松掌握JavaScript状态模式
2016/09/07 Javascript
基于jQuery ligerUI实现分页样式
2016/09/18 Javascript
JavaScript中String对象的方法介绍
2017/01/04 Javascript
BootStrap的select2既可以查询又可以输入的实现代码
2017/02/17 Javascript
Node.js利用js-xlsx处理Excel文件的方法详解
2017/07/05 Javascript
微信小程序之绑定点击事件实例详解
2017/07/07 Javascript
Vue组件选项props实例详解
2017/08/18 Javascript
iphone刘海屏页面适配方法
2019/05/07 Javascript
js变量值传到php过程详解 将php解析成数据
2019/06/26 Javascript
node读写Excel操作实例分析
2019/11/06 Javascript
微信小程序收藏功能的实现代码
2020/06/19 Javascript
[49:08]FNATIC vs Infamous 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
python实现的一只从百度开始不断搜索的小爬虫
2013/08/13 Python
python实现的文件同步服务器实例
2015/06/02 Python
python查询文件夹下excel的sheet名代码实例
2019/04/02 Python
Python生成MD5值的两种方法实例分析
2019/04/26 Python
python opencv将表格图片按照表格框线分割和识别
2019/10/30 Python
Python调用钉钉自定义机器人的实现
2020/01/03 Python
Python延迟绑定问题原理及解决方案
2020/08/04 Python
浅析css3中matrix函数的使用
2016/06/06 HTML / CSS
生产厂长岗位职责
2014/02/21 职场文书
厨师个人自我鉴定范文
2014/04/19 职场文书
2014年中职班主任工作总结
2014/12/16 职场文书
2015年上半年物业工作总结
2015/03/30 职场文书
2016高考冲刺决心书
2015/09/23 职场文书
关于保护环境的建议书
2019/06/24 职场文书