본문 바로가기

HACK/Source

simple hash brute force

 

 

사용한 적은 가끔??? 별로 없지만 그냥 종종 사용하게 듯

 

hash.zip
9.41MB
hash.z01
10.00MB

 

 

import sys
import hashlib
import qdarkstyle
from PySide.QtGui import *
from PySide.QtCore import *
from itertools import product

class MainForm(QWidget):
    def __init__(self):
        super(MainForm, self).__init__()
        self.layout = QGridLayout()
        self.label1 = QLabel("Hash: ")
        self.label2 = QLabel("Table: ")
        self.label3 = QLabel("Rule: ")
        self.edit1 = QLineEdit("033bd94b1168d7e4f0d644c3c95e35bf")
        self.edit2 = QLineEdit("!#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~")
        self.edit3 = QLineEdit("T@@T")
        self.btn = QPushButton("Start")
        self.btn.clicked.connect(self.start)
        self.combo = QComboBox()
        self.combo.addItem("md5")
        self.combo.addItem("sha1")
        self.combo.addItem("sha224")
        self.combo.addItem("sha256")
        self.combo.addItem("sha384")
        self.combo.addItem("sha512")
        self.viewer = QTextEdit()

        self.layout.addWidget(self.combo, 1, 0, 1, 2)
        self.layout.addWidget(self.label1, 2, 0)
        self.layout.addWidget(self.label2, 3, 0)
        self.layout.addWidget(self.label3, 4, 0)
        self.layout.addWidget(self.edit1, 2, 1)
        self.layout.addWidget(self.edit2, 3, 1)
        self.layout.addWidget(self.edit3, 4, 1)
        self.layout.addWidget(self.btn, 5, 0, 1, 2)
        self.layout.addWidget(self.viewer, 6, 0, 1, 2)

        self.setWindowTitle("Hash Brute-Force")
        self.resize(850, 300)
        self.setLayout(self.layout)
        self.show()


    def start(self):
        self.viewer.clear()
        self.viewer.append("Start...")
        self.viewer.append(" ")

        ash = self.combo.currentText()
        result = self.edit1.text()
        table = self.edit2.text()
        rule = self.edit3.text()
        num = rule.count("@")

        for length in range(num, num+1):
            to_attempt = product(table, repeat=length)
            for attempt in to_attempt:
                temp = rule
                for word in attempt:
                    temp = temp.replace("@", word, 1)
                m = hashlib.new(ash)
                m.update(temp)
                text = m.hexdigest()
                           
                if text == result:
                    self.viewer.append("===================Success!!!===================")
                    self.viewer.append(temp)
                    self.viewer.append("===============================================")
                    break
                else:
                    pass
        self.viewer.append("End...")



if __name__ == '__main__':
    app = QApplication(sys.argv)
    app.setStyleSheet(qdarkstyle.load_stylesheet())
    main = MainForm()
    sys.exit(app.exec_())

'HACK > Source' 카테고리의 다른 글

영어단어 암기 프로그램  (7) 2020.03.11