-
Notifications
You must be signed in to change notification settings - Fork 0
/
host.py
221 lines (187 loc) Β· 8.59 KB
/
host.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
import random
import threading
import discord
import asyncio
from flask import Flask, request, make_response
from flask_restful import Resource, Api
from discord.ext import commands
from collections import defaultdict
from waitress import serve
host = "0.0.0.0"
port = 80
token_discord_bot = ""
token_website = ""
channel_id_send_data_ori = 1119851938767442020
channel_log = 1120302555382169660
log_message = True
app = Flask(__name__)
app.env = "production"
api = Api(app)
bot = commands.Bot(command_prefix="!", intents=discord.Intents.all())
ip_counter = defaultdict(int)
ip_lock = defaultdict(threading.Lock)
activities = [
discord.Activity(type=discord.ActivityType.watching, name="Cracking the Code"),
discord.Activity(type=discord.ActivityType.watching, name="github.com/adiyahoo"),
discord.Activity(type=discord.ActivityType.watching, name="instagram.com/adi_yaksa_nvm"),
]
async def change_activity():
while True:
await bot.change_presence(activity=random.choice(activities))
await asyncio.sleep(60)
@bot.event
async def on_ready():
await bot.loop.create_task(change_activity())
class DiscordMessage:
@staticmethod
async def issue_1(channel_log_obj, ip):
await channel_log_obj.send(f"Who's trying to hack the website? BTW, here's their IP: ```{ip}```")
@staticmethod
async def issue_2(channel_log_obj, error):
await channel_log_obj.send(f"An error occurred with the code, error information: ```{error}```")
@staticmethod
async def issue_3(channel_log_obj, ip):
await channel_log_obj.send(f"A user attempted to post data without a token: ```{ip}```")
@staticmethod
async def issue_4(channel_log_obj, ip):
await channel_log_obj.send(f"Reached the data post limit, thanks though: ```{ip}```")
@staticmethod
async def send_embed(channel, data):
guild = channel.guild
owner = guild.owner
embed = discord.Embed(title="RDP Account Information", color=discord.Color.red())
embed.add_field(name="π» Operating System", value=data["os"], inline=False)
embed.add_field(name="π IP Address", value=data["ip"], inline=False)
embed.add_field(name="π€ Username", value=data["username"], inline=False)
embed.add_field(name="π Password", value=data["password"], inline=False)
embed.add_field(name="π Country", value=data["country"], inline=False)
embed.set_footer(text="Stay curious and keep exploring. Happy hacking! π")
info_message = f"RDP account info, bro! {owner.mention}"
await channel.send(content=info_message, embed=embed)
class DiscordBot:
@staticmethod
def bot_send_message(data):
channel = bot.get_channel(channel_id_send_data_ori)
if channel is not None:
asyncio.run_coroutine_threadsafe(
DiscordMessage.send_embed(channel, data), bot.loop
)
return True
else:
print(f"Channel with ID {channel_id_send_data_ori} not found.")
return f"Channel with ID {channel_id_send_data_ori} not found.", 404
@staticmethod
def bot_send_log(ip, error, issue):
channel_log_obj = bot.get_channel(channel_log)
if channel_log_obj is not None:
if log_message:
if issue == 1:
asyncio.run_coroutine_threadsafe(
DiscordMessage.issue_1(channel_log_obj, ip), bot.loop
)
elif issue == 2:
asyncio.run_coroutine_threadsafe(
DiscordMessage.issue_2(channel_log_obj, error), bot.loop
)
elif issue == 3:
asyncio.run_coroutine_threadsafe(
DiscordMessage.issue_3(channel_log_obj, ip), bot.loop
)
elif issue == 4:
asyncio.run_coroutine_threadsafe(
DiscordMessage.issue_4(channel_log_obj, ip), bot.loop
)
else:
pass
else:
print(f"Channel with ID {channel_log_obj} not found.")
return f"Channel with ID {channel_log_obj} not found.", 404
class Author(Resource):
def get(self):
html = """
<html>
<head>
<title>Author Code</title>
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/tailwind.min.css" rel="stylesheet">
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css" rel="stylesheet">
<style>
.card {
border-radius: 10px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}
</style>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body class="bg-gray-100 flex justify-center items-center h-screen">
<div class="max-w-md mx-auto bg-white shadow-md rounded p-6 card">
<div class="flex justify-center mb-4">
<img src="https://avatars.githubusercontent.com/u/136817243?v=4" alt="Profile" class="rounded-full w-24 h-24">
</div>
<div class="flex items-center justify-center mb-4">
<div class="text-center">
<h1 class="text-2xl font-bold mb-2">AdiYahoo</h1>
<p class="text-gray-600 text-sm">Backend Developer</p>
</div>
</div>
<p class="mb-4">This script code is provided for free and not for sale.</p>
<p class="mb-4">"Rankings don't define your true potential. Your ability to code and your passion for it speak volumes about your talent and determination. Embrace your coding skills, continue to learn and improve, and you'll unlock a world of opportunities beyond what any ranking can measure."</p>
<div class="flex items-center justify-center mb-4">
<i class="fab fa-github text-gray-500 mr-2"></i>
<a href="https://github.com/AdiYahoo" class="text-gray-500">GitHub Link</a>
</div>
<div class="flex items-center justify-center mb-4">
<i class="fas fa-envelope text-red-500 mr-2"></i>
<a href="mailto:[email protected]" class="text-red-500">[email protected]</a>
</div>
<div class="flex items-center justify-center mb-4">
<i class="fab fa-instagram text-blue-500 mr-2"></i>
<a href="https://www.instagram.com/adiy.aksaaa/" class="text-blue-500">Instagram</a>
</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/js/all.min.js"></script>
</body>
</html>
"""
response = make_response(html)
response.headers["Content-Type"] = "text/html"
return response
class GetData(Resource):
def post(self):
ip = request.environ.get("HTTP_X_REAL_IP", request.remote_addr)
try:
data = request.get_json()
if data["token"] == token_website:
with ip_lock[ip]:
ip_counter[ip] += 1
if ip_counter[ip] <= 2:
check_message = DiscordBot.bot_send_message(data)
if check_message:
return "Success", 200
else:
DiscordBot.bot_send_log(ip, None, 4)
return "Limit reached, trying to spam?", 403
else:
DiscordBot.bot_send_log(ip, None, 1)
return "Invalid token", 401
except KeyError as e:
DiscordBot.bot_send_log(ip, None, 3)
return f"An error occurred, message: {e}", 500
except Exception as e:
DiscordBot.bot_send_log(None, e, 2)
return f"An error occurred, message: {e}", 500
api.add_resource(Author, "/")
api.add_resource(GetData, "/post_data")
class RunApp:
@staticmethod
def run_flask():
serve(app, host=host, port=port)
@staticmethod
def run_discord_bot():
bot.run(token_discord_bot)
if __name__ == "__main__":
flask_thread = threading.Thread(target=RunApp.run_flask)
bot_thread = threading.Thread(target=RunApp.run_discord_bot)
flask_thread.start()
bot_thread.start()
flask_thread.join()
bot_thread.join()