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中操作字符串之rstrip()方法的使用
May 19 Python
Python中常见的数据类型小结
Aug 29 Python
实例Python处理XML文件的方法
Aug 31 Python
python实现红包裂变算法
Feb 16 Python
python去除空格和换行符的实现方法(推荐)
Jan 04 Python
Scrapy的简单使用教程
Oct 24 Python
Python实现自动上京东抢手机
Feb 06 Python
详解Python安装tesserocr遇到的各种问题及解决办法
Mar 07 Python
Python猫眼电影最近上映的电影票房信息
Sep 18 Python
Python利用imshow制作自定义渐变填充柱状图(colorbar)
Dec 10 Python
python OpenCV学习笔记
Mar 31 Python
python基础之函数的定义和调用
Oct 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
超外差式晶体管收音机的组装与统调
2021/03/01 无线电
php之字符串变相相减的代码
2007/03/19 PHP
php 字符串压缩方法比较示例
2014/01/23 PHP
关于PHP 如何用 curl 读取 HTTP chunked 数据
2016/02/26 PHP
thinkphp5 URL和路由的功能详解与实例
2017/12/26 PHP
基于 Swoole 的微信扫码登录功能实现代码
2018/01/15 PHP
用javascript实现给出的盒子的序列是否可连为一矩型
2007/08/30 Javascript
div层的移动及性能优化
2010/11/16 Javascript
jquery及原生js获取select下拉框选中的值示例
2013/10/25 Javascript
javascript放大镜效果的简单实现
2013/12/09 Javascript
JavaScript中获取样式的原生方法小结
2014/10/08 Javascript
JavaScript中使用Object.create()创建对象介绍
2014/12/30 Javascript
jquery使用正则表达式验证email地址的方法
2015/01/22 Javascript
bootstrap的常用组件和栅格式布局详解
2017/05/02 Javascript
Vue.js实现网格列表布局转换方法
2017/08/25 Javascript
Vue 创建组件的两种方法小结(必看)
2018/02/23 Javascript
Python查看多台服务器进程的脚本分享
2014/06/11 Python
Python日志模块logging简介
2015/04/13 Python
详解Python编程中包的概念与管理
2015/10/16 Python
使用 Python 玩转 GitHub 的贡献板(推荐)
2019/04/04 Python
python实现银联支付和支付宝支付接入
2019/05/07 Python
linux下python中文乱码解决方案详解
2019/08/28 Python
python创建子类的方法分析
2019/11/28 Python
关于sys.stdout和print的区别详解
2019/12/05 Python
Pytorch自己加载单通道图片用作数据集训练的实例
2020/01/18 Python
Python基于class()实现面向对象原理详解
2020/03/26 Python
Keras搭建自编码器操作
2020/07/03 Python
网络技术支持面试题
2013/04/22 面试题
优秀士兵个人事迹材料
2014/01/19 职场文书
大学生职业生涯规划书
2014/03/14 职场文书
物理教育专业求职信
2014/06/25 职场文书
优秀党员推荐材料
2014/12/18 职场文书
公司经营目标责任书
2015/01/29 职场文书
2016年学习雷锋精神广播稿
2015/12/17 职场文书
2016年学校党支部创先争优活动总结
2016/04/05 职场文书
SQL Server数据定义——模式与基本表操作
2021/04/05 SQL Server