Wachtwoorden controleren

Dit is je eerste kennismaking met een CSV-database. Een gewoon simpel tekst-bestand.

Je docent heeft op Replit een HTML project klaargezet, Login Box. https://replit.com/@eloquent161/Login-Box
Crack Box is iets verder af. Voor mensen die meer voorgekauwd willen. https://replit.com/@eloquent161/Crack-Box

De passwordfile

  • Je maakt in de linkerkolom een nieuw bestand en die noem je passwords.csv
  • Op elke regel komt het volgende:

username,password

Zorg voor minstens 5 entries (regels) ofwel username/password combo’s.

  • In eerste instantie zetten we dat wachtwoord lekker onversleuteld, gewoon plain text.

Het formulier

In de replit vind je een index.html een form en met daarin 2 text inputs. En een button: Log In. (Als je Crack Box gebruikt heb je ook al de BFA (Brute Force Attack)

Als de username klopt, gaat het goed. Als die er niet in staat, sta ik niet in voor fouten 😉

Werken met de CSV file

De CSV file

Dan legt het uit. Jawel, je moet de password file zien uit te lezen en iets te laten gebeuren als username en password in de password file staan. We gaan niet met zijn Nasa-ding.

Replit toont dit. Check:

  • username,password: header row
  • pietje, feyenoord1: data row
  • jantje,
  • 1,2,3 regelnummers. Die staan niet in de file

Opdracht 1. Meer passwords

Breid de CSV file password.csv uit met minstens 5 extra rows. Gebruik hiervoor de in replit ingebouwde file editor.

Opdracht 2. Password sterkte

Jij gaat proberen het wachtwoord te kraken, met een brute force attack. De password file heb je al, dus je moet zelf checken of het lukt. Voor elke poging hoog je je teller eentje op.

Belangrijk is dat je een lijst (array) maakt van tekens die nodig zijn om de wachtwoorden te kraken. Je maakt er 3:

  • lijst1: lowercase [a-z]+ cijfers [0-9]
  • lijst2: lowercase + uppercase [A-Z]
  • lijst3: lowercase + uppercase + cijfers + symbols [!@#$%&()] Denk erom dat je ,*^[]{} vermijd. Die zijn actief in JS en we willen nu geen geklooi.

Hoeveel tekens gebruik je dan?

Begin met 2 of 3 tekens.

De code om tegen deze lijst te checken ipv tegen de formulier input moet je zelf even schrijven.

Hoeveel runs heb je nodig om met lijst1 resp 2 resp 3 de wachtwoorden in JOUW csv file te kraken. Onhaalbaar: hoeveel tijd schat je zo in? Noteer je antwoord als // comments in de script.js op replit.

Eindtermen

  • databases, eenvoudig,
  • berekenbaarheid,

Beoordeling

  • 0,5 punten voor een password file uit opdracht 1
  • bonus: 0,5 punt voor een BFA die echt checht op de (eerste in de DB) en dan schrijf je een kloppend verhaal over welke passwords wel en niet te brute forcen zijn, in de /* comments */ van script.js

Ghostwriter code

Je docent heeft de AI van replit gevraagd om hulp..

I want to check for all the available password combinations in a 3-position password. How can I do that?

eloq arch
function getCombinations(length) {
    let result = [];
    let chars = 'abcdefghijklmnopqrstuvwxyz' +
               'ABCDEFGHIJKLMNOPQRSTUVWXYZ'+
               '1234567890';
    let combinations = Math.pow(chars.length, length); 
    for (let i = 0; i < combinations; i++) {
        let combination = '';
        let temp = i;
        for (let j = 0; j < length; j++) {
            combination += chars[temp % chars.length];
            temp = Math.floor(temp / chars.length);
        }
        result.push(combination);
    }
    return result;
}

// To use the function:
// let combos = getCombinations(3)
// for(let i = 0; i < combos.length; i++) {
//     console.log(combos[i])
// }

You would insert the function at the top of the script.js file then you can uncomment and use the commented portion under the function where you need to.

Eloquent Architect 161

Eloquent Architect 161