Page 1 sur 1

[R] Traduire un javascript "checksum" en autoit

Posté : mer. 15 juil. 2009 18:21
par judgefred
Bonsoir à tous,

Je souhaiterai pourvoir transcrire un javascript en autoit mais je reste bloqué sur certaines variables. Voici le script en question:

[code]<SCRIPT LANGUAGE="JavaScript">
function Calculer() {
var tab=" azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN0123456789_$&#@";
var login=document.forms[0].elements["login"].value;
var password=document.forms[0].elements["password"].value;
var nblog=login.length;
var nbpass=password.length;
var sum=1;
var n=Math.max(nblog,nbpass)
for (var i=0;i<n;i++) {
var index1=tab.indexOf(login.substring(i,i+1))+10;
var index2=tab.indexOf(password.substring(i,i+1))+10;
sum=sum+(index1*n*(i+1))*(index2*(i+1)*(i+1));
}

document.forms[0].elements["checksum"].value=sum;

}
</SCRIPT>[/code]

Je bloque au niveau du .length, .indexOf et .substring
Y'a-t-il des équivalences dans les fonctions d'Autoit et, si ces équivalences existent, la transformation du script peut-elle finalement aboutir (sinon, je laisse tomber...)?

Merci d'avance

Cordialement

JudgeFred

Re: TRADUIRE UN JAVASCRIPT "CHECKSUM" EN AUTOIT

Posté : mer. 15 juil. 2009 20:36
par orax
Bonsoir, je dirais :
- StringInStr pour indexOf ;
- StringLen pour length ;
- StringMid pour substring.

Re: TRADUIRE UN JAVASCRIPT "CHECKSUM" EN AUTOIT

Posté : jeu. 16 juil. 2009 07:33
par judgefred
Merci pour votre réponse.

Je teste cela de suite.

Re: TRADUIRE UN JAVASCRIPT "CHECKSUM" EN AUTOIT

Posté : jeu. 16 juil. 2009 16:01
par judgefred
Rebonjour,

Merci de votre aide. Le remplacement s'est avéré correct!
Pas à pas, le script autoit et le javascript initial fournissent les mêmes données dans les variables!

Cependant, je bloque sur la dernière ligne qui ne doit pas normalement poser de difficultés..

ORIGINAL:
sum=sum+(index1*n*(i+1))*(index2*(i+1)*(i+1));

AUTOIT:
$sum = $sum + ($index1*$n*($i+1))*($index2*($i+1)*($i+1));

Bien que les données soient identiques dans les variables entre les deux scripts, il n'en est pas de même dans le "calcul final" ou l'un génére un nombre différent de l'autre..

Auriez vous des suggestions?

Merci d'avance

JudgeFred

Re: TRADUIRE UN JAVASCRIPT "CHECKSUM" EN AUTOIT

Posté : jeu. 16 juil. 2009 17:50
par orax
Je ne sais pas si votre problème vient de là, mais il y a des nuances entre Autoit et Javascript. Par exemple, Pour indexOf : le comptage commence à 0, alors que pour StringInStr ça commence à 1.

Re: TRADUIRE UN JAVASCRIPT "CHECKSUM" EN AUTOIT

Posté : jeu. 16 juil. 2009 17:59
par judgefred
C'est totalement vrai.

Je viens de vérifier et cela ne vient effectivement pas de la dernière ligne $sum.

S'il n'y a pas de solution, je me permettrai quand même de vous soumettre sur ce post demain matin le script construit avec autoit pour me dire s'il ne contient pas d'erreurs.

Merci pour votre aide

Re: [..] Traduire un javascript "checksum" en autoit

Posté : sam. 18 juil. 2009 10:15
par ani
bonjour,
Auriez-vous un exemple de valeur retournée ?
Je veux dire un login & password bidon avec la valeur $sum qui serait retournée?
Pour tester ;)
merci et bonne continuation ;)

Re: [..] Traduire un javascript "checksum" en autoit

Posté : mar. 21 juil. 2009 13:57
par judgefred
Bonjour

Je vous transmets le code traduit en fonction des précedentes réponses sur ce forum:

Code : Tout sélectionner

#include <Math.au3>
    
    
    Dim $loginmid
    Dim $passwordmid
    Dim $index1
    Dim $index2
    
    $tab = "                  azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN0123456789_$&#@"
    
    $login = "AZERTY"
    $password = "AZERTY"
    
    $nblog = StringLen($login)
    $nbpass = StringLen($password)
    
    
    $sum = 1
    $n = _Max($nblog,$nbpass)
    
    for $i = 0 to $i < $n
    
        $loginmid = StringMid($login, $i, $i+1)
        $passwordmid = StringMid($password, $i, $i+1)
        $index1 = StringInStr($tab, $loginmid, 1) + 10      
        $index2 = StringInStr($tab, $passwordmid, 1) + 10
        $sum = $sum + ($index1*$n*($i+1))*($index2*($i+1)*($i+1))

        Next 
        
        MsgBox(0,"", "$nblog: " & $nblog & @CRLF & "$npass: " & $nbpass & @CRLF & "$n: " & $n & @CRLF & "$loginmid: " & $loginmid & @CRLF & "$passwordmid: " & $passwordmid & @CRLF & "$index1: " & $index1 & @CRLF & "$index2: " & $index2 & @CRLF & "$sum: " & $sum)
Tout se passe bien jusqu'à la fonction StringMid. Et même dans l'hypothèse ou les retour de ces fonctions seraient identiques, le $sum final est toujours différent entre le javasript et le script autoit.

Pour vous répondre, vous trouverez en fichier zip ci-joint le script autoit qui vous retourne les différentes valeurs calculées ainsi qu'une page html qui vous retourne également les différentes valeurs calculées par le javascript. Vous pourrez donc comparer les "réactions" de ces deux scripts.

Merci d'avance

Cordialement

Judgefred

Re: [..] Traduire un javascript "checksum" en autoit

Posté : mar. 21 juil. 2009 17:36
par orax
Il y avait une erreur au niveau des StringMid et la boucle For ne s'utilise pas comme ça (ça ne faisait qu'une seule boucle).

Code : Tout sélectionner

#include <Math.au3>


Dim $loginmid
Dim $passwordmid
Dim $index1
Dim $index2

$tab = "                  azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN0123456789_$&#@"

$login = "AZERTY"
$password = "AZERTY"

$nblog = StringLen($login)
$nbpass = StringLen($password)


$sum = 1
$n = _Max($nblog, $nbpass)

For $i = 0 To $n - 1
    $loginmid = StringMid($login, $i + 1, 1)
    $passwordmid = StringMid($password, $i + 1, 1)
    $index1 = StringInStr($tab, $loginmid, 1) + 10
    $index2 = StringInStr($tab, $passwordmid, 1) + 10
    $sum = $sum + ($index1 * $n * ($i + 1)) * ($index2 * ($i + 1) * ($i + 1))
Next

MsgBox(0, "", "$nblog: " & $nblog & @CRLF & "$npass: " & $nbpass & @CRLF & "$n: " & $n & @CRLF & "$loginmid: " & $loginmid & @CRLF & "$passwordmid: " & $passwordmid & @CRLF & "$index1: " & $index1 & @CRLF & "$index2: " & $index2 & @CRLF & "$sum: " & $sum)

Re: [..] Traduire un javascript "checksum" en autoit

Posté : mer. 22 juil. 2009 11:53
par judgefred
Cela fonctionne parfaitement!

Je vous remercie sincerement pour votre aide, ainsi que les autres intervenants.

JudgeFred