| from flask import Flask, request, Response |
| import socket |
| import base64 |
|
|
| app = Flask(__name__) |
|
|
| |
| REAL_DNS = "8.8.8.8" |
| |
| BRAWL_PROXY = "172.67.155.122" |
|
|
| @app.route('/dns-query', methods=['GET', 'POST']) |
| def dns_query(): |
| query_data = request.data |
| if not query_data and 'dns' in request.args: |
| padding = '=' * (4 - len(request.args.get('dns')) % 4) |
| query_data = base64.urlsafe_b64decode(request.args.get('dns') + padding) |
|
|
| if not query_data: return "DNS Up", 200 |
|
|
| |
| is_brawl = b"brawlstars" in query_data.lower() or b"supercell" in query_data.lower() |
|
|
| try: |
| if is_brawl: |
| print("!!! ПЕРЕХВАЧЕН ЗАПРОС БРАВЛА !!!") |
| |
| |
| target_dns = "176.9.93.198" |
| else: |
| target_dns = REAL_DNS |
|
|
| sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) |
| sock.settimeout(3) |
| sock.sendto(query_data, (target_dns, 53)) |
| data, _ = sock.recvfrom(4096) |
| return Response(data, mimetype='application/dns-message') |
| except: |
| return Response(status=500) |
|
|
| if __name__ == '__main__': |
| app.run(host='0.0.0.0', port=7860) |