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和libnmapd,提取Nmap扫描结果
Aug 23 Python
python连接mysql实例分享
Oct 09 Python
python3操作mysql数据库的方法
Jun 23 Python
如何利用Boost.Python实现Python C/C++混合编程详解
Nov 08 Python
使用python实现语音文件的特征提取方法
Jan 09 Python
Python实现打砖块小游戏代码实例
May 18 Python
使用 Python 处理 JSON 格式的数据
Jul 22 Python
Python GUI库PyQt5图形和特效样式QSS介绍
Feb 25 Python
Python使用windows设置定时执行脚本
Nov 12 Python
教你使用Sublime text3搭建Python开发环境及常用插件安装另分享Sublime text3最新激活注册码
Nov 12 Python
python多线程和多进程关系详解
Dec 14 Python
Python数据处理的三个实用技巧分享
Apr 01 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
phpinfo 系统查看参数函数代码
2009/06/05 PHP
PHP中其实也可以用方法链
2011/11/10 PHP
PHP实现的DES加密解密实例代码
2016/04/06 PHP
PHP以json或xml格式返回请求数据的方法
2018/05/31 PHP
一个js写的日历(代码部分网摘)
2009/09/20 Javascript
IE 上下滚动展示模仿Marquee机制
2009/12/20 Javascript
JQuery中的ready函数冲突的解决方法
2010/05/17 Javascript
基于Jquery的表格隔行换色,移动换色,点击换色插件
2010/12/22 Javascript
使用js获取地址栏中传递的值
2013/07/02 Javascript
JavaScript获取网页中第一个图片id的方法
2015/04/03 Javascript
jQuery validate插件实现ajax验证重复的2种方法
2016/01/22 Javascript
Bootstrap表单布局
2016/07/19 Javascript
微信小程序自定义带价格显示日历效果
2018/12/29 Javascript
在vue中使用G2图表的示例代码
2019/03/19 Javascript
生产制造追溯系统之在线打印功能
2019/06/03 Javascript
原生js实现二级联动菜单
2019/11/27 Javascript
在react中使用vue的状态管理的方法示例
2020/05/02 Javascript
[07:25]DOTA2-DPC中国联赛2月5日Recap集锦
2021/03/11 DOTA
python中__call__方法示例分析
2014/10/11 Python
朴素贝叶斯算法的python实现方法
2014/11/18 Python
Python3.6 Schedule模块定时任务(实例讲解)
2017/11/09 Python
pyshp创建shp点文件的方法
2018/12/31 Python
PYQT5实现控制台显示功能的方法
2019/06/25 Python
Python数据可视化 pyecharts实现各种统计图表过程详解
2019/08/15 Python
Python 切分数组实例解析
2019/11/07 Python
PyCharm永久激活方式(推荐)
2020/09/22 Python
使用python实现下载我们想听的歌曲,速度超快
2020/07/09 Python
使用Python pip怎么升级pip
2020/08/11 Python
CSS3 text shadow字体阴影效果
2016/01/08 HTML / CSS
美国最大的存储市场:SpareFoot
2018/07/23 全球购物
什么是索引指示器
2012/08/20 面试题
仓库规划计划书
2014/04/28 职场文书
2014年维稳工作总结
2014/11/18 职场文书
4S店销售内勤岗位职责
2015/04/13 职场文书
2019关于垃圾分类处理的调查报告
2019/12/26 职场文书
python开发的自动化运维工具ansible详解
2021/08/07 Python