初衷:
江湖之大,武器繁多。只在PC上发展,很少有APP。有了app还需要下载,不如公众号方便,无需下载 随时进行管理攻击。为了解决各大同僚的方便之举,特写此套文章。
准备:
-
微信公众号(需申请,个人订阅号即可
不会申请,请自行百度
) -
python - flask (采用flask web框架进行编写,全程采用 RESTful API 标准协议)
-
linux服务器一台 (无服务器,也可以采用新浪云服务的python环境)
目标:
-
短信攻击
-
网站扫描
-
端口扫描
-
IP定位
-
MD5破解
-
xss平台
-
…… (有什么需要添加的,请留言)
-
(透露下,如果没有意外可能会加入
手机号定位功能
)
关于代码:
本套代码,将会在github 开源(采用 MIT 许可协议,可放心集成于商业产品中)。
开始打造
公众号申请,开发者配置请自行百度。
配置信息:项目启动方可认证成功!
目录:
|-- run.py #启动文件
|-- wechat #微信配置目录
|---- __init__.py
|---- wechatConfig.py #微信配置验证,模块加载接口
|---- mode #模块目录
|------ __init__.py
|------ scanPort.py #端口扫描模块
run.py
#! /usr/bin/python
# -*- coding: utf-8 -*-
import time
from flask import Flask,g,request,make_response
import hashlib
import xml.etree.ElementTree as ET
from wechat import wechatConfig
app = Flask(__name__)
#声明路由地址,就是微信访问的地址 截图上的服务器访问地址
@app.route('/tools',methods=['GET','POST']) #/tools 可以自定义
def tools():
#get 请求为TOKEN认证,post为消息发送
if request.method == 'GET':
token='wechat' #token 要 和微信设置的 对应
return wechatConfig.wechat_auth(token,request.args)
else:
req = request.stream.read()
resultData = ET.fromstring(req)
toUser = resultData.find('ToUserName').text
fromUser = resultData.find('FromUserName').text
content = resultData.find('Content').text
resultContent = wechatConfig.wechat_mode(content)
formData = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[%s]]></MsgType><Content><![CDATA[%s]]></Content><FuncFlag>0</FuncFlag></xml>"
response = make_response(formData % (fromUser,toUser,str(int(time.time())),'text', resultContent))
response.content_type='application/xml'
return response
#python flask 框架 自带的 webserver 微信开发者认证服务器的端口 只支持 80 443 所以调成80端口
if __name__ == '__main__':
app.run(host="0.0.0.0",port=80, debug=True)
wechatConfig.py:
#! /usr/bin/python
# -*- coding: utf-8 -*-
from flask import make_response
import hashlib
from mode import scanPort
#微信token认证
def wechat_auth(token,data):
signature = data.get('signature','')
timestamp = data.get('timestamp','')
nonce = data.get('nonce','')
echostr = data.get('echostr','')
s = [timestamp,nonce,token]
s.sort()
s = ''.join(s)
if (hashlib.sha1(s).hexdigest() == signature):
return make_response(echostr)
#获取公众号用户发送的消息,进行判断回复对应信息
def wechat_mode(content):
if content==u"攻击": #返回攻击列表指令
return "G1:端口扫描nG2:短信攻击nn攻击格式:编号&目标n列如:G1&127.0.0.1n列如:G2&188****1111"
elif "G1&" in content: #实现通过公众号 端口扫描 功能
arr=content.split('&')
return "你扫描的IP端口为:"+str(scanPort.init(arr[1]))
else:
return "感谢你的留言!"
scanPort.py:
#! /usr/bin/python
# -*- coding: utf-8 -*-
import socket #socket包
import threading #线程包
#全局变量
RESULT=[]
IP=''
#判断端口是否存在
def isPort(port):
sk = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #AF_INET 是 IPv4 网络协议的套接字类型 SOCK_STREAM即TCP协议
sk.settimeout(1) #超时时间
try:
sk.connect((IP,port)) #开始连接
RESULT.append(port)
except Exception:
return '没有此端口!'
sk.close() #关闭
#创建线程,需要多少端口就创立多少线程,速度抗抗的
def main(ports):
threadpool=[] #线程数组
for p in ports:
th = threading.Thread(target= isPort,args= ) #target 方法名字 args 单个参数 可以用 or (p,) 多个参数(p,a,b)
threadpool.append(th) #线程数组添加线程
for th in threadpool:
th.setDaemon(True) #守护线程
th.start() #启动线程
for th in threadpool:
threading.Thread.join(th)
def init(ip):
IP=ip
del RESULT[:]
ports=[80,8080,3128,8081,3306,9080,1080,21,23,443,69,22,25,110,7001,9090,3389,1521,1158,2100,1433] #扫描端口
main(ports)
return RESULT
启动项目:
python run.py
测试截图
短信攻击只为了更加美观,才加入的。所以没有实际功能。大家不用去测试!
本文始发于微信公众号(inn0team):黑客微信攻击平台-第一章
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论