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 06 Python
简单分析Python中用fork()函数生成的子进程
May 04 Python
Python中atexit模块的基本使用示例
Jul 08 Python
浅谈python内置变量-reversed(seq)
Jun 21 Python
python基础_文件操作实现全文或单行替换的方法
Sep 04 Python
Python 机器学习库 NumPy入门教程
Apr 19 Python
用Python实现数据的透视表的方法
Nov 16 Python
python3+PyQt5 自定义窗口部件--使用窗口部件样式表的方法
Jun 26 Python
10个Python面试常问的问题(小结)
Nov 20 Python
Pytorch根据layers的name冻结训练方式
Jan 06 Python
从零开始的TensorFlow+VScode开发环境搭建的步骤(图文)
Aug 31 Python
Python中免验证跳转到内容页的实例代码
Oct 23 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代码
2012/06/08 PHP
使用PHP接收POST数据,解析json数据
2013/06/28 PHP
PHP编程实现阳历转换为阴历的方法实例
2017/08/08 PHP
php tpl模板引擎定义与使用示例
2019/08/09 PHP
原生javascript实现图片按钮切换
2015/01/12 Javascript
jQuery中outerWidth()方法用法实例
2015/01/19 Javascript
javascript禁止访客复制网页内容的实现代码
2015/08/05 Javascript
JavaScript常用代码书写规范的超全面总结
2016/09/11 Javascript
Bootstrap模态窗口源码解析
2017/02/08 Javascript
vue中用动态组件实现选项卡切换效果
2017/03/25 Javascript
jQuery插件FusionCharts绘制的2D帕累托图效果示例【附demo源码】
2017/03/28 jQuery
JavaScript实现QQ列表展开收缩扩展功能
2017/10/30 Javascript
vue开发环境配置跨域的方法步骤
2019/01/16 Javascript
JavaScript多种滤镜算法实现代码实例
2019/12/10 Javascript
vuex入门最详细整理
2020/03/04 Javascript
vue-resource post数据时碰到Django csrf问题的解决
2020/03/13 Javascript
[16:43]Heroes19_剃刀(完美)
2014/10/31 DOTA
讲解Python的Scrapy爬虫框架使用代理进行采集的方法
2016/02/18 Python
django 删除数据库表后重新同步的方法
2018/05/27 Python
如何用Python实现简单的Markdown转换器
2018/07/16 Python
Django Sitemap 站点地图的实现方法
2019/04/29 Python
python学生信息管理系统实现代码
2019/12/17 Python
python抢购软件/插件/脚本附完整源码
2021/03/04 Python
美国肌肉和力量商店:Muscle & Strength
2019/06/22 全球购物
金山毒霸系列的笔试题
2013/04/13 面试题
this关键字的作用
2016/01/30 面试题
教师校本培训方案
2014/02/26 职场文书
家长写给孩子的评语
2014/04/18 职场文书
导师评语大全
2014/04/26 职场文书
小区门卫的岗位职责
2014/09/26 职场文书
维稳工作承诺书
2015/01/20 职场文书
2015年体育教师个人工作总结
2015/05/12 职场文书
2019年大学生学年自我鉴定!
2019/03/25 职场文书
将Python代码打包成.exe可执行文件的完整步骤
2021/05/12 Python
用python开发一款操作MySQL的小工具
2021/05/12 Python
python 闭包函数详细介绍
2022/04/19 Python