Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Problem] Przepisanie Brute Force z PHP


Rekomendowane odpowiedzi

Opublikowano

Witam

Napisałem bruta w PHP teraz jest mi potrzebny w AutoIt.

Więc postanowiłem go jakoś przepisać ale napotkałem problem z moją funkcję next_pass.

 

Funkcja w PHP:

function next_pass($pass,$charset,$pos=1) { 
   $offset = strlen($pass) - $pos; 
   if ($offset == -1) {
	  $pass{$offset+1} = substr($charset,0,1); 
	  $pass .= substr($charset,0,1); 
   } 
   else { 
	  $char = $pass{$offset}; 
	  $charset_pos = strpos($charset,$char)+1; 
	  if ($charset_pos == strlen($charset)) {
		 $pass{$offset} = substr($charset,0,1); 
		 $pass = next_pass($pass,$charset,$pos+1); 
	  } 
	  else {  //incrementing offset char. 
		 $pass{$offset} = substr($charset,$charset_pos,1); 
	  } 
   } 
   return $pass; 
} 

Jak zaimplementować $pass{$offset+1} w AutoIt?

 

Ja przepisałem na razie to:

Func next_pass($pass,$charset,$pos=1)
   $offset = _WinAPI_StringLenA($pass) - $pos; 
   if $offset == -1 then
	  $pass{$offset+1} = substr($charset,0,1); 
	  $pass &= substr($charset,0,1); 
   else
	  $char = $pass{$offset}; 
	  $charset_pos = strpos($charset,$char)+1; 
	  if $charset_pos == _WinAPI_StringLenA($charset) then
		 $pass{$offset} = substr($charset,0,1); 
		 $pass = next_pass($pass,$charset,$pos+1); 
	  else
		 $pass{$offset} = substr($charset,$charset_pos,1); 
	  EndIf
   EndIf
   return $pass; 
EndFunc

I jeszcze jaki jest odpowiednik substr w Autoit? Bo w WinAPI.au3 tego nie widzę.

 

Opublikowano

Podałbyś jakieś wywołanie funkcji? Ciężko analizować funkcję bez określeń argumentów.

Przykładowo nie rozumiem tego:

        $pass{$offset+1} = substr($charset,0,1); ;dodaje char na końcu do str z charsetu
        $pass &= substr($charset,0,1); ;dodaje char na końcu do str z charsetu

Po pierwszym else daj endIf

WSZYSTKIE PLIKI W CHMURZE DLA MPCFORUM ZOSTAŁY USUNIĘTE. NIE KORZYSTAĆ Z MOICH PROGRAMÓW.

Proszę nie ingerować w moje posty/tematy, w razie potrzeby usunąć całą zawartość. Nie pomagam.

Opublikowano
$start = 'aaaaaaa';
$end = 'ZZZZZZZ';
$charset = 'abcdefghijklmnopqrstuvwxyz';
$charset &= '0123456789';
$charset &= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';

; Script
Dim $pass = $start; 
Dim $count = 0; 
Dim $found = false; 
do
	$pass = next_pass($pass,$charset)
	; Code
	$count+=1
	  
Until $pass == $end

if not $found then
    MsgBox(1, "End", $pass); 
EndIf

 

Opublikowano

"Napisałem bruta w PHP teraz jest mi potrzebny w AutoIt."

Google mówi co innego.

 

Kod:

 

 

<?php 
 
// Simple php md5 bruter by xprog. 
// Needs an interface, might be nice with ajax showing progress. 
// Mod it for your own use. Give me some credit if you use =)  
// Greets h4ck-y0u & ciphercrew! 
 
//EDIT WITH YOUR VALUES. 
$start = 'a'; 
$end = 'aaaaa'; 
$charset = 'abcdefghijklmnopqrstuvwxyz0123456789'; 
$hash = '1a1dc91c907325c69271ddf0c944bc72'; 
//END EDIT! 
 
 
//THE CODE 
set_time_limit(0); 
$starttime = thetime(); 
$pass = $start; 
$count = 0; 
$found = false; 
 
echo "<pre>\n"; 
while ($pass != $end and !$found) { 
   if (md5($pass) == $hash) { 
	  echo "$hash cracked: $pass\n"; 
	  $found = true; 
   } 
   else { 
	  $pass = next_pass($pass,$charset); 
   } 
   $count++; 
} 
if (!$found){ 
   echo "$hash not cracked, try a different range/charset.\n"; 
} 
$totaltime = round(thetime()-$starttime,2); 
if ($totaltime < 1) echo "Tried $count passwords in <1 second.\n";  //NO division by zero error. 
else { 
   $speed = round($count / $totaltime,0); 
   echo "Tried $count passwords in $totaltime seconds. " . $speed . "p/s.\n"; 
} 
echo "</pre>"; 
 
 
//FUNCTIONS! 
function next_pass($pass,$charset,$pos=1) { 
   $offset = strlen($pass) - $pos; 
   if ($offset == -1) {  //did all passwords in current length, increasing length. 
	  $pass{$offset+1} = substr($charset,0,1); 
	  $pass .= substr($charset,0,1); 
   } 
   else { 
	  $char = $pass{$offset}; 
	  $charset_pos = strpos($charset,$char)+1; 
	  if ($charset_pos == strlen($charset)) {  //offset char reached end of charset, moving up one. 
		 $pass{$offset} = substr($charset,0,1); 
		 $pass = next_pass($pass,$charset,$pos+1); 
	  } 
	  else {  //incrementing offset char. 
		 $pass{$offset} = substr($charset,$charset_pos,1); 
	  } 
   } 
   return $pass; 
} 
function thetime() { 
   list($usec, $sec) = explode(" ", microtime()); 
   return ((float)$usec + (float)$sec); 
} 
?>



 

 

WSZYSTKIE PLIKI W CHMURZE DLA MPCFORUM ZOSTAŁY USUNIĘTE. NIE KORZYSTAĆ Z MOICH PROGRAMÓW.

Proszę nie ingerować w moje posty/tematy, w razie potrzeby usunąć całą zawartość. Nie pomagam.

Opublikowano

Tak na tym się wzorowałem tylko że ja wywaliłem thetime() i połączyłem go jeszcze z innym brutem z C++ ale ostatecznie robi to samo.

 

 

#cs ----------------------------------------------------------------------------

 AutoIt Version: 3.3.8.1
 Author:         Marcin648

 Script Function:
	Template AutoIt script.

#ce ----------------------------------------------------------------------------

; Script Start - Add your code below here

#include "WinHTTP.au3"
#include "WinAPI.au3"
#include "string.au3"

; Setting
$handlewinhttp = _WinHttpOpen("User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:20.0) Gecko/20100101 Firefox/20.0"); uruchamiamy usluge
$start = 'aaaaaaa';
$end = 'ZZZZZZZ';
$charset = 'abcdefghijklmnopqrstuvwxyz';
$charset &= '0123456789';
$charset &= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';

; Script
Dim $pass = $start; 
Dim $count = 0; 
Dim $found = false; 
do
	$pass = next_pass($pass,$charset)
	MsgBox(1, "pass", $pass); For test
	$count+=1
	  
Until $pass == $end

if not $found then
    MsgBox(1, "End", $pass); 
EndIf


Func next_pass($pass,$charset,$pos=1)
   $offset = _WinAPI_StringLenA($pass) - $pos; 
   if $offset == -1 then
	  $pass{$offset+1} = StringMid($charset,0,1); 
	  $pass &= StringMid($charset,0,1); 
   else
	  $char = $pass{$offset}; 
	  $charset_pos = strpos($charset,$char)+1; 
	  if $charset_pos == _WinAPI_StringLenA($charset) then
		 $pass{$offset} = StringMid($charset,0,1); 
		 $pass = next_pass($pass,$charset,$pos+1); 
	  else
		 $pass{$offset} = StringMid($charset,$charset_pos,1); 
	  EndIf
   EndIf
   return $pass; 
EndFunc 

 

 

 

Opublikowano


Func next_pass( $p, $c )

$c = stringSplit( $c, "", 2 )

If $p = "" Then return $c[ 0 ]

$p = stringSplit( $p, "", 2 )

 

 

$s = uBound( $p ) - 1

$l = $p[ $s ]

 

$cs = uBound( $c ) - 1

 

For $i = 0 To $cs

If $l == $c[ $i ] Then

If $i == $cs Then

$p[ $s + 1 ] = $c[ 0 ]

else

$p[ $s ] = $c[ $i + 1 ]

endIf

 

exitLoop

endIf

Next

 

$str = ""

For $i = 0 To uBound( $p ) - 1

$str &= $p[ $i ]

Next

 

return $str;

EndFunc

WSZYSTKIE PLIKI W CHMURZE DLA MPCFORUM ZOSTAŁY USUNIĘTE. NIE KORZYSTAĆ Z MOICH PROGRAMÓW.

Proszę nie ingerować w moje posty/tematy, w razie potrzeby usunąć całą zawartość. Nie pomagam.

Opublikowano

Redim $p[ $s + 2 ]

przed.

 

#EDIT: Źle zrozumiałem kod, już się biorę za to.

WSZYSTKIE PLIKI W CHMURZE DLA MPCFORUM ZOSTAŁY USUNIĘTE. NIE KORZYSTAĆ Z MOICH PROGRAMÓW.

Proszę nie ingerować w moje posty/tematy, w razie potrzeby usunąć całą zawartość. Nie pomagam.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...