python解析数据包_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)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值