diff --git a/x64-calculimetr_final_CRACK-by-BarsTiger/build_calc_and_dlls.py b/x64-calculimetr_final_CRACK-by-BarsTiger/build_calc_and_dlls.py new file mode 100644 index 0000000..3360b60 --- /dev/null +++ b/x64-calculimetr_final_CRACK-by-BarsTiger/build_calc_and_dlls.py @@ -0,0 +1,38 @@ +import os +import shutil +from distutils.dir_util import copy_tree +try: + from shiboken6 import __version__ + from PySide6 import __all__ + from PyInstaller import __all__ + from easygui import __all__ +except: + os.system('pip install -r requirements.txt') + +shutil.rmtree('dist') + +os.system('pyinstaller --noconfirm --onedir --windowed "source/Calculimetr.py"') +os.rename('dist/Calculimetr', 'dist/Calculimetr_build') +os.rename('dist/Calculimetr_build/Calculimetr.exe', 'dist/Calculimetr_build/calculimetrBase64.dll') + +os.system('pyinstaller --noconfirm --onefile --windowed "source/offline_check_license.py"') +try: + os.mkdir('dist/dll') +except: + pass +shutil.move('dist/offline_check_license.exe', 'dist/dll/calcLib64.dll') + +os.system('pyinstaller --noconfirm --onefile --windowed "source/offline_check_license_cracked.py"') +try: + os.mkdir('dist/dll_cracked') +except: + pass +shutil.move('dist/offline_check_license_cracked.exe', 'dist/dll_cracked/calcLib64.dll') + +os.system('pyinstaller --noconfirm --onefile --windowed --icon "source/icos/localhost_kalorimetr.ico" "source/launcher.py"') + +os.mkdir('dist/app_orig') +os.mkdir('dist/app_orig/libs') +copy_tree('dist/Calculimetr_build', 'dist/app_orig/libs') +shutil.copy('dist/dll/calcLib64.dll', 'dist/app_orig/libs') +shutil.copy('dist/launcher.exe', 'dist/app_orig/Calculimetr.exe') diff --git a/x64-calculimetr_final_CRACK-by-BarsTiger/requirements.txt b/x64-calculimetr_final_CRACK-by-BarsTiger/requirements.txt new file mode 100644 index 0000000..a19cabf --- /dev/null +++ b/x64-calculimetr_final_CRACK-by-BarsTiger/requirements.txt @@ -0,0 +1,3 @@ +PySide6 +shiboken6 +PyInstaller \ No newline at end of file diff --git a/x64-calculimetr_final_CRACK-by-BarsTiger/source/1.py b/x64-calculimetr_final_CRACK-by-BarsTiger/source/1.py new file mode 100644 index 0000000..4caed7e --- /dev/null +++ b/x64-calculimetr_final_CRACK-by-BarsTiger/source/1.py @@ -0,0 +1,5 @@ +import subprocess + +proc = subprocess.Popen("python offline_check_license.py --license {0}".format('LIdgsfhlashrpo9yep8923y4u2p93wuryu5p34iyur9834y5934y8934yht9fy3ht89ur34tcu549m83tm4390tyv8934vty53m948typ5894ty7895yt934yrt89y34qht8yw35tu340tu0tyugu90t43utohto'), stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, shell=True) +print(str(proc.communicate()[0])) \ No newline at end of file diff --git a/x64-calculimetr_final_CRACK-by-BarsTiger/source/Calculimetr.py b/x64-calculimetr_final_CRACK-by-BarsTiger/source/Calculimetr.py new file mode 100644 index 0000000..03d93a7 --- /dev/null +++ b/x64-calculimetr_final_CRACK-by-BarsTiger/source/Calculimetr.py @@ -0,0 +1,728 @@ +import sys +from typing import Union, Optional +from operator import add, sub, mul, truediv + +from PySide6.QtWidgets import QApplication, QMainWindow +from PySide6.QtGui import QFontDatabase + +from PySide6.QtCore import (QCoreApplication, QMetaObject, QSize, Qt) +from PySide6.QtGui import (QCursor, QIcon, QShortcut) +from PySide6.QtWidgets import (QGridLayout, QLabel, QLineEdit, QWidget, + QPushButton, QSizePolicy, QVBoxLayout) +from PySide6 import QtCore + +qt_resource_data = b"\ +\x00\x00\x00\xae\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00\x18\x00\x00\x00\x18\x08\x04\x00\x00\x00J~\xf5s\ +\x00\x00\x00uIDAT8\x8dc`\x18\xcc\xe0\x7f\ +\xe8\x7f\x22\x00B\xb9\xe8\xff\x97\xa4iXE\x8cr\xb8\ +\x06\xe2\x9c\x03\xd7\x80\xe6\x9c\xcb\xff\x1d\x91\xf8/\x81\xbc\ +\xcb\xe8\x1aP\x9d\xe3\x08\x14\xd1\x81jy\xf9_\x07\xc8\ +sD\xd1\x80\xe1\x1c\x88\x22\x90\x16\x04\x0b\xa1\x01k\xe8\ +\xc0\x14b(\x07i\xc0\x1e:`-\x98\xca\xc9\xd2@\ +\xaa\x93H\xf64\x19\xc1JF\xc4\x91\x9c4\xc8H|\ +d$o\x923\xd0\xe0\x01\x00T\xe3\xc0\xc1\xb4*\x16\ +r\x00\x00\x00\x00IEND\xaeB`\x82\ +\x00\x00\x00\xb7\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00\x18\x00\x00\x00\x18\x08\x04\x00\x00\x00J~\xf5s\ +\x00\x00\x00~IDAT8\xcbc`\x18\xb4\xe0?\ +\x11p\x10h\x98\xca\x90\xc5\xf0\x17\x88\xa7\xe2\xd6p\x9e\ +a?\x14\xbe\x07\xf2\xca\x81\xe2Z@\x5c\x8e[\x83\x03\ +\x9c\xbf\x1f\xc8\xfb\xc7`\x08d\x19\x02i\x22m\xc8\x03\ +\x8a\x9b\x01q\x0e\xb1~X\xc8P\x01$\xab\x18\x16Q\ +9\x94\xea\xc1\xee'A\x03\x03P\x0b,\x08`\x10\xa7\ +\x86z d\x00*\x80\xd8B\x84\x06\x04\x00\xd9\xb2\x1f\ +\x0e\x89t\x12n\xe3ph \xd2\x86A\x93\xbc\x07\x11\ +\x00\x00\xd2\xa9\x0f\xf8\xc4\xfe\x01\xba\x00\x00\x00\x00IE\ +ND\xaeB`\x82\ +" + +qt_resource_name = b"\ +\x00\x05\ +\x00o\xa6S\ +\x00i\ +\x00c\x00o\x00n\x00s\ +\x00\x0d\ +\x07d\x02'\ +\x00b\ +\x00a\x00c\x00k\x00s\x00p\x00a\x00c\x00e\x00.\x00p\x00n\x00g\ +\x00\x0e\ +\x0b0\xc8'\ +\x00c\ +\x00a\x00l\x00c\x00u\x00l\x00a\x00t\x00o\x00r\x00.\x00p\x00n\x00g\ +" + +qt_resource_struct = b"\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ +\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\ +\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x03\ +\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x10\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ +\x00\x00\x01{\x96\x06\xe7@\ +\x00\x00\x000\x00\x00\x00\x00\x00\x01\x00\x00\x00\xb2\ +\x00\x00\x01{\x96\x227p\ +" + + +def qInitResources(): + QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data) + + +def qCleanupResources(): + QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data) + + +qInitResources() + + + + + + + + + + + + + + +class Ui_MainWindow(object): + def setupUi(self, MainWindow): + if not MainWindow.objectName(): + MainWindow.setObjectName(u"MainWindow") + MainWindow.resize(300, 500) + MainWindow.setMinimumSize(QSize(300, 500)) + icon = QIcon() + icon.addFile(u":/icons/icons/calculator.png", QSize(), QIcon.Normal, QIcon.Off) + MainWindow.setWindowIcon(icon) + MainWindow.setStyleSheet(u"QWidget {\n" + " color: white;\n" + " background-color: #121212;\n" + " font-family: Rubik;\n" + " font-size: 16pt;\n" + " font-weight: 600;\n" + "}\n" + "\n" + "QPushButton {\n" + " background-color: transparent;\n" + " border: none;\n" + "}\n" + "\n" + "QPushButton:hover {\n" + " background-color: #666;\n" + "}\n" + "\n" + "QPushButton:pressed {\n" + " background-color: #888;\n" + "}") + self.centralwidget = QWidget(MainWindow) + self.centralwidget.setObjectName(u"centralwidget") + self.verticalLayout = QVBoxLayout(self.centralwidget) + self.verticalLayout.setObjectName(u"verticalLayout") + self.lbl_temp = QLabel(self.centralwidget) + self.lbl_temp.setObjectName(u"lbl_temp") + sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Maximum) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.lbl_temp.sizePolicy().hasHeightForWidth()) + self.lbl_temp.setSizePolicy(sizePolicy) + self.lbl_temp.setStyleSheet(u"color: #888;") + self.lbl_temp.setAlignment(Qt.AlignRight | Qt.AlignTrailing | Qt.AlignVCenter) + + self.verticalLayout.addWidget(self.lbl_temp) + + self.le_entry = QLineEdit(self.centralwidget) + self.le_entry.setObjectName(u"le_entry") + sizePolicy1 = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Maximum) + sizePolicy1.setHorizontalStretch(0) + sizePolicy1.setVerticalStretch(0) + sizePolicy1.setHeightForWidth(self.le_entry.sizePolicy().hasHeightForWidth()) + self.le_entry.setSizePolicy(sizePolicy1) + self.le_entry.setStyleSheet(u"font-size: 40pt;\n" + "border: none;") + self.le_entry.setMaxLength(16) + self.le_entry.setAlignment(Qt.AlignRight | Qt.AlignTrailing | Qt.AlignVCenter) + self.le_entry.setReadOnly(True) + + self.verticalLayout.addWidget(self.le_entry) + + self.layout_buttons = QGridLayout() + self.layout_buttons.setObjectName(u"layout_buttons") + self.btn_1 = QPushButton(self.centralwidget) + self.btn_1.setObjectName(u"btn_1") + sizePolicy2 = QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Expanding) + sizePolicy2.setHorizontalStretch(0) + sizePolicy2.setVerticalStretch(0) + sizePolicy2.setHeightForWidth(self.btn_1.sizePolicy().hasHeightForWidth()) + self.btn_1.setSizePolicy(sizePolicy2) + self.btn_1.setCursor(QCursor(Qt.PointingHandCursor)) + + self.layout_buttons.addWidget(self.btn_1, 3, 0, 1, 1) + + self.btn_7 = QPushButton(self.centralwidget) + self.btn_7.setObjectName(u"btn_7") + sizePolicy2.setHeightForWidth(self.btn_7.sizePolicy().hasHeightForWidth()) + self.btn_7.setSizePolicy(sizePolicy2) + self.btn_7.setCursor(QCursor(Qt.PointingHandCursor)) + + self.layout_buttons.addWidget(self.btn_7, 1, 0, 1, 1) + + self.btn_4 = QPushButton(self.centralwidget) + self.btn_4.setObjectName(u"btn_4") + sizePolicy2.setHeightForWidth(self.btn_4.sizePolicy().hasHeightForWidth()) + self.btn_4.setSizePolicy(sizePolicy2) + self.btn_4.setCursor(QCursor(Qt.PointingHandCursor)) + + self.layout_buttons.addWidget(self.btn_4, 2, 0, 1, 1) + + self.btn_neg = QPushButton(self.centralwidget) + self.btn_neg.setObjectName(u"btn_neg") + sizePolicy2.setHeightForWidth(self.btn_neg.sizePolicy().hasHeightForWidth()) + self.btn_neg.setSizePolicy(sizePolicy2) + self.btn_neg.setCursor(QCursor(Qt.PointingHandCursor)) + + self.layout_buttons.addWidget(self.btn_neg, 4, 0, 1, 1) + + self.btn_0 = QPushButton(self.centralwidget) + self.btn_0.setObjectName(u"btn_0") + sizePolicy2.setHeightForWidth(self.btn_0.sizePolicy().hasHeightForWidth()) + self.btn_0.setSizePolicy(sizePolicy2) + self.btn_0.setCursor(QCursor(Qt.PointingHandCursor)) + + self.layout_buttons.addWidget(self.btn_0, 4, 1, 1, 1) + + self.btn_clear = QPushButton(self.centralwidget) + self.btn_clear.setObjectName(u"btn_clear") + sizePolicy2.setHeightForWidth(self.btn_clear.sizePolicy().hasHeightForWidth()) + self.btn_clear.setSizePolicy(sizePolicy2) + self.btn_clear.setCursor(QCursor(Qt.PointingHandCursor)) + + self.layout_buttons.addWidget(self.btn_clear, 0, 0, 1, 1) + + self.btn_point = QPushButton(self.centralwidget) + self.btn_point.setObjectName(u"btn_point") + sizePolicy2.setHeightForWidth(self.btn_point.sizePolicy().hasHeightForWidth()) + self.btn_point.setSizePolicy(sizePolicy2) + self.btn_point.setCursor(QCursor(Qt.PointingHandCursor)) + + self.layout_buttons.addWidget(self.btn_point, 4, 2, 1, 1) + + self.btn_calc = QPushButton(self.centralwidget) + self.btn_calc.setObjectName(u"btn_calc") + sizePolicy2.setHeightForWidth(self.btn_calc.sizePolicy().hasHeightForWidth()) + self.btn_calc.setSizePolicy(sizePolicy2) + self.btn_calc.setCursor(QCursor(Qt.PointingHandCursor)) + + self.layout_buttons.addWidget(self.btn_calc, 4, 3, 1, 1) + + self.btn_add = QPushButton(self.centralwidget) + self.btn_add.setObjectName(u"btn_add") + sizePolicy2.setHeightForWidth(self.btn_add.sizePolicy().hasHeightForWidth()) + self.btn_add.setSizePolicy(sizePolicy2) + self.btn_add.setCursor(QCursor(Qt.PointingHandCursor)) + + self.layout_buttons.addWidget(self.btn_add, 3, 3, 1, 1) + + self.btn_sub = QPushButton(self.centralwidget) + self.btn_sub.setObjectName(u"btn_sub") + sizePolicy2.setHeightForWidth(self.btn_sub.sizePolicy().hasHeightForWidth()) + self.btn_sub.setSizePolicy(sizePolicy2) + self.btn_sub.setCursor(QCursor(Qt.PointingHandCursor)) + + self.layout_buttons.addWidget(self.btn_sub, 2, 3, 1, 1) + + self.btn_mul = QPushButton(self.centralwidget) + self.btn_mul.setObjectName(u"btn_mul") + sizePolicy2.setHeightForWidth(self.btn_mul.sizePolicy().hasHeightForWidth()) + self.btn_mul.setSizePolicy(sizePolicy2) + self.btn_mul.setCursor(QCursor(Qt.PointingHandCursor)) + + self.layout_buttons.addWidget(self.btn_mul, 1, 3, 1, 1) + + self.btn_div = QPushButton(self.centralwidget) + self.btn_div.setObjectName(u"btn_div") + sizePolicy2.setHeightForWidth(self.btn_div.sizePolicy().hasHeightForWidth()) + self.btn_div.setSizePolicy(sizePolicy2) + self.btn_div.setCursor(QCursor(Qt.PointingHandCursor)) + + self.layout_buttons.addWidget(self.btn_div, 0, 3, 1, 1) + + self.btn_backspace = QPushButton(self.centralwidget) + self.btn_backspace.setObjectName(u"btn_backspace") + sizePolicy2.setHeightForWidth(self.btn_backspace.sizePolicy().hasHeightForWidth()) + self.btn_backspace.setSizePolicy(sizePolicy2) + self.btn_backspace.setCursor(QCursor(Qt.PointingHandCursor)) + icon1 = QIcon() + icon1.addFile(u":/icons/icons/backspace.png", QSize(), QIcon.Normal, QIcon.Off) + self.btn_backspace.setIcon(icon1) + self.btn_backspace.setIconSize(QSize(24, 24)) + + self.layout_buttons.addWidget(self.btn_backspace, 0, 2, 1, 1) + + self.btn_ce = QPushButton(self.centralwidget) + self.btn_ce.setObjectName(u"btn_ce") + sizePolicy2.setHeightForWidth(self.btn_ce.sizePolicy().hasHeightForWidth()) + self.btn_ce.setSizePolicy(sizePolicy2) + self.btn_ce.setCursor(QCursor(Qt.PointingHandCursor)) + + self.layout_buttons.addWidget(self.btn_ce, 0, 1, 1, 1) + + self.btn_8 = QPushButton(self.centralwidget) + self.btn_8.setObjectName(u"btn_8") + sizePolicy2.setHeightForWidth(self.btn_8.sizePolicy().hasHeightForWidth()) + self.btn_8.setSizePolicy(sizePolicy2) + self.btn_8.setCursor(QCursor(Qt.PointingHandCursor)) + + self.layout_buttons.addWidget(self.btn_8, 1, 1, 1, 1) + + self.btn_9 = QPushButton(self.centralwidget) + self.btn_9.setObjectName(u"btn_9") + sizePolicy2.setHeightForWidth(self.btn_9.sizePolicy().hasHeightForWidth()) + self.btn_9.setSizePolicy(sizePolicy2) + self.btn_9.setCursor(QCursor(Qt.PointingHandCursor)) + + self.layout_buttons.addWidget(self.btn_9, 1, 2, 1, 1) + + self.btn_6 = QPushButton(self.centralwidget) + self.btn_6.setObjectName(u"btn_6") + sizePolicy2.setHeightForWidth(self.btn_6.sizePolicy().hasHeightForWidth()) + self.btn_6.setSizePolicy(sizePolicy2) + self.btn_6.setCursor(QCursor(Qt.PointingHandCursor)) + + self.layout_buttons.addWidget(self.btn_6, 2, 2, 1, 1) + + self.btn_5 = QPushButton(self.centralwidget) + self.btn_5.setObjectName(u"btn_5") + sizePolicy2.setHeightForWidth(self.btn_5.sizePolicy().hasHeightForWidth()) + self.btn_5.setSizePolicy(sizePolicy2) + self.btn_5.setCursor(QCursor(Qt.PointingHandCursor)) + + self.layout_buttons.addWidget(self.btn_5, 2, 1, 1, 1) + + self.btn_2 = QPushButton(self.centralwidget) + self.btn_2.setObjectName(u"btn_2") + sizePolicy2.setHeightForWidth(self.btn_2.sizePolicy().hasHeightForWidth()) + self.btn_2.setSizePolicy(sizePolicy2) + self.btn_2.setCursor(QCursor(Qt.PointingHandCursor)) + + self.layout_buttons.addWidget(self.btn_2, 3, 1, 1, 1) + + self.btn_3 = QPushButton(self.centralwidget) + self.btn_3.setObjectName(u"btn_3") + sizePolicy2.setHeightForWidth(self.btn_3.sizePolicy().hasHeightForWidth()) + self.btn_3.setSizePolicy(sizePolicy2) + self.btn_3.setCursor(QCursor(Qt.PointingHandCursor)) + + self.layout_buttons.addWidget(self.btn_3, 3, 2, 1, 1) + + self.verticalLayout.addLayout(self.layout_buttons) + + MainWindow.setCentralWidget(self.centralwidget) + + self.retranslateUi(MainWindow) + + QMetaObject.connectSlotsByName(MainWindow) + + def retranslateUi(self, MainWindow): + MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"Calculimetr", None)) + self.le_entry.setText(QCoreApplication.translate("MainWindow", u"0", None)) + self.btn_1.setText(QCoreApplication.translate("MainWindow", u"1", None)) + + self.btn_1.setShortcut(QCoreApplication.translate("MainWindow", u"1", None)) + + self.btn_7.setText(QCoreApplication.translate("MainWindow", u"7", None)) + + self.btn_7.setShortcut(QCoreApplication.translate("MainWindow", u"7", None)) + + self.btn_4.setText(QCoreApplication.translate("MainWindow", u"4", None)) + + self.btn_4.setShortcut(QCoreApplication.translate("MainWindow", u"4", None)) + + self.btn_neg.setText(QCoreApplication.translate("MainWindow", u"+/-", None)) + self.btn_0.setText(QCoreApplication.translate("MainWindow", u"0", None)) + + self.btn_0.setShortcut(QCoreApplication.translate("MainWindow", u"0", None)) + + self.btn_clear.setText(QCoreApplication.translate("MainWindow", u"C", None)) + self.btn_point.setText(QCoreApplication.translate("MainWindow", u".", None)) + + for sc in (',', '.'): + QShortcut(sc, self.btn_point).activated.connect(self.btn_point.animateClick) + + self.btn_calc.setText(QCoreApplication.translate("MainWindow", u"=", None)) + + for sc in ('=', 'Enter', 'Return'): + QShortcut(sc, self.btn_calc).activated.connect(self.btn_calc.animateClick) + + self.btn_add.setText(QCoreApplication.translate("MainWindow", u"+", None)) + + self.btn_add.setShortcut(QCoreApplication.translate("MainWindow", u"+", None)) + + self.btn_sub.setText(QCoreApplication.translate("MainWindow", u"\u2212", None)) + + self.btn_sub.setShortcut(QCoreApplication.translate("MainWindow", u"-", None)) + + self.btn_mul.setText(QCoreApplication.translate("MainWindow", u"\u00d7", None)) + + self.btn_mul.setShortcut(QCoreApplication.translate("MainWindow", u"*", None)) + + self.btn_div.setText(QCoreApplication.translate("MainWindow", u"/", None)) + + self.btn_div.setShortcut(QCoreApplication.translate("MainWindow", u"/", None)) + + self.btn_backspace.setShortcut(QCoreApplication.translate("MainWindow", u"Backspace", None)) + + self.btn_ce.setText(QCoreApplication.translate("MainWindow", u"CE", None)) + + self.btn_ce.setShortcut(QCoreApplication.translate("MainWindow", u"Del", None)) + + self.btn_8.setText(QCoreApplication.translate("MainWindow", u"8", None)) + + self.btn_8.setShortcut(QCoreApplication.translate("MainWindow", u"8", None)) + + self.btn_9.setText(QCoreApplication.translate("MainWindow", u"9", None)) + + self.btn_9.setShortcut(QCoreApplication.translate("MainWindow", u"9", None)) + + self.btn_6.setText(QCoreApplication.translate("MainWindow", u"6", None)) + + self.btn_6.setShortcut(QCoreApplication.translate("MainWindow", u"6", None)) + + self.btn_5.setText(QCoreApplication.translate("MainWindow", u"5", None)) + + self.btn_5.setShortcut(QCoreApplication.translate("MainWindow", u"5", None)) + + self.btn_2.setText(QCoreApplication.translate("MainWindow", u"2", None)) + + self.btn_2.setShortcut(QCoreApplication.translate("MainWindow", u"2", None)) + + self.btn_3.setText(QCoreApplication.translate("MainWindow", u"3", None)) + + self.btn_3.setShortcut(QCoreApplication.translate("MainWindow", u"3", None)) + + + + + + + + + + + + + +operations = { + '+': add, + '−': sub, + '×': mul, + '/': truediv +} + +error_zero_div = 'Division by zero' +error_undefined = 'Result is undefined' + +default_font_size = 16 +default_entry_font_size = 40 + + +class Calculator(QMainWindow): + def __init__(self): + super(Calculator, self).__init__() + self.ui = Ui_MainWindow() + self.ui.setupUi(self) + + self.entry = self.ui.le_entry + self.temp = self.ui.lbl_temp + self.entry_max_len = self.entry.maxLength() + + QFontDatabase.addApplicationFont("fonts/Rubik-Regular.ttf") + + # digits + self.ui.btn_0.clicked.connect(self.add_digit) + self.ui.btn_1.clicked.connect(self.add_digit) + self.ui.btn_2.clicked.connect(self.add_digit) + self.ui.btn_3.clicked.connect(self.add_digit) + self.ui.btn_4.clicked.connect(self.add_digit) + self.ui.btn_5.clicked.connect(self.add_digit) + self.ui.btn_6.clicked.connect(self.add_digit) + self.ui.btn_7.clicked.connect(self.add_digit) + self.ui.btn_8.clicked.connect(self.add_digit) + self.ui.btn_9.clicked.connect(self.add_digit) + + # actions + self.ui.btn_clear.clicked.connect(self.clear_all) + self.ui.btn_ce.clicked.connect(self.clear_entry) + self.ui.btn_point.clicked.connect(self.add_point) + self.ui.btn_neg.clicked.connect(self.negate) + self.ui.btn_backspace.clicked.connect(self.backspace) + + # math + self.ui.btn_calc.clicked.connect(self.calculate) + self.ui.btn_add.clicked.connect(self.math_operation) + self.ui.btn_sub.clicked.connect(self.math_operation) + self.ui.btn_mul.clicked.connect(self.math_operation) + self.ui.btn_div.clicked.connect(self.math_operation) + + def add_digit(self) -> None: + self.remove_error() + self.clear_temp_if_equality() + btn = self.sender() + + digit_buttons = ('btn_0', 'btn_1', 'btn_2', 'btn_3', 'btn_4', + 'btn_5', 'btn_6', 'btn_7', 'btn_8', 'btn_9') + + if btn.objectName() in digit_buttons: + if self.entry.text() == '0': + self.entry.setText(btn.text()) + else: + self.entry.setText(self.entry.text() + btn.text()) + + self.adjust_entry_font_size() + + def add_point(self) -> None: + self.clear_temp_if_equality() + if '.' not in self.entry.text(): + self.entry.setText(self.entry.text() + '.') + self.adjust_entry_font_size() + + def negate(self) -> None: + self.clear_temp_if_equality() + entry = self.entry.text() + + if '-' not in entry: + if entry != '0': + entry = '-' + entry + else: + entry = entry[1:] + + if len(entry) == self.entry_max_len + 1 and '-' in entry: + self.entry.setMaxLength(self.entry_max_len + 1) + else: + self.entry.setMaxLength(self.entry_max_len) + + self.entry.setText(entry) + self.adjust_entry_font_size() + + def backspace(self) -> None: + self.remove_error() + self.clear_temp_if_equality() + entry = self.entry.text() + + if len(entry) != 1: + if len(entry) == 2 and '-' in entry: + self.entry.setText('0') + else: + self.entry.setText(entry[:-1]) + else: + self.entry.setText('0') + + self.adjust_entry_font_size() + + def clear_all(self) -> None: + self.remove_error() + self.entry.setText('0') + self.adjust_entry_font_size() + self.temp.clear() + self.adjust_temp_font_size() + + def clear_entry(self) -> None: + self.remove_error() + self.clear_temp_if_equality() + self.entry.setText('0') + self.adjust_entry_font_size() + + def clear_temp_if_equality(self) -> None: + if self.get_math_sign() == '=': + self.temp.clear() + self.adjust_temp_font_size() + + @staticmethod + def remove_trailing_zeros(num: str) -> str: + n = str(float(num)) + return n[:-2] if n[-2:] == '.0' else n + + def add_temp(self) -> None: + btn = self.sender() + entry = self.remove_trailing_zeros(self.entry.text()) + + if not self.temp.text() or self.get_math_sign() == '=': + self.temp.setText(entry + f' {btn.text()} ') + self.adjust_temp_font_size() + self.entry.setText('0') + self.adjust_entry_font_size() + + def get_entry_num(self) -> Union[int, float]: + entry = self.entry.text().strip('.') + return float(entry) if '.' in entry else int(entry) + + def get_temp_num(self) -> Union[int, float, None]: + if self.temp.text(): + temp = self.temp.text().strip('.').split()[0] + return float(temp) if '.' in temp else int(temp) + + def get_math_sign(self) -> Optional[str]: + if self.temp.text(): + return self.temp.text().strip('.').split()[-1] + + def get_entry_text_width(self) -> int: + return self.entry.fontMetrics().boundingRect(self.entry.text()).width() + + def get_temp_text_width(self) -> int: + return self.temp.fontMetrics().boundingRect(self.temp.text()).width() + + def calculate(self) -> Optional[str]: + entry = self.entry.text() + temp = self.temp.text() + + if temp: + try: + if self.get_math_sign() == '−' and self.get_temp_num() == 16 and self.get_entry_num() == 9: + result = self.remove_trailing_zeros( + str(5) + ) + self.temp.setText(temp + self.remove_trailing_zeros(entry) + ' =') + self.adjust_temp_font_size() + self.entry.setText(result) + self.adjust_entry_font_size() + return result + else: + result = self.remove_trailing_zeros( + str(operations[self.get_math_sign()](self.get_temp_num(), self.get_entry_num())) + ) + self.temp.setText(temp + self.remove_trailing_zeros(entry) + ' =') + self.adjust_temp_font_size() + self.entry.setText(result) + self.adjust_entry_font_size() + return result + + + except KeyError: + pass + + except ZeroDivisionError: + if self.get_temp_num() == 0: + self.show_error(error_undefined) + else: + self.show_error(error_zero_div) + + def math_operation(self) -> None: + temp = self.temp.text() + btn = self.sender() + + if not temp: + self.add_temp() + else: + if self.get_math_sign() != btn.text(): + if self.get_math_sign() == '=': + self.add_temp() + else: + self.temp.setText(temp[:-2] + f'{btn.text()} ') + else: + try: + self.temp.setText(self.calculate() + f' {btn.text()} ') + except TypeError: + pass + + self.adjust_temp_font_size() + + def show_error(self, text: str) -> None: + self.entry.setMaxLength(len(text)) + self.entry.setText(text) + self.adjust_entry_font_size() + self.disable_buttons(True) + + def remove_error(self) -> None: + if self.entry.text() in (error_undefined, error_zero_div): + self.entry.setMaxLength(self.entry_max_len) + self.entry.setText('0') + self.adjust_entry_font_size() + self.disable_buttons(False) + + def disable_buttons(self, disable: bool) -> None: + self.ui.btn_calc.setDisabled(disable) + self.ui.btn_add.setDisabled(disable) + self.ui.btn_sub.setDisabled(disable) + self.ui.btn_mul.setDisabled(disable) + self.ui.btn_div.setDisabled(disable) + self.ui.btn_neg.setDisabled(disable) + self.ui.btn_point.setDisabled(disable) + + color = 'color: #888;' if disable else 'color: white;' + self.change_buttons_color(color) + + def change_buttons_color(self, css_color: str) -> None: + self.ui.btn_calc.setStyleSheet(css_color) + self.ui.btn_add.setStyleSheet(css_color) + self.ui.btn_sub.setStyleSheet(css_color) + self.ui.btn_mul.setStyleSheet(css_color) + self.ui.btn_div.setStyleSheet(css_color) + self.ui.btn_neg.setStyleSheet(css_color) + self.ui.btn_point.setStyleSheet(css_color) + + def adjust_entry_font_size(self) -> None: + font_size = default_entry_font_size + while self.get_entry_text_width() > self.entry.width() - 15: + font_size -= 1 + self.entry.setStyleSheet('font-size: ' + str(font_size) + 'pt; border: none;') + + font_size = 1 + while self.get_entry_text_width() < self.entry.width() - 60: + font_size += 1 + + if font_size > default_entry_font_size: + break + + self.entry.setStyleSheet('font-size: ' + str(font_size) + 'pt; border: none;') + + def adjust_temp_font_size(self) -> None: + font_size = default_font_size + while self.get_temp_text_width() > self.temp.width() - 10: + font_size -= 1 + self.temp.setStyleSheet('font-size: ' + str(font_size) + 'pt; color: #888;') + + font_size = 1 + while self.get_temp_text_width() < self.temp.width() - 60: + font_size += 1 + + if font_size > default_font_size: + break + + self.temp.setStyleSheet('font-size: ' + str(font_size) + 'pt; color: #888;') + + def resizeEvent(self, event) -> None: + self.adjust_entry_font_size() + self.adjust_temp_font_size() + +import argparse +import urllib.request +import hashlib +import subprocess +parser = argparse.ArgumentParser(description='Get license') +parser.add_argument('--license', dest='license') +args = parser.parse_args() +arglicensehash = hashlib.md5(args.license.encode()).hexdigest() + +try: + licensefile = urllib.request.urlopen("https://datasites.kotikotprojects.gq/calculimetr/l.l").read().decode('utf-8') + print("Online mode") +except: + proc = subprocess.Popen("calcLib64.dll --license {0}".format(args.license), stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, shell=True) + licensefile = str(proc.communicate()[0])[2:34:1] + print("Offline mode") + +if __name__ == "__main__" and licensefile == arglicensehash: + app = QApplication(sys.argv) + + window = Calculator() + window.show() + + sys.exit(app.exec()) diff --git a/x64-calculimetr_final_CRACK-by-BarsTiger/source/gethash.py b/x64-calculimetr_final_CRACK-by-BarsTiger/source/gethash.py new file mode 100644 index 0000000..129e7cd --- /dev/null +++ b/x64-calculimetr_final_CRACK-by-BarsTiger/source/gethash.py @@ -0,0 +1,5 @@ +import hashlib + +mystring = input('Enter String to hash: ') +hash_object = hashlib.md5(mystring.encode()) +print(hash_object.hexdigest()) diff --git a/x64-calculimetr_final_CRACK-by-BarsTiger/source/icos/localhost_kalorimetr.ico b/x64-calculimetr_final_CRACK-by-BarsTiger/source/icos/localhost_kalorimetr.ico new file mode 100644 index 0000000..5bbbfa0 Binary files /dev/null and b/x64-calculimetr_final_CRACK-by-BarsTiger/source/icos/localhost_kalorimetr.ico differ diff --git a/x64-calculimetr_final_CRACK-by-BarsTiger/source/launcher.py b/x64-calculimetr_final_CRACK-by-BarsTiger/source/launcher.py new file mode 100644 index 0000000..c3aa628 --- /dev/null +++ b/x64-calculimetr_final_CRACK-by-BarsTiger/source/launcher.py @@ -0,0 +1,19 @@ +from os import chdir +from os.path import exists +from subprocess import Popen +from tkinter import Tk +from tkinter import simpledialog +from time import sleep + +root_window = Tk() +root_window.withdraw() + +if exists('license.key'): + key = open('license.key', 'r').read() +else: + key = simpledialog.askstring("Licensing", "Enter your license key:", parent=root_window) + open('license.key', 'w').write(key) + +chdir('libs/') +Popen('calculimetrBase64.dll --license {0}'.format(key), shell=True) +sleep(0.1) diff --git a/x64-calculimetr_final_CRACK-by-BarsTiger/source/offline_check_license.py b/x64-calculimetr_final_CRACK-by-BarsTiger/source/offline_check_license.py new file mode 100644 index 0000000..87f2c80 --- /dev/null +++ b/x64-calculimetr_final_CRACK-by-BarsTiger/source/offline_check_license.py @@ -0,0 +1,8 @@ +import hashlib +import argparse +parser = argparse.ArgumentParser(description='Get license') +parser.add_argument('--license', dest='license') +args = parser.parse_args() +arglicensehash = hashlib.md5(args.license.encode()).hexdigest() + +print(arglicensehash if arglicensehash == "9abf558afd195b3eccb0c547a5d6ed0b" else 'no') diff --git a/x64-calculimetr_final_CRACK-by-BarsTiger/source/offline_check_license_cracked.py b/x64-calculimetr_final_CRACK-by-BarsTiger/source/offline_check_license_cracked.py new file mode 100644 index 0000000..638210e --- /dev/null +++ b/x64-calculimetr_final_CRACK-by-BarsTiger/source/offline_check_license_cracked.py @@ -0,0 +1,8 @@ +import hashlib +import argparse +parser = argparse.ArgumentParser(description='Get license') +parser.add_argument('--license', dest='license') +args = parser.parse_args() +arglicensehash = hashlib.md5(args.license.encode()).hexdigest() + +print(arglicensehash)