Python实现TCP探测目标服务路由轨迹的原理与方法详解


Posted in Python onSeptember 04, 2019

本文实例讲述了Python实现TCP探测目标服务路由轨迹的原理与方法。分享给大家供大家参考,具体如下:

一 点睛

在此次实践中,通过scapy的traceroute()方法实现探测机到目标服务器的路由轨迹,整个过程的原理见下图,首先通过探测机以SYN方式进行TCP服务扫描,同时启动tcpdump进行抓包,捕获扫描过程经过的所有路由点,再通过graph()方法进行路由IP轨迹绘制,中间调用ASN映射查询IP地理信息并生成svg流程文档,最后使用ImageMagick工 具将svg格式转换成png,流程结束。

Python实现TCP探测目标服务路由轨迹的原理与方法详解

二 代码

# -*- coding: utf-8 -*-
import os,sys,time,subprocess
import warnings,logging
#屏蔽scapy 无用告警信息
warnings.filterwarnings("ignore", category=DeprecationWarning)
#屏蔽模块IPv6 多余告警
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
from scapy.all import traceroute
#接受输入的域名或IP
domains = raw_input('Please input one or more IP/domain: ')
target = domains.split(' ')
dport = [80]  #扫描的端口列表
if len(target) >= 1 and target[0]!='':
  res,unans = traceroute(target,dport=dport,retry=-2)  #启动路由跟踪
  res.graph(target="> test.svg", ASres=None, type="svg")  #生成svg矢量图形
  time.sleep(1)
  #svg转png格式
  subprocess.Popen("/usr/bin/convert test.svg test.png", shell=True)
else:
  print "IP/domain number of errors,exit"

三 结果

Python实现TCP探测目标服务路由轨迹的原理与方法详解

Python实现TCP探测目标服务路由轨迹的原理与方法详解

四 参考

https://github.com/secdev/scapy/issues/1480

更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python根据区号生成手机号码的方法
Jul 08 Python
Python二分查找详解
Sep 13 Python
Python的Flask框架的简介和安装方法
Nov 13 Python
python读取oracle函数返回值
Jul 18 Python
Python中生成器和迭代器的区别详解
Feb 10 Python
python打包生成的exe文件运行时提示缺少模块的解决方法
Oct 31 Python
Django 简单实现分页与搜索功能的示例代码
Nov 07 Python
解决Python3下map函数的显示问题
Dec 04 Python
python 输出列表元素实例(以空格/逗号为分隔符)
Dec 25 Python
Python中logging日志记录到文件及自动分割的操作代码
Aug 05 Python
matplotlib 三维图表绘制方法简介
Sep 20 Python
python+selenium实现12306模拟登录的步骤
Jan 21 Python
基于python全局设置id 自动化测试元素定位过程解析
Sep 04 #Python
Django框架 querySet功能解析
Sep 04 #Python
Django框架 查询Extra功能实现解析
Sep 04 #Python
Django框架 Pagination分页实现代码实例
Sep 04 #Python
python 动态迁移solr数据过程解析
Sep 04 #Python
Django框架 信号调度原理解析
Sep 04 #Python
Django Admin中增加导出Excel功能过程解析
Sep 04 #Python
You might like
PHP判断变量是否为0的方法
2014/02/08 PHP
如何用PHP来实现一个动态Web服务器
2015/07/29 PHP
PHP中的函数声明与使用详解
2017/05/27 PHP
php源码的安装方法和实例
2019/09/26 PHP
JavaScript 撑出页面文字换行
2009/06/15 Javascript
精通Javascript系列之数值计算
2011/06/07 Javascript
Prototype源码浅析 String部分(四)之补充
2012/01/16 Javascript
浅析ajax请求json数据并用js解析(示例分析)
2013/07/13 Javascript
javascript分页代码实例分享(js分页)
2013/12/13 Javascript
jQuery实现响应鼠标背景变化的动态菜单效果代码
2015/08/27 Javascript
Highcharts 多个Y轴动态刷新数据的实现代码
2016/05/28 Javascript
jQuery实现的跨容器无缝拖动效果代码
2016/06/21 Javascript
javascript 显示全局变量与隐式全局变量的区别
2017/02/09 Javascript
JavaScript 字符串数字左补位,右补位,取固定长度,截位扩展函数代码
2017/03/25 Javascript
ES6中Iterator与for..of..遍历用法分析
2017/03/31 Javascript
jquery.form.js异步提交表单详解
2017/04/25 jQuery
webpack 4.0.0-beta.0版本新特性介绍
2018/02/10 Javascript
vue项目中应用ueditor自定义上传按钮功能
2018/04/27 Javascript
JavaScript 中 JSON.parse 函数 和 JSON.stringify 函数
2018/12/05 Javascript
JavaScript隐式类型转换代码实例
2020/05/29 Javascript
javascript canvas时钟模拟器
2020/07/13 Javascript
vue中解决拖拽改变存在iframe的div大小时卡顿问题
2020/07/22 Javascript
Python单例模式的两种实现方法
2017/08/14 Python
python 给DataFrame增加index行名和columns列名的实现方法
2018/06/08 Python
Python 网络编程之UDP发送接收数据功能示例【基于socket套接字】
2019/10/11 Python
pytorch制作自己的LMDB数据操作示例
2019/12/18 Python
Python通过fnmatch模块实现文件名匹配
2020/09/30 Python
利用python清除移动硬盘中的临时文件
2020/10/28 Python
python 实现的IP 存活扫描脚本
2020/12/10 Python
canvas如何实现多张图片编辑的图片编辑器
2020/03/10 HTML / CSS
学生周末回家住宿长期请假条
2014/02/15 职场文书
简单租房协议书
2014/10/21 职场文书
收银员岗位职责
2015/02/03 职场文书
导游词之丹东鸭绿江
2019/10/24 职场文书
面试被问select......for update会锁表还是锁行
2021/11/11 MySQL
游戏《东方异文石:爱亚利亚黎明》正式版发布
2022/04/03 其他游戏