class SauceNAO_N_Ui(QMainWindow, Ui_MainWindow): def __init__(self, parent=None): super(SauceNAO_N_Ui, self).__init__(parent) self.setupUi(self) self.pic_listWidget.doubleClicked.connect(self.read_data) self.result_listWidget.clicked.connect(self.show_data) self.db = SDB() self.res_list = [] self.index_list = self.db.read_index() for i in self.index_list: self.pic_listWidget.addItem(QListWidgetItem(i[0])) def read_data(self, index): # QModelIndex() # print(index.data()) res = self.db.read({'source': index.data()}) # 第一个结果第二列 self.res_list = json2dict(res[0][1]) for res in self.res_list: self.result_listWidget.addItem(QListWidgetItem(res['name'])) def show_data(self, index): for res in self.res_list: if res['name'] == index.data(): self.pic_textEdit.setText(res['content']) f = str2pic(res['data']) img = ImageQt.ImageQt(Image.open(f)) pix = QPixmap().fromImage(img) self.pic_label.setPixmap(pix) break
def _main(sdb_path, patch_name): from sdb import SDB with open(sdb_path, "rb") as f: buf = f.read() g_logger.debug("loading database") s = SDB() s.vsParse(bytearray(buf)) g_logger.debug("done loading database") index = SdbIndex() g_logger.debug("indexing strings") index.index_sdb(s) g_logger.debug("done indexing strings") library = item_get_child(s.database_root, SDB_TAGS.TAG_LIBRARY) for shim_ref in item_get_children(library, SDB_TAGS.TAG_SHIM_REF): patch = item_get_child(shim_ref, SDB_TAGS.TAG_PATCH) name_ref = item_get_child(patch, SDB_TAGS.TAG_NAME) name = index.get_string(name_ref.value.reference) bits = item_get_child(patch, SDB_TAGS.TAG_PATCH_BITS) if name == patch_name: ps = GreedyVArray(sdb.PATCHBITS) ps.vsParse(bits.value.value) for i, _ in ps: p = ps[int(i)] print(p.tree()) print(" disassembly:") for l in disassemble(str(p.pattern), p.rva): print(" " + l) print("")
def read(): # 打开数据库 db = SDB() data_str = db.read_all() # print(data_str[0][1]) dict = json2dict(data_str[0][1]) for i in dict: print(i['img']) f = str2pic(i['data'])
def main(sdb_path): from sdb import SDB with open(sdb_path, "rb") as f: buf = f.read() s = SDB() s.vsParse(buf) for l in dump(s): sys.stdout.write(l.encode("utf-8")) sys.stdout.write("\n")
def _main(sdb_path): from sdb import SDB with open(sdb_path, "rb") as f: buf = f.read() s = SDB() s.vsParse(bytearray(buf)) for l in dump(s): sys.stdout.write(l.encode("utf-8")) sys.stdout.write("\n")
def main(sdb_path): from sdb import SDB with open(sdb_path, "rb") as f: buf = f.read() s = SDB() s.vsParse(bytearray(buf)) for l in dump(s): sys.stdout.write(l) sys.stdout.write("\n")
def _main(sdb_path): from sdb import SDB with open(sdb_path, "rb") as f: buf = f.read() s = SDB() s.vsParse(bytearray(buf)) d = SdbDatabaseDumper(s) for l in d.dump(): sys.stdout.write(l.encode("utf-8")) sys.stdout.write("\n")
def __init__(self, parent=None): super(SauceNAO_N_Ui, self).__init__(parent) self.setupUi(self) self.pic_listWidget.doubleClicked.connect(self.read_data) self.result_listWidget.clicked.connect(self.show_data) self.db = SDB() self.res_list = [] self.index_list = self.db.read_index() for i in self.index_list: self.pic_listWidget.addItem(QListWidgetItem(i[0]))
def _main(sdb_path): from sdb import SDB with open(sdb_path, "rb") as f: buf = f.read() g_logger.debug("loading database") s = SDB() s.vsParse(bytearray(buf)) g_logger.debug("done loading database") d = SdbInfoDumper(s) for l in d.dump_info(): sys.stdout.write(l.encode("utf-8")) sys.stdout.write("\n")
def _main(sdb_path): from sdb import SDB with open(sdb_path, "rb") as f: buf = f.read() s = SDB() try: s.vsParse(bytearray(buf)) except sdb.InvalidSDBFileError: g_logger.error("not an SDB file: %s" % (sdb_path)) return -1 d = SdbShimDumper(s) for l in d.dump_database(): sys.stdout.write(l.encode("utf-8")) sys.stdout.write("\n")
def run(): # 读取目录图片 # pic_list = read_pics('.') pic_list = [os.path.basename(PIC)] # 打开数据库 db = SDB() # 初始化浏览器 chrome = init_chrome() # 搜索图片 result_dic = search_pic(chrome, pic_list[0]) # 下载搜图结果图片,并转成字符串保存 download_img(result_dic) # 将部分数据转字符串 result_dic['results'] = dict2json(result_dic['results']) # 写入数据库 db.add(result_dic) # 查看数据 print(db.read_all())
def _main(sdb_path, patch_name): from sdb import SDB with open(sdb_path, "rb") as f: buf = f.read() g_logger.debug("loading database") s = SDB() s.vsParse(bytearray(buf)) g_logger.debug("done loading database") index = SdbIndex() g_logger.debug("indexing strings") index.index_sdb(s) g_logger.debug("done indexing strings") try: library = item_get_child(s.database_root, SDB_TAGS.TAG_LIBRARY) except KeyError: pass else: for shim_ref in item_get_children(library, SDB_TAGS.TAG_SHIM_REF): patch = item_get_child(shim_ref, SDB_TAGS.TAG_PATCH) name_ref = item_get_child(patch, SDB_TAGS.TAG_NAME) name = index.get_string(name_ref.value.reference) if name != patch_name: continue bits = item_get_child(patch, SDB_TAGS.TAG_PATCH_BITS) dump_patch(bits, arch=ARCH_32) try: patch = item_get_child(s.database_root, SDB_TAGS.TAG_PATCH) except KeyError: pass else: name_ref = item_get_child(patch, SDB_TAGS.TAG_NAME) name = index.get_string(name_ref.value.reference) if name == patch_name: bits = item_get_child(patch, SDB_TAGS.TAG_PATCH_BITS) dump_patch(bits, arch=ARCH_32)
def _parse_rom_element(self, element_buffer, debug = False): sdb = SDB() sdb.parse_rom_element(element_buffer, debug) if sdb.is_interconnect(): if debug: print "Interconnect: %s" % sdb.d["SDB_NAME"] if debug: print "\tNumber of Elements: %d" % sdb.get_number_of_records_as_int() elif sdb.is_device(): if debug: print "Device: %s" % sdb.d["SDB_NAME"] elif sdb.is_bridge(): if debug: print "Bridge: %s" % sdb.d["SDB_NAME"] if debug: print "\t0x%016X - 0x%016X: Size: 0x%016X" % (sdb.get_start_address_as_int(), \ sdb.get_end_address_as_int(), \ sdb.get_size_as_int())