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 相关文章推荐
使用PyV8在Python爬虫中执行js代码
Feb 16 Python
python 接口返回的json字符串实例
Mar 27 Python
浅析Python pandas模块输出每行中间省略号问题
Jul 03 Python
基于python生成器封装的协程类
Mar 20 Python
Python 实现数据结构-堆栈和队列的操作方法
Jul 17 Python
python中pygame安装过程(超级详细)
Aug 04 Python
python爬虫 猫眼电影和电影天堂数据csv和mysql存储过程解析
Sep 05 Python
python实现将两个文件夹合并至另一个文件夹(制作数据集)
Apr 03 Python
Python Process创建进程的2种方法详解
Jan 25 Python
python推导式的使用方法实例
Feb 28 Python
粗暴解决CUDA out of memory的问题
May 22 Python
Python实现视频自动打码的示例代码
Apr 08 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
《星际争霸重制版》兵种对比图鉴
2020/03/02 星际争霸
《忧国的莫里亚蒂》先导宣传图与STAFF公开
2020/03/04 日漫
PHP中对用户身份认证实现两种方法
2011/06/04 PHP
PHP引用(&)各种使用方法实例详解
2014/03/20 PHP
详解PHP实现执行定时任务
2015/12/21 PHP
如何正确配置Nginx + PHP
2016/07/15 PHP
PHP实现生成带背景的图形验证码功能
2016/10/03 PHP
Javascript写了一个清除“logo1_.exe”的杀毒工具(可扫描目录)
2007/02/09 Javascript
javascript 面向对象编程基础:继承
2009/08/21 Javascript
JavaScript中为元素加上name属性的方法
2011/05/09 Javascript
JavaScript中的闭包介绍
2015/03/15 Javascript
javascript事件委托的方式绑定详解
2015/06/10 Javascript
跟我学习javascript的闭包
2015/11/16 Javascript
使用JavaScript实现ajax的实例代码
2016/05/11 Javascript
BootStrap中Tab页签切换实例代码
2016/05/30 Javascript
AngularJS入门教程之ng-class 指令用法
2016/08/01 Javascript
jquery滚动条插件(可以自定义)
2016/12/11 Javascript
react性能优化达到最大化的方法 immutable.js使用的必要性
2017/03/09 Javascript
小发现之浅谈location.search与location.hash的问题
2017/06/23 Javascript
在ES5与ES6环境下处理函数默认参数的实现方法
2018/05/13 Javascript
Vue 实现简易多行滚动"弹幕"效果
2020/01/02 Javascript
Vue 样式切换及三元判断样式关联操作
2020/08/09 Javascript
vue项目打包后提交到git上为什么没有dist这个文件的解决方法
2020/09/16 Javascript
python生成随机密码或随机字符串的方法
2015/07/03 Python
windows下python连接oracle数据库
2017/06/07 Python
python实现两张图片的像素融合
2019/02/23 Python
python切片(获取一个子列表(数组))详解
2019/08/09 Python
python实现录屏功能(亲测好用)
2020/03/02 Python
python中使用input()函数获取用户输入值方式
2020/05/03 Python
澳大利亚办公室装修:JasonL Office Furniture
2019/06/25 全球购物
触摸春天教学反思
2014/02/03 职场文书
终止劳动合同协议书
2014/04/14 职场文书
2014公安机关纪律作风整顿思想汇报
2014/09/13 职场文书
小米11和iphone12哪个值得买?小米11对比iphone12评测
2021/04/21 数码科技
JavaScript选择器函数querySelector和querySelectorAll
2021/11/27 Javascript
中国十大神话动漫电影排行榜 哪吒登顶 白蛇缘起排第七
2022/03/21 国漫