Python基于scapy实现修改IP发送请求的方法示例


Posted in Python onJuly 08, 2017

本文实例讲述了Python基于scapy实现修改IP发送请求的方法。分享给大家供大家参考,具体如下:

今天同事想测试WAF的页面统计功能,所以需要模拟多个IP向多个域名发送请求,也就是需要修改源IP地址。这个如果使用socket库就比较麻烦了,

需要使用raw socket,相当麻烦。还好咱有scapy,轻松搞定。

DOMAIN是我随机构造的域名库,SOURCE也是随机构造的源IP地址。

#!/usr/bin/env python
#-*-encoding:UTF-8-*-
from scapy.all import *
from threading import Thread
from Queue import Queue
import random
import string
USER_AGENTS = ( # items used for picking random HTTP User-Agent header value
  "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_7_0; en-US) AppleWebKit/534.21 (KHTML, like Gecko) Chrome/11.0.678.0 Safari/534.21",
  "Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US)",
  "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:0.9.2) Gecko/20020508 Netscape6/6.1",
  "Mozilla/5.0 (X11;U; Linux i686; en-GB; rv:1.9.1) Gecko/20090624 Ubuntu/9.04 (jaunty) Firefox/3.5",
  "Opera/9.80 (X11; U; Linux i686; en-US; rv:1.9.2.3) Presto/2.2.15 Version/10.10"
)
TOP_DOMAIN = ('com','org','net','gov','edu','mil','info','name','biz')
DOMAIN = ["www.%s.%s" %(
    '.'.join(''.join(random.sample(string.ascii_lowercase, random.randint(2,6))) for x in range(random.randint(1,2))),
    random.choice(TOP_DOMAIN))
    for _ in range(100)
]
SOURCE = ['.'.join((str(random.randint(1,254)) for _ in range(4))) for _ in range(100)]
class Scan(Thread):
  HTTPSTR = 'GET / HTTP/1.0\r\nHost: %s\r\nUser-Agent: %s\r\n\r\n'
  def run(self):
    for _ in xrange(100):
      domain = random.choice(DOMAIN)
      http = self.HTTPSTR % (domain,random.choice(USER_AGENTS))
      try:
        request = IP(src=random.choice(SOURCE),dst=domain) / TCP(dport=80) / http
        #request = IP(dst=domain) / TCP(dport=80) / http
        send(request)
      except:
        pass
task = []
for x in range(10):
  t = Scan()
  task.append(t)
for t in task:
  t.start()
for t in task:
  t.join()
print 'all task done!'

但这将导致一个问题,由于我们域名是随机构造的,发送请求肯定首先查找DNS,很可能解析失败。这里有两个方法解决这个问题:

1.将所有域名添加到hosts本地文件中,IP可以为服务器地址

2. 由于hosts文件不支持通配符表示,所以可以使用DNS代理,或者自己写小工具,想怎么解析就怎么解析,这里有一个https://github.com/phuslu/dnsproxy/blob/master/dnsproxy.py

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

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

Python 相关文章推荐
简单理解Python中基于生成器的状态机
Apr 13 Python
Python读取图片属性信息的实现方法
Sep 11 Python
python 查找字符串是否存在实例详解
Jan 20 Python
详解Python3的TFTP文件传输
Jun 26 Python
在Mac下使用python实现简单的目录树展示方法
Nov 01 Python
实例介绍Python中整型
Feb 11 Python
Python XlsxWriter模块Chart类用法实例分析
Mar 11 Python
python批量爬取下载抖音视频
Jun 17 Python
python 并发编程 阻塞IO模型原理解析
Aug 20 Python
基于Python生成个性二维码过程详解
Mar 05 Python
Python字符串函数strip()原理及用法详解
Jul 23 Python
PYTHON基于Pyecharts绘制常见的直角坐标系图表
Apr 28 Python
Python开发微信公众平台的方法详解【基于weixin-knife】
Jul 08 #Python
python 中random模块的常用方法总结
Jul 08 #Python
Python调用微信公众平台接口操作示例
Jul 08 #Python
HTML中使用python屏蔽一些基本功能的方法
Jul 07 #Python
CentOS 7下安装Python 3.5并与Python2.7兼容并存详解
Jul 07 #Python
浅谈Python中的可变对象和不可变对象
Jul 07 #Python
Python MySQL数据库连接池组件pymysqlpool详解
Jul 07 #Python
You might like
PHP Smarty生成EXCEL文档的代码
2008/08/23 PHP
几款免费开源的不用数据库的php的cms
2010/12/19 PHP
如何使用PHP实现javascript的escape和unescape函数
2013/06/29 PHP
jquery 表单取值常用代码
2009/12/22 Javascript
jQuery学习笔记[1] jQuery中的DOM操作
2010/12/03 Javascript
Dreamweaver jQuery智能提示插件,支持版本提示,支持1.6api
2011/07/31 Javascript
js中页面的重新加载(当前页面/上级页面)及frame或iframe元素引用介绍
2013/01/24 Javascript
使用JavaScript实现弹出层效果的简单实例
2016/05/31 Javascript
详解nodejs微信公众号开发——3.封装消息响应模块
2017/04/10 NodeJs
Vue.js鼠标悬浮更换图片功能
2017/05/17 Javascript
基于Vue单文件组件详解
2017/09/15 Javascript
Vue入门之animate过渡动画效果
2018/04/08 Javascript
jQuery实现数字自动增加或者减少的动画效果示例
2018/12/11 jQuery
详解vue中axios的使用与封装
2019/03/20 Javascript
解决ant Design中Select设置initialValue时的大坑
2020/10/29 Javascript
Python实现从url中提取域名的几种方法
2014/09/26 Python
python 日志增量抓取实现方法
2018/04/28 Python
Python批量发送post请求的实现代码
2018/05/05 Python
Python读取Pickle文件信息并计算与当前时间间隔的方法分析
2019/01/30 Python
Python制作微信好友背景墙教程(附完整代码)
2019/07/17 Python
Python 使用元类type创建类对象常见应用详解
2019/10/17 Python
python3.x 生成3维随机数组实例
2019/11/28 Python
python获取响应某个字段值的3种实现方法
2020/04/30 Python
美国最大的城市服装和运动鞋零售商:Jimmy Jazz
2016/11/19 全球购物
英国优质鞋类专家:Robinson’s Shoes
2017/12/08 全球购物
俄罗斯电子产品、计算机和家用电器购物网站:OLDI
2019/10/27 全球购物
运动会广播稿30字
2014/01/21 职场文书
30年同学聚会邀请函
2014/01/25 职场文书
CAD制图设计师自荐信
2014/01/29 职场文书
高中军训感言1000字
2014/03/01 职场文书
骨干教师考核方案
2014/05/09 职场文书
品酒会策划方案
2014/05/26 职场文书
祖国在我心中演讲稿600字
2014/09/23 职场文书
2014党员干部四风问题对照检查材料思想汇报
2014/09/24 职场文书
2014年最新个人对照检查材料范文
2014/09/25 职场文书
微信小程序 根据不同用户切换不同TabBar
2022/04/21 Javascript