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对字典进行排序实例
Sep 25 Python
Python中使用支持向量机(SVM)算法
Dec 26 Python
python实现简易云音乐播放器
Jan 04 Python
python解析html提取数据,并生成word文档实例解析
Jan 22 Python
python队列Queue的详解
May 10 Python
Django的Modelforms用法简介
Jul 27 Python
python爬虫 execjs安装配置及使用
Jul 30 Python
Python制作词云图代码实例
Sep 09 Python
Python实现FLV视频拼接功能
Jan 21 Python
Python连接Hadoop数据中遇到的各种坑(汇总)
Apr 14 Python
aws 通过boto3 python脚本打pach的实现方法
May 10 Python
浅析Python面向对象编程
Jul 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 curl 并发最佳实践代码分享
2012/09/05 PHP
ajax php传递和接收变量实现思路及代码
2012/12/19 PHP
php通过array_merge()函数合并两个数组的方法
2015/03/18 PHP
thinkPHP多语言切换设置方法详解
2016/11/11 PHP
浅谈php中curl、fsockopen的应用
2016/12/10 PHP
CLASS_CONFUSION JS混淆 全源码
2007/12/12 Javascript
实现JavaScript中继承的三种方式
2009/10/16 Javascript
jquery插件制作 提示框插件实现代码
2012/08/17 Javascript
JQuery为textarea添加maxlength属性并且兼容IE
2013/04/25 Javascript
jQuery拖拽div实现思路
2014/02/19 Javascript
jquery easyui 结合jsp简单展现table数据示例
2014/04/18 Javascript
Node.js实现批量去除BOM文件头
2014/12/20 Javascript
JQuery菜单效果的两个实例讲解(3)
2015/09/17 Javascript
基于JS实现Android,iOS一个手势动画效果
2016/04/27 Javascript
关于网页中的无缝滚动的js代码
2016/06/09 Javascript
javascript jquery对form元素的常见操作详解
2016/06/12 Javascript
jQuery文本框得到与失去焦点动态改变样式效果
2016/09/08 Javascript
JS动态添加选项案例分析
2016/10/17 Javascript
Vue数据驱动模拟实现5
2017/01/13 Javascript
基于jquery实现二级联动效果
2017/03/30 jQuery
JS删除数组里的某个元素方法
2018/02/03 Javascript
代码整洁之道(重构)
2018/10/25 Javascript
微信小程序自定义组件传值 页面和组件相互传数据操作示例
2019/05/05 Javascript
[02:19]DOTA2女子战队FOX视频专访:希望更多美眉一起加入
2013/10/15 DOTA
python实现搜索本地文件信息写入文件的方法
2016/02/22 Python
Python读取指定目录下指定后缀文件并保存为docx
2017/04/23 Python
python中文件变化监控示例(watchdog)
2017/10/16 Python
python实现聊天小程序
2018/03/13 Python
python tkinter界面居中显示的方法
2018/10/11 Python
python爬虫 批量下载zabbix文档代码实例
2019/08/21 Python
护理自荐信范文
2013/10/05 职场文书
施工安全协议书
2013/12/11 职场文书
财务总监岗位职责
2014/03/07 职场文书
班主任班级寄语大全
2014/04/04 职场文书
遗嘱公证书标准样本
2014/04/08 职场文书
2014年学校领导班子对照检查材料
2014/09/19 职场文书