python解析发往本机的数据包示例 (解析数据包)

 更新时间:2014年01月16日 14:30:16   作者:  
这篇文章主要介绍了使用python解析获取发往本机的数据包,并打印出来, 大家参考使用吧

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)

相关文章

  • python3使用mutagen进行音频元数据处理的方法

    python3使用mutagen进行音频元数据处理的方法

    mutagen是一个处理音频元数据的python模块,支持多种音频格式,是一个纯粹的python库,仅依赖python标准库,可在Python 3.7及以上版本运行,支持Linux、Windows 和 macOS系统,这篇文章主要介绍了python3使用mutagen进行音频元数据处理,需要的朋友可以参考下
    2022-10-10
  • Python使用scipy进行曲线拟合的方法实例

    Python使用scipy进行曲线拟合的方法实例

    这篇文章主要给大家介绍了关于Python使用scipy进行曲线拟合的相关资料,Scipy优化和拟合采用的是optimize模块,该模块提供了函数最小值(标量或多维)、曲线拟合和寻找等式的根的有用算法,需要的朋友可以参考下
    2022-05-05
  • Python编写万花尺图案实例

    Python编写万花尺图案实例

    在本篇文章里小编给大家分享的是一篇关于Python编写万花尺图案实例的内容,有兴趣的朋友们可以参考下。
    2021-01-01
  • Python爬虫设置Cookie解决网站拦截并爬取蚂蚁短租的问题

    Python爬虫设置Cookie解决网站拦截并爬取蚂蚁短租的问题

    这篇文章主要介绍了Python爬虫设置Cookie解决网站拦截并爬取蚂蚁短租,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • 基于Python中的yield表达式介绍

    基于Python中的yield表达式介绍

    今天小编就为大家分享一篇基于Python中的yield表达式详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • 使用Python的urllib2模块处理url和图片的技巧两则

    使用Python的urllib2模块处理url和图片的技巧两则

    这篇文章主要介绍了使用Python的urllib2模块处理url和图片的两个小技巧,分别是获取带有中文参数的url内容和获取远程图片的大小和尺寸,需要的朋友可以参考下
    2016-02-02
  • 如何基于python实现不邻接植花

    如何基于python实现不邻接植花

    这篇文章主要介绍了如何基于python实现不邻接植花,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • Python基础之tkinter图形化界面学习

    Python基础之tkinter图形化界面学习

    这篇文章主要介绍了Python基础之tkinter图形化界面学习,文中有非常详细的代码示例,对正在学习python基础的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • 深入理解python多线程编程

    深入理解python多线程编程

    进程是资源分配的最小单位,他是操作系统进行资源分配和调度运行的基本单位。通俗理解:一个正在运行的一个程序就是一个进程,本文重点给大家介绍python多线程编程的相关知识,感兴趣的朋友一起看看吧
    2021-04-04
  • python连接读写操作redis的完整代码实例

    python连接读写操作redis的完整代码实例

    这篇文章主要介绍了python连接读写操作redis的完整代码实例,包括redis连接与读写操作,redis-sentinel哨兵模式下Python操作redis,redis-cluster(集群)模式下Python操作redis,需要的朋友可以参考下
    2023-01-01

最新评论