Toon posts:

Unieke strings genereren

Pagina: 1
Acties:
  • 169 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik ben bezig met een programmaatje dat automatisch een wachtwoord moet genereren om die dan te mailen met de gebruikersnaam naar een gebruiker, dat mailen is niet het probleem, ik wilde alleen de w8woorden automatisch laten genereren, en elk w8woord moet uniek zijn.

Hoe kan ik systematisch bepaalde combinaties met ascii-tekens genereren?

bijvoorbeeld:

@a$gfs
@a$gft
@a$gfu

etc..


OK, bedankt voor de mogelijkheden om de w8woorden te genereren, dat gaat wel lukken, maar hoe kan ik de strings brute-force genereren?

[ Voor 22% gewijzigd door Verwijderd op 14-05-2003 15:35 ]


  • chris
  • Registratie: September 2001
  • Laatst online: 11-03-2022
je kan van de huidige timestamp + z'n e-mailaders de md5code genereren en dan daar de eerste x tekens van nemen.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Waarom moet een wachtwoord uniek zijn?

Iig een mogelijke methodiek: Neem een random nummer, voeg er de datum aan toe, en MD5-hash deze string. Neem vervolgens de eerst 8 karakters en je bent er.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
:? ok, dus automatisch de tekens aflopen gaat niet?

Verwijderd

random met als seed de seconden van de huidige timestamp.

  • NightBird
  • Registratie: Januari 2000
  • Laatst online: 07-08 21:18

NightBird

DPC-Crew Coding
Verwijderd schreef op 14 May 2003 @ 11:40:
:? ok, dus automatisch de tekens aflopen gaat niet?
Tuurlijk kan dat wel ..
Alleen dan maak je het raden van andermans password wel heel erg simpel :)

WatHoorJeWaar · Asobakken
Eerdere projecten: Leading Courses · Brandstof-zoeker.nl · Voertuig-zoeker.nl


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 14 May 2003 @ 11:40:
:? ok, dus automatisch de tekens aflopen gaat niet?
Kan ook, lijktme alleen meer regels code.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Corn
  • Registratie: November 2001
  • Laatst online: 10-08 21:15

Corn

Raar jongetje

zoiets ofzo? dit is nog iets van mijn vintage gwbasic skills :)
Je moet alleen ff kijken welke ascii tekens dat zijn, ff kijken waar de range dus zit die je als tekens wil gebruiken.
$passstring = Chr$ (int (rnd*50+100));Chr$ (int (rnd*50+100));Chr$ (int (rnd*50+100));Chr$ (int (rnd*50+100))

  • TlighT
  • Registratie: Mei 2000
  • Laatst online: 22-03 10:40
/dev/null schreef op 14 May 2003 @ 11:38:
je kan van de huidige timestamp + z'n e-mailaders de md5code genereren en dan daar de eerste x tekens van nemen.
Dat is niet uniek lijkt me. Alleen de hele md5 code is uniek.

Verwijderd

Topicstarter
Ik heb het volgende:

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
Const max = 255
Dim password as string
Dim nummer as integer
Dim Temp as string
Do
    For nummer = 1 to max
        Temp = Chr(nummer)
        Password = Left(password,len(Password)-1)
        Password=password & temp
    Next
    nummer = 1
Loop

Nu moet ergens die loop nog onderbroken worden en ik weet niet hoeveel max moet zijn, maar zo moet hij ongeveer werken toch?


w8 ff,
Ik denk dat ik dan een x-aantal loops moet hebben die in elkaar lopen, een voor elk teken.

[ Voor 18% gewijzigd door Verwijderd op 14-05-2003 12:29 ]


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Verwijderd schreef op 14 May 2003 @ 11:40:
:? ok, dus automatisch de tekens aflopen gaat niet?
Dat is beveiligingstechnisch werkelijk een van de stomste dingen die je kan doen op het gebied van automatisch wachtwoorden genereren...

Dan kan je namelijk, van je eigen wachtwoord uitgaande, alle andere wachtwoorden raden...

Verwijderd

Als je het met MD5 en timestamp doet, dan krijg je zo'n random wachtwoord, dat gaat zowiezo geen 2e keer voorkomen. Eventueel doe je een select op je database om te kijken of dat password all voorkomt, maar dat zou ik niet eens doen ivm zonde van de cpu tijd ;)

[ Voor 3% gewijzigd door Verwijderd op 14-05-2003 13:11 ]


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

CPU-wise sneller en minder code dan een MD5 is een GUID, en kan ook algoritmisch eenvoudig in een kort password worden omgezet. Ik zou echter gewoon botweg met QueryPerformanceCounter een unieke int trekken en die als seed gebruiken voor een leesbaardere string, heb je helemaal geen geemmer.

Professionele website nodig?


  • chris
  • Registratie: September 2001
  • Laatst online: 11-03-2022
TlighT schreef op 14 May 2003 @ 11:54:
[...]

Dat is niet uniek lijkt me. Alleen de hele md5 code is uniek.
ja inderdaad. dat is toch ook de bedoeling? neem de eerste 5 letters van de md5 string. ofzo.

wat ook leuk is, is een lijstje met woorden gescheiden door spatie's maken. deze prop je in een textfile, en lees je later weer in als een array. dan kan je bijvoorbeeld een randomwoord + 5 cijfers nemen. zo krijg je makkelijkere wachtwoorden voor de gebruikers, misschien iets minder veilig, maar dat is (bijna) verwaarloosbaar. krijg je wachtwoorden als: "groen5835" of "muis2345". zorg alleen dan wel voor genoeg woorden in je bestand en zorg ervoor dat je zeker random nummers erachter plakt.

Verwijderd

uuh, waarom pak je geen woordenlijst (gewoon een public domain ding) en ga hier vervolgens een wachtwoord uit samenstellen :) werkt perfect.

Ooh zelfde idee als hierboven eigenlijk 8)7

[ Voor 15% gewijzigd door Verwijderd op 14-05-2003 14:15 ]


  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

/dev/null schreef op 14 mei 2003 @ 14:08:ja inderdaad. dat is toch ook de bedoeling? neem de eerste 5 letters van de md5 string. ofzo.
Ehm, nee, de bedoeling is een unieke string. En de eerste 5 karakters zijn niet gegarandeerd uniek.

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


Verwijderd

idd gewoon 2 kleine woorden met een 2 cijfers aanelkaar en voila :)

huis17groot
fiets45leuk

[ Voor 4% gewijzigd door Verwijderd op 14-05-2003 14:19 ]


  • avon
  • Registratie: November 2002
  • Laatst online: 27-06-2025
wat dacht je van ID nummer van de user om te zetten naar karakters,
per nummer zeg maar...

ASP:
1
2
3
4
5
6
7
8
strcode= rs("ID")
strcodelengte = len(strcode)
for zz 1 to strcodelengte
strcodeint = Mid(strcode, strloop,1)
strint = Chr(strcodeint)
destr = destr & "" & strint
next
destr

[ Voor 21% gewijzigd door avon op 14-05-2003 14:24 ]

Gratis webwinkel beginnen? Met Onetoshop.com kunt u direct beginnen!


Verwijderd

Topicstarter
Ik wil die unieke string on-runtime genereren, dan kan ik ze ook gebruiken bij bijvoorbeeld de sleutels in een database of listbox, weet ik veel wat.

Het probleem is echter dat ik niet automatisch nadat alle mogelijkheden met 1 teken zijn geprobeert het proggie doorgaat met 2 tekens, en dan 3 etc.

[ Voor 34% gewijzigd door Verwijderd op 14-05-2003 14:29 ]


  • bartvb
  • Registratie: Oktober 1999
  • Laatst online: 17-08 13:41
Nog even iets anders.. MD5 van random iets met timestamp is ook geen strak plan. De kans is namelijk redelijk aanwezig dat ergens het tijdstip van aanmaken van het account bijgehouden wordt. Als je dat weet weet je (ongeveer) wat de timestamp is en kan je dus heeeeeeeeel selectief gaan bruteforcen ;) Geen strak plan.

Maar eeeh, voor het genereren van passwords zijn echt al heeeeeeeeel veel kant en klare stukken code beschikbaar waar mensen tig keer langer over na hebben gedacht dan jij ooit zal doen ;) Dus waarom het wie opnieuw uitvinden?

En eeh, zorg er aub voor dat het wachtwoord een beetje uit te spreken is als je niet wilt dat mensen meteen nadat ze het account krijgen hun wachtwoord veranderen in hun username of voornaam :\

Verwijderd

Topicstarter
Okay, dus een lijst maken met gemakkelijke woorden en daar een 4 á 5 cijferige code achter plakken. Zo onthouden de gebruikers het, ok.




Maar weet er dan niemand hoe ik on-runtime een string kan opbouwen?

a
b
c
...
aa
ab
ac

etc.

  • ritsjoena
  • Registratie: December 2001
  • Laatst online: 16-06-2024
Wat dacht je van random characters trekken. I.e. je laat een random generator een getal uitrekenen en die refereert naar een karakter uit de set van alle toegestane karakters (bv array of range in de ascii tabel). En dit doe je voor elk karakter in je string (die je natuurlijk ook kan ranomizen).

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Pak als UserId (en daarmee primary keys en alles) gewoon een GUID en genereer een niet al te moeilijk password uit met standaardtabellen.

Professionele website nodig?


  • ritsjoena
  • Registratie: December 2001
  • Laatst online: 16-06-2024
Wil je overigens dat ze allemaal uniek zijn of zo goed als uniek. In het eerste geval moet je inderdaad een uniek getal in je paswoord verwerken (bv tijd) of alle uitgedeelde paswoorden bijhouden.

In het tweede geval is een goede randomgenerator voldoende. (1 op 40^n met n het aantal karakters in de string en voor 40 het aantal toegestane karakters)

Verwijderd

Topicstarter
Weet niemand hoe ik brute-force een string kan genereren?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 14 May 2003 @ 16:26:
Weet niemand hoe ik brute-force een string kan genereren?
:? Wat is er mis met de bovenstaande oplossingen?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Niets, maar ik maak een brute-force tester om te kijken of de w8woorden gemakelijk te raden zijn. Anders moet ik iets anders bedenken dan alleen een username & w8woord.

  • avon
  • Registratie: November 2002
  • Laatst online: 27-06-2025
met een dubbele of drie dubbele forlus kan je wel een
a tot en met z string genereren van 3 groot...

for 110 tot 136
maak van integer waarde asci
next

en dat dan 3 keer in een lus en dan waarden bij elkaar opzetten
door variablen samen te voegen.

Gratis webwinkel beginnen? Met Onetoshop.com kunt u direct beginnen!


Verwijderd

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function makeNewPass($new_length)
{
  $letters = array('a','b','c','d','e','f','g','h','i','j','k','l','m',
                   'n','o','p','q','r','s','t','u','v','w','x','y','z',
                   'A','B','C','D','E','F','G','H','I','J','K','L','M',
                   'N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
                   '0','1','2','3','4','5','6','7','8','9',
                   '+','.','(',')','$','#','='
                  );

    srand((double) microtime() * 1000000);
    for ($c = 0; $c < $new_length; $c++)
    $new_password .= $letters[rand(0,count($letters))];
    return $new_password;
}

Verwijderd

er is niets makkelijkers dan een string generen... maar je hebt er zo weinig aan.

code:
1
2
3
4
aaaaaaaa
aaaaaaab
aaaaaaac
........


daar zit je toch niet op te wachten??

Maar het is een kwestie van elke keer karakters ophogen (ascii waarden dus)

Je begint met een array [65, 65, 65, 65, 65, 65, 65, 65] en dan ga je ophogen, gewoon via een loopje.

  • reddog33hummer
  • Registratie: Oktober 2001
  • Laatst online: 18-07 17:33

reddog33hummer

Dat schept mogelijkheden

Waarom gebruik je niet i.p.v. MD5 DES ?

geeft je uiteinderlijk 8 tekens, behoorlijk uniek

Backup not found (R)etry (A)bort (P)anic<br\>AMD 3400+ 64, 2 GB DDR, 1,5 TB Raid5


  • Flard
  • Registratie: Februari 2001
  • Laatst online: 20-08 14:34
Gewoon, nog even ter aanvulling:

PHP:
http://www.codebase.nl/index.php/command/viewcode/id/81
ASP/VB:
http://www.codebase.nl/index.php/command/viewcode/id/83
Delphi:
http://www.codebase.nl/index.php/command/viewcode/id/98

Verder denk ik dat deze manieren zo goed als onmogelijk te kraken zijn:
Als je een password maakt van 20 karakters lang, en je voegt in de 'possible characters', nog wat extra karakters toe (zoals {, }, *, ^, %, enz...), dan heb je dus 20^(possible chars) mogelijkheden... en dit wordt snel, héél erg veel...
Verder, de kans dat een string niet uniek is, is dus 1 op 20^(possible chars)...
Pagina: 1