# Source Generated with Decompyle++ # File: issue496-run.pyc (Python 3.10) from PyQt5.QtWidgets import QTableWidgetItem, QApplication, QMainWindow, QMenu from PyQt5 import uic from PyQt5.QtGui import QIcon from PyQt5.QtCore import Qt, QEvent import os import sys import shutil from block import BLOCK from tool import TOOL from main import * import pyperclip def new_folder(list_path): for name in list_path: if not os.path.exists(name): os.makedirs(name) def new_file(list_file, write = ([],)): for name in list_file: if not os.path.exists(name): f = open(name, 'a') if write == []: pass else: for w in write: f.write(f'''{w}\n''') f.close() if os.path.exists('cache_session'): try: shutil.rmtree('cache_session') os.makedirs('cache_session') finally: pass os.makedirs('cache_session') new_folder([ 'cache', 'data', 'data/icon']) new_file([ 'cache/path_image.txt', 'data/user_da_spam.txt', 'cache/phone_data.txt', 'data/list_link_foward.txt', 'data/list_group_getmem.txt', 'data/list_group.txt', 'data/list_username.txt', 'data/list_data.txt']) new_file([ 'data/nd_bio.txt']) new_file([ 'data/list_key_tmproxy.txt', 'data/list_key_tinsoft.txt', 'cache/path_session.txt', 'cache/path_proxy.txt']) new_file([ 'cache/success.txt', 'cache/fail.txt']) new_file([ 'cache/setting.txt'], [ 'noproxy', '3'], **('write',)) new_file([ 'cache/setting_tool.txt'], [ '5-10', 'False'], **('write',)) new_file([ 'cache/setting_profile.txt'], [ '5-10', 'False'], **('write',)) block = BLOCK(title_tool).block() result_notication = block[2] class Ui(QMainWindow): def __init__(self = None): super(Ui, self).__init__() uic.loadUi('data/untitled.ui', self) self.setting = open('cache/setting.txt', 'utf-8', **('encoding',)).read().split('\n') self.setting_tool = open('cache/setting_tool.txt', 'utf-8', **('encoding',)).read().split('\n') self.setting_profile = open('cache/setting_profile.txt', 'utf-8', **('encoding',)).read().split('\n') self.BT_stop.hide() self.load_list_ss_proxy() self.curent_setting() self.current_setting_tool() self.current_setting_profile() self.load_list_ss_proxy() self.load_phone() self.load_message() self.Notication() self.action_spam() self.save_file() self.setWindowIcon(QIcon('data/icon/logo.png')) self.setWindowTitle(name_tool) self.BT_session.clicked.connect(self.click_change_sesion) self.BT_http.clicked.connect(self.click_change_proxy_http) self.BT_socks5.clicked.connect(self.click_change_proxy_socks5) self.BT_run.clicked.connect(self.load_data) self.BT_stop.clicked.connect(self.stop) self.add_message.clicked.connect(self.add_data_message) self.del_message.clicked.connect(self.delete_message) self.add_image.clicked.connect(self.add_images) self.save.clicked.connect(self.save_file) self.bt_avata.clicked.connect(self.click_change_avata) self.deleted.clicked.connect(self.delete_result) self.active.clicked.connect(self.active_) self.RB_noproxy.toggled.connect(self.xl_proxy) self.RB_http.toggled.connect(self.xl_proxy) self.tableWidget.viewport().installEventFilter(self) self.foward.toggled.connect(self.action_spam) self.memgr.toggled.connect(self.action_spam) self.gr.toggled.connect(self.action_spam) self.username.toggled.connect(self.action_spam) def active_(self): link_act = f'''https://t.me/dichvutele_nghiaplus_bot?start={result_notication[0]}-{title_tool}''' link_acts = f'''\n

Link kích hoạt:
\n {link_act}

\n ''' pyperclip.copy(link_act) TOOL().show_key_box(f'''\n{link_acts}\nSao chép link kích hoạt và Thuê tool tại bot @dichvutele_nghiaplus_bot''', f'''KEY : {result_notication[0]}''') def action_spam(self): global lst_data, lst_data, lst_data, lst_data, lst_data lst_data = [] if self.foward.isChecked(): self.link.show() self.label_2.show() elif self.nhantin.isChecked(): self.link.hide() self.label_2.hide() if self.memgr.isChecked(): lst_data = TOOL().read_file('data/list_group_getmem.txt') self.label.setText('Nhập link group') self.label_3.show() self.loc.show() self.hour.show() self.label_9.show() self.label_5.show() self.limit.show() self.lap.hide() elif self.gr.isChecked(): lst_data = TOOL().read_file('data/list_group.txt') self.label.setText('Nhập danh sách link group') self.label_3.hide() self.loc.hide() self.hour.hide() self.label_9.hide() self.lap.show() elif self.username.isChecked(): lst_data = TOOL().read_file('data/list_username.txt') self.label.setText('Nhập danh sách username') self.label_3.hide() self.loc.hide() self.hour.hide() self.label_9.hide() self.lap.hide() elif self.data.isChecked(): lst_data = TOOL().read_file('data/list_data.txt') self.label.setText('Nhập data số điện thoại') self.label_9.hide() self.lap.hide() self.loc.show() self.hour.show() self.label_9.show() self.textEdit.setText('\n'.join(lst_data)) self.all.setText('Tổng {}'.format(len(lst_data))) def eventFilter(self = None, source = None, event = None): if event.type() == QEvent.MouseButtonPress and event.buttons() == Qt.RightButton: item = self.tableWidget.itemAt(event.pos()) if item is not None: menu = QMenu() hello = menu.addAction('Chọn') hello.triggered.connect(self.select) option = menu.addAction('Bỏ chọn') option.triggered.connect(self.unselect) load = menu.addAction('Xoá session') load.triggered.connect(self.delete_session) _option = menu.addAction('Bỏ chọn tất cả') _option.triggered.connect(self.unselect_all) hello_ = menu.addAction('Chọn tất cả') hello_.triggered.connect(self.select_all) menu.exec_(event.globalPos()) return super(Ui, self).eventFilter(source, event) def delete_session(self): if TOOL().question_msgbox('Bạn chắc chắn xoá?', 'Cảnh báo') == True: self.check() TOOL().delete_session(self.lst_phone_use, self.folder_session) self.load_list_ss_proxy() self.load_phone() return None def select_all(self): for i in range(0, len(self.lst_phone)): item = self.tableWidget.item(i, 0) item.setCheckState(Qt.CheckState.Checked) self.lst_phone_use = self.lst_phone.copy() self.all_ss_now.setText('Đang dùng {} account'.format(len(self.lst_phone_use))) def unselect_all(self): for i in range(0, len(self.lst_phone)): item = self.tableWidget.item(i, 0) item.setCheckState(Qt.CheckState.Unchecked) self.lst_phone_use = [] self.check() def check(self): self.lst_phone_use = [] for i in range(0, len(self.lst_phone)): item = self.tableWidget.item(i, 0) value = item.checkState() if value == Qt.CheckState.Checked: self.lst_phone_use.append(self.tableWidget.item(i, 1).text()) self.all_ss_now.setText('Đang dùng {} account'.format(len(self.lst_phone_use))) def select(self): value = self.tableWidget.selectedItems() self.lst_phone_use = [] for v in value: if v.column() == 1: self.lst_phone_use.append(v.text()) item = self.tableWidget.item(self.lst_phone.index(v.text()), 0) item.setCheckState(Qt.CheckState.Checked) self.check() def unselect(self): value = self.tableWidget.selectedItems() self.lst_phone_use = [] for v in value: if v.column() == 1: self.lst_phone_use.append(v.text()) item = self.tableWidget.item(self.lst_phone.index(v.text()), 0) item.setCheckState(Qt.CheckState.Unchecked) self.check() def curent_setting(self): if self.setting[0] == 'http': self.RB_http.setChecked(True) elif self.setting[0] == 'socks5': self.RB_socks5.setChecked(True) else: self.RB_noproxy.setChecked(True) self.SPB_luong.setRange(1, len(self.lst_phone)) self.SPB_luong.setValue(int(self.setting[1])) self.tableWidget.setColumnCount(5) self.tableWidget.setColumnWidth(0, 5) self.tableWidget.setColumnWidth(1, 80) self.tableWidget.setColumnWidth(2, 70) self.tableWidget.setColumnWidth(3, 350) self.tableWidget.setColumnWidth(4, 100) self.messages.setColumnCount(4) self.messages.setColumnWidth(0, 5) self.messages.setColumnWidth(1, 350) self.messages.setColumnWidth(2, 110) self.messages.setColumnWidth(3, 100) def current_setting_tool(self, load = (True,)): global cate_nhantin, cate_nhantin, cate_mem, cate_mem, cate_mem, cate_mem, delay, link, loc, hour, limit, lap, lap if load == True: self.Edit_delay.setText(self.setting_tool[0]) if self.setting_tool[1] == 'True': self.nhantin.setChecked(True) else: self.foward.setChecked(True) if self.setting_tool[2] == 'True': self.memgr.setChecked(True) elif self.setting_tool[2] == 'False': self.gr.setChecked(True) elif self.setting_tool[2] == 'username': self.username.setChecked(True) elif self.setting_tool[2] == 'data': self.data.setChecked(True) self.link.setText(self.setting_tool[3]) self.loc.setCurrentText(self.setting_tool[4]) try: self.hour.setValue(int(self.setting_tool[5])) finally: pass self.hour.setValue(48) try: self.limit.setValue(int(self.setting_tool[6])) finally: pass self.limit.setValue(5) if self.setting_tool[7] == 'True': self.lap.setChecked(True) return None return None if self.nhantin.isChecked(): cate_nhantin = self.setting_tool[1] = 'True' elif self.foward.isChecked(): cate_nhantin = self.setting_tool[1] = 'False' if self.memgr.isChecked(): cate_mem = self.setting_tool[2] = 'True' elif self.gr.isChecked(): cate_mem = self.setting_tool[2] = 'False' elif self.username.isChecked(): cate_mem = self.setting_tool[2] = 'username' elif self.data.isChecked(): cate_mem = self.setting_tool[2] = 'data' delay = self.setting_tool[0] = self.Edit_delay.text() link = self.setting_tool[3] = self.link.text() loc = self.setting_tool[4] = self.loc.currentText() hour = self.setting_tool[5] = self.hour.text() limit = self.setting_tool[6] = self.limit.text() if self.lap.isChecked(): lap = self.setting_tool[7] = 'True' else: lap = self.setting_tool[7] = 'False' TOOL().write_current(self.setting_tool, 'cache/setting_tool.txt') def current_setting_profile(self, load = (True,)): global us, us, vn, vn, male, male, female, female, avt, avt, bio, bio, profile, profile, profile, link_gr, nd_bio if load == True: if self.setting_profile[0] == 'us_true': self.profile_nameus.setChecked(True) if self.setting_profile[1] == 'vn_true': self.profile_namevn.setChecked(True) if self.setting_profile[2] == 'male_true': self.profile_male.setChecked(True) if self.setting_profile[3] == 'female_true': self.profile_female.setChecked(True) if self.setting_profile[4] == 'avt_true': self.profile_avt.setChecked(True) if self.setting_profile[5] == 'bio_true': self.profile_bio.setChecked(True) if self.setting_profile[6] == 'True': self.join.setChecked(True) elif self.setting_profile[6] == 'False': self.out.setChecked(True) else: self.profile.setChecked(True) self.link_gr.setText(self.setting_profile[7]) self.nd_bio.setText(open('data/nd_bio.txt', 'utf-8', **('encoding',)).read()) return None if self.profile_nameus.isChecked(): us = self.setting_profile[0] = 'us_true' else: us = self.setting_profile[0] = 'us_false' if self.profile_namevn.isChecked(): vn = self.setting_profile[1] = 'vn_true' else: vn = self.setting_profile[1] = 'vn_false' if self.profile_male.isChecked(): male = self.setting_profile[2] = 'male_true' else: male = self.setting_profile[2] = 'male_false' if self.profile_female.isChecked(): female = self.setting_profile[3] = 'female_true' else: female = self.setting_profile[3] = 'female_false' if self.profile_avt.isChecked(): avt = self.setting_profile[4] = 'avt_true' else: avt = self.setting_profile[4] = 'avt_false' if self.profile_bio.isChecked(): bio = self.setting_profile[5] = 'bio_true' else: bio = self.setting_profile[5] = 'bio_false' if self.join.isChecked(): profile = self.setting_profile[6] = 'True' elif self.out.isChecked(): profile = self.setting_profile[6] = 'False' else: profile = self.setting_profile[6] = '' link_gr = self.setting_profile[7] = self.link_gr.text() nd_bio = self.nd_bio.toPlainText() with open('data/nd_bio.txt', 'w', 'utf-8', **('encoding',)) as f: f.write(nd_bio) None(None, None, None) # WARNING: Decompyle incomplete def load_data(self): global dem_thread, lst_success, lst_fail, data if block[0] != False: self.active_() return None dem_thread = 0 self.dem_thread = 0 conti = True self.BT_run.hide() lst_success = [] lst_fail = [] self.setting[0] = self.cate_proxy try: self.check() self.current_setting_tool(False) if self.lst_phone_use == []: conti = 'Chưa chọn session chạy' else: for phone in self.lst_phone_use: self.tableWidget.setItem(self.lst_phone.index(phone), 2, QTableWidgetItem('')) self.tableWidget.setItem(self.lst_phone.index(phone), 3, QTableWidgetItem('')) self.tableWidget.setItem(self.lst_phone.index(phone), 4, QTableWidgetItem('')) old_folder1 = TOOL().load_session(self.folder_session) self.luong = self.setting[1] = int(self.SPB_luong.text()) if int(self.luong) == 0: conti = 'Chưa cài luồng chạy' elif int(self.luong) > len(self.lst_phone_use): self.luong = len(self.lst_phone_use) conti = 'Lỗi chọn thư mục chứa session' cate = '0' if cate_nhantin == 'True' and file_messages == []: conti = 'Hãy thêm một vài tin nhắn spam' if self.TAB.currentIndex() == 0: self.data_run = [ *cate_nhantin, *cate_mem, *link, *lst_data, *loc, *hour, *file_messages, *limit, *lap] if self.TAB.currentIndex() == 1: conti = 'Hãy chọn chức năng' if self.TAB.currentIndex() == 2: self.current_setting_profile(False) cate = '2' self.data_run = [ *us, *vn, *male, *female, *avt, *profile, *link_gr, self.lst_avata, *bio, *nd_bio] if conti == True: data = [ self.cate_proxy, self.lst_proxy, self.folder_session, *old_folder1, self.luong, *delay, *cate, *ss_die] TOOL().write_current(self.setting, 'cache/setting.txt') self.BT_stop.show() self.thr = { } self.run_thread_tool(dem_thread, self.lst_phone_use) return None self.BT_run.show() TOOL().show_msgbox(conti, 'Lỗi xảy ra') def run_thread_tool(self, dem_thread, lst_phone_use): self.thr[dem_thread] = Telegam(dem_thread, self.lst_phone, lst_phone_use, data, self.data_run, **('i', 'lst_phone', 'lst_phone_use', 'data', 'data_run')) self.thr[dem_thread].start() self.thr[dem_thread].signal.connect(self.receive_data) self.thr[dem_thread].signal_result.connect(self.receive_result) self.thr[dem_thread].signal_inf.connect(self.receive_inf) self.thr[dem_thread].signal_success.connect(self.receive_success) def stop(self): for i in range(self.luong): self.thr[i].terminate() self.BT_run.show() self.BT_stop.hide() def receive_data(self, data): print(data) try: self.tableWidget.setItem(self.lst_phonee.index(data[0]), 1, QTableWidgetItem(data[0])) self.tableWidget.setItem(self.lst_phonee.index(data[0]), 2, QTableWidgetItem(data[1])) finally: return None return None def receive_result(self, data): print(data) try: self.tableWidget.setItem(self.lst_phonee.index(data[0]), 3, QTableWidgetItem(data[1])) finally: return None return None def receive_inf(self, data): try: self.tableWidget.setItem(self.lst_phonee.index(data[0]), 4, QTableWidgetItem(data[1])) finally: return None return None def receive_success(self, data): global dem_thread, dem_thread if data[0] == 'success': self.success.setText(str(len(data[1]))) return None if data[0] == 'fail': self.fail.setText(str(len(data[1]))) return None if data[0] == 'conlaisession': self.all_ss_now.setText('Còn lại {} session'.format(len(data[1]))) return None if data[0] == 'conlaidata': self.textEdit.setText('\n'.join(data[1])) self.all.setText('Còn lại {}'.format(len(data[1]))) return None if data[0] == 'conlaidatas': self.all.setText('Còn lại {}'.format(len(data[1]))) return None if data[0] == 'end_thread': self.dem_thread = self.dem_thread + 1 if self.dem_thread == self.luong: for i in range(self.luong): self.thr[i].terminate() TOOL().show_msgbox(data[2], data[3]) self.BT_run.show() self.BT_stop.hide() return None return None if data[0] == 'lap': for phone in self.lst_phone: self.tableWidget.setItem(self.lst_phone.index(phone), 2, QTableWidgetItem('')) self.tableWidget.setItem(self.lst_phone.index(phone), 3, QTableWidgetItem('')) self.tableWidget.setItem(self.lst_phone.index(phone), 4, QTableWidgetItem('')) dem_thread = 0 self.thr = { } self.run_thread_tool(dem_thread, self.lst_phone_use) return None if data[0] == 'run_thr': dem_thread = dem_thread + 1 if dem_thread < int(self.luong): self.run_thread_tool(dem_thread, data[1]) return None return None def load_phone(self): x = 0 self.tableWidget.setRowCount(len(self.lst_phone)) for phone in self.lst_phone: chkBoxItem = QTableWidgetItem() chkBoxItem.setFlags(Qt.ItemFlag.ItemIsUserCheckable | Qt.ItemFlag.ItemIsEnabled) chkBoxItem.setCheckState(Qt.CheckState.Checked) self.tableWidget.setItem(x, 0, chkBoxItem) self.tableWidget.setItem(x, 1, QTableWidgetItem(phone)) self.tableWidget.setItem(x, 2, QTableWidgetItem('')) self.tableWidget.setItem(x, 3, QTableWidgetItem('')) self.tableWidget.setItem(x, 4, QTableWidgetItem('')) x = x + 1 def delete_result(self): f = open('cache/success.txt', 'w') f.close() f = open('cache/fail.txt', 'w') f.close() self.success.setText('0') self.fail.setText('0') def load_list_ss_proxy(self): self.xl_proxy() self.success.setText(str(len(TOOL().read_file2('cache/success.txt')))) self.fail.setText(str(len(TOOL().read_file2('cache/fail.txt')))) try: self.folder_session = open('cache/path_session.txt', 'utf-8', **('encoding',)).readline() self.lst_phone = TOOL().add_list(self.folder_session) finally: pass self.lst_phone = [] self.lst_phonee = self.lst_phone.copy() self.lst_phone_use = [] self.LB_session.setText(open('cache/path_session.txt', 'utf-8', **('encoding',)).readline()) self.LB_all_session.setText('Tổng {} session'.format(len(self.lst_phone))) self.SPB_luong.setRange(1, len(self.lst_phone)) try: self.lst_avata = [] self.lst_avatas = os.listdir(open('cache/path_avt.txt', 'utf-8', **('encoding',)).readline()) for avt in self.lst_avatas: if 'jpg' in str(avt) or 'png' in str(avt): self.lst_avata.append(avt) finally: pass self.lst_avata = [] self.all_avt.setText('{} avata'.format(len(self.lst_avata))) return None def xl_proxy(self): if self.RB_noproxy.isChecked(): self.LB_all_proxy.setText('Không dùng proxy') self.cate_proxy = 'noproxy' self.lst_proxy = [] return None if self.RB_http.isChecked(): self.lst_proxy = TOOL().load_file('proxy_http') self.LB_all_proxy.setText('Tổng {} proxy http'.format(len(self.lst_proxy))) self.cate_proxy = 'http' return None if self.RB_socks5.isChecked(): self.lst_proxy = TOOL().load_file('proxy_socks5') self.LB_all_proxy.setText('Tổng {} proxy socks5'.format(len(self.lst_proxy))) self.cate_proxy = 'socks5' return None def save_file(self): global lst_data, lst_data, lst_data, lst_data, lst_data if self.foward.isChecked(): lst_data = TOOL().write_file('data/list_link_foward.txt', self.textEdit.toPlainText()) if self.memgr.isChecked(): lst_data = TOOL().write_file('data/list_group_getmem.txt', self.textEdit.toPlainText()) elif self.gr.isChecked(): lst_data = TOOL().write_file('data/list_group.txt', self.textEdit.toPlainText()) elif self.username.isChecked(): lst_data = TOOL().write_file('data/list_username.txt', self.textEdit.toPlainText()) else: lst_data = TOOL().write_file('data/list_data.txt', self.textEdit.toPlainText()) self.all.setText('Tổng {}'.format(len(lst_data))) def add_data_message(self): title = 'message' for i in range(1, 999): if not os.path.exists('data/messages/{}_{}'.format(title, i)): os.makedirs('data/messages/{}_{}/image'.format(title, i)) f = open('data/messages/{}_{}/message.txt'.format(title, i), 'a') f.close() os.system('data\\messages\\{}_{}\\message.txt'.format(title, i)) self.load_message() return None def add_images(self): file_messages = os.listdir('data/messages') for i in range(0, len(file_messages)): item = self.messages.item(i, 0) value = item.checkState() title = self.messages.item(i, 3).text() if value == Qt.CheckState.Checked: list_img = TOOL().open_multi_file('image', 'Chọn ảnh cần spam') if list_img != []: shutil.rmtree(f'''data/messages/{title}/image''') os.makedirs(f'''data/messages/{title}/image''') for path_img in list_img: shutil.copy(path_img, f'''data/messages/{title}/image''') self.load_message() return None def delete_message(self): file_messages = os.listdir('data/messages') for i in range(0, len(file_messages)): item = self.messages.item(i, 0) value = item.checkState() if value == Qt.CheckState.Checked: try: shutil.rmtree('data/messages/{}'.format(self.messages.item(i, 3).text())) finally: continue self.messages.setItem(value, 1, QTableWidgetItem('Không thể xoá')) continue continue self.load_message() return None def load_message(self): global file_messages file_messages = os.listdir('data/messages') x = 0 self.messages.setRowCount(len(file_messages)) for file in file_messages: try: message = open(f'''data/messages/{file}/message.txt''', 'utf-8', **('encoding',)).read() finally: pass message = '' try: lst_image = os.listdir(f'''data/messages/{file}/image''') finally: pass lst_image == [] if message == '' and lst_image == []: shutil.rmtree(f'''data/messages/{file}''') else: chkBoxItem = QTableWidgetItem() chkBoxItem.setFlags(Qt.ItemFlag.ItemIsUserCheckable | Qt.ItemFlag.ItemIsEnabled) chkBoxItem.setCheckState(Qt.CheckState.Unchecked) self.messages.setItem(x, 0, chkBoxItem) self.messages.setItem(x, 1, QTableWidgetItem(message)) self.messages.setItem(x, 2, QTableWidgetItem('{} ảnh/video'.format(len(lst_image)))) self.messages.setItem(x, 3, QTableWidgetItem('{}'.format(file))) x = x + 1 def click_change_avata(self): TOOL().open_folder('avt', 'Chọn thư mục chứa avata') self.load_list_ss_proxy() def click_change_sesion(self): TOOL().open_folder('session', 'Chọn thư mục chứa session để chạy') self.load_list_ss_proxy() self.load_phone() def click_change_proxy_http(self): TOOL().open_file('proxy_http', 'Chọn file chứa proxy để chạy') self.load_list_ss_proxy() def click_change_proxy_socks5(self): TOOL().open_file('proxy_socks5', 'Chọn file chứa proxy để chạy') self.load_list_ss_proxy() def Notication(self): global ss_die, ss_die, ss_die, ss_die self.key_tool.setText(result_notication[0]) self.lb_hsd.setText(result_notication[1]) self.LB_notication.setText(result_notication[2]) if float(result_notication[3]) > float(ver): TOOL().show_msgbox(f'''Đã có phiên bản mới v{result_notication[3]}\nVào bot @dichvutele_nghiaplus_bot để cập nhật''', 'Thông báo cập nhật') self.LB_notication.setText('Đã có phiên bản mới v{}'.format(result_notication[3])) if result_notication[4] != '': self.LB_information.setText(result_notication[4]) self.LB_version.setText(ver) lb_hsd = self.lb_hsd.text() if self.lb_hsd.text() == 'CHƯA KH': ss_die = 'True' return None try: date_exp = lb_hsd.split('-') if int(date_exp[0]) > 2025: ss_die = 'True' finally: return None ss_die = 'False' return None ss_die = 'False' return None __classcell__ = None if __name__ == '__main__': app = QApplication(sys.argv) main_win = Ui() main_win.show() sys.exit(app.exec()) return None return None