botff 0.0.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
botff/__init__.py ADDED
@@ -0,0 +1,4 @@
1
+ from .main import AimbotController, main
2
+ from .version import __version__
3
+
4
+ __all__ = ["AimbotController", "main", "__version__"]
botff/__main__.py ADDED
@@ -0,0 +1,5 @@
1
+ from .main import main
2
+
3
+
4
+ if __name__ == "__main__":
5
+ main()
botff/main.py ADDED
@@ -0,0 +1,298 @@
1
+ import tkinter as tk
2
+ from tkinter import ttk, messagebox
3
+ import pymem
4
+ import pymem.pattern
5
+ import ctypes
6
+ from pymem.memory import read_bytes, write_bytes
7
+ from pymem.pattern import pattern_scan_all
8
+ from pymem import Pymem
9
+ import threading
10
+ import time
11
+ import sys
12
+ import os
13
+
14
+ #exe
15
+ class AimbotController:
16
+ def __init__(self, root):
17
+ self.root = root
18
+ self.root.title("Aimbot")
19
+ self.root.geometry("500x400")
20
+ self.root.resizable(False, False)
21
+ self.root.configure(bg="#1a1a2e")
22
+
23
+ # Variables
24
+ self.is_injecting = False
25
+ self.is_injected = False
26
+ self.pm = None
27
+
28
+ # Setup UI
29
+ self.setup_ui()
30
+
31
+ def setup_ui(self):
32
+ # Header Frame
33
+ header_frame = tk.Frame(self.root, bg="#16213e", height=80)
34
+ header_frame.pack(fill="x", pady=(0, 20))
35
+ header_frame.pack_propagate(False)
36
+
37
+ # Title
38
+ title = tk.Label(header_frame, text="🎯 Aimbot",
39
+ font=("Segoe UI", 20, "bold"),
40
+ bg="#16213e", fg="#e94560")
41
+ title.pack(pady=20)
42
+
43
+ # Main Content Frame
44
+ main_frame = tk.Frame(self.root, bg="#1a1a2e")
45
+ main_frame.pack(pady=20, padx=30, fill="both", expand=True)
46
+
47
+ # Status Frame
48
+ status_frame = tk.Frame(main_frame, bg="#16213e", relief="ridge", bd=2)
49
+ status_frame.pack(fill="x", pady=(0, 20))
50
+
51
+ # Status Label
52
+ self.status_label = tk.Label(status_frame, text="⚪ Status: Ready",
53
+ font=("Segoe UI", 12),
54
+ bg="#16213e", fg="#ffffff")
55
+ self.status_label.pack(pady=10)
56
+
57
+ # Progress Bar
58
+ self.progress = ttk.Progressbar(status_frame, length=300, mode='indeterminate')
59
+ self.progress.pack(pady=5)
60
+ self.progress.pack_forget()
61
+
62
+ # Button Frame
63
+ btn_frame = tk.Frame(main_frame, bg="#1a1a2e")
64
+ btn_frame.pack(pady=20)
65
+
66
+ # Inject Button
67
+ self.inject_btn = tk.Button(btn_frame, text="🔫 Inject Aimbot",
68
+ font=("Segoe UI", 13, "bold"),
69
+ bg="#e94560", fg="white",
70
+ activebackground="#c73e54",
71
+ activeforeground="white",
72
+ relief="flat", bd=0,
73
+ padx=30, pady=12,
74
+ cursor="hand2",
75
+ command=self.start_injection)
76
+ self.inject_btn.pack(pady=5)
77
+
78
+ # Status Text Frame
79
+ status_text_frame = tk.Frame(main_frame, bg="#16213e", relief="sunken", bd=1)
80
+ status_text_frame.pack(fill="both", expand=True, pady=(10, 0))
81
+
82
+ # Status Text (Log)
83
+ self.status_text = tk.Text(status_text_frame, height=6,
84
+ font=("Consolas", 9),
85
+ bg="#0f0f1a", fg="#00ff88",
86
+ relief="flat", bd=0,
87
+ wrap="word")
88
+ self.status_text.pack(fill="both", expand=True, padx=5, pady=5)
89
+
90
+ # Scrollbar for text
91
+ scrollbar = tk.Scrollbar(status_text_frame, command=self.status_text.yview)
92
+ scrollbar.pack(side="right", fill="y")
93
+ self.status_text.config(yscrollcommand=scrollbar.set)
94
+
95
+ # Footer
96
+ footer = tk.Label(self.root, text="Developed for Test Only | Use at your own risk",
97
+ font=("Segoe UI", 8),
98
+ bg="#1a1a2e", fg="#6c6c8a")
99
+ footer.pack(side="bottom", pady=10)
100
+
101
+ # Initial log
102
+ self.add_log("🟢 Application started successfully")
103
+ self.add_log("📌 Waiting for injection...")
104
+
105
+ # Check for admin
106
+ if not self.is_admin():
107
+ self.add_log("⚠️ Not running as Administrator!")
108
+ self.add_log("⚠️ Some features may not work properly")
109
+ # Nazmul Exe
110
+ def add_log(self, message):
111
+ """Add message to status log"""
112
+ timestamp = time.strftime("%H:%M:%S")
113
+ self.status_text.insert("end", f"[{timestamp}] {message}\n")
114
+ self.status_text.see("end")
115
+ self.root.update()
116
+
117
+ def update_status(self, text, color="#ffffff"):
118
+ """Update status label"""
119
+ self.status_label.config(text=text, fg=color)
120
+ self.root.update()
121
+
122
+ def is_admin(self):
123
+ """Check if running as administrator"""
124
+ try:
125
+ return ctypes.windll.shell32.IsUserAnAdmin()
126
+ except:
127
+ return False
128
+
129
+ def adjust_privileges(self):
130
+ """Adjust system privileges"""
131
+ try:
132
+ SE_DEBUG_NAME = "SeDebugPrivilege"
133
+ SE_PRIVILEGE_ENABLED = 0x00000002
134
+ token_handle = ctypes.c_void_p()
135
+ luid = ctypes.c_longlong()
136
+
137
+ ctypes.windll.advapi32.OpenProcessToken(
138
+ ctypes.windll.kernel32.GetCurrentProcess(),
139
+ 0x20 | 0x8,
140
+ ctypes.byref(token_handle)
141
+ )
142
+
143
+ ctypes.windll.advapi32.LookupPrivilegeValueA(
144
+ 0, SE_DEBUG_NAME.encode('ascii'), ctypes.byref(luid)
145
+ )
146
+
147
+ class LUID_AND_ATTRIBUTES(ctypes.Structure):
148
+ _fields_ = [("Luid", ctypes.c_longlong), ("Attributes", ctypes.c_ulong)]
149
+
150
+ class TOKEN_PRIVILEGES(ctypes.Structure):
151
+ _fields_ = [("PrivilegeCount", ctypes.c_ulong), ("Privileges", LUID_AND_ATTRIBUTES)]
152
+
153
+ new_privileges = TOKEN_PRIVILEGES(1, LUID_AND_ATTRIBUTES(luid.value, SE_PRIVILEGE_ENABLED))
154
+
155
+ ctypes.windll.advapi32.AdjustTokenPrivileges(
156
+ token_handle, False, ctypes.byref(new_privileges), 0, None, None
157
+ )
158
+
159
+ ctypes.windll.kernel32.CloseHandle(token_handle)
160
+ self.add_log("✅ Privileges adjusted successfully")
161
+ return True
162
+ except Exception as e:
163
+ self.add_log(f"❌ Failed to adjust privileges: {e}")
164
+ return False
165
+
166
+ def perform_aimbot_injection(self):
167
+ """Main injection logic"""
168
+ try:
169
+ self.add_log("🔍 Starting injection process...")
170
+ self.update_status("🔄 Injecting...", "#ffd700")
171
+
172
+ # Adjust privileges
173
+ if not self.adjust_privileges():
174
+ self.update_status("❌ Privilege adjustment failed", "#ff4444")
175
+ return False
176
+
177
+ # Connect to process
178
+ self.add_log("🔗 Connecting to HD-Player.exe...")
179
+ self.pm = Pymem("HD-Player.exe")
180
+ self.add_log("✅ Connected to HD-Player.exe")
181
+
182
+ # Pattern for scanning
183
+ pattern = b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00................................\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xA5\x43..............................................................................................................................................................................................................................................\x80\xBF'
184
+
185
+ self.add_log("🔎 Scanning for patterns...")
186
+ addresses = pattern_scan_all(self.pm.process_handle, pattern, return_multiple=True)
187
+
188
+ if not addresses:
189
+ self.add_log("❌ No matching addresses found")
190
+ self.update_status("❌ No addresses found", "#ff4444")
191
+ return False
192
+
193
+ self.add_log(f"✅ Found {len(addresses)} address(es)")
194
+
195
+ # Process each address
196
+ success_count = 0
197
+ for i, addr in enumerate(addresses):
198
+ try:
199
+ address_rep = addr + 0xAB
200
+ address_scan = addr + 0xAF
201
+
202
+ original_rep = read_bytes(self.pm.process_handle, address_rep, 4)
203
+ original_scan = read_bytes(self.pm.process_handle, address_scan, 4)
204
+
205
+ write_bytes(self.pm.process_handle, address_rep, original_scan, 4)
206
+ write_bytes(self.pm.process_handle, address_scan, original_rep, 4)
207
+
208
+ success_count += 1
209
+ self.add_log(f"✅ Address {i+1} patched successfully")
210
+
211
+ except Exception as e:
212
+ self.add_log(f"⚠️ Address {i+1} failed: {e}")
213
+
214
+ if success_count > 0:
215
+ self.add_log(f"🎯 Injection complete! {success_count}/{len(addresses)} addresses patched")
216
+ self.update_status("✅ Aimbot Activated!", "#00ff88")
217
+ return True
218
+ else:
219
+ self.add_log("❌ No addresses were patched")
220
+ self.update_status("❌ Injection failed", "#ff4444")
221
+ return False
222
+
223
+ except pymem.exception.ProcessNotFound:
224
+ self.add_log("❌ HD-Player.exe not found! Make sure the game is running.")
225
+ self.update_status("❌ Process not found", "#ff4444")
226
+ return False
227
+ except Exception as e:
228
+ self.add_log(f"❌ Unexpected error: {e}")
229
+ self.update_status("❌ Error occurred", "#ff4444")
230
+ return False
231
+ finally:
232
+ if self.pm:
233
+ self.pm.close_process()
234
+ self.add_log("🔒 Process connection closed")
235
+
236
+ def injection_worker(self):
237
+ """Worker thread for injection"""
238
+ self.inject_btn.config(state="disabled")
239
+ self.progress.pack(pady=5)
240
+ self.progress.start(10)
241
+
242
+ result = self.perform_aimbot_injection()
243
+
244
+ self.progress.stop()
245
+ self.progress.pack_forget()
246
+ self.inject_btn.config(state="normal")
247
+
248
+ if result:
249
+ self.is_injected = True
250
+ self.inject_btn.config(text="✅ Aimbot Active", bg="#00cc88")
251
+ messagebox.showinfo("Success", "Aimbot injected successfully! 🎯")
252
+ else:
253
+ self.inject_btn.config(text="🔄 Retry Injection", bg="#ff6b6b")
254
+
255
+ def start_injection(self):
256
+ """Start injection in a separate thread"""
257
+ if self.is_injected:
258
+ messagebox.showinfo("Info", "Aimbot is already active! ✅")
259
+ return
260
+
261
+ if self.is_injecting:
262
+ return
263
+
264
+ self.is_injecting = True
265
+ thread = threading.Thread(target=self.injection_worker, daemon=True)
266
+ thread.start()
267
+
268
+ def on_closing(self):
269
+ """Cleanup on close"""
270
+ if self.pm:
271
+ try:
272
+ self.pm.close_process()
273
+ except:
274
+ pass
275
+ self.root.destroy()
276
+
277
+
278
+ def main():
279
+ # Check if running as admin on Windows
280
+ if sys.platform == "win32":
281
+ try:
282
+ if not ctypes.windll.shell32.IsUserAnAdmin():
283
+ # Re-run as admin
284
+ ctypes.windll.shell32.ShellExecuteW(
285
+ None, "runas", sys.executable, " ".join(sys.argv), None, 1
286
+ )
287
+ sys.exit()
288
+ except:
289
+ pass
290
+
291
+ root = tk.Tk()
292
+ app = AimbotController(root)
293
+ root.protocol("WM_DELETE_WINDOW", app.on_closing)
294
+ root.mainloop()
295
+
296
+
297
+ if __name__ == "__main__":
298
+ main()
botff/version.py ADDED
@@ -0,0 +1 @@
1
+ __version__ = "0.0.1"
@@ -0,0 +1,112 @@
1
+ Metadata-Version: 2.4
2
+ Name: botff
3
+ Version: 0.0.1
4
+ Summary: Aimbot GUI application package
5
+ Author-email: TanmoyTheBoT <tanmoysarkershuvo@gmail.com>
6
+ License: MIT
7
+ Project-URL: Homepage, https://github.com/TanmoyTheBoT/botff
8
+ Project-URL: Issues, https://github.com/TanmoyTheBoT/botff/issues
9
+ Classifier: Programming Language :: Python :: 3
10
+ Classifier: License :: OSI Approved :: MIT License
11
+ Classifier: Operating System :: OS Independent
12
+ Requires-Python: >=3.10
13
+ Description-Content-Type: text/markdown
14
+ License-File: LICENSE
15
+ Requires-Dist: pymem>=1.14.0
16
+ Dynamic: license-file
17
+
18
+ # botff 🎯
19
+
20
+ Free Fire aimbot panel for Python with aim-assist and targeting features.
21
+
22
+ <p align="center">
23
+ <a href="https://www.python.org/downloads/">
24
+ <img src="https://img.shields.io/badge/python-3.10%2B-blue.svg" alt="Python 3.10+" />
25
+ </a>
26
+ <a href="LICENSE">
27
+ <img src="https://img.shields.io/badge/license-MIT-green.svg" alt="License MIT" />
28
+ </a>
29
+ <a href="https://badge.fury.io/py/botff"><img src="https://badge.fury.io/py/botff.svg?nocache=1" alt="PyPI version"></a>
30
+ <a href="https://pepy.tech/projects/botff"><img src="https://static.pepy.tech/badge/botff" alt="PyPI Downloads"></a>
31
+ </p>
32
+
33
+ ## ✨ Features
34
+
35
+ - Windows admin privilege check before injection
36
+ - Tkinter-based GUI dashboard
37
+ - Real-time status logging and progress feedback
38
+ - Injection retry flow when the target process is unavailable
39
+ - Python package structure with a clean `botff` module layout
40
+
41
+ ## 📋 Prerequisites
42
+
43
+ 1. Python 3.10 or newer
44
+ 2. Windows operating system
45
+ 3. Administrator privileges for process access
46
+ 4. The target game process must already be running before injection starts
47
+
48
+ ## 📥 Installation
49
+
50
+ Install from PyPI:
51
+
52
+ ```bash
53
+ pip install botff
54
+ ```
55
+
56
+ Install from source:
57
+
58
+ ```bash
59
+ git clone https://github.com/TanmoyTheBoT/botff.git
60
+ cd botff
61
+ pip install -e .
62
+ ```
63
+
64
+ ## 🚀 Usage
65
+
66
+ Launch the app:
67
+
68
+ ```bash
69
+ botff
70
+ ```
71
+
72
+ Or run the package directly:
73
+
74
+ ```bash
75
+ python -m botff
76
+ ```
77
+
78
+ ## ⚠️ Disclaimer
79
+
80
+ > This project is intended for educational and authorized testing use only.
81
+ >
82
+ > It is not intended for cheating, unauthorized access, or violating system or game policies.
83
+ >
84
+ > Use it only in environments where such testing is allowed. This software does not guarantee safety, bypasses, or account protection. If your account is banned, suspended, or restricted, the developer is not responsible and is not liable for any consequences.
85
+ >
86
+ > By using this tool, you acknowledge the risks and accept full responsibility for your actions.
87
+
88
+ ## 🗂️ Project Structure
89
+
90
+ ```text
91
+ botff/
92
+ ├── src/
93
+ │ └── botff/
94
+ │ ├── __init__.py
95
+ │ ├── __main__.py
96
+ │ ├── main.py
97
+ │ └── version.py
98
+ ├── README.md
99
+ ├── pyproject.toml
100
+ ```
101
+
102
+ ## 👥 Contributors
103
+
104
+ <a href="https://github.com/TanmoyTheBoT"><img src="https://github.com/TanmoyTheBoT.png" width="50" height="50" style="border-radius:50%" alt="TanmoyTheBoT"/></a>
105
+
106
+ ## 📄 License
107
+
108
+ This project is licensed under the [MIT License](LICENSE).
109
+
110
+ ---
111
+
112
+ © TanmoyTheBoT 2026
@@ -0,0 +1,10 @@
1
+ botff/__init__.py,sha256=_AiwjMSSDc07PXVZTIdhpv4jetekDLKC2eCRCZ1IB0w,129
2
+ botff/__main__.py,sha256=qs6kN4rXgXytzVlo9nDeC8tm5daCP8xPL2lhUABzuiM,63
3
+ botff/main.py,sha256=1hvHvFCqO2zimNMG_lsTr7Myyq6ogHzcUzNENYsDJKE,11856
4
+ botff/version.py,sha256=ugyuFliEqtAwQmH4sTlc16YXKYbFWDmfyk87fErB8-8,21
5
+ botff-0.0.1.dist-info/licenses/LICENSE,sha256=hZNp6urru9sfBfZads6CVjweC72RzYbI1v2SBTS5m8k,1069
6
+ botff-0.0.1.dist-info/METADATA,sha256=metQ-Ml-aP0pon9pr5wMnOIMFvEMWEoOr99toZarydU,3051
7
+ botff-0.0.1.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
8
+ botff-0.0.1.dist-info/entry_points.txt,sha256=AQLHA0qX4MdBvzZJYCWuWTJZgc3MPvAwcdAePBGFdWc,42
9
+ botff-0.0.1.dist-info/top_level.txt,sha256=nzloI9t9TiSCSMCRWJ8ouoZrOmKuNITBHG6i-ZQwtBo,6
10
+ botff-0.0.1.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (84.0.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ botff = botff.main:main
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 TanmoyTheBoT
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1 @@
1
+ botff