前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python 通过TTL判断IP地址真伪

python 通过TTL判断IP地址真伪

作者头像
用户5760343
发布2019-07-31 15:56:34
1.5K0
发布2019-07-31 15:56:34
举报
文章被收录于专栏:sktjsktjsktj

!/usr/bin/python

coding=utf-8

from scapy.all import * import time import optparse

为避免IPy库中的IP类与Scapy库中的IP类冲突,重命名为IPTEST类

from IPy import IP as IPTEST

ttlValues = {} THRESH = 5

检查数据包的IP层,提取出源IP和TTL字段的值

def testTTL(pkt): try: if pkt.haslayer(IP): ipsrc = pkt.getlayer(IP).src ttl = str(pkt.ttl) checkTTL(ipsrc, ttl) except: pass

def checkTTL(ipsrc, ttl): # 判断是否是内网私有地址 if IPTEST(ipsrc).iptype() == 'PRIVATE': return

# 判断是否出现过该源地址,若没有则构建一个发往源地址的ICMP包,并记录回应数据包中的TTL值
if not ttlValues.has_key(ipsrc):
    pkt = sr1(IP(dst=ipsrc) / ICMP(), retry=0, timeout=1, verbose=0)
    ttlValues[ipsrc] = pkt.ttl

# 若两个TTL值之差大于阈值,则认为是伪造的源地址
if abs(int(ttl) - int(ttlValues[ipsrc])) > THRESH:
    print '\n[!] Detected Possible Spoofed Packet From: ' + ipsrc
    print '[!] TTL: ' + ttl + ', Actual TTL: ' + str(ttlValues[ipsrc])

def main(): parser = optparse.OptionParser("[*]Usage python spoofDetect.py -i <interface> -t <thresh>") parser.add_option('-i', dest='iface', type='string', help='specify network interface') parser.add_option('-t', dest='thresh', type='int', help='specify threshold count ') (options, args) = parser.parse_args() if options.iface == None: conf.iface = 'eth0' else: conf.iface = options.iface if options.thresh != None: THRESH = options.thresh else: THRESH = 5

sniff(prn=testTTL, store=0)

if name == 'main': main()

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.07.30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • !/usr/bin/python
  • coding=utf-8
  • 为避免IPy库中的IP类与Scapy库中的IP类冲突,重命名为IPTEST类
  • 检查数据包的IP层,提取出源IP和TTL字段的值
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档