Python352 + PyQT5 btcdice.com verification program, python352pyqt5

Source: Internet
Author: User

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 _()

 

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.