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实现中文转换url编码的方法
Jun 14 Python
Python爬取数据并写入MySQL数据库的实例
Jun 21 Python
Python3 获取一大段文本之间两个关键字之间的内容方法
Oct 11 Python
详解如何用django实现redirect的几种方法总结
Nov 22 Python
python 实现绘制整齐的表格
Nov 18 Python
python查找特定名称文件并按序号、文件名分行打印输出的方法
Apr 24 Python
PyQt5 控件字体样式等设置的实现
May 13 Python
解决Python安装cryptography报错问题
Sep 03 Python
如何使用python socket模块实现简单的文件下载
Sep 04 Python
Python使用cn2an实现中文数字与阿拉伯数字的相互转换
Mar 02 Python
python3.9之你应该知道的新特性详解
Apr 29 Python
Django框架中视图的用法
Jun 10 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 加密/解密函数 dencrypt(动态密文,带压缩功能,支持中文)
2009/01/30 PHP
浅析PHP中Collection 类的设计
2013/06/21 PHP
Linux下PHP连接Oracle数据库
2014/08/20 PHP
php文件下载处理方法分析
2015/04/22 PHP
thinkPHP5框架中widget的功能与用法详解
2018/06/11 PHP
基于PHP实现微信小程序客服消息功能
2019/08/12 PHP
JQuery中的ready函数冲突的解决方法
2010/05/17 Javascript
javascript学习笔记(七) js函数介绍
2012/06/19 Javascript
jQuery中ajax的load()方法用法实例
2014/12/26 Javascript
NodeJS Web应用监听sock文件实例
2015/02/18 NodeJs
解决js图片加载时出现404的问题
2020/11/30 Javascript
使用JS中的exec()方法构造正则表达式验证
2016/08/01 Javascript
jQuery的ajax中使用FormData实现页面无刷新上传功能
2017/01/16 Javascript
Vue2递归组件实现树形菜单
2017/04/10 Javascript
不到200行 JavaScript 代码实现富文本编辑器的方法
2018/01/03 Javascript
Vuejs监听vuex中值的变化的方法示例
2018/12/02 Javascript
微信小程序发送短信验证码完整实例
2019/01/07 Javascript
如何使用Jquery动态生成二级选项列表
2020/02/06 jQuery
python判断一个集合是否包含了另外一个集合中所有项的方法
2015/06/30 Python
Python爬虫实现百度图片自动下载
2018/02/04 Python
python flask解析json数据不完整的解决方法
2019/05/26 Python
Python read函数按字节(字符)读取文件的实现
2019/07/03 Python
Django 过滤器汇总及自定义过滤器使用详解
2019/07/19 Python
Tensorflow进行多维矩阵的拆分与拼接实例
2020/02/07 Python
Python根据字符串调用函数过程解析
2020/11/05 Python
爷爷追悼会答谢词
2014/01/24 职场文书
高中自我评价范文
2014/01/27 职场文书
小学生成长感言
2014/01/30 职场文书
进步之星获奖感言
2014/02/22 职场文书
交通事故私了协议书
2014/04/16 职场文书
保安公司服务承诺书
2014/05/28 职场文书
法律专业自荐信
2014/06/03 职场文书
幼儿园安全生产月活动总结
2014/07/05 职场文书
关于对大人不礼貌的检讨书
2014/09/29 职场文书
2014年客户经理工作总结
2014/11/20 职场文书
工作自我推荐信范文
2015/03/25 职场文书