Toegangscontrole Met Vingerafdruk

34
VRIJ TECHNISCH INSTITUUT VTI – VTI2 VZW Katholiek Secundair Onderwijs Waregem Anzegem Avelgem TOEKOMSTSTRAAT 75 8790 WAREGEM GEINTEGREERDE PROEF Dossier ONDERWERP: Toegangscontrole met vingerafdruk STUDIERICHTING: Industriële ICT KLAS: 6ICT SCHOOLJAAR: 2009-2010 LEERLING: Bram Cecat TECHNISCH MENTOR: Mvr Vervaecke TAALMENTOR: dhr. De Boever

description

Een onderzoek naar toegangscontrole via biometrie (vingerafdruk).

Transcript of Toegangscontrole Met Vingerafdruk

Page 1: Toegangscontrole Met Vingerafdruk

VRIJ TECHNISCH INSTITUUT VTI – VTI2

VZW Katholiek Secundair Onderwijs Waregem ● Anzegem ● Avelgem

TOEKOMSTSTRAAT 75

8790 WAREGEM

GEINTEGREERDE PROEF Dossier

ONDERWERP: Toegangscontrole met vingerafdruk

STUDIERICHTING: Industriële ICT

KLAS: 6ICT

SCHOOLJAAR: 2009-2010

LEERLING: Bram Cecat

TECHNISCH MENTOR: Mvr Vervaecke

TAALMENTOR: dhr. De Boever

Page 2: Toegangscontrole Met Vingerafdruk

GIP Toeganscontrole met vingerafdruk 1

Woord vooraf Ik ben Bram Cecat van de klas 6ICT aan het VTI te Waregem. Ik koos voor de richting ICT omdat ik al sinds mijn 10 jaar met computers en elektronica bezig ben. En achterafgezien ben ik wel blij dat ik ICT gevolgd heb.

Vingerafdruklezers, irisscanners en dergelijke intrigeren mij al van jongs af aan. Ik kende ze vooral van James Bond films en series als CSI en NCIS. Daarom was de keuze ook rap gemaakt toen Mevrouw Vervaeke mij voorstelde om iets te doen met een vingerafdruklezer. Mijn GIP moest ook een hardware deel hebben dus besloot ik om via een USB interface en met een PIC microcontroller LEDjes en een zoemer aan te sturen. Zo kwam ik dan bij de uiteindelijke opdracht om een toegangscontrole systeem te maken dat gebruik maakte van vingerafdrukken om de bezoekers te identificeren en dan met licht en geluid duidelijk maakte of ze wel of niet binnen mogen.

Vooreerst wil ik mijn technische mentor, Mevrouw Vervaeke, bedanken voor het goeie idee en ook voor de hulp en uitleg die ze mij gedurende het jaar gegeven heeft. Ook wil ik Dhr. De Boever bedanken voor het toekijken op correct taalgebruik binnen mijn GIP – boek.

Page 3: Toegangscontrole Met Vingerafdruk

GIP Toeganscontrole met vingerafdruk 2

Inhoudsopgave Woord vooraf .......................................................................................................................................... 0

Inhoudsopgave ........................................................................................................................................ 2

Inleiding ................................................................................................................................................... 3

1. Blokschema GIP ............................................................................................................................... 4

2. Bespreking deel hardware ............................................................................................................... 5

Vingerafdruk lezer ............................................................................................................................... 5

USB Printje ........................................................................................................................................... 6

3. Bespreking deel software ................................................................................................................ 8

SQL ....................................................................................................................................................... 8

ActiveX ................................................................................................................................................. 9

De code zelf ....................................................................................................................................... 10

FormAuth ....................................................................................................................................... 10

FormUserMgt ................................................................................................................................ 14

FormUser ....................................................................................................................................... 17

FormUserNF .................................................................................................................................. 18

FingerprintOPFormUserMgt klasse ............................................................................................... 20

fingerprintOPFormAuth klasse ...................................................................................................... 24

usb_interface klasse ...................................................................................................................... 26

4. Biometrie ....................................................................................................................................... 29

5. Vingerafdrukken ............................................................................................................................ 30

6. Website ......................................................................................................................................... 31

Adobe Flash ....................................................................................................................................... 31

Adobe Photoshop .............................................................................................................................. 31

Maken van de website ...................................................................................................................... 31

7. Besluit ............................................................................................................................................ 33

Page 4: Toegangscontrole Met Vingerafdruk

GIP Toeganscontrole met vingerafdruk 3

Inleiding Op fuiven is het altijd een omslachtig gedoe om te controleren of iemand betaald heeft of niet als hij wil binnen komen, bandjes kunnen verwisseld worden, stempels kunnen afgaan. Maar een vingerafdruk is uniek en permanent.

Daarom heb ik besloten om als GIP een systeem te ontwikkelen dat controleert of bezoekers van een fuif of eender wat wel toegang hebben. De bedoeling is om via vingerafdrukken (een vingerafdruk is uniek en heb je ook altijd bij je) de toegang te controleren. De bezoekers komen binnen, scannen even hun vinger en weten direct of ze wel of niet binnen mogen. Een portier houdt het proces nauwkeurig in de gaten. Ik zal onderzoeken of mijn systeem veilig en efficiënt is. Het systeem moet het binnen- en buitengaan op evenementen vergemakkelijken en versnellen.

Op het einde van deze uiteenzetting zal ik mijn ondervindingen en besluiten meedelen. Dan kan je zien of dit systeem effectief gebruikt kan worden voor de hierboven opgesomde doeleinden.

Page 5: Toegangscontrole Met Vingerafdruk

GIP Toeganscontrole met vingerafdruk 4

1. Blokschema GIP

1) De vingerafdruk wordt ingelezen door de vingerafdruklezer en vergeleken met alle vingerafdrukken die de database bevat.

2) De computer / het programma beslist dan of de vingerafdruk al dan niet voorkomt in de database en of die persoon (van wie de vingerafdruk is) toegang heeft of niet.

3) De LED’s, die gestuurd worden door de USB-interface, geven aan of een persoon toegang heeft of niet. Als de persoon toegang heeft dan branden de gele LED’s, gaat er een zoemer en komt er een melding op het computerscherm. Indien de persoon geen toegang heeft dan branden de rode LED’s en komt er een melding op het computerscherm die aangeeft dat de vingerafdruk niet in de database te vinden was.

• Alle verbindingen gebeuren via USB.

1. Vingerafdruk

lezer

2. Computer

3. Leds (via USB)

Page 6: Toegangscontrole Met Vingerafdruk

GIP Toeganscontrole met vingerafdruk 5

2. Bespreking deel hardware Vingerafdruk lezer

Met behulp van de elementen die Griaule ontwikkelt (SDK’s, DLL’s, ActiveX elementen en drivers voor mijn vingerafdruklezer) heb ik een programma geschreven die de vingerafdrukken kan inlezen in mijn computer en opslaat als een bitmapafbeelding.

Ik maak gebruik van de vingerafdruklezer van Microsoft die vaak gebruikt wordt voor particuliere doeleinden. Op internet las ik echter veel negatieve commentaren over de vingerafdruklezer. Hij werd als onveilig beschouwd. Ook merkte ik dat Microsoft alle informatie omtrent die vingerafdruklezer van hun website gehaald heeft. Hieruit besluit ik dat Microsoft liever niet meer in verband gebracht wordt met hun vingerafdruklezer. Ik heb hier mijn bedenkingen over.

Op de website van PCWorld (link bijgevoegd bij bronnen) las ik dat de Microsoft fingerprintreader met bijgeleverde software een handig hulpmiddeltje is maar zeker niet gebruikt mag worden voor gevoelige gegevens. De vingerafdrukafbeelding wordt namelijk niet versleuteld verstuurd naar de computer waardoor hackers de afbeelding eenvoudig kunnen onderscheppen en een login imiteren.

Op de website van Tweakers (link bijgevoegd bij bronnen) las ik ongeveer hetzelfde als op de website van PCWorld. Blijkbaar is Biometric Security (vingerafdruklezers, iris scanners) toch niet zo veilig als ik dacht. In één van de user comments las ik ook dat de fingerprintreader hardwarematig eigenlijk in staat is om zijn data beveiligd te versturen. Dit werd echter bewust uitgeschakeld door Microsoft.

Mijn programma heeft geen internet nodig dus is het geen probleem dat de Microsoft Fingerprintreader minder veilig is dan andere.

Systeemvereisten voor de Microsoft fingerprintreader zijn: Windows XP of hoger, 45 MB vrije ruimte op harde schijf en een USB poort.

Page 7: Toegangscontrole Met Vingerafdruk

GIP Toeganscontrole met vingerafdruk 6

USB Printje

De bedoeling van het USB printje is om duidelijk aan te tonen dat de persoon die probeert binnen te geraken wel toegang heeft tot het evenement. Indien de persoon geen toegang heeft klinkt er een toon en branden er rode LEDs, indien dat gewenst is kan er ook een magnetisch slot aangestuurd worden. Indien de persoon wel toegang heeft klinkt er een andere toon en branden er gele LEDs, indien dat gewenst is kan er alweer een magnetisch slot aangestuurd worden. De bedoeling is wel dat er iemand bij staat om te zorgen dat ongewenste personen niet gewoon kunnen doorlopen of met twee door de deur gaan of andere manieren van fraude plegen. De verbinding tussen mijn hardware en de computer die het programma draait, gebeurt via USB. Waarom? Omdat USB de meest universele manier is om dingen te verbinden op korte afstand. De maximale afstand die je met USB mag overbruggen dat alles nog perfect blijft werken is 5m, in ons geval is dit meer dan genoeg. Op zo’n afstand haal je met USB nog minimum 110Mbit/s wat ook meer dan genoeg is voor onze toepassing. Ook is USB tegenwoordig beschikbaar op alle recente toestellen en zelf op veel minder recente toestellen. Er zijn 2 soorten USB connectoren, ze werken op dezelfde manier maar zijn anders van vorm. Op een computer is de USB connector altijd van het type A maar op apparaten vind je zowel Type A als Type B (soms ook wel Type B mini). De pinbezetting is als volgt:

Page 8: Toegangscontrole Met Vingerafdruk

GIP Toeganscontrole met vingerafdruk 7

Als basis voor mijn USB printje heb ik het standaard printje gebruikt dat in 5ICT bekeken wordt. Dat heb ik wel aangepast zodat het voor mijn specifieke doeleinden gebruikt kan worden.

Dit is het schema van het originele printje, alles wat ik niet nodig had heb ik verwijderd. Ik heb de knoppen behouden, de status LEDjes, de USB connector en de condensatoren. Dan heb ik 2x 4 LEDjes aan de outputs verbonden en een zoemer. Mijn print werd gefreesd in plaats dat ze gemaakt werd met de klassieke ets methode. De ets methode werkt als volgt, je

belicht een printplaat met een fotogevoelige laag met UV licht. Overal waar het licht komt gaat de fotogevoelige laag weg, dus moet je de baantjes van de print bedekken. Daarna stop je het printje in een etsbad: dat is een bak met een natriumpersulfaat oplossing in. Het belichte koper wordt weggevreten. Uiteindelijk hou je een printje met je printbaantjes over. Fresen daarintegen is een heel andere manier. Een freesmachine freest

gleufjes rond de gewenste printbaandjes. Deze methode is een stuk makkelijker en sneller.

Page 9: Toegangscontrole Met Vingerafdruk

GIP Toeganscontrole met vingerafdruk 8

3. Bespreking deel software SQL

Voor de database van mijn gip gebruik ik Microsoft SQL Server. MSSQL Server is een relationeel databasebeheersysteem. Dit wil zeggen dat de gegevens worden opgeslagen in tabellen waarin de rijen de soortgelijke groepen informatie, de records vormen, en de kolommen de informatie die voor elk record moet worden opgeslagen. Het ondersteunt een dialect van SQL, de meest gebruikte databasetaal. Het wordt algemeen gebruikt door organisaties voor kleine tot middelgrote databases.

In de Microsoft SQL Server Management Studio moet je je aanmelden als administrator om aanpassingen te kunnen maken aan de database.

Page 10: Toegangscontrole Met Vingerafdruk

GIP Toeganscontrole met vingerafdruk 9

ActiveX

ActiveX is software die de communicatie tussen meerdere applicaties regelt. Het zorgt er bijvoorbeeld voor dat je DLL’s kan gebruiken in je programma. Door die DLL’s kunnen we de vingerafdruklezer aansturen en gebruiken.

ActiveX bestaat uit twee technologieën, beide door Microsoft ontwikkeld. OLE (Object Linking Embedding) en COM (Component Object Model). ActiveX werd uitgebracht door Microsoft in 1996.

ActiveX is compatibel met volgende programmeertalen: MFC, ATL, C++, C#, Borderland Delphi en Visual Basic.

Page 11: Toegangscontrole Met Vingerafdruk

GIP Toeganscontrole met vingerafdruk 10

De code zelf

FormAuth

Dit is het hoofd formulier. Hier word enkel gekeken of de gescande persoon in de database zit. Hier kan je ook naar het Gebruiker Beheer formulier.

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using GrFingerXLib; using System.Runtime.InteropServices; namespace WindowsFormsApplication2 { public partial class FormAuth : Form { int IDnumber; private FingerprintOPFormAuth fingerprintOP; private FormUserMgt formUserMgt; public string whichForm = "FormAuth"; public FormAuth() { InitializeComponent(); ds.tabela.RowDeleted += new DataRowChangeEventHandler(rowDeleted); } private void FormAuth_Load(object sender, EventArgs e) { fingerprintOP = new FingerprintOPFormAuth(); fingerprintOP.InitializeGrFinger(grFingerXCtrl); tabelaTableAdapter.Fill(ds.tabela); loadComboNames(); } private void loadComboNames() { //Alle namen uit de database laden foreach (DBGriauleDataSet.tabelaRow row in ds.tabela.Rows) { comboNames.Items.Add(row.Name); } }

Page 12: Toegangscontrole Met Vingerafdruk

GIP Toeganscontrole met vingerafdruk 11

private void grFingerXCtrlAuth_SensorPlug(object sender, AxGrFingerXLib._IGrFingerXCtrlEvents_SensorPlugEvent e) { grFingerXCtrl.CapStartCapture(e.idSensor); //Vingerafdruklezer starten } private void grFingerXCtrl_SensorUnplug(object sender, AxGrFingerXLib._IGrFingerXCtrlEvents_SensorUnplugEvent e) { grFingerXCtrl.CapStopCapture(e.idSensor); } usb_interface USB = new usb_interface(); private void grFingerXCtrlAuth_ImageAcquired(object sender, AxGrFingerXLib._IGrFingerXCtrlEvents_ImageAcquiredEvent e) { System.Drawing.Image handle = null; IntPtr hdc = GetDC(System.IntPtr.Zero); grFingerXCtrl.CapRawImageToHandle(ref e.rawImage, e.width, e.height, hdc.ToInt32(), ref handle); if (whichForm.Equals("FormAuth")) { pbFingerprint.Image = handle; //De afbeelding van de vingerafdruk in de picturebox steken pbFingerprint.Update(); //set the parameters in the FingerprintOPFormUSerMgt class fingerprintOP.rawImage.img = e.rawImage; fingerprintOP.rawImage.height = (int)e.height; fingerprintOP.rawImage.width = (int)e.width; fingerprintOP.rawImage.Res = e.res; //Hier "extract" ik de template van de gebruiker en vergelijk ze met die in de database int teller = comboNames.Items.Count; int controle = 0; for (int i = 0; i < teller; i++) { comboNames.SelectedIndex = i; fingerprintOP.extractTemplate(); bool matched = fingerprintOP.authenticate(comboNames.SelectedItem.ToString(), ds); //Als de gebruiker in de database zit dan opent er een nieuw venster dat "toegang" weergeeft if (matched) { FormUser frm = new FormUser(); frm.Show(); controle = 1; } //Als de gebruiker niet in de database is gevonden dan opent er een ander venster dat "geen toegang" weergeeft if (i == (teller-1) && controle == 0) {

Page 13: Toegangscontrole Met Vingerafdruk

GIP Toeganscontrole met vingerafdruk 12

FormUserNF frm = new FormUserNF(); frm.Show(); } } } else formUserMgt.onImageAcquired(handle, e.rawImage, (int)e.height, (int)e.width, e.res);//do the action related to the FormUserMgt } //Importeer de nodige HDC functies [DllImport("user32.dll", EntryPoint = "GetDC")] public static extern IntPtr GetDC(IntPtr ptr); public int IDdings1 { get { return IDnumber; } } private void btnUserMgt_Click(object sender, EventArgs e) { IDnumber = comboNames.Items.Count + 1; whichForm = "FormUserMgt"; formUserMgt = new FormUserMgt(grFingerXCtrl, ds); formUserMgt.FormClosed += new FormClosedEventHandler(formUserMgt_FormClosed); formUserMgt.IDdings = IDdings1; formUserMgt.Show(); } private void btnClose_Click(object sender, EventArgs e) { this.Close(); } private void formUserMgt_FormClosed(object sender, FormClosedEventArgs e) { whichForm = "FormAuth"; comboNames.Items.Clear(); loadComboNames(); } private void FormAuth_FormClosed(object sender, FormClosedEventArgs e) { int result = tabelaTableAdapter.Update(ds); grFingerXCtrl.Finalize();

Page 14: Toegangscontrole Met Vingerafdruk

GIP Toeganscontrole met vingerafdruk 13

grFingerXCtrl.CapFinalize(); } protected void rowDeleted(object sender,System.Data.DataRowChangeEventArgs e) { tabelaTableAdapter.Update(ds); ds.tabela.RemovetabelaRow((DBGriauleDataSet.tabelaRow)e.Row); } } }

Hier ziet u hoe het hoofdscherm er uit ziet. Waar u “Admin” ziet staan komt de naam van de bezoeker als hij herkend wordt. Daaronder ziet u een afbeelding van de vingerafdruk en helemaal onderaan hebt u de knop “gebruikers beheren” om het gebruikers beheer formulier te openen. Daarnaast hebt u ook nog een knop om het programma af te sluiten.

Page 15: Toegangscontrole Met Vingerafdruk

GIP Toeganscontrole met vingerafdruk 14

FormUserMgt

In dit formulier kunnen gebruikers aangemaakt worden in de database of gewist uit de database.

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using GrFingerXLib; namespace WindowsFormsApplication2 { public partial class FormUserMgt : Form { int IDdink; private FingerprintOPFormUserMgt fingerprintOP; public FormUserMgt(AxGrFingerXLib.AxGrFingerXCtrl grfingerxFormAuth,DBGriauleDataSet dataSet) { InitializeComponent(); fingerprintOP = new FingerprintOPFormUserMgt(grfingerxFormAuth,dataSet,this); } public void onImageAcquired(Image handle, object rawImage, int height,int width, int res) { pbFingerprint.Image = handle; pbFingerprint.Update(); fingerprintOP.rawImage.img = rawImage; fingerprintOP.rawImage.height = height; fingerprintOP.rawImage.width = width; fingerprintOP.rawImage.Res = res; fingerprintOP.newTemplate(); } //Hier krijgen we het aantal gebruikers die al in de database zitten public int IDdings { set{IDdink=value;} } //Hier staat de code om een gebruiker toe te voegen aan de database private void btnInsert_Click(object sender, EventArgs e) { txtID.Visible = true; txtName.Visible = true; txtID.Enabled = false; //Het ID nummer kan niet gekozen worden. txtID.Text = IDdink.ToString(); //De gebruikersnaam staat standaard op bezoeker maar kan

Page 16: Toegangscontrole Met Vingerafdruk

GIP Toeganscontrole met vingerafdruk 15

manueel aangepast worden txtName.Text = "bezoeker"; if (btnRemove.Enabled) btnRemove.Enabled = false; fingerprintOP.function = 0; MessageBox.Show("Scan 3 keer je vinger om gebruiker toe te voegen."); } //Hier zoeken we een gebruiker op in de database private void btnSearch_Click(object sender, EventArgs e) { btnRemove.Enabled = false; txtID.Visible = false; txtName.Visible = false; fingerprintOP.function = 1; MessageBox.Show("Lees vingerafdruk in om gebruiker te zoeken"); } //Als we de gebruiker gevonden hebben kunnen we hem hier verwijderen private void btnRemove_Click(object sender, EventArgs e) { btnRemove.Enabled = false; txtID.Visible = false; txtName.Visible = false; string msg = "Ben je zeker dat je gebruiker " +fingerprintOP.currentRow.Name+ "wil verwijderen?"; switch (MessageBox.Show(msg, "Verwijder gebruiker", MessageBoxButtons.YesNo, MessageBoxIcon.Question)) { case DialogResult.Yes: if (fingerprintOP.removeUser() == 0) MessageBox.Show("Kan gebruiker niet verwijderen"); else MessageBox.Show("Gebruiker gewist"); break; case DialogResult.No: MessageBox.Show("Gebruiker was niet gewist"); break; } } public int getTxtID() { return Convert.ToInt32(txtID.Text); } public string getTxtName() { return txtName.Text;

Page 17: Toegangscontrole Met Vingerafdruk

GIP Toeganscontrole met vingerafdruk 16

} public void handleSearch() { if (fingerprintOP.currentRow == null) { btnRemove.Enabled = false; MessageBox.Show("Vingerafdruk is niet gevonden"); } else { btnRemove.Enabled = true; string msg = "Gevonden. ID:" + fingerprintOP.currentRow.ID.ToString() + " Naam:" + fingerprintOP.currentRow.Name; MessageBox.Show(msg); } } private void FormUserMgt_FormClosed(object sender, FormClosedEventArgs e) { txtID.Visible = false; txtName.Visible = false; btnRemove.Enabled = false; } public void hideTxt() { txtID.Text = ""; txtName.Text = ""; txtID.Visible = false; txtName.Visible = false; } } }

Hier een afbeelding van hoe het beheerscherm er uit ziet. Met de knop “nieuwe gebruiker” kan u een gebruiker toevoegen aan de database. Met de knop “zoek gebruiker” kan u een gebruiker opzoeken in de database dan krijgt u zo’n kadertje zoals afgebeeld met het ID en de naam. Ook kan u gebruikers verwijderen uit de database in dit formulier.

Page 18: Toegangscontrole Met Vingerafdruk

GIP Toeganscontrole met vingerafdruk 17

FormUser

Dit formulier krijgt de gebruiker te zien als hij toegang heeft.

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication2 { public partial class FormUser : Form { //Hier zorgen ik dat de usb interface aangesproken kan worden usb_interface test = new usb_interface(); public FormUser() { InitializeComponent(); } private void FormUser_Load(object sender, EventArgs e) { //Gele LEDjes branden om te tonen dat persoon toegang heeft test.UpdateDITOUT(1); timer1.Enabled = true; } private void timer1_Tick(object sender, EventArgs e) { //Na een bepaalde tijd sluit het formulier terug en stoppen de LEDjes met branden this.Close(); test.UpdateDITOUT(0); } } }

Dit formulier krijgt de bezoeker te zien als zijn vingerafdruk overeenkwam met een afdruk uit de database. Het verdwijnt automatisch na 5 seconden.

Page 19: Toegangscontrole Met Vingerafdruk

GIP Toeganscontrole met vingerafdruk 18

FormUserNF

Het User Not Found formulier. Dit formulier krijgt de bezoeker te zien indien zijn vingerafdruk niet weergevonden werd in de database.

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication2 { public partial class FormUserNF : Form { //Hier zorgen ik dat de usb interface aangesproken kan worden usb_interface test = new usb_interface(); public FormUserNF() { InitializeComponent(); } private void FormUserNF_Load(object sender, EventArgs e) { //De gebruiker heeft geen toegang, rode LEDjes branden test.UpdateDITOUT(2); timer1.Enabled = true; //De zoemer zorgt ervoor dat het duidelijk is dat de persoon niet binnen mag timer2.Enabled = true; } private void timer1_Tick(object sender, EventArgs e) { //Na een bepaalde tijd sluit het venster, doven de LEDjes en stopt de zoemer test.UpdateDITOUT(0); this.Close(); } public int i = 0; private void timer2_Tick(object sender, EventArgs e) { switch (i) { case 0: test.UpdateDITOUT(4); i++; break; case 1: test.UpdateDITOUT(0); i = 0; break; } } } }

Page 20: Toegangscontrole Met Vingerafdruk

GIP Toeganscontrole met vingerafdruk 19

Als de bezoeker geen toegang heeft komt dit formulier op het scherm. Het verdwijnt ook automatisch na 5 seconden.

Page 21: Toegangscontrole Met Vingerafdruk

GIP Toeganscontrole met vingerafdruk 20

FingerprintOPFormUserMgt klasse

Dit is een klasse die ik gebruik van Griaule, hierin gebeurd het vergelijken van de vingerafdrukken. Het is ook door deze klasse dat we gebruikers kunnen toevoegen aan de database of verwijderen uit de database.

using System; using System.Collections.Generic; using System.Linq; using System.Text; using GrFingerXLib; using System.Windows.Forms; using System.Data.OleDb; namespace WindowsFormsApplication2 { class FingerprintOPFormUserMgt { //al de variabelen declareren AxGrFingerXLib.AxGrFingerXCtrl grfingerx; private TTemplate template1,template2,template3,templateSearch; private int templateCounter = 0; public int function = -1; public TRawImage rawImage; private DBGriauleDataSet ds; private FormUserMgt frm; public DBGriauleDataSet.tabelaRow currentRow; public FingerprintOPFormUserMgt(AxGrFingerXLib.AxGrFingerXCtrl grfingerxFormAuth, DBGriauleDataSet dataSet, FormUserMgt f) { grfingerx = grfingerxFormAuth; ds = dataSet; template1 = new TTemplate(); template2 = new TTemplate(); template3 = new TTemplate(); templateSearch = new TTemplate(); frm = f; } public void newTemplate() { if (function == 0) insert(); else if (function == 1) search(); } private TTemplate extractTemplate(TTemplate template) { int result; template.size = (int)GRConstants.GR_MAX_SIZE_TEMPLATE; result = grfingerx.Extract(ref rawImage.img, rawImage.width, rawImage.height, rawImage.Res, ref template.tpt, ref template.size, (int)GRConstants.GR_DEFAULT_CONTEXT); if (result < 0)

Page 22: Toegangscontrole Met Vingerafdruk

GIP Toeganscontrole met vingerafdruk 21

{ template.size = 0; template = null; } return template; } //om een gebruiker toe te voegen aan de database private void insert() { switch (templateCounter) { case 0: //eerste template inlezen template1 = extractTemplate(template1); break; case 1: //tweede template inlezen template2 = extractTemplate(template2); break; case 2: //derde template inlezen template3 = extractTemplate(template3); break; } templateCounter++; if (templateCounter == 3) { templateCounter = 0; function = -1; //nieuwe rij maken voor in de database DBGriauleDataSet.tabelaRow row = ds.tabela.NewtabelaRow(); //ID nummer row.ID = frm.getTxtID(); //Naam row.Name = frm.getTxtName(); //eerste template System.Byte[] temp = new System.Byte[template1.size + 1]; System.Array.Copy(template1.tpt, 0, temp, 0, template1.size); row.Template1 = temp; //tweede template temp = new System.Byte[template2.size + 1]; System.Array.Copy(template2.tpt, 0, temp, 0, template2.size); row.Template2 = temp; //derde template temp = new System.Byte[template3.size + 1]; System.Array.Copy(template3.tpt, 0, temp, 0, template3.size); row.Template3 = temp; //de juist gemaakte en ingevulde rij toevoegen aan de database ds.tabela.AddtabelaRow(row); MessageBox.Show("gebruiker ingevoerd"); frm.hideTxt(); }

Page 23: Toegangscontrole Met Vingerafdruk

GIP Toeganscontrole met vingerafdruk 22

} private void search() { function = -1; System.Byte[] temp; int score = 0; //de variabele templateSearch krijgt de afbeelding templateSearch = extractTemplate(templateSearch); GRConstants result = (GRConstants) grfingerx.IdentifyPrepare(ref templateSearch.tpt, (int)GRConstants.GR_DEFAULT_CONTEXT); if (result < 0) return; currentRow = null; //zoeken in de database //er moet op zijn minst 1 template gelijk zijn aan de vingerafdruk foreach (DBGriauleDataSet.tabelaRow rowAux in ds.tabela.Rows) { //eerste test temp = rowAux.Template1; System.Array.Copy(temp, 0, template1.tpt, 0, temp.Length); template1.size = temp.Length; result = (GRConstants)grfingerx.Identify(ref template1.tpt, ref score, (int)GRConstants.GR_DEFAULT_CONTEXT); if (result == GRConstants.GR_MATCH) { currentRow = rowAux; break; } //tweede test temp = rowAux.Template2; System.Array.Copy(temp, 0, template2.tpt, 0, temp.Length); template2.size = temp.Length; result = (GRConstants)grfingerx.Identify(ref template2.tpt, ref score, (int)GRConstants.GR_DEFAULT_CONTEXT); if (result == GRConstants.GR_MATCH) { currentRow = rowAux; break; } //derde test temp = rowAux.Template3; System.Array.Copy(temp, 0, template3.tpt, 0, temp.Length); template3.size = temp.Length; result = (GRConstants)grfingerx.Identify(ref template3.tpt, ref score, (int)GRConstants.GR_DEFAULT_CONTEXT); if (result == GRConstants.GR_MATCH) { currentRow = rowAux; break;

Page 24: Toegangscontrole Met Vingerafdruk

GIP Toeganscontrole met vingerafdruk 23

} } frm.handleSearch(); } //om een gebruiker te verwijderen uit de database public int removeUser() { function = -1; if (currentRow == null) return 0; currentRow.Delete(); return 1; } } }

Page 25: Toegangscontrole Met Vingerafdruk

GIP Toeganscontrole met vingerafdruk 24

fingerprintOPFormAuth klasse

Deze klasse gebruik ik in het hoofdformulier en dient enkel om ingescannde vingerafdrukken te vergelijken met diegene in de database.

using System; using GrFingerXLib; using System.Windows.Forms; namespace WindowsFormsApplication2 { public struct TRawImage { //volgende variabelen dienen voor //de data van de afbeelding public object img; //de breedte van de afbeelding public int width; //de hoogte van de afbeelding public int height; //de resolutie van de afbeelding public int Res; }; public class FingerprintOPFormAuth { AxGrFingerXLib.AxGrFingerXCtrl grfingerx; private TTemplate template; public TRawImage rawImage; public void InitializeGrFinger(AxGrFingerXLib.AxGrFingerXCtrl grfingerxFormAuth) { grfingerx = grfingerxFormAuth; grfingerx.Initialize(); grfingerx.CapInitialize(); template = new TTemplate(); } public bool authenticate(string name,DBGriauleDataSet ds) { TTemplate t1 = new TTemplate(); TTemplate t2 = new TTemplate(); TTemplate t3 = new TTemplate(); int score = 0; int result; //in de database zoeken naar de naam van de gebruiker //(indien geen naam geselecteerd is dan zoekt het programma gewoon alle namen op) foreach (DBGriauleDataSet.tabelaRow row in ds.tabela.Rows) { if (row.Name.Equals(name)) { //als we de naam gevonden hebben halen we de templates op System.Byte[] temp = row.Template1;

Page 26: Toegangscontrole Met Vingerafdruk

GIP Toeganscontrole met vingerafdruk 25

System.Array.Copy(temp, 0, t1.tpt, 0, temp.Length); t1.size = temp.Length; temp = row.Template2; System.Array.Copy(temp, 0, t2.tpt, 0, temp.Length); t2.size = temp.Length; temp = row.Template3; System.Array.Copy(temp, 0, t3.tpt, 0, temp.Length); t3.size = temp.Length; break; } } //nu proberen we op zijn minst een van de vingerafdrukken van de gebruiker te linken aan een template result = (int)grfingerx.Verify(ref t1.tpt, ref template.tpt, ref score,(int)GRConstants.GR_DEFAULT_CONTEXT); //als de eerste template klopt met een van de vingerafdrukken sturen we "true" naar het formulier if ((GRConstants)result == GRConstants.GR_MATCH) return true; result = (int)grfingerx.Verify(ref t2.tpt, ref template.tpt, ref score, (int)GRConstants.GR_DEFAULT_CONTEXT); //als de tweede template klopt met een van de vingerafdrukken sturen we "true" naar het formulier if ((GRConstants)result == GRConstants.GR_MATCH) return true; result = (int)grfingerx.Verify(ref t3.tpt, ref template.tpt, ref score, (int)GRConstants.GR_DEFAULT_CONTEXT); //als de derde template klopt met een van de vingerafdrukken sturen we "true" naar het formulier if ((GRConstants)result == GRConstants.GR_MATCH) return true; //indien de vingerafdruk van de gebruiker met geen van de templates uit de database overeenkomt sturen we "false" naar het formulier return false; } public void extractTemplate() { template.size = (int)GRConstants.GR_MAX_SIZE_TEMPLATE; grfingerx.Extract(ref rawImage.img, rawImage.width, rawImage.height, rawImage.Res,ref template.tpt, ref template.size, (int)GRConstants.GR_DEFAULT_CONTEXT); } } }

Page 27: Toegangscontrole Met Vingerafdruk

GIP Toeganscontrole met vingerafdruk 26

usb_interface klasse

Dit is de klasse van Mevrouw Vervaeke die ik enkel gebruik om de zoemer en de LEDjes via de USB interface aan te sturen.

using System; using System.Runtime.InteropServices; using PVOID = System.IntPtr; using DWORD = System.UInt32; namespace WindowsFormsApplication2 { unsafe public class usb_interface //om dit te kunnen compileren moeten we bij de //project opties instellen dat unsafe blocks mogen gebruikt worden bij het compileren { #region String Definitions of Pipes and VID_PID string vid_pid_norm= "vid_04d8&pid_000c"; string out_pipe= "\\MCHP_EP1"; // Define End Points string in_pipe= "\\MCHP_EP1"; #endregion #region Imported DLL functions from mpusbapi.dll [DllImport("mpusbapi.dll")] private static extern DWORD _MPUSBGetDLLVersion(); [DllImport("mpusbapi.dll")] private static extern DWORD _MPUSBGetDeviceCount(string pVID_PID); [DllImport("mpusbapi.dll")] private static extern void* _MPUSBOpen(DWORD instance,string pVID_PID,string pEP,DWORD dwDir,DWORD dwReserved); [DllImport("mpusbapi.dll")] private static extern DWORD _MPUSBRead(void* handle,void* pData,DWORD dwLen,DWORD* pLength,DWORD dwMilliseconds); [DllImport("mpusbapi.dll")] private static extern DWORD _MPUSBWrite(void* handle,void* pData,DWORD dwLen,DWORD* pLength,DWORD dwMilliseconds); [DllImport("mpusbapi.dll")] private static extern DWORD _MPUSBReadInt(void* handle,DWORD dwLen,DWORD* pLength,DWORD dwMilliseconds); [DllImport("mpusbapi.dll")] private static extern bool _MPUSBClose(void* handle); #endregion void* myOutPipe; void* myInPipe; private void OpenPipes() { DWORD selection=0; // PIC waarmee we willen connecteren, in dit vb werken we maar met 1 PIC. myOutPipe = _MPUSBOpen(selection,vid_pid_norm,out_pipe,0,0); myInPipe = _MPUSBOpen(selection,vid_pid_norm,in_pipe,1,0);

Page 28: Toegangscontrole Met Vingerafdruk

GIP Toeganscontrole met vingerafdruk 27

} private void ClosePipes() { _MPUSBClose(myOutPipe); _MPUSBClose(myInPipe); } private DWORD SendReceivePacket(byte* SendData, DWORD SendLength, byte* ReceiveData, DWORD *ReceiveLength) { uint SendDelay=1000; uint ReceiveDelay=1000; DWORD SentDataLength; DWORD ExpectedReceiveLength = *ReceiveLength; OpenPipes(); if(_MPUSBWrite(myOutPipe,(void*)SendData,SendLength,&SentDataLength,SendDelay)==1) { if(_MPUSBRead(myInPipe,(void*)ReceiveData, ExpectedReceiveLength,ReceiveLength,ReceiveDelay)==1) { if(*ReceiveLength == ExpectedReceiveLength) { ClosePipes(); return 1; // Success! } else if(*ReceiveLength < ExpectedReceiveLength) { ClosePipes(); return 2; // Partially failed, incorrect receive length } } } ClosePipes(); return 0; // Operation Failed } public DWORD GetDLLVersion() { return _MPUSBGetDLLVersion(); } public DWORD GetDeviceCount(string Vid_Pid) { return _MPUSBGetDeviceCount(Vid_Pid); } public int UpdateLED(uint led, bool State) { byte* send_buf=stackalloc byte[64]; byte* receive_buf=stackalloc byte[64]; DWORD RecvLength=3;

Page 29: Toegangscontrole Met Vingerafdruk

GIP Toeganscontrole met vingerafdruk 28

send_buf[0] = 0x32; //Commando voor LED Status send_buf[1] = (byte)led; //welk led wil je wijzigen send_buf[2] = (byte)(State?1:0);// toestand van het LED if (SendReceivePacket(send_buf,3,receive_buf,&RecvLength) == 1) { if (RecvLength == 1 && receive_buf[0] == 0x32) return 0; else return 2; } else return 1; } public int UpdateDITOUT(uint statuspoort) { byte* send_buf = stackalloc byte[64]; byte* receive_buf = stackalloc byte[64]; DWORD RecvLength = 2; send_buf[0] = 0x32; //Commando voor DIGITAL OUTPUT send_buf[1] = (byte)statuspoort; //toestand outputs if (SendReceivePacket(send_buf, 3, receive_buf, &RecvLength) == 1) { if (RecvLength == 1 && receive_buf[0] == 0x32) return 0; else return 2; } else return 1; } public uint UpdateDITIN() { byte* send_buf=stackalloc byte[64]; byte* receive_buf=stackalloc byte[64]; uint Temp=0; DWORD RecvLength=(byte)2; send_buf[0] = 0x33; //Commando voor INPUT //send_buf[1] = (byte)num1; //toestand knoppen if (SendReceivePacket(send_buf,2,receive_buf,&RecvLength) == 1) if (RecvLength == 2 && receive_buf[0] == 0x33) Temp = receive_buf[1]; //toestand van de knoppen verkrijgen return Temp; } } }

Page 30: Toegangscontrole Met Vingerafdruk

GIP Toeganscontrole met vingerafdruk 29

4. Biometrie Biometrie betekent het vaststellen van meetbare eigenschappen van levende wezens, zoals vingerafdrukken, irissen en dergelijken.

Biometrie is breed toepasbaar en uitermate geschikt voor beveiligingstoepassingen, omdat biometrie niet van de persoon te scheiden is. Het hangt niet af van de kennis van een paswoord of het bezit van een sleutel. Het lichaam bevat eigenschappen die zo uniek zijn dat identificatie daarmee mogelijk is. Maar biometrie geeft wel geen 100% zekerheid. Een van de nadelen is wel dat die biometrietechnieken nog kostbaar zijn. Biometrie is niet fraudegevoelig en kan moeilijk verwijderd worden. De meest gangbare vormen van biometrie zijn vingerafdrukken en iriskenmerken.

Het grootste probleem bij biometrie is de betrouwbaarheid. Er bestaan twee foutieve identificaties. Ten eerste Fout-negatief: iemand wordt geweigerd, terwijl hij eigenlijk toegang moet krijgen. En ten tweede Fout-positief: iemand wordt toegelaten, hoewel die eigenlijk geweigerd had moeten worden.

Er is ook bezwaar op biometrie vanwege de mogelijke inbreuk op de privacy. Bankgegevens, verzekeringen, reisgedrag, koopgedrag,... Alles is gekoppeld aan die ene vingerafdruk.

Page 31: Toegangscontrole Met Vingerafdruk

GIP Toeganscontrole met vingerafdruk 30

5. Vingerafdrukken Een vingerafdruk is de afdruk van het lijnenpatroon op de vingertop. Dat patroon wordt achtergelaten door de natuurlijke vetlaag die op de huid voorkomt. Het lijnenpatroon op iedere vinger is uniek en daarom uitstekend geschikt als biometrisch “paswoord”.

Vingerafdrukken zijn vooral bekend uit televisieseries als CSI en NCIS maar ondertussen worden ze bij ons ook al gebruikt door de politie om de daders van misdrijven terug te vinden. De politie beschikt over een uitgebreide database met vingerafdrukken, deels van bekende criminelen, deels van onbekende verdachten.

In Nederland worden vingerafdrukken al gebruikt als biometrisch identificatiemiddel bij het elektronisch paspoort. De vingerafdrukken worden ook nog op een centrale database opgeslagen.

Page 32: Toegangscontrole Met Vingerafdruk

GIP Toeganscontrole met vingerafdruk 31

6. Website Een deel van onze GIP opdracht was: “Maak een website over uw GIP”. Aangezien ik in mijn vrije tijd al veel bezig ben met Photoshop vond ik dit een hele leuke opdracht. Mijn plan was om in Adobe Dreamweaver en met behulp van Adobe Photoshop helemaal zelf een website te maken, maar toen ik hoorde dat al mijn klasgenoten een website maakten in Adobe Flash (Een website met animatie) besloot ik om dit ook te doen. Ik heb zowel Photoshop als Flash gebruikt.

Adobe Flash

Adobe Flash (voorheen bekend als Macromedia Flash en daarvoor FutureSplash) is een computerprogramma waarmee animaties, (korte) webvideo's en webapplicaties (zoals spelletjes en gehele websites) gemaakt kunnen worden. Het wordt veel gebruikt om websites aan te kleden en voor reclame-uitingen bij websites, zogenaamde banners. De bekende animatieserie Happy Tree Friends wordt met dit programma geproduceerd en talloze andere websites maken gebruik van Flash. Flash is opgebouwd als een soort tekenfilm. Per tijdseenheid bepaalt de ontwikkelaar wat de bezoeker te zien krijgt. Een tijdseenheid wordt een frame genoemd. Een belangrijke tijdseenheid heet een keyframe. Zij vormen de uiteindelijke basisstructuur van de applicatie of animatie.

Adobe Photoshop

Adobe Photoshop is een grafisch programma voor het bewerken van foto's en ander digitaal beeldmateriaal via de computer. Photoshop is beschikbaar voor Mac OS X en Windows. Tot en met versie 4 bestond er ook een UNIX-variant. Photoshop is ontwikkeld door softwareproducent Adobe. Photoshop is gericht op professionele gebruikers. Voor minder veeleisende gebruikers is er het goedkopere Adobe Photoshop Elements dat minder functionaliteit biedt, maar in tegenstelling tot Photoshop een voorziening heeft voor het beheer van grote hoeveelheden foto's en afbeeldingen.

Maken van de website

Hierboven zie je de “Timeline” van mijn website in flash. Hier kan je bepalen wat er op welk moment zichtbaar is voor de bezoeker. Bijvoorbeeld op layer 38 (de bovenste rij) zie je de achtergrond muziek van mijn website. Na de intro speelt de muziek constant behalve als de bezoeker kiest om de muziek uit te zetten.

Page 33: Toegangscontrole Met Vingerafdruk

GIP Toeganscontrole met vingerafdruk 32

In de Libary, afgebeeld hiernaast, zie je elk object die op je website staat. Iedere afbeelding of tekstvakje staat in de Libary. Het is ook hier dat je tekst en afbeeldingen kan aanpassen.

Mijn logo bijvoorbeeld is gemaakt in Adobe Photoshop. Aan de linkerkant zie je het logo, aan de rechterkant zie je de verschillende lagen van mijn logo. Mijn logo moet de “C” van Cecat voorstellen, nadat ik het gemaakt had hoorde ik van veel mensen dat het niet op en “C” trok, maar ik vond dat niet zo belangrijk en heb het dan ook maar zo gelaten.

Page 34: Toegangscontrole Met Vingerafdruk

GIP Toeganscontrole met vingerafdruk 33

7. Besluit Ik zou willen beginnen met te zeggen dat het herkennen van iemand aan zijn vingerafdruk betrekkelijk makkelijk is, enkel de code voor het omzetten van een unieke vingerafdruk naar digitale data is moeilijk. Dat ging boven mijn capaciteiten en daarom heb ik de SDK van Griaule gebruikt.

Wat ik ook heb ondervonden is dat een data bijhouden en gebruiken zeer snel en makkelijk gaat met een SQL Server Database File maar dat het niet zo vanzelfsprekend is om een programma te maken die zo’n database gebruikt. Iedereen die dan je programma gebruikt moet ook een SQL Server geïnstalleerd hebben op zijn computer. Die installatie is niet zo eenvoudig voor de gewone computer gebruiker en eist toch redelijk veel van de computer.

Ik wil nog toevoegen dat ik deze opdracht zeer leuk en interessant vond omdat ik alles wat ik geleerd heb over de afgelopen jaren heb kunnen toepassen in één project. Ook heeft deze opdracht me doen inzien wat mijn sterke en mijn zwakke punten zijn en heeft mee bepaald in welke richting ik wil verder studeren.