Python352 + PyQT5 btcdice.com verification program, python352pyqt5
0. Reward:
Doge: DU5zf68E7x4YtMayUaX91z6dQDouS2u5aeLTC: LR4Qm8Cc2jKRdV4MZCpXtrAE8SZ2dXuj1o
#! /Usr/bin/python3from PyQt5.QtWidgets import * from PyQt5.QtGui import * from PyQt5.QtCore import * import hashlibimport randomimport hmacimport sys # Changelog: # Date: 10:56:46 # BugFixed: no function for verify the server seed hash, now fixed! GroupCalculateData = [] def calculateData (serverSeed, clientSeed, clientBetID, clientBetRange): groupCalculateData. clear () for betid in range (int (clientBetID), int (clientBetRange): groupTemp = [] client_seed_id = clientSeed + ":" + str (betid) hmac_512 = hmac. new (serverSeed. encode ('utf-8'), client_seed_id.encode ('utf-8'), hashlib. sha512 ). hexdigest () I = 0 roll =-1 while (roll =-1): if I = 25: ro Ll_default = int (hmac_512 [125:128], 16) roll = roll_defualt/10000 else: roll_unit_start = 5 * I roll_unit_end = 5 + 5 * I roll_default = int (hmac_512 [roll_unit_start: roll_unit_end], 16) if roll_default <1000000: roll = roll_default/10000 I + = 1 groupTemp. append (str (betid) groupTemp. append (str (roll) groupCalculateData. append (groupTemp) # print (groupCalculateData) class Window (QWidget): def __ Init _ (self): super (Window, self ). _ init _ () self. verifypolicroup = QGroupBox ('') self. verifypolicroup. setFixedWidth (350) self. verifyData = QTextEdit () # self. verifyData. setPlaceholderText ('paste the information here: ') self. verifyData. setPlainText Ht self. verifyData. setFixedHeight (70) self. verifyData. setFocus () self. serverSeed = QLineEdit () self. serverSeed. setPlaceholderText ('server sease') self. serverSeedHash = QLineEdit () self. serverSeedHash. setPlaceholderText ('server seed Hash value') self. clientSeed = QLineEdit () self. clientSeed. setPlaceholderText ('client seed: (can be customized when changing hands) ') self. clientBetID = QLineEdit () self. clientBetID. setPlaceholderText ('bet id') self. clien TBetRange = QLineEdit () self. clientBetRange. setPlaceholderText ('bet range ') # Verify Button self. verifyButton = QPushButton ('verification information') self. verifyButton. clicked. connect (self. queryButtonClicked) # Calculate Button self. calculateButton = QPushButton ('calculation result') self. calculateButton. clicked. connect (self. calculateButtonClicked) self. calculateButton. hide () # Client Bet items self. clientBetLayout = QHBoxLayout () s Elf. clientBetLayout. addStretch () self. clientBetLayout. addWidget (self. clientBetID) self. clientBetLayout. addWidget (self. clientBetRange) self. clientBetLayout. addWidget (self. verifyButton) self. clientBetLayout. addWidget (self. calculateButton) # QVBoxLayout ()/QHBoxLayout ()/QGridLayout () self. verifyDataLayout = QGridLayout () self. verifyDataLayout. addWidget (self. verifyData, 1, 0) self. verifyDataLayout. AddWidget (self. serverSeed, 2, 0, 1, 1) self. verifyDataLayout. addWidget (self. serverSeedHash, 3, 0) self. verifyDataLayout. addWidget (self. clientSeed, 4, 0) self. verifyDataLayout. addLayout (self. clientBetLayout, 5, 0) self. verifypolicroup. setLayout (self. verifyDataLayout) # Result Group self. verifyResultGroup = QGroupBox ('') self. verifyResultView = QTableView () self. verifyResultViewModel = QStandardItem Model () self. verifyResultView. verticalHeader (). hide () self. verifyResultLayout = QVBoxLayout () self. verifyResultLayout. addWidget (self. verifyResultView) self. verifyResultGroup. setLayout (self. verifyResultLayout) self. layout = QGridLayout () self. layout. addWidget (self. verifypolicroup, 0, 0) self. layout. addWidget (self. verifyResultGroup, 0, 1) self. setLayout (self. layout) self. setWindowTitle ('btcdice verification fairness soft @ V20160628_v1.3 1626478661 ') self. resize (400,200) # Disable zoom + # self. setWindowFlags (Qt. frameless=whint | Qt. windowSystemMenuHint) # Qt. windowMinimizeButtonHint/self. setWindowFlags (Qt. windowCloseButtonHint) self. setFixedSize (520,220) def queryButtonClicked (self): verifyDataValues = self. verifyData. toPlainText () verifyDataValuesGroup = verifyDataValues. split ('"') if len (verifyDataValue SGroup) = 4: serverSeed = verifyDataValuesGroup [0] [1:] serverSeedHash = hashlib. sha256 (serverSeed. encode ('utf-8 ')). hexdigest () if serverSeedHash = verifyDataValuesGroup [1]: QMessageBox. information (self, 'hs', 'seed Verification Successful! ', QMessageBox. yes) self. serverSeed. setText (serverSeed) self. serverSeedHash. setText (serverSeedHash) self. clientSeed. setText (verifyDataValuesGroup [2]) self. clientBetID. setText (verifyDataValuesGroup [3]. replace ('"','') self. clientBetRange. setText (str (int (self. clientBetID. text () + 2) self. calculateButton. show () else: QMessageBox. warning (self, 'error', 'Verification Failed! The server seed hash value is incorrect! ', QMessageBox. yes) self. verifyData. clear () self. verifyData. setFocus () self. serverSeed. clear () self. serverSeedHash. clear () self. clientSeed. clear () self. clientBetID. clear () self. clientBetRange. clear () self. calculateButton. hide () else: QMessageBox. warning (self, 'error', 'Verification Failed! The format of the copied information is incorrect! ', QMessageBox. yes) self. verifyData. clear () self. verifyData. setFocus () def calculateButtonClicked (self): if len (self. clientBetRange. text () <0: print ("Error! BetRange shoshould> 0 ") else: self. verifyResultViewModel. clear () self. verifyResultView. setModel (self. verifyResultViewModel) self. verifyResultViewModel. queryViewHeader = ['betid', 'result'] self. verifyResultViewModel. setHorizontalHeaderLabels (self. verifyResultViewModel. queryViewHeader) self. verifyResultView. resizeColumnToContents (0) self. verifyResultView. resizeColumnToContents (1) self. verifyResultView. horizontalHeader (). setStretchLastSection (True) calculateData (self. serverSeed. text (), self. clientSeed. text (), self. clientBetID. text (), self. clientBetRange. text () # print (groupCalculateData) for clientBetIDItem in range (len (partition): # sort clientBetIDItemNew = len (partition)-clientBetIDItem-1 resultRow = [] resultRow. append (QStandardItem (groupCalculateData [clientBetIDItemNew] [0]) resultRow. append (QStandardItem (groupCalculateData [clientBetIDItemNew] [1]) self. verifyResultViewModel. appendRow (resultRow) app = QApplication (sys. argv) win = Window()win.show()app.exe c _()