[PHP] Script stopt na lange execution time.

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hello all!

Aangezien ik mezelf een beetje PHP aan het leren ben, probeerde ik als kleine projectje eens een MD5 Bruteforcertje te schrijven, die enkel hashes kan bruteforces waarvan de originele tekst 5 tekens lang is. Hij support [a-zA-Z0-9].

Nu, het duurt hier 65 seconden om '0zzzz' te kraken, dat zijn 14.776.336 paswoorden die hij probeerde alvorens op het juiste resultaat te komen. adhv dit resultaat berkende ik dat het maximum een uurtje mag duren om alle 760.000.000 resultaten te proberen. (voor 6 tekens worden dit al 3 dagen. :O)
Op basis van dit heb ik mijn max_execution_time op 3600 gezet. (set_time_limit(3600);)

Het vreemde is dat, bij het proberen van 'aaaaa', het script na een tijdje gewoon stopt met executen. (Althans, dit vermoed ik)
Ik krijg geen foutmelding, noch enige uitvoer. Iemand die mij kan inlichten over hoe dit zou kunnen komen? :?

Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Net als in je vorige topic vindt men wederom nul inzet.

Wat heb je, behalve je max_execution_time tijdens run-time verhogen geprobeerd, heb je je script bijvoorbeeld al eens wat laten echo'en na 3559 seconden? Heb je op php.net gekeken naar waar je maximale uitvoertijd ingesteld kan worden? Enzovoorts...

[ Voor 4% gewijzigd door CodeCaster op 08-10-2008 22:48 ]

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Acties:
  • 0 Henk 'm!

  • !null
  • Registratie: Maart 2008
  • Laatst online: 20-09 20:32
code:
1
2
error_reporting( E_ALL );
set_time_limit(0);


Dan scriptje runnen. Komt er dan nog niks uit ligt het toch echt aan je code.

Ampera-e (60kWh) -> (66kWh)


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

GreenSky schreef op woensdag 08 oktober 2008 @ 22:51:
code:
1
2
error_reporting( E_ALL );
set_time_limit(0);


Dan scriptje runnen. Komt er dan nog niks uit ligt het toch echt aan je code.
...of aan je browser die vindt dat hij lang genoeg heeft gewacht en stopt met het opvragen van data. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • !null
  • Registratie: Maart 2008
  • Laatst online: 20-09 20:32
Tja dan moet je Keep-Alive headers versturen of heel ranzig om de 10 seconden een spaties sturen (flushen) hehe, ik daag jullie uit de smerigste oplossing te vinden!
Ik zou dan iig command line gebruiken om dat soort dingen te voorkomen, gaat op Linux erg makkelijk, maar moet op Windows ook prima lukken.

Ampera-e (60kWh) -> (66kWh)


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

GreenSky schreef op woensdag 08 oktober 2008 @ 23:02:
Tja dan moet je Keep-Alive headers versturen of heel ranzig om de 10 seconden een spaties sturen (flushen) hehe, ik daag jullie uit de smerigste oplossing te vinden!
Om de 10 seconden een spatie flushen werkt bij sommige browsers ook niet eens, geloof ik. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
Zo smerig is het toch niet om om de zoveel seconden (of elke) een teken van leven te geven? Of geef een tussen stand. Best prettig om te weten dat hij nog bezig is.

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • 0 Henk 'm!

  • !null
  • Registratie: Maart 2008
  • Laatst online: 20-09 20:32
Ja de enige manier om een teken van leven te geven is helaas door letterlijk een teken te sturen.
Ik begon wel over Keep-Alive headers, maar dat werkt eigenlijk anders. Dat is nadat je de pagina hebt geladen, of ie de connectie nog open moet houden of niet.
Maar goed, ik vind het geen nette oplossing, komt ook omdat je iets aan het misbruiken bent waar het niet voor bedoelt is. Niet dat dat zo heel erg is. Van mij mag je PHP daar best voor gebruiken, alleen moet je wel naar command line gaan, en dan (waarschijnlijk) lokaal uitvoeren. Dan heb je geen browser die maar al te graag een time-out wil geven.
Misschien zijn er wel timeout headers die je vanuit de server mee kan geven? Dan moet de browser er nog naar luisteren.

Ampera-e (60kWh) -> (66kWh)


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 14:53

MueR

Admin Tweakers Discord

is niet lief

Offtopic, maar ik hoop dat je dit thuis op een server doet. Je hoster gaat echt not amused zijn met dit soort scripts.

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

Verwijderd

kan dat ook niet asynchroon uitgevoerd worden? Ajax-gewijs dus. Het lijkt me dat je je dan geen zorgen hoeft te maken dat je browser een timeout geeft. Of zit ik er naast?

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Verwijderd schreef op donderdag 09 oktober 2008 @ 09:20:
kan dat ook niet asynchroon uitgevoerd worden? Ajax-gewijs dus. Het lijkt me dat je je dan geen zorgen hoeft te maken dat je browser een timeout geeft. Of zit ik er naast?
Pff, is dit de nieuwe versie van 'doe het gewoon via de commandline'? :X Het via de browser aanroepen is gewoon zeer twijfelachtig, en dan als oplossing ajax er tegenaan gooien, puur omdat het kan. 8)7

{signature}


Acties:
  • 0 Henk 'm!

  • !null
  • Registratie: Maart 2008
  • Laatst online: 20-09 20:32
Inderdaad, lijkt me een slecht idee. Moet je weer iets bedenken om het script op de server te laten runnen.. cronjob oid?
Gewoon command line, die is daarvoor bedoelt. Geen andere dingen ervoor misbruiken.

Ampera-e (60kWh) -> (66kWh)


Acties:
  • 0 Henk 'm!

Verwijderd

Voutloos schreef op donderdag 09 oktober 2008 @ 09:38:
[...]
Pff, is dit de nieuwe versie van 'doe het gewoon via de commandline'? :X Het via de browser aanroepen is gewoon zeer twijfelachtig, en dan als oplossing ajax er tegenaan gooien, puur omdat het kan. 8)7
ok, via de command line is wel zeker zo netjes

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Moest gisteren gaan slapen. Ben er weer. :)

Dus, ik run het script hier op m'n lokale webserver (xampp). Over de maximum mogelijke execution time van PHP; aangezien je het via set_time_limit(0) op oneindig kan zetten, nam ik aan dat er geen maximum was.

@ CodeCaster,
Excuses, maar ik probeer toch altijd zo volledig mogelijk te zijn, en plaats alleen iets als ik er al meer dan een uur m'n hoofd over zit te breken.

Ben nu eens aan het klooien met het uitvoeren van mijn PHP scripts via de command line.

Acties:
  • 0 Henk 'm!

  • !null
  • Registratie: Maart 2008
  • Laatst online: 20-09 20:32
Verwijderd schreef op donderdag 09 oktober 2008 @ 16:42:
aangezien je het via set_time_limit(0) op oneindig kan zetten, nam ik aan dat er geen maximum was.
Default staat deze meen ik op 30 seconden. Dus je moet wel expliciet set_time_limit(0) doen.
Maar idd, even via command line only testen.

Ampera-e (60kWh) -> (66kWh)


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
In XAMPP staat hij op 60 :)

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
TS: zoek eens op de term rainbow tables ;)

Acties:
  • 0 Henk 'm!

  • Patriot
  • Registratie: December 2004
  • Laatst online: 19:24

Patriot

Fulltime #whatpulsert

Mocht je het via de browser willen doen, dan kun je ook gewoon ignore_user_abort(true); aanroepen, je script stopt dan niet als de browser er mee kapt. Je moet de output dan wel even naar een bestand schrijven, want die krijg je evengoed niet terug in de browser. Mocht je script eerder klaar zijn kun je er nog voor kiezen om gewoon te outputten, dan moet je in het script met connection_aborted() even kijken of de client al weg is.
Pagina: 1