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 编码Basic Auth使用方法简单实例
May 25 Python
Python+树莓派+YOLO打造一款人工智能照相机
Jan 02 Python
Python爬虫框架Scrapy实例代码
Mar 04 Python
Python实现删除时保留特定文件夹和文件的示例
Apr 27 Python
python实现图片识别汽车功能
Nov 30 Python
详解python中的hashlib模块的使用
Apr 22 Python
Python 的AES加密与解密实现
Jul 09 Python
详解Pandas之容易让人混淆的行选择和列选择
Jul 10 Python
python tkinter实现屏保程序
Jul 30 Python
浅谈Django前端后端值传递问题
Jul 15 Python
用python自动生成日历
Apr 24 Python
python munch库的使用解析
May 25 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图形计数器程序显示网站用户浏览量
2016/07/20 PHP
PHP文件操作简单介绍及函数汇总
2020/12/11 PHP
Javascript的IE和Firefox兼容性汇编(zz)
2007/02/02 Javascript
自制轻量级仿jQuery.boxy对话框插件代码
2010/10/26 Javascript
img onload事件绑定各浏览器均可执行
2012/12/19 Javascript
JQuery入门—编写一个简单的JQuery应用案例
2013/01/03 Javascript
JS通过相同的name进行表格求和代码
2013/08/18 Javascript
js左右弹性滚动对联广告代码分享
2014/02/19 Javascript
jQuery中ajax和post处理json的不同示例对比
2014/11/02 Javascript
jQuery实现的省市联动菜单功能示例【测试可用】
2017/01/13 Javascript
three.js 入门案例详解
2018/01/23 Javascript
一个Vue视频媒体多段裁剪组件的实现示例
2018/08/09 Javascript
更改BootStrap popover的默认样式及popover简单用法
2018/09/13 Javascript
vue项目初始化到登录login页面的示例
2019/10/31 Javascript
js属性对象的hasOwnProperty方法的使用
2021/02/05 Javascript
小结Python用fork来创建子进程注意事项
2014/07/03 Python
对pandas中to_dict的用法详解
2018/06/05 Python
Python unittest单元测试框架总结
2018/09/08 Python
用Python实现筛选文件脚本的方法
2018/10/27 Python
Python中bisect的使用方法
2019/12/31 Python
Keras实现DenseNet结构操作
2020/07/06 Python
对python中list的五种查找方法说明
2020/07/13 Python
Python 必须了解的5种高级特征
2020/09/10 Python
matplotlib绘制鼠标的十字光标的实现(自定义方式,官方实例)
2021/01/10 Python
利用css3径向渐变做一张优惠券的示例
2018/03/22 HTML / CSS
C# .NET面试题
2015/11/28 面试题
数控技术应届生求职信
2013/11/13 职场文书
金融专业大学生职业生涯规划范文
2014/01/16 职场文书
移风易俗倡议书
2014/04/15 职场文书
三八节标语
2014/06/27 职场文书
2014小学一年级班主任工作总结
2014/12/05 职场文书
毕业生个人自荐书
2015/03/05 职场文书
求职简历自我评价2015
2015/03/10 职场文书
2019个人工作自我评价范文(3篇)
2019/09/19 职场文书
CSS3实现的文字弹出特效
2021/04/16 HTML / CSS
python tkinter Entry控件的焦点移动操作
2021/05/22 Python