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多线程结合队列下载百度音乐的方法
Jul 27 Python
浅谈Python 的枚举 Enum
Jun 12 Python
Python实现发送QQ邮件的封装
Jul 14 Python
Python 多进程并发操作中进程池Pool的实例
Nov 01 Python
Python如何实现MySQL实例初始化详解
Nov 06 Python
python实现txt文件格式转换为arff格式
May 31 Python
django-rest-swagger对API接口注释的方法
Aug 29 Python
Python列表list常用内建函数实例小结
Oct 22 Python
Python flask路由间传递变量实例详解
Jun 03 Python
详解python中的lambda与sorted函数
Sep 04 Python
python 密码学示例——理解哈希(Hash)算法
Sep 21 Python
python通过cython加密代码
Dec 11 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去除HTML标签实例
2013/11/06 PHP
PHP实现对文件锁进行加锁、解锁操作的方法
2017/07/04 PHP
理解 JavaScript 预解析
2009/10/25 Javascript
jQuery Validation实例代码 让验证变得如此容易
2010/10/18 Javascript
jQuery 1.5.1 发布,全面支持IE9 修复大量bug
2011/02/26 Javascript
jquery利用ajax调用后台方法实例
2013/08/23 Javascript
jQuery中queue()方法用法实例
2014/12/29 Javascript
jquery制作 随机弹跳的小球特效
2015/02/01 Javascript
使用Raygun对Node.js应用进行错误处理的方法
2015/06/23 Javascript
Javascript显示和隐藏ul列表的方法
2015/07/15 Javascript
javascript实现禁止鼠标滚轮事件
2015/07/24 Javascript
基于Jquery实现万圣节快乐特效
2015/11/01 Javascript
教你30秒发布一个TypeScript包到NPM的方法步骤
2019/07/22 Javascript
layui 弹出层值回传解决方式
2019/11/14 Javascript
安装多版本Vue-CLI的实现方法
2020/03/24 Javascript
Vue环境搭建+VSCode+Win10的详细教程
2020/08/19 Javascript
javascript实现下拉菜单效果
2021/02/09 Javascript
Python语言描述机器学习之Logistic回归算法
2017/12/21 Python
python实现读取大文件并逐行写入另外一个文件
2018/04/19 Python
python实现爬取图书封面
2018/07/05 Python
python 使用sys.stdin和fileinput读入标准输入的方法
2018/10/17 Python
Python文件如何引入?详解引入Python文件步骤
2018/12/10 Python
详解Python 爬取13个旅游城市,告诉你五一大家最爱去哪玩?
2019/05/07 Python
Python3显示当前时间、计算时间差及时间加减法示例代码
2019/09/07 Python
tensorflow使用range_input_producer多线程读取数据实例
2020/01/20 Python
Python使用pycharm导入pymysql教程
2020/09/16 Python
详解CSS3选择器:nth-child和:nth-of-type之间的差异
2017/09/18 HTML / CSS
兰蔻俄罗斯官方网站:Lancome俄罗斯
2019/12/09 全球购物
学习十八大报告感言
2014/02/04 职场文书
环保建议书作文
2014/03/12 职场文书
镇人大副主席民主生活会对照检查材料思想汇报
2014/10/01 职场文书
2015年扶贫帮困工作总结
2015/05/20 职场文书
2016年五一促销广告语
2016/01/28 职场文书
使用Pytorch实现two-head(多输出)模型的操作
2021/05/28 Python
Python办公自动化解决world文件批量转换
2021/09/15 Python
使用refresh_token实现无感刷新页面
2022/04/26 Javascript