def upload_fingerprint_template(name): myquery={} myquery['username'] = name mydoc = coll.find_one(myquery) #print(mydoc['uid']) print(mydoc['image_template']) image_temp = [] image_temp = mydoc['image_template'] print(image_temp) #image_temp = f.storeTemplate() try: f = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF, 0x00000000) if ( f.verifyPassword() == False ): raise ValueError('The given fingerprint sensor password is wrong!') except Exception as e: print('The fingerprint sensor could not be initialized!') print('Exception message: ' + str(e)) exit(1) result = image_temp result = f.searchTemplate() positionNumber = result[0] print('Currently used templates: ' + str(f.getTemplateCount()) +'/'+ str(f.getStorageCapacity())) position = f.getTemplateCount() position = position+1 print("Inserting fingerprint matching user from mongo to local fingerprint sensor") f.uploadCharacteristics(0x01, image_temp) f.storeTemplate() print('Currently used templates: ' + str(f.getTemplateCount()) +'/'+ str(f.getStorageCapacity()))
def Buscar_Digital(): global sc_bioSrc sc_bioSrc = Toplevel(screen2) sc_bioSrc.title("Biometria") sc_bioSrc.attributes('fullscreen',True) try: f = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF, 0x00000000) if( f.verifyPassword() == False ): raise ValueError('The given fingerprint sensor password is wrong!') except Exception as e: user_not_found() exit(1) try: while ( f.readImage() == False ): pass f.convertImage(0x01) result = f.searchTemplate() positionNumber = result[0] accuracyScore = result[1] if ( positionNumber == -1 ): user_not_found() exit(0) else: Finger=positionNumber Lista= os.listdir() if Finger in Lista: Ver=open(Finger+".fin", 'r') usr=Ver.read().splitlines() except Exception as e: exit(1)
def Adicionar_Digital(): try: f = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF, 0x00000000) if (f.verifyPassword() == False): raise ValueError('The given fingerprint sensor password is wrong!') except Exception as e: exit(1) try: while (f.readImage() == False): pass f.convertImage(0x01) result = f.searchTemplate() positionNumber = result[0] if (positionNumbe >= 0): Usr_ja_cad() exit(0) #Adicionar algo para fazer o user remover o dedo time.sleep(2) while (f.readImage() == False): pass f.convertImage(0x02) if (f.compareCharacteristics() == 0): raise Exception("Fingers not Match") Dedos_nao_batem() f.createTemplate() positionNumber = f.storeTemplate() USR = open(positionNumber + ".fin") USR.write(usr) USR.close Cadastrado() main_screen() except Exception as e: exit(1)
def search(): f = PyFingerprint('COM6', 57600, 0xFFFFFFFF, 0x00000000) print('Currently used templates: ' + str(f.getTemplateCount()) + '/' + str(f.getStorageCapacity())) print('Waiting for finger...') while (f.readImage() == False): pass f.convertImage(FINGERPRINT_CHARBUFFER1) result = f.searchTemplate() positionNumber = result[0] accuracyScore = result[1] if (positionNumber == -1): print('No match found!') exit(0) else: print('Found template at position #' + str(positionNumber)) print('The accuracy score is: ' + str(accuracyScore)) f = open('profiles/' + str(positionNumber) + '.txt', 'r', encoding='UTF8') for line in f: print(line, end='') f.close()
def search(): port = config.figerScanPort f = PyFingerprint(port, 57600, 0xFFFFFFFF, 0x00000000) ## Tries to search the finger and calculate hash try: print('Waiting for finger...') ## Wait that finger is read while ( f.readImage() == False ): pass ## Converts read image to characteristics and stores it in charbuffer 1 f.convertImage(0x01) ## Searchs template result = f.searchTemplate() positionNumber = result[0] accuracyScore = result[1] if ( positionNumber == -1 ): print('No match found!') return -1 else: print('Found template at position #' + str(positionNumber)) print('The accuracy score is: ' + str(accuracyScore)) return positionNumber except Exception as e: print('Operation failed!') print('Exception message: ' + str(e)) return -1
def Buscar_Digital(): try: f = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF, 0x00000000) if (f.verifyPassword() == False): raise ValueError('The given fingerprint sensor password is wrong!') except Exception as e: user_not_found() exit(1) try: print('Waiting for finger...') while (f.readImage() == False): pass f.convertImage(0x01) result = f.searchTemplate() positionNumber = result[0] accuracyScore = result[1] if (positionNumber == -1): user_not_found() exit(0) else: Finger = positionNumber Lista = os.listdir() if Finger in Lista: Ver = open(Finger + ".fin", 'r') usr = Ver.read().splitlines() except Exception as e: exit(1)
def search(status=2): #0 = on time 1 = tardy 2 = absent ## Search for a finger ## Tries to initialize the sensor try: f = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF, 0x00000000) if (f.verifyPassword() == False): raise ValueError('The given fingerprint sensor password is wrong!') except Exception as e: print('The fingerprint sensor could not be initialized!') print('Exception message: ' + str(e)) exit(1) ## Gets some sensor information print('Currently used templates: ' + str(f.getTemplateCount()) + '/' + str(f.getStorageCapacity())) ## Tries to search the finger and calculate hash try: print('Waiting for finger...') ## Wait that finger is read while (f.readImage() == False): pass ## Converts read image to characteristics and stores it in charbuffer 1 f.convertImage(0x01) ## Searchs template result = f.searchTemplate() positionNumber = result[0] accuracyScore = result[1] if (positionNumber == -1): print('No match found!') exit(0) else: print('Found template at position #' + str(positionNumber)) set_status(str(positionNumber), status) print('The accuracy score is: ' + str(accuracyScore)) ## OPTIONAL stuff ## ## Loads the found template to charbuffer 1 f.loadTemplate(positionNumber, 0x01) ## Downloads the characteristics of template loaded in charbuffer 1 characterics = str(f.downloadCharacteristics(0x01)) ## Hashes characteristics of template #print('SHA-2 hash of template: ' + hashlib.sha256(characterics).hexdigest()) except Exception as e: print('Operation failed!') print('Exception message: ' + str(e))
def threadAddFinger(self): ## Enrolls new finger ## Tries to initialize the sensor try: f = PyFingerprint(self.USB, 57600, 0xFFFFFFFF, 0x00000000) if ( f.verifyPassword() == False ): raise ValueError('The given fingerprint sensor password is wrong!') except Exception as e: self.lbThongBao.setText("Lỗi kết nối với cảm biên vân tay") self.threadIsRun = False return ## Tries to enroll new finger try: self.lbThongBao.setText("Đặt ngón tay vào cảm biến vân tay") ## Wait that finger is read while ( f.readImage() == False ): pass ## Converts read image to characteristics and stores it in charbuffer 1 f.convertImage(0x01) ## Checks if finger is already enrolled result = f.searchTemplate() positionNumber = result[0] if ( positionNumber >= 0 ): self.lbThongBao.setText("Vân tay đã tồn tại") self.threadIsRun = False return self.lbThongBao.setText("Nhấc tay ra khỏi cảm biến") time.sleep(2) self.lbThongBao.setText("Đặt lại ngón tay lần 2 để xác thực") ## Wait that finger is read again while ( f.readImage() == False ): pass ## Converts read image to characteristics and stores it in charbuffer 2 f.convertImage(0x02) ## Compares the charbuffers if ( f.compareCharacteristics() == 0 ): self.lbThongBao.setText("Ngón tay 2 lần không khớp nhau! Lấy Vân tay thât bại") self.threadIsRun = False return ## Creates a template f.createTemplate() ## Saves template at new position number positionNumber = f.storeTemplate() self.lbThongBao.setText("Thêm văn tay thành công!") self.threadIsRun = False except Exception as e: print('Operation failed!') print('Exception message: ' + str(e)) self.lbThongBao.setText("Lỗi trong qúa trình thêm vân tay") self.threadIsRun = False return
class FingerprintThread(threading.Thread): def __init__(self, app): super().__init__(daemon = True) #FingerprintThread.template = None self.app = app self._continue = threading.Event() #self.app.bind('<<GRANT_ACCESS>>', callback) self.start() def run(self): try: self.f = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF, 0x00000000) if ( self.f.verifyPassword() == False ): raise ValueError('The given fingerprint sensor password is wrong!') except Exception as e: print('The fingerprint sensor could not be initialized!') print('Exception message: ' + str(e)) print('Currently used templates: ' + str(self.f.getTemplateCount()) +'/'+ str(self.f.getStorageCapacity())) while True: retry = 0 while True: print('Waiting for finger...') retry+=1 try: while (self.f.readImage() == False): #print('looping .readImage()') time.sleep(0.5) pass break except Exception as e: print('PyFingerprint:{}, try {} of 3'.format(e, retry)) if retry == 3: raise Exception('PyFingerprint: Failed to read image 3 times, exiting.') # delay 2 seconds before next try time.sleep(2) ## Converts read image to characteristics and stores it in charbuffer 1 #f.convertImage(0x01) ## Searchs template #FingerprintThread.template = f.searchTemplate() self.app.event_generate('<<FINGERPRINT>>', when='tail') self._continue.clear() self._continue.wait() def searchTemplate(self): print('before convertImage(1)') self.f.convertImage(0x01) print('before searchTemplate()') template = self.f.searchTemplate() print('_continue.set()') self._continue.set() return template
def enroll(): ## Enrolls new finger try: finger = PyFingerprint('/dev/ttyUSB0') print('Waiting for finger...') print(finger.readImage()) ## Wait for finger to read while ( finger.readImage() == False ): pass ## Converts read image to characteristics and stores it in charbuffer 1 finger.convertImage(0x01) ## Checks if finger is already enrolled result = finger.searchTemplate() print(result) positionNumber = result[0] if ( positionNumber >= 0 ): print('Template already exists at position #' + str(positionNumber)) return (-1) exit(0) #return True print('Remove finger...') time.sleep(2) print('Waiting for same finger again...') ## Wait for finger to read again while ( finger.readImage() == False ): pass ## Converts read image to characteristics and stores it in charbuffer 2 finger.convertImage(0x02) ## Compares the charbuffers if ( finger.compareCharacteristics() == 0 ): raise Exception('Fingers do not match') return (-1) ## Creates a template finger.createTemplate() ## Saves template at new position number positionNumber = finger.storeTemplate() print('Finger enrolled successfully!') print('New template position #' + str(positionNumber)) return (positionNumber) except Exception as e: print('Operation failed!') print('Exception message: ' + str(e)) return (-1) exit(1)
def runScan(self): try: f = PyFingerprint(server.usbFinger, 57600, 0xFFFFFFFF, 0x00000000) if (f.verifyPassword() == False): raise ValueError( 'The given fingerprint sensor password is wrong!') print("pass van tay lan 1") except Exception as e: try: f = PyFingerprint(server.usbDieuHoa, 57600, 0xFFFFFFFF, 0x00000000) if (f.verifyPassword() == False): raise ValueError( 'The given fingerprint sensor password is wrong!') tempUSB = server.usbDieuHoa server.usbDieuHoa = server.usbFinger server.usbFinger = tempUSB print("pass van tay lan 2") except Exception as e: print('The fingerprint sensor could not be initialized!') print('Exception message: ' + str(e)) self.lbThongBao.setText("Kiểm Tra cảm biến vân tay") return print('Currently used templates: ' + str(f.getTemplateCount()) + '/' + str(f.getStorageCapacity())) try: print('Waiting for finger...') ## Wait that finger is read numC = 0 while (f.readImage() == False and self.isRun): pass # numC+=1 # if numC > 20 : # return ## Converts read image to characteristics and stores it in charbuffer 1 if self.isRun == False: return f.convertImage(0x01) ## Searchs template result = f.searchTemplate() positionNumber = result[0] accuracyScore = result[1] if (positionNumber == -1): print('No match found!') self.lbThongBao.setText("Vân tay không khớp") else: print('Khop van tay') self.isRun = False return except Exception as e: self.lbThongBao.setText("Kiểm Tra cảm biến vân tay") print('Operation failed!') print('Exception message: ' + str(e))
def enroll(): f = PyFingerprint('COM6', 57600, 0xFFFFFFFF, 0x00000000) print('Currently used templates: ' + str(f.getTemplateCount()) + '/' + str(f.getStorageCapacity())) print('Waiting for finger...') while (f.readImage() == False): pass f.convertImage(FINGERPRINT_CHARBUFFER1) result = f.searchTemplate() positionNumber = result[0] if (positionNumber >= 0): print('Template already exists at position #' + str(positionNumber)) exit(0) print('Remove finger...') time.sleep(2) print('Waiting for same finger again...') while (f.readImage() == False): pass f.convertImage(FINGERPRINT_CHARBUFFER2) if (f.compareCharacteristics() == 0): raise Exception('Fingers do not match') print("Nhập thông tin:") StudenID = input("StudentID: ") Name = input("Name: ") Class = input("Class: ") School = input("School: ") Faculty = input("Faculty: ") Room = input("Room: ") Phone = input("Phone: ") Email = input("Email: ") f.createTemplate() file = open('profiles/' + str(positionNumber) + '.txt', 'w', encoding='UTF8') file.writelines("StudentID: " + StudenID + "\nName: " + Name + "\nClass: " + Class + "\nSchool: " + School + "\nFaculty: " + Faculty + "\nRoom: " + Room + "\nPhone: " + Phone + "\nEmail: " + Email) file.close() positionNumber = f.storeTemplate() print('Finger enrolled successfully!') print('New template position #' + str(positionNumber))
def hash(): try: f = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF, 0x00000000) if (f.verifyPassword() == False): raise ValueError('The given fingerprint sensor password is wrong!') except Exception as e: print('The fingerprint sensor could not be initialized!') print('Exception message: ' + str(e)) return -10 ## Gets some sensor information ## Tries to search the finger and calculate hash try: lcddeneme.yaz("Parmaginizi", "okutun") print('Parmağınızı okutun') ## Wait that finger is read while (f.readImage() == False): pass ## Converts read image to characteristics and stores it in charbuffer 1 f.convertImage(0x01) ## Searchs template result = f.searchTemplate() positionNumber = result[0] accuracyScore = result[1] if (positionNumber == -1): lcddeneme.yaz("Kayit", "Bulunamadi") print('Kayıt bulunamadı') time.sleep(2.5) return -10 else: pass ## OPTIONAL stuff ## ## Loads the found template to charbuffer 1 #f.loadTemplate(positionNumber, 0x01) ## Downloads the characteristics of template loaded in charbuffer 1 characterics = str(f.downloadCharacteristics(0x01)).encode('utf-8') ## Hashes characteristics of template b = int(positionNumber) return b except Exception as e: print('Operation failed!') print('Exception message: ' + str(e)) return -10
def techBinFingerPrint(): try: f = PyFingerprint('/dev/ttyUSB1', 57600, 0xFFFFFFFF, 0x00000000) if (f.verifyPassword() == False): raise ValueError('The given fingerprint sensor password is wrong!') except Exception as e: print('The fingerprint sensor could not be initialized!') print('Exception message: ' + str(e)) try: print('Waiting for finger...') while (f.readImage() == False): pass f.convertImage(0x01) result = f.searchTemplate() positionNumber = result[0] accuracyScore = result[1] if (positionNumber == -1): print('New user welcome...') ################################################# print("Don't Remove finger...") time.sleep(2) print('Waiting for same finger again...') while (f.readImage() == False): pass f.convertImage(0x02) if (f.compareCharacteristics() == 0): raise Exception('Fingers do not match') f.createTemplate() positionNumber = f.storeTemplate() print('Finger enrolled successfully!') print('New template position #' + str(positionNumber)) return str(positionNumber) else: print('Found template at position #' + str(positionNumber)) return str(positionNumber) # print('The accuracy score is: ' + str(accuracyScore)) f.loadTemplate(positionNumber, 0x01) characterics = str(f.downloadCharacteristics(0x01)).encode('utf-8') # print('SHA-2 hash of template: ' + hashlib.sha256(characterics).hexdigest()) except Exception as e: print('Operation failed!') print('Exception message: ' + str(e))
def readFingerprint(self): try: # Sensor initialisieren sensor = PyFingerprint(self.__port, self.__baudrate, self.__sensoraddr, self.__password) if not sensor.verifyPassword(): logger.warning( 'The given fingerprint sensor password is wrong!') return None logger.debug('Currently used templates: ' + str(sensor.getTemplateCount()) + '/' + str(sensor.getStorageCapacity())) # Sensor-Lesen & Event-Handling logger.debug('readFingerprint() started for %s', self.__timeout) while (not self._shutdown and self.__active): # Falls der Sensor nicht permanent aktiv ist und das Aktivitätsintervall überschritten ist - Abbruch if (self.__timeout > 0 and (time.time() > self.__timeout)): self.__active = False return None if (sensor.readImage()): # Characteristics aus dem gelesenen Fingerabdruck auslesen und hinterlegen sensor.convertImage(0x01) # Datenbank nach diesen Characteristics durchsuchen result = sensor.searchTemplate() positionNumber = result[0] accuracyScore = result[1] # Input-Pin entsprechend der gefundenen Position aktivieren self.last_key = positionNumber self.last_key_time = time.time() logger.debug('Found template at position #' + str(positionNumber)) logger.debug('The accuracy score is: ' + str(accuracyScore)) # Finger entweder gar nicht oder nicht exakt genug erkannt. if (positionNumber == -1) or (accuracyScore < self.__security): # Finger unbekannt - Event ausloesen doorpi.DoorPi().event_handler( 'OnFingerprintFoundUnknown', __name__) else: # Finger bekannt - Event ausloesen doorpi.DoorPi().event_handler( 'OnFingerprintFoundKnown', __name__) # Dem Finger zugeordnete Events auslösen if (self.last_key in self._InputPins): self._fire_OnKeyDown(self.last_key, __name__) self._fire_OnKeyPressed(self.last_key, __name__) self._fire_OnKeyUp(self.last_key, __name__) except Exception as ex: logger.exception(ex)
def search(): var = StringVar() var.set('Initializing') statusbar = Label(root, textvariable=var, height = 2, width = 40, bg = "#26232a",fg="white", bd=1, relief=SUNKEN, anchor="center") statusbar.place(relx=0.5,rely = 0.94,anchor = "center") l.append(statusbar) ## Tries to initialize the sensor try: f = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF, 0x00000000) if (f.verifyPassword() == False ): raise ValueError('The given fingerprint sensor password is wrong!') except Exception as e: var.set('Initialization Error!') root.update_idletasks() ## Tries to search the finger and calculate hash try: var.set('Waiting for finger...') root.update_idletasks() ## Wait that finger is read while ( f.readImage() == False ): pass ## Converts read image to characteristics and stores it in charbuffer 1 f.convertImage(0x01) ## Searchs template result = f.searchTemplate() positionNumber = result[0] acdbacyScore = result[1] if ( positionNumber == -1 ): var.set("Fingerprint Not found.") root.update_idletasks() return -1 else: var.set("Success") root.update_idletasks() return positionNumber except Exception as e: var.set('Operation failed!'+'Exception message: ' + str(e)) root.update_idletasks()
def checkAuth(): ## Search for a finger ## ## Tries to initialize the sensor try: f = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF, 0x00000000) if (f.verifyPassword() == False): raise ValueError('The given fingerprint sensor password is wrong!') except Exception as e: print('The fingerprint sensor could not be initialized!') print('Exception message: ' + str(e)) exit(1) ## Gets some sensor information #print('Currently used templates: ' + str(f.getTemplateCount()) +'/'+ str(f.getStorageCapacity())) ## Tries to search the finger and calculate hash try: print('Waiting for finger...') ## Wait that finger is read while (f.readImage() == False): pass ## Converts read image to characteristics and stores it in charbuffer 1 f.convertImage(0x01) ## Searchs template result = f.searchTemplate() scan = f.downloadCharacteristics(0x01) positionNumber = result[0] accuracyScore = result[1] if (positionNumber == -1): print('No match found!') return (False, scan) exit(0) else: print("Match Found") # print('Found template at position #' + str(positionNumber)) # print('The accuracy score is: ' + str(accuracyScore)) return (True, scan) except Exception as e: print('Operation failed!') print('Exception message: ' + str(e)) exit(1)
def search(): ## Tries to initialize the sensor try: f = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF, 0x00000000) if (f.verifyPassword() == False): raise ValueError('The given fingerprint sensor password is wrong!') except Exception as e: print('The fingerprint sensor could not be initialized!') print('Exception message: ' + str(e)) return 'Sensor Error' ## Gets some sensor information #print('Currently used templates: ' + str(f.getTemplateCount()) +'/'+ str(f.getStorageCapacity())) fingerdata = {} if os.path.exists('dataset_fingers.dat'): with open('dataset_fingers.dat', 'rb') as rf: fingerdata = pickle.load(rf) if len(fingerdata) == 0: return 'No Data' ## Tries to search the finger and calculate hash try: print('Waiting for finger...') ## Wait that finger is read while (f.readImage() == False): pass ## Converts read image to characteristics and stores it in charbuffer 1 f.convertImage(0x01) ## Searchs template result = f.searchTemplate() positionNumber = result[0] print positionNumber accuracyScore = result[1] if (positionNumber == -1): return 'Not Found' elif (accuracyScore < 150): return 'Not Accurate' else: print "Fingerprint recognized!" return fingerdata[str(positionNumber)] except Exception as e: print('Operation failed!') print('Exception message: ' + str(e)) return 'Sensor Error'
class fingerprint(object): def __init__(self): self._error = None self._positionNumber = -1 try: self.f = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF, 0x00000000) if (self.f.verifyPassword() == False): raise ValueError( 'The given fingerprint sensor password is wrong!') except Exception as e: print('The fingerprint sensor could not be initialized!') print('Exception message: ' + str(e)) exit(1) def readFingerprint(self, buff=0x01): self._positionNumber = -1 while (self.f.readImage() == False): pass self.f.convertImage(buff) self.result = self.f.searchTemplate() def searchFingerprint(self): try: self.readFingerprint() self._positionNumber = self.result[0] if (self._positionNumber <= -1): raise Exception('No match found') except Exception as e: self._error = str(e) return self._error, self._positionNumber def enrollFingerprint(self): try: self.readFingerprint() # First Finger self._positionNumber = self.result[0] if (self._positionNumber >= 0): raise Exception('Fingerprint already exists') time.sleep(2) self.readFingerprint(0x02) # Second Finger if (self.f.compareCharacteristics() == 0): raise Exception('Fingers do not match') #Save Fingerprint self.f.createTemplate() self._positionNumber = self.f.storeTemplate() except Exception as e: self._error = str(e) return self._error, self._positionNumber
def login1(): try: f = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF, 0x00000000) if ( f.verifyPassword() == False ): raise ValueError('The given fingerprint sensor password is wrong!') except Exception as e: print('The fingerprint sensor could not be initialized!') print('Exception message: ' + str(e)) exit(1) print('Currently used templates: ' + str(f.getTemplateCount()) +'/'+ str(f.getStorageCapacity())) time.sleep(1) try: while ( f.readImage() == False ): pass f.convertImage(0x01) result = f.searchTemplate() ## Searchs template positionNumber = result[0] accuracyScore = result[1] if ( positionNumber == -1 ): print('No match found! Try again') time.sleep(0.5) #login() else: print('Found template at position #' + str(positionNumber)) print('The accuracy score is: ' + str(accuracyScore)) temp = positionNumber #return 0 except Exception as e: print('Operation failed!') print('Exception message: ' + str(e)) exit(1) if ( positionNumber == -1 ): print('No match found! Try again') #global login_fails #login_fails=login_fails+1 #time.sleep(0.5) #print('login_fails' + str(login_fails)) #if(login_fails <= 3): # print("Login Attempt: #" + str(login_fails)) #login1() print("Fingerprint login failed") return -1 else: temp = positionNumber return temp
def enroll(): print('start enroll') port = config.figerScanPort f = PyFingerprint(port, 57600, 0xFFFFFFFF, 0x00000000) ## Gets some sensor information print('Currently used templates: ' + str(f.getTemplateCount()) +'/'+ str(f.getStorageCapacity())) ## Tries to enroll new finger try: print('Waiting for finger...') ## Wait that finger is read timeout = time.time() + 10 while ( f.readImage() == False ): test = 0 if test == 5 or time.time() > timeout: print('TimeOut') return -2 break test = test - 1 f.convertImage(0x01) ## Checks if finger is already enrolled result = f.searchTemplate() positionNumber = result[0] if ( positionNumber >= 0 ): print('Template already exists at position #' + str(positionNumber)) return -1 f.createTemplate() ## Saves template at new position number positionNumber = f.storeTemplate() print('Finger enrolled successfully!') print('New template position #' + str(positionNumber)) return positionNumber except Exception as e: print('Operation failed!') print('Exception message: ' + str(e)) return -2
def finger_login(): try: f = PyFingerprint('COM6', 57600, 0xFFFFFFFF, 0x00000000) if (f.verifyPassword() == False): raise ValueError('The given fingerprint sensor password is wrong!') except Exception as e: del f print('The fingerprint sensor could not be initialized!') print('Exception message: ' + str(e)) return jsonify(result='-1') try: print('Waiting for finger...') ## Wait that finger is read while (f.readImage() == False): pass ## Converts read image to characteristics and stores it in charbuffer 1 f.convertImage(0x01) ## Searchs template result = f.searchTemplate() positionNumber = result[0] accuracyScore = result[1] #del f f.__del__() if (positionNumber == -1): print('No match found!') return jsonify(result='-1') else: print('Found template at position #' + str(positionNumber)) return jsonify(result=positionNumber) except Exception as e: print('Operation failed!') print('Exception message: ' + str(e)) return jsonify(result='-1')
def finger_verification(): user_id = session.get('user_id') error = None db = get_db() try: f = PyFingerprint('/dev/ttyUSB1', 57600, 0xFFFFFFFF, 0x00000000) if (f.verifyPassword() == False): raise ValueError('The given password is wrong!') except Exception as e: print('Not initialized') print('Exception:' + str(e)) try: while (f.readImage() == False): pass f.convertImage(0x01) result = f.searchTemplate() positionNumber = result[0] accuracyScore = result[1] if (positionNumber == -1): error = 'Finger Print not matched. Try again.' flash(error) return redirect(url_for('auth.finger_view')) else: user = db.execute('SELECT * FROM user WHERE user_id =?', (user_id, )).fetchone() print(user['finger_id']) if user['finger_id'] == positionNumber: if user['face_encoding']: return redirect(url_for('auth.face_view')) else: return redirect(url_for('auth.balance_view')) elif user['finger_id_emergency'] == positionNumber: error = "Emergency Protocol Activated" flash(error) return redirect(url_for('auth.finger_view')) except Exception as e: error = str(e) flash(error) return redirect(url_for('auth.finger_view'))
def check(): ## Tries to search the finger try: finger = PyFingerprint('/dev/ttyUSB0') print('Waiting for finger...') ## Wait that finger is read while (finger.readImage() == False): pass ## Converts read image to characteristics and stores it in charbuffer 1 finger.convertImage(0x01) ## Searchs template result = finger.searchTemplate() print(result) positionNumber = result[0] #accuracyScore = result[1] if (positionNumber == -1): print('no match found!') return (positionNumber) else: print('Found template at position #' + str(positionNumber)) return (positionNumber) except Exception as e: print('Operation failed!') print('Exception message: ' + str(e)) return False exit(1)
def login(): try: f = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF, 0x00000000) if (f.verifyPassword() == False): raise ValueError('The given fingerprint sensor password is wrong!') except Exception as e: print('The fingerprint sensor could not be initialized!') print('Exception message: ' + str(e)) exit(1) print('Currently used templates: ' + str(f.getTemplateCount()) + '/' + str(f.getStorageCapacity())) time.sleep(1) try: while (f.readImage() == False): pass f.convertImage(0x01) result = f.searchTemplate() ## Searchs template positionNumber = result[0] accuracyScore = result[1] temp = positionNumber if (positionNumber == -1): print('No match found! Try again') login() else: print('Found template at position #' + str(positionNumber)) print('The accuracy score is: ' + str(accuracyScore)) f.loadTemplate(positionNumber, 0x01) if (positionNumber == -1): print('No match found! Try again') login() else: result = 1 return (result) except Exception as e: print('Operation failed!') print('Exception message: ' + str(e)) exit(1)
def Adicionar_Digital(): global sc_bioAdd sc_bioAdd = Toplevel(screen2) sc_bioAdd.title("Biometria") sc_bioAdd.attributes('fullscreen',True) Label(sc_bioAdd, text = "bota o dedin aí", font = "Arial 12").pack() try: f = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF, 0x00000000) if ( f.verifyPassword() == False ): raise ValueError('The given fingerprint sensor password is wrong!') except Exception as e: exit(1) try: Label(sc_bioAdd, text = "bota o dedin aí", font = "Arial 12").pack() while(f.readImage() == False): pass f.convertImage(0x01) result=f.searchTemplate() positionNumber= result[0] if (positionNumber >= 0): user_not_found() exit(0) Label(sc_bioAdd, text = "tira o dedin aí", font = "Arial 12").pack() time.sleep(2) Label(sc_bioAdd, text = "bota o dedin aí denovo", font = "Arial 12").pack() while(f.readImage() == False): pass f.convertImage(0x02) if (f.compareCharacteristics() == 0 ): raise Exception("Fingers not Match") password_not_recognised() f.createTemplate() positionNumber = f.storeTemplate() USR=open(positionNumber+".fin") USR.write(usr) USR.close Cadastrado() main_screen() except Exception as e: exit(1)
def Adicionar_Digital(): global Tela Tela = Tk() Tela.title('bio') Tela.attributes('-fullscreen', True) Label(Tela, text='Iniciando...', font='Arial 12').pack() try: f = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF, 0x00000000) if (f.verifyPassword() == False): raise ValueError('The given fingerprint sensor password is wrong!') except Exception as e: exit(1) Label(Tela, text='Insira o dedo', font="Arial 12").pack() try: print('botodeda1') while (f.readImage() == False): pass f.convertImage(0x01) result = f.searchTemplate() positionNumber = result[0] if (positionNumber >= 0): print('já tem') exit(0) Label(Tela, text='Remova', font='Arial 12').pack() time.sleep(2) Label(Tela, text='Insira o mesmo dedo', font="Arial 12").pack() while (f.readImage() == False): pass f.convertImage(0x02) if (f.compareCharacteristics() == 0): raise Exception('Fingers do not match') f.createTemplate() print('Finger enrolled successfully!') Label(Tela, text='Registrado!!!!!!!!', font='Arial 12').pack() except Exception as e: print('Operation failed!') print('Exception message: ' + str(e)) exit(0) Tela.mainloop()
def search(): ## Tries to initialize the sensor f = PyFingerprint('COM6', 57600, 0xFFFFFFFF, 0x00000000) ## Gets some sensor information print('Currently used templates: ' + str(f.getTemplateCount()) + '/' + str(f.getStorageCapacity())) ## Tries to search the finger and calculate hash print('Waiting for finger...') ## Wait that finger is read while (f.readImage() == False): pass ## Converts read image to characteristics and stores it in charbuffer 1 f.convertImage(FINGERPRINT_CHARBUFFER1) ## Searchs template result = f.searchTemplate() positionNumber = result[0] accuracyScore = result[1] if (positionNumber == -1): print('No match found!') exit(0) else: print('Found template at position #' + str(positionNumber)) print('The accuracy score is: ' + str(accuracyScore)) f = open('profiles/' + str(positionNumber) + '.txt', 'r', encoding='UTF8') for line in f: print(line, end='') f.close()
def run(): ## Tries to initialize the sensor try: f = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF, 0x00000000) if (f.verifyPassword() == False): raise ValueError('The given fingerprint sensor password is wrong!') except Exception as e: print('The fingerprint sensor could not be initialized!') print('Exception message: ' + str(e)) exit(1) ## Gets some sensor information print('Currently used templates: ' + str(f.getTemplateCount()) + '/' + str(f.getStorageCapacity())) ## Tries to enroll new finger try: msg = messagebox.showinfo("Enroll", "Press OK when Finger Ready") print('Waiting for finger...') ## Wait that finger is read while (f.readImage() == False): pass ## Converts read image to characteristics and stores it in charbuffer 1 f.convertImage(0x01) ## Checks if finger is already enrolled result = f.searchTemplate() positionNumber = result[0] if (positionNumber >= 0): print('Template already exists at position #' + str(positionNumber)) exit(0) print('Remove finger...') time.sleep(1) msg = messagebox.showinfo("Enroll", "Press OK when Finger Ready") print('Waiting for same finger again...') ## Wait that finger is read again while (f.readImage() == False): pass ## Converts read image to characteristics and stores it in charbuffer 2 f.convertImage(0x02) ## Compares the charbuffers if (f.compareCharacteristics() == 0): raise Exception('Fingers do not match') run() ## Creates a template f.createTemplate() ## Saves template at new position number positionNumber = f.storeTemplate() #print(positionNumber) idnum = positionNumber print('Finger enrolled successfully!') print('New template position #' + str(positionNumber)) idnum = positionNumber #template = result[0] firstname = input("Enter your first name: ") lastname = input("Enter your last name: ") c.execute("INSERT INTO students VALUES(?, ?, ?, ?, ?, ?);", (idnum, firstname, lastname, 'NULL', 'NULL', 'NULL')) conn.commit() #conn.close() f = open("idtemplate.txt", "w") f.write(str(idnum)) f.close #exit(1) except Exception as e: print('Operation failed!') print('Exception message: ' + str(e)) exit(1) #run() #top.mainloop()
print('Currently used templates: ' + str(f.getTemplateCount()) + '/' + str(f.getStorageCapacity())) ## Tries to enroll new finger try: print('Waiting for finger...') ## Wait that finger is read while (f.readImage() == False): pass ## Converts read image to characteristics and stores it in charbuffer 1 f.convertImage(0x01) ## Checks if finger is already enrolled result = f.searchTemplate() positionNumber = result[0] if (positionNumber >= 0): print('Template already exists at position #' + str(positionNumber)) f.loadTemplate(positionNumber, 0x01) ## Downloads the characteristics of template loaded in charbuffer 1 characterics = str(f.downloadCharacteristics(0x01)).encode('utf-8') ## Hashes characteristics of template print('SHA-2 hash of template: ' + hashlib.sha256(characterics).hexdigest()) exit(0) print('Remove finger...') time.sleep(2)
def pam_sm_authenticate(pamh, flags, argv): """ PAM service function for user authentication. @param pamh @param flags @param argv @return int """ ## The authentication service should return [PAM_AUTH_ERROR] if the user has a null authentication token flags = pamh.PAM_DISALLOW_NULL_AUTHTOK ## Initialize authentication progress try: ## Tries to get user which is asking for permission userName = pamh.ruser ## Fallback if ( userName == None ): userName = pamh.get_user() ## Be sure the user is set if ( userName == None ): raise UserUnknownException('The user is not known!') # Checks if path/file is readable if ( os.access(CONFIG_FILE, os.R_OK) == False ): raise Exception('The configuration file "' + CONFIG_FILE + '" is not readable!') configParser = ConfigParser.ConfigParser() configParser.read(CONFIG_FILE) ## Log the user auth_log('The user "' + userName + '" is asking for permission for service "' + str(pamh.service) + '".', syslog.LOG_DEBUG) ## Checks if the the user was added in configuration if ( configParser.has_option('Users', userName) == False ): raise Exception('The user was not added!') ## Tries to get user information (template position, fingerprint hash) userData = configParser.get('Users', userName).split(',') ## Validates user information if ( len(userData) != 2 ): raise InvalidUserCredentials('The user information of "' + userName + '" is invalid!') expectedPositionNumber = int(userData[0]) expectedFingerprintHash = userData[1] except UserUnknownException as e: auth_log(str(e), syslog.LOG_ERR) return pamh.PAM_USER_UNKNOWN except InvalidUserCredentials as e: auth_log(str(e), syslog.LOG_ERR) return pamh.PAM_AUTH_ERR except Exception as e: auth_log(str(e), syslog.LOG_ERR) return pamh.PAM_IGNORE ## Initialize fingerprint sensor try: ## Gets sensor connection values port = configParser.get('PyFingerprint', 'port') baudRate = int(configParser.get('PyFingerprint', 'baudRate'), 10) address = int(configParser.get('PyFingerprint', 'address'), 16) password = int(configParser.get('PyFingerprint', 'password'), 16) ## Tries to init PyFingerprint fingerprint = PyFingerprint(port, baudRate, address, password) if ( fingerprint.verifyPassword() == False ): raise Exception('The given fingerprint sensor password is wrong!') except Exception as e: auth_log('The fingerprint sensor could not be initialized: ' + str(e), syslog.LOG_ERR) showPAMTextMessage(pamh, 'Sensor initialization failed!', True) return pamh.PAM_IGNORE if ( showPAMTextMessage(pamh, 'Waiting for finger...') == False ): return pamh.PAM_CONV_ERR ## Authentication progress try: ## Tries to read fingerprint while ( fingerprint.readImage() == False ): pass fingerprint.convertImage(0x01) ## Gets position of template result = fingerprint.searchTemplate() positionNumber = result[0] ## Checks if the template position is invalid if ( positionNumber == -1 ): raise Exception('No match found!') ## Checks if the template position is correct if ( positionNumber != expectedPositionNumber ): raise Exception('The template position of the found match is not equal to the stored one!') ## Gets characteristics fingerprint.loadTemplate(positionNumber, 0x01) characterics = fingerprint.downloadCharacteristics(0x01) ## Calculates hash of template fingerprintHash = hashlib.sha256(str(characterics)).hexdigest() ## Checks if the calculated hash is equal to expected hash from user if ( fingerprintHash == expectedFingerprintHash ): auth_log('Access granted!') showPAMTextMessage(pamh, 'Access granted!') return pamh.PAM_SUCCESS else: auth_log('The found match is not assigned to user!', syslog.LOG_WARNING) showPAMTextMessage(pamh, 'Access denied!', True) return pamh.PAM_AUTH_ERR except Exception as e: auth_log('Fingerprint read failed: ' + str(e), syslog.LOG_CRIT) showPAMTextMessage(pamh, 'Access denied!', True) return pamh.PAM_AUTH_ERR ## Denies for default return pamh.PAM_AUTH_ERR
class UtilFingerprint: #Realiza la coneccion con el fingerprint def __init__(self,instIndex): self.initFP(instIndex) #Realiza la coneccion con el fingerprint def initFP(self,instIndex): self.instIndex = instIndex try: self.f = PyFingerprint('/dev/ttyS0', 57600, 0xFFFFFFFF, 0x00000000) if ( self.f.verifyPassword() == False ): raise ValueError('La contrasena del sensor de huella dactilar presento un error.') except Exception as e: print('The fingerprint sensor could not be initialized!') print('Exception message: ' + str(e)) exit(1) #Busca una huella en especifico def search(self,instIndex): self.initFP(instIndex) try: #Esperando a que sea leido el dedo while (self.instIndex.semaforo == False and self.f.readImage() == False ): pass if self.instIndex.semaforo == True: return 0 #Convierte la imagen en caracteristicas self.f.convertImage(0x01) #Se busca la imagen leida en las guardadas previamente result = self.f.searchTemplate() positionNumber = result[0] accuracyScore = result[1] self.instIndex.idUser = positionNumber self.instIndex.semaforo = True return positionNumber except Exception as e: print('Mensaje de Excepcion: ' + str(e)) exit(1) #-------- Elimina una huella en el dispositivo -------- def delete(self, positionNumber, instIndex): self.initFP(instIndex) try: if ( self.f.deleteTemplate(positionNumber) == True ): print('Template deleted!') except Exception as e: print('Operation failed!') print('Exception message: ' + str(e)) exit(1) #---------- Verifica existencia de huella ----------- def exist(self, instIndex): self.initFP(instIndex) try: print("Waiting for finger") #Escucha el fingerprint while self.instIndex.semaforo == False and self.f.readImage() == False: pass #Si se acaba el tiempo se elimina la ejecucion if self.instIndex.semaforo == True: self.instIndex.result = "timeout" return "timeout" #En caso de que se ingresara una huella se analiza self.f.convertImage(0x01) result = self.f.searchTemplate() positionNumber = result[0] self.instIndex.result = str(positionNumber) return str(positionNumber)+""# -1 quiere = No existe except Exception as e: print('Operation failed!') print('Exception message: ' + str(e)) exit(1) #-------- Guarda una huella en el dispositivo -------- def save(self, instIndex): self.initFP(instIndex) try: #Se valida que la huella se registrara correctamente while (self.instIndex.semaforo == False and self.f.readImage() == False): pass #En caso de ser eliminado desde otra clase se termina el flujo if self.instIndex.semaforo == True: self.instIndex.result = "ERROR!, debe colocar el dedo en el dispositivo" return 0 self.f.convertImage(0x02) if(self.f.compareCharacteristics() == 0): self.instIndex.result = "Las huellas no coinciden" return 0 self.f.createTemplate() positionNumber = self.f.storeTemplate() #print ("La posicion de la huella es " + str(positionNumber)) self.instIndex.idUser = positionNumber self.instIndex.result = "Realizado con exito." self.instIndex.semaforo = True except Exception as e: print('Operation failed!') print('Exception message: ' + str(e)) exit(1)
## Gets some sensor information print('Currently used templates: ' + str(f.getTemplateCount()) +'/'+ str(f.getStorageCapacity())) ## Tries to enroll new finger try: print('Waiting for finger...') ## Wait that finger is read while ( f.readImage() == False ): pass ## Converts read image to characteristics and stores it in charbuffer 1 f.convertImage(0x01) ## Checks if finger is already enrolled result = f.searchTemplate() positionNumber = result[0] if ( positionNumber >= 0 ): print('Template already exists at position #' + str(positionNumber)) exit(0) print('Remove finger...') time.sleep(2) print('Waiting for same finger again...') ## Wait that finger is read again while ( f.readImage() == False ): pass