AIO-Log, script de connexion à Dofus [windows]

Fil fermé
Partager Rechercher
bon, j'utilise aussi ce systeme depuis environ 3-4 ans (jamais eu de probleme pour l'instant, preuve que si hack il y a , il ne vient pas de ce genre d'utilisation )

personnellement, ayant a ma disposition environ 25 comptes différents, ca m'est bien utile pour taper mes mots de passe automatiquement.

mais de mon coté j'ai choisi de procéder de facon plus simple :
  1. je lance ma fenetre dofus
  2. je clique sur le raccourci de mon programme, il m'affiche alors une inputbox me demandant de rentrer un numéro, et une image .jpg juste au dessus me rappelant quel numéro correspond a quel compte.
  3. je choisis le compte que je veux connecter dans la liste, je sélectionne le numéro associé et je l'inscrit dans l'inputbox
  4. j'appuie sur "entrée", le programme cherche alors dans sa base de données les pass et identifiants associés et execute un mouvement de souris vers la zone de saisie des identifiants, puis valide.
  5. je recommence a l'étape 1 pour chaque compte que je veux connecter
  6. gain de temps = tout plein
un des défauts de mon programme est qu'il n'est adapté que pour une seule résolution d'écran, si je change de résolution alors les clics ne seront pas au bon endroit et je dois changer les coordonnées.

d'un point de vue sécurité, en effet AutoIt permet de compiler un script .au3 vers un .exe, et en plus il permet d'y adjoindre un mot de passe obligatoire en cas de décompilation. de plus, AutoIt est livré avec un décompileur pour pouvoir modifier le script .exe en le retransformant en .au3. sans le mot de pass choisi précédemment, il n'est pas possible de le décompiler, d'ou sécurité.

vous allez me dire, il suffit de lancer ton programme dans une page word au lieu de dofus pour avoir les identifiants : en effet, d'ou la possibilité de rentrer un mot de passe supplémentaire au lancement du script (donc, un seul modpass a retenir pour connecter tous ses comptes)

bref, chez moi ca marche tres bien, et j'en suis content

ptit édit : mon code est bien plus simple a écrire en plus, il est a base de boucle logique : n° de compte => variable a, si a = 1 alors connecter le compte "machintruc chouette" si a = 2 alors connecter le compte "biduletrucmachin"
Citation :
Publié par ptit soulier verni
bon, j'utilise aussi ce systeme depuis environ 3-4 ans (jamais eu de probleme pour l'instant, preuve que si hack il y a , il ne vient pas de ce genre d'utilisation )
C'est bien ce que je pensais aussi. ^^
(Je l'utilise que depuis 3~4 mois, mais ça revient au même. ^^)

Citation :
Publié par ptit soulier verni
de mon coté j'ai choisi de procéder de facon plus simple :
  1. je lance ma fenetre dofus
    (...........)
  2. gain de temps = tout plein
Oulàh, ça m'a l'air plus compliqué dit ainsi. (Peut-être qu'une fois en oeuvre, ça passe mieux ?)
Et par-contre, je sais pas inclure des images ni une liste dans une InputBox... Noob-AutoIt Powa. \o/

Citation :
Publié par ptit soulier verni
un des défauts de mon programme est qu'il n'est adapté que pour une seule résolution d'écran, si je change de résolution alors les clics ne seront pas au bon endroit et je dois changer les coordonnées.
Argh, c'est le mal. Un programme devrait (et doit !) être adaptable quel que soit l'utilisateur ! :s
(Booon okay, le script est réservé au utilisateurs de produit Micro$oft..Mais quelle que soit leur résolution, depuis 320/440 à 1440/900 en passant par du 1024/768.)

Citation :
Publié par ptit soulier verni
d'un point de vue sécurité, en effet AutoIt permet de compiler un script .au3 vers un .exe, et en plus il permet d'y adjoindre un mot de passe obligatoire en cas de décompilation. de plus, AutoIt est livré avec un décompileur pour pouvoir modifier le script .exe en le retransformant en .au3. sans le mot de pass choisi précédemment, il n'est pas possible de le décompiler, d'ou sécurité.
Je savais pas ça non-plus. (Mais j'ai pas cherché.. ^^)

Citation :
Publié par ptit soulier verni
vous allez me dire, il suffit de lancer ton programme dans une page word au lieu de dofus pour avoir les identifiants : en effet, d'ou la possibilité de rentrer un mot de passe supplémentaire au lancement du script (donc, un seul modpass a retenir pour connecter tous ses comptes)
Ah, sur ce point, je l'ai fait aussi (dans la version 1_x) !

Citation :
Publié par ptit soulier verni
bref, chez moi ca marche tres bien, et j'en suis content
Tant-mieux.

Citation :
Publié par ptit soulier verni
ptit édit : mon code est bien plus simple a écrire en plus, il est a base de boucle logique : n° de compte => variable a, si a = 1 alors connecter le compte "machintruc chouette" si a = 2 alors connecter le compte "biduletrucmachin"
J'me suis volontairement compliquée la tâche, je voulais avoir un accès "externe" au script pour différencier script et logins... M'enfin, la solution que j'ai choisie a des grosses lacunes. (Notament, je pourrais simplement compter le "nombre de lignes/3" du fichier.. \o/)

Bon, j'vais m'y mettre vraiment (ouaiiis, j'ai pas commencé, en fait.. -.-), et pondre un code de oufz0r qui rox sa simplicité et son chiffrement !

S'chouette de voir que chuis pas z'unique à avoir des (bonnes) z'idées... *_*

Il est rappelé aux personnes accompagnant les scripts qu'ils ne doivent pas stocker leurs logins dans leur pc. (mode "Voix SNCF" activé)
Ou ne pas le faire "en clair", dans tous les cas.

-> Compter le nombre de lignes du fichier texte
-> chiffrer les données selon un algo simple (voir plus haut)
-> déchiffrer les données selon le même algo (s'conseillé. n_n)
-> Le reste, à voir. (Notament : garder une possibilité à chacun de modifier le chiffrement à sa convenance.)

Dofusément,

Za.
@ptit soulier verni : Tes trucs et conditions logiques, ça ressemble furieusement à un CASE, ça. ->
Code:
CASE of Variable :
 1 : login/compte 1; end;
 2 : login/compte 2; end;
 3 : login/compte 3; end;
 Etc... chaque [valeur en début de ligne] étant la simplification de la formule : "If Variable = [valeur en début de ligne]"
EndCASE
("Case of... endCase" retranscrit du C, je crois.. ou du Pascal, honte sur moi de ne plus m'en souvenir. -.-)
Et j'ai contourné le truc en faisant un fichier qu est "en lui-même" le Case... Chaque ligne est la propre condition d'existence. (Faire de la théologie binaire, ça rox. o_o)
Citation :
Publié par Mipadeon
Comme je trouve l'idée plutôt bonne, j'ai fais quelques recherches...

Pour la commande enter :

Code:
Send("{Enter}")
Pour le multi compte, il suffit de copier coller le script autant de fois que vous avez de comptes a connecter en indiquant les identifiants et mot de passe.

Je connecte mes 3 comptes sans toucher au clavier, j'adore, j'adhère.
a quand la prochaine étape? des scripts qui jouent a notre place....
*mode ironie off*

serieusement je parie qu on va voir bientot de quoi faire suivre les perso a la queue leuleu
enfin c est dofus
Citation :
Publié par therevolution
Tu peux poster le code source ?
SplashImageOn ( "title", "C:\[...].JPG", 423, 199, 420, 200, 1) =>taille de l'image en pixel et coordonnées du coint supérieur gauche
$nb=InputBox ( "Auto-connect", "Connecter quel compte ?","1" ) =>choix du compte, valeur par défaut =1
SplashOff()
if $nb = 1 Then
$account = "truc" => test logique, a répéter autant de fois que nécessaire
$modpass = "machin"
EndIf
if $nb = 2 Then
$account = "bidule"
$modpass = "chouette"
EndIf

Ici, tous les autres comptes a connecter

mousemove(350,425,0) => coordonnée d'un point dans la zone de saisie de l'identifiant
mouseclick("left")
send($account)
sleep(500)
mousemove(350,525,0) => coordonnée d'un point dans la zone de saisie du modpass
mouseclick("left")
send($modpass)
Send("{Enter}") => vendu !
Citation :
Publié par ptit soulier verni
(...)
Simplification de ton code :
Code:
SplashImageOn ( "title", "C:\[...].JPG", 423, 199, 420, 200, 1)     =>taille de l'image en pixel et coordonnées du coint supérieur gauche
$nb = InputBox ( "Auto-connect", "Connecter quel compte ?","1" )    =>choix du compte, valeur par défaut =1
SplashOff()
Switch $nb
 Case 1
  $account = "truc"        => test logique, a répéter autant de fois que nécessaire
  $modpass = "machin"
 Case 2
  $account = "bidule"
  $modpass = "chouette"
 Case...
Ici, tous les autres comptes a connecter
EndSwitch

mouseclick("left", 350,425, 1, 0)
send($account & "{TAB}" & $modpass)
En plus simple ! n_n
(J'aurais jamais pensé à utiliser les splash. o_o)

Et voilà le DofusLog-v1_3, avec chiffrement simple ! ^^
(même fonctionnement que le DofusLog-v1_2, avec des transformations simples hex-string/string-hex, plus des "include" nécessaires à ces fonctions.)
Code:
#include <File.au3>
#include <String.au3>
#include <Array.au3>

Dim $aLog[3]
$repertoire = @ScriptDir
$fichier = "\logBis.txt"
$existe = _FileReadToArray($repertoire & $fichier, $aLog)
$compte = 1
$prgChemin = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Ankama\Dofus", "Path")

If $existe = 1 Then
	_ArrayDisplay($aLog)
	While $compte < (UBound($aLog)-1) ;UBound = "la dernière valeur de"
		$pseudo = _HexToString($aLog[$compte+1]) ;retranscription en "visible" de pseudo
		$execScript = MsgBox( 1, @ScriptName & " - Compte à logger", "Lancer le compte " & @CRLF & $pseudo & " ?")
		If $execScript = 1 Then
			ExitLoop
		EndIf
		$compte = $compte +3
	WEnd
	If $aLog[$compte+3] <> "" Then
		$test = InputBox( @ScriptName & " - Code du compte " & $pseudo, "Veuillez entrer le mot de passe pour accéder au compte de " & $pseudo & " :", "", "°M")
		If $test <> _HexToString($aLog[$compte+3]) Then
			MsgBox( 0x232, @ScriptName & " - Se Logguer", "Identification ratée.")
			Exit
		EndIf
	EndIf
Else
	Do
		$aLog[0] = InputBox( @ScriptName & " - Nouveau log", "Veuillez entrer un pseudonyme au compte :", "", " M")
	Until $aLog[0] <> ""
	Do
		$aLog[1] = InputBox( @ScriptName & " - Nom de compte de " & $aLog[0], "Entrez le nom de compte associé au pseudonyme " & $aLog[0] & " :", "", " M")
	Until $aLog[1] <> ""
	$aLog[1] &= "{TAB}"
	Do
		$aLog[2] = InputBox( @ScriptName & " - Mot de passe du compte de " & $aLog[0], "Entrez le mot de passe du compte associé au pseudonyme " & $aLog[0] & " :", "", "°M")
	Until $aLog[2] <> ""
	$aLog[1] &= $aLog[2]
	$aLog[2] = InputBox( @ScriptName & " - Mot de passe du pseudonyme " & $aLog[0], "Entrez un mot de passe pour utiliser le pseudonyme " & $aLog[0] & "," & @CRLF & "Ou laissez vide pour utilisation libre.", "","°")
	For $temp = 1 To 3 ;de pseudo à mdp
 		_ArrayPush($aLog, _StringToHex($aLog[0]))
	Next
	_FileWriteFromArray($repertoire & $fichier, $aLog, 0, 2)
	MsgBox(0, @ScriptName & " - Initialisation réussie", "Enregistrement effectué.")
EndIf

ShellExecute("Dofus.exe","", $prgChemin)
WinWaitActive("Dofus")
Do
	sleep(100)
Until MouseGetCursor( ) = 5 ;Curseur 5 = Curseur d'édition de texte
Send(_HexToString($aLog[$compte+2])) ;"login{tab}mdp"

Do
	sleep(100)
	$cur = MouseGetPos( )
Until ( (MouseGetCursor( ) = 0) And (PixelGetColor( $cur[0], $cur[1]) = 16750848) ) ;Curseur 0 = Curseur Web/Couleur 16750848 = #FF9900 = orange
	;Donc : que le pointeur soit sur du orange + en mode "web" (sur le bouton "ok", quoi)
MouseClick("left")
Et c'est vrai : c'est la partie "trouver le fichier/le créer" qui est la plus importante... Sinon, nos 2 scripts sont similaires.

Info : Vous pouvez maintenant utiliser ce script sans (trop) de risques, au vu d'un (faible) chiffrement des infos contenues. Mais attendez la version 1_4 pour un chiffrement par modulo, qui, là, sera "introuvable" (ou largement plus dur que maintenant).

Dofusément,

Za.

Et pour ce qui concerne les mots de pass Zarbis, j'ai fait mes tests de pass avec :
Surnom : "Yalala"
Compte : "aha"
Pass : "@@@"
mot de pass de Yalala : "123". Et ça marche nickel.
(Si vous pouviez me donner les caractères qui ne passent pas ? Sans me dire si ils sont -ou non- comprits dans votre pass, évidemment. >.>)
*Peut-être que les caractères UNICODE ne passent pas ?*
Salut Dino,

Normalement les seuls caractères qui risquent de ne pas passer sont ceux qui sont gérés par AutoIt en tant que combinaisons de touches ou carac systèmes AutoIt, donc pas de soucis pour l'encodage des caractères, tente juste de rajouter un truc du style :
Code:
; On remplace les symboles spéciaux par les codes AutoIt de saisie (Cf. Appendix:Send Key list)
; On s'occupe d'abord des accolades { et } puisqu'elles servent de marqueurs pour les caractères spéciaux
$liste_accolade = StringSplit($param, "{")
For $i = 1 To $liste_accolade[0]
   $liste_accolade[$i] = StringReplace($liste_accolade[$i], "}", "{}}")
Next
For $i = 1 To $liste_accolade[0]
   If $i = 1 Then
      $param = $liste_accolade[1]
   Else
      $param = $param & "{{}" & $liste_accolade[$i]
   EndIf
Next
; Puis on s'occupe des autres caractères spéciaux de marquages Win, Ctrl, Alt, et Shift ( !, #, ^ et + )
$param = StringReplace($param, "!", "{!}")
$param = StringReplace($param, "#", "{#}")
$param = StringReplace($param, "^", "{^}")
$param = StringReplace($param, "^", "{+}")
; Enfin on s'occupe des symboles de calcul arithmétique
$param = StringReplace($param, "*", "{NUMPADMULT}")
$param = StringReplace($param, "+", "{NUMPADADD}")
$param = StringReplace($param, "-", "{NUMPADSUB}")
$param = StringReplace($param, "/", "{NUMPADDIV}")
Tcho!

Auré
Si jamais Dofus intègre un véritable programme anti-bot, tous les comptes utilisant ce genre de scripts seront bannis.


Des gens, pleins de bonne volonté, avaient fait la même chose pour le jeu "Ogame" (jeu par navigateur), et lors d'une vague de bannissement, tous les gens qui utilisaient ce genre de truc ont été bannis.

L'idée est sympa, c'est pas très dur à faire, mais pour ce que ça apporte, je conseille de rester loin de ce genre de scripts inutiles.
Sympa, j'attendais un script dans ce genre, été régulièrement déco, et jouant pas mal de comptes.


Citation :
Si jamais Dofus intègre un véritable programme anti-bot, tous les comptes utilisant ce genre de scripts seront bannis.


Des gens, pleins de bonne volonté, avaient fait la même chose pour le jeu "Ogame" (jeu par navigateur), et lors d'une vague de bannissement, tous les gens qui utilisaient ce genre de truc ont été bannis.

L'idée est sympa, c'est pas très dur à faire, mais pour ce que ça apporte, je conseille de rester loin de ce genre de scripts inutiles.
Là je sais pas trop. L'avis d'un officiel sur la question serait pas mal.
Inutile, merci de pas généraliser ton avis.
Citation :
Publié par ptit soulier verni
personnellement, ayant a ma disposition environ 25 comptes différents, ca m'est bien utile pour taper mes mots de passe automatiquement.
Un poil beaucoup HS, mais à quoi te servent 25 comptes différents ?
Citation :
Publié par therevolution
Oui

Ca revient au meme si tu télécharges un keyloguer sur ton pc

D'un manière générale, utiliser ce genre d'outil est déconseillé, comme télécharger des fichiers sur un site non officiel de dofus, ou comme remplir un formulaire en notant son login et mot de passe pour gagner 1M de kamas...
Faux...
Tu peux toujours avoir un keylogger sur le pc de ton pote, mais il faut que tu puisse recuperer les informations enregistrées par celui là, donc avec un vers etc etc... ou alors aller directement chez lui, donc en fait c'est plus compliqué

Citation :
Publié par Roue de la Fortune
Y'a la fonction copier coller, donc nan, pas utile.
Ps : Je ne vois pas en quoi ma critique est inconstructive, pas la peine de dire que j'ai dit "c nul" ou ect...
Jte rappelle par contre que le copier coller, c'est en fait dans ta mémoire tampon du pc et non codé, à partir du moment où tu entre le code dans la barre pour te co il est direct codé, mais en copier coller il est stocké et non codé, donc tres facilement recuperable par n'importe quelle personne qui passe par là.


Sinon ouai pour le mot de passe ecrit dans un fichier c'est pas tip top, mais ceque vous pouvez faire par contre c'est changer votre pass pour le remplacer par une fausse commande dans votre script, et comme ca ca passera inapercu plus ou moins par le hackeur qui essaierais de vous voler votre compte
Quand je lance, le curseur ne se positionne pas automatiquement au niveau du champ du login, donc je dois manuellement bouger la souris, puis une fois dessus, j'ai l'erreur :
Code:
Line 54 (File "C:\test.au3"):

Send(_HexToString(âLog$compte+2]))
Send(_HexToString(^ERROR

Error: Array variable has incorrect number of subscripts or subscript dimension range exceeded.
Oui, il faut faire manuellement le passage de la souris sur la zone de texte. Mais c'est voulut.

Oulààààh, ça fait un bail que j'suis pas repassée par ici, moi !

Bon alors, que dire...
Les versions se sont enchaînées, et ne se ressemblent pas. ^^

J'en suis à la version 1_7, qui donne actuellement.. Une énorme différence avec les anciennes.
J'attends encore de faire une commande ou deux pour passer à la 2_x.

Donc, voilà le code :
Code:
#include <GUIConstants.au3>
#include <String.au3> ;Pour l'encryptage

Dim	$aLog [ 3 ]
$fichier = FileOpenDialog ( @ScriptName & " - Sélectionnez ou créez un fichier contenant vos logs", @ScriptDir, "Text files (*.txt)|All files (*.*)", 8, "Log.txt" )
$existe = _FileReadToArray2 ( $fichier, $aLog )
$prgChemin = RegRead ( "HKEY_LOCAL_MACHINE\SOFTWARE\Ankama\Dofus", "Path" )
Global	$NbLignes = 2
Global	$compte = 1
Global	$FenBase
Global	$Label
Global	$Lancer
Global	$Modifier
Global	$Nouveau
$Separ = 2 ;Séparateur, hauteur en pixels entre deux lignes
Global	$Ht = $Separ + 2 * 13 ;hauteur présumée par ligne ( 13 ) 1 * 13 pour 1 ligne, 2 * 13 pour 2, etc

If	Not	$existe	Then
	Modifier ( 1, $fichier )
	$compte = $NbLignes * ( $compte - 1 ) + 1
EndIf
_FileReadToArray2 ( $fichier, $aLog )
Dim	$Radio [ ( UBound ( $aLog ) + 1 ) / $NbLignes ]
Fenetre ( ( UBound ( $aLog ) - 1 ) / $NbLignes )

While	1
	$msg = GUIGetMsg ()
	Switch	$msg
		Case	0			
			ContinueLoop
		Case	$GUI_EVENT_CLOSE
			GUIDelete ( $FenBase )
			Exit
		Case	$Modifier
			DesAct ( 1 )
			Modifier ( $compte, $fichier )
			Desact ( 0 )
			GUICtrlSetData ( $Radio [ $compte ], $aLog [ ( $compte - 1 ) * $NbLignes + 1 ] )
		Case	$Nouveau
			ReDim	$aLog [ UBound ( $aLog ) + $NbLignes ]
			DesAct ( 1 )
			ReDim	$Radio [ UBound ( $Radio ) + 1 ]
			Modifier ( UBound ( $Radio ) - 1 , $fichier )
			GUIDelete ( $FenBase )
			Fenetre ( ( UBound ( $aLog ) - 1 ) / $NbLignes )
		Case	$Radio [ 1 ]	To	$Radio [ UBound ( $Radio ) - 1 ]
			If	$msg <> $Radio [ $compte ]	Then
				GUICtrlSetPos ( $Radio [ $compte ], 5, 27 + ( ( $compte - 1 ) * $Ht ) )
				While	$msg <> $Radio [ $compte ]
					$compte += 1
					If	$compte > ( UBound ( $Radio ) - 1 )	Then
						$compte = 1
					EndIf
				WEnd
				GUICtrlSetPos ( $Radio [ $compte ], 15, 30 + ( ( $compte - 1 ) * $Ht ) )
			Else
				ContinueCase
			EndIf
		Case	$Lancer
			DesAct ( 1 )
			While	1
				$compteBis = ( $compte - 1 ) * $NbLignes + 1
				If	StringInStr ( $aLog [ $compteBis + 1 ], "{TAB}" ) = 0	Then
					$aLog [ 0 ] = _StringEncrypt ( 0, $aLog [ $compteBis + 1 ], InputBox ( @ScriptName & " - Code du compte " & $aLog [ $compteBis ], "Veuillez entrer le mot de passe pour accéder au compte " & $aLog [ $compteBis ] & " :", "", "°M" ) )
					If	StringInStr ( $aLog [ 0 ], "{TAB}" ) = 0	Then
						DesAct ( 0 )
						$aLog [ 0 ] = Int ( ( UBound ( $aLog ) + 1 ) / $NbLignes )
						$compteBis = MsgBox ( 0x232, @ScriptName & " - Se Logguer", "Identification ratée." )
						If	$compteBis = 3	Then	Exit
						If	$compteBis = 4	Then	ContinueLoop
						If	$compteBis = 5	Then	ContinueCase
					EndIf
				Else
					$aLog[ 0 ] = $aLog [ $compteBis + 1 ]
				EndIf
				ExitLoop
			WEnd
			$compte = ( $compte - 1 ) * $NbLignes + 1
			$aLog [ $compte + 1 ] = $aLog [ 0 ]
			ExitLoop
	EndSwitch
WEnd
GUIDelete ( $FenBase )

If	MsgBox ( 0x51, @Scriptname, "Lancement de la fenêtre Dofus !" & @CRLF & "Annuler pour fermer le script.", 2 ) = 2	Then	Exit ;Annuler

ShellExecute ( "Dofus.exe", "", $prgChemin )
Do
	Do
		sleep ( 20 )
	Until	MouseGetCursor () = 5
	If	WinActive ( "Dofus" )	Then	MouseClick ( "left" )
	Sleep ( 20 )
Until	WinActive ( "Dofus" )
WinSetTitle ( "Dofus", "", "Dofus - " & $aLog [ $compte ] )
;~ Send ( "^f" ) ;Mode "plein écran"
Send ( $aLog [ $compte + 1 ] ) ;"login{tab}mdp"

Do
	sleep ( 20 )
	$cur = MouseGetPos ()
Until	( ( MouseGetCursor () = 0 )	And	( PixelGetColor ( $cur [ 0 ], $cur [ 1 ] ) = 0xFF9900 ) )
MouseClick ( "left" )

;============================================================
Func	Fenetre ( $tFen )
	$FenBase = GUICreate ( @ScriptName, 201, 50 + $tFen * $Ht + 30, -1, -1, 0x70000 )
	$Label = GUICtrlCreateLabel ( "Choisissez un compte à Logger :", 1, 5, -1, -1 )
	
	$Boutons = GUIStartGroup () ;Séparation des groupes, en préparation !
	$Lancer = GUICtrlCreateButton ( "Lancer !", 150, 18 + $Ht / 3 * $tFen , 48, 25 )
	GUICtrlSetResizing ( $Lancer, 4 + 768 )
	$Modifier = GUICtrlCreateButton ( "Modifier", 150, 33 + $tFen * $Ht, 48, 25, 0x8000 )
	GUICtrlSetResizing ( $Modifier, 4 + 64 + 768 )
	$Nouveau = GUICtrlCreateButton ( "Nouveau ", 1, 33 + $tFen * $Ht, -1, 25, 0x8000 )
	GUICtrlSetResizing ( $Nouveau, 2 + 64 + 768 )

	$compteBis = 1
	While	$compteBis < UBound ( $Radio )
		$Radio [ $compteBis ] = GUICtrlCreateRadio ( $aLog [ ( $compteBis ) * $NbLignes - 1 ] & " .", 5, 27 + ( ( $compteBis - 1 ) * $Ht ), 135 - 136, $Ht - 3, 0x2000 )
		GUICtrlSetData ( $Radio [ $compteBis ], $aLog [ ( $compteBis ) * $NbLignes - 1 ] )
		GUICtrlSetResizing ( $Radio [ $compteBis ], 2 + 32 + 512 )
		$compteBis += 1
	WEnd
	GUICtrlSetState ( $Radio [ $compte ], 0x0001 )
	GUICtrlSetPos ( $Radio [ $compte ], 15, 30 + ( $compte - 1 ) * $Ht )
	
	GUISetState ()
EndFunc

Func	Modifier ( $compteBis, $fich )
	$compteBis = $NbLignes * ( $compteBis - 1 ) + 1
	Do
		$aLog [ $compteBis ] = InputBox ( @ScriptName & " - Nouveau log", "Veuillez entrer un pseudonyme au compte :", $aLog [ $compteBis ], " M" )
		If	@error = 1	Then	Return
	Until	$aLog [ $compteBis ] <> ""
	_FileWriteToLine2 ( $fichier, $compteBis, $aLog [ $compteBis ], 1 )

	Do	
		$aLog [ $compteBis + 1 ] = InputBox ( @ScriptName & " - Nom de compte " & $aLog [ $compteBis ], "Entrez le nom de compte associé au pseudonyme " & $aLog [ $compteBis ] & " :", "", " M" )
		If	@error = 1	Then	Return
	Until	 $aLog [ $compteBis + 1 ] <> ""
	$aLog [ $compteBis + 1 ] &= "{TAB}"
	
	Do
		$aLog [ 0 ] = InputBox ( @ScriptName & " - Mot de passe du compte " & $aLog [ $compteBis ], "Entrez le mot de passe du compte associé au pseudonyme " & $aLog [ $compteBis ] & " :", "", "°M" )
		If	@error = 1	Then	Return
	Until	$aLog [ 0 ] <> ""
	$aLog [ $compteBis + 1 ] &= $aLog [ 0 ]
	
	$aLog [ $compteBis + 1 ] = _StringEncrypt ( 1, $aLog [ $compteBis + 1 ], InputBox ( @ScriptName & " - Mot de passe du pseudonyme " & $aLog [ $compteBis ], "Entrez un mot de passe pour utiliser le pseudonyme " & $aLog [ $compteBis ] & ", " & @CRLF & "Ou laissez tel-quel pour utilisation libre.", "", "°" ) )
	_FileWriteToLine2 ( $fichier, $compteBis + 1, $aLog [ $compteBis + 1 ], 1 )
EndFunc

Func	DesAct ( $Active )
	If	$Active = 1	Then
		GUICtrlSetState ( $Lancer, $GUI_DISABLE )
		GUICtrlSetState ( $Modifier, $GUI_DISABLE )
		GUICtrlSetState ( $Nouveau, $GUI_DISABLE )
	Else
		GUICtrlSetState ( $Lancer, $GUI_ENABLE )
		GUICtrlSetState ( $Modifier, $GUI_ENABLE )
		GUICtrlSetState ( $Nouveau, $GUI_ENABLE )
	EndIf
EndFunc

Func	_FileWriteToLine2 ( $sFile, $iLine, $sText, $fOverWrite = 0 )
	If	Not	FileExists ( $sFile )	Then	FileWrite ( $sFile, @CRLF )
	
	Local	$filtxt = FileRead ( $sFile, FileGetSize ( $sFile ) )
	$filtxt = StringSplit ( $filtxt, @CRLF, 1 )
	If	$filtxt [ 0 ] < $iLine	Then	ReDim	$filtxt [ $iLine + 1 ]
	
	Local	$fil = FileOpen ( $sFile, 2 )
	For	$i = 1	To	UBound ( $filtxt ) - 1
		If	$i = $iLine	Then
			If	$fOverWrite = 1	Then
				If	$sText <> @CRLF	Then
					If	$i < UBound ( $filtxt, 1 ) - 1	Then
						FileWrite ( $fil, $sText & @CRLF )
					ElseIf	$i = UBound ( $filtxt, 1 ) - 1	Then
						FileWrite ( $fil, $sText ) 
					EndIf
				Else
					If	$i < UBound ( $filtxt, 1 ) - 1	Then
						FileWrite ( $fil, $sText )
					EndIf
				EndIf
			EndIf
			If	$fOverWrite = 0	Then
				If	$i < UBound ( $filtxt, 1 ) - 1	Then
					FileWrite ( $fil, $sText & @CRLF )
					FileWrite ( $fil, $filtxt [ $i ] & @CRLF )
				ElseIf	$i = UBound ( $filtxt, 1 ) - 1	Then
					FileWrite ( $fil, $sText & @CRLF )
					FileWrite ( $fil, $filtxt [ $i ] )
				EndIf
			EndIf
		ElseIf	$i < UBound ( $filtxt, 1 ) - 1	Then
			FileWrite ( $fil, $filtxt [ $i ] & @CRLF )
		ElseIf	$i = UBound ( $filtxt, 1 ) - 1	Then
			FileWrite ( $fil, $filtxt [ $i ] )
		EndIf
	Next
	FileClose ( $fil )
	Return	1
EndFunc ;==>_FileWriteToLine2

Func	_FileReadToArray2 ( $sFilePath, ByRef	$aArray )
	Local	$hFile
	$hFile = FileOpen ( $sFilePath, 0 )
	If	$hFile = -1	Then
		SetError ( 1 )
		Return	0
	EndIf
	$aArray = StringSplit ( StringStripCR ( FileRead ( $hFile, FileGetSize ( $sFilePath ) ) ), @CRLF )
	FileClose ( $hFile )
	Return	1
EndFunc ;==>_FileReadToArray2
Hé oui, pour les observateurs, il y a maintenant un Encryptage !
J'ai trouvé l'encryptage dans les entrailles d'auto-it3, donc je l'utilise. ^^
(Merci à Wes Wolfe-Wolvereness, auteur de la fonction "_StringEncrypt" !)

Voici comment fonctionne ce -long- script :
Il demande l'emplacement qui contient (ou contiendra) le fichier nommé "Log.txt" de base. (Je sais, c'est nul comme nom, mais changez-le à votre guise. ^^)
Il recherche par défaut dans le répertoire où se trouve le script (@Scriptdir), vous pouvez changer ça aussi.
Si il l'a trouvé, il passe directement à l'affichage d'une liste de vos comptes, il ne vous reste plus qu'à choisir celui que vous souhaitez connecter, entrer la clef de décryptage si besoin, et passer votre souris sur la zone "nom de compte" et le bouton "ok".
Si il n'a pas trouvé le fichier, ou que vous en avez créé un nouveau (oui, c'est faisable), alors il vous demande le surnom du compte, le login, le mot de pass, eeeeeet ! la clef de chiffrement de ces deux derniers.
Il est donc maintenant beaucoup plus dur (voire impossible) de lire ce qui est écrit dans le fichier de log !
La suite reste identique, il affiche la liste des comptes trouvés dans le fichier, et connecte celui que vous avez choisit.

Voilààà, j'attendais avec impatience de trouver ce satané chiffrement avant de sortir une nouvelle version de DofusLog !

Toujours pas de vols de comptes en vue de ma part, je ne récupères toujours pas vos identifiants grâce à ce script, et vous êtes toujours seuls responsables de l'utilisation que vous faites du script ainsi que d'Auto-It.

/!\ Nouveauté ! /!\
Mode d'emploi :
- Installer AutoIt3 (nécessaire), téléchargeable ici (site officiel : http://www.autoitscript.com/autoit3/downloads.shtml)
(Assurez-vous de sélectionner le bouton par défaut "run script" avec un double-clic à la fin de l'installation.)
- Lancer SciTe (C:\Program Files\AutoIt3\SciTE\SciTe.exe) (C'est comme le bloc-notes de Windows, mais en mieux ^^)
- Copiez ce qui est dans la balise 'Code' de ce message (c'est le script)
- Collez-le dans la page blanche de SciTe
- Enregistrez le script où vous voulez, sous le nom que vous voulez ".au3". (À préciser sous Windows Vista, le .au3)
- Fermez SciTe. (Vous n'aurez plus jamais besoin de lui, sauf pour une nouvelle version du script !)
- Double-cliquez sur votre script ".au3" (le chose que vous avez sauvegardé juste avant).

Voilà, vous savez tout.

Maintenant, la suite, ce qui est prévu/pour lequel j'ai besoin d'aide :
- Supprimer une ligne particulière du fichier de logs (par exemple, un vieux compte inutilisé, ou un essai foiré)
- Regrouper les radios par groupe, pour permettre de garder le focus sur eux seuls
- Améliorer toujours la sécurité (il me semble que y'a un truc pas encore cool, j'y travaille déjà pour l'améliorer dans une version 1_7b ou 1_8)
- Tout autre chose que vous aimeriez voir, et à quoi je n'ai pas pensé (par exemple, pouvoir connecter plusieurs comptes de suite, et -pourquoi pas ?- dans un ordre choisit).

N'hésitez pas à me faire de report de bugs ici ou en MP, j'attends vos commentaires avec impatience !

Information sur la sécurité : Ayant maintenant un chiffrement, cette version de DofusLog est "propre" à la consommation. Mais ne laissez jamais trainer le fichier contenant les logs n'importe-où, question de principe !

Dofusément vôtre,

Za.
Sauf que le copié-collé stocke en clair tes identifiants dans le presse-papier de Winchose, ce qui fait qu'on y a accès comme on veut.
Pas avec ce script.

Tiens, pour l'exemple :
Code:
ClipGet ( )
Fonction fournie avec Auto-It par défaut tellement c'est simple.
"Returns a string containing the text on the clipboard."
"Transforme le presse-papier en une chaîne de caractères."

Et hop, voilà un ptit keylog qui se met à farfouiller dans le presse-papier aussi. Utile, le Ctrl-c/Ctrl-v, pour se protéger des keylogs ? Bof.

(Le meilleur moyen restant le clavier virtuel de Windows, bien que je n'aie rien cherché à ce sujet. -J'utilise mon script, c'est plus simple. ^^)

Oui, c'est une usine à gaz la première fois.
Mais toutes les premières fois sont dures. Après, ça va tout seul. n_n

Et voici la tête que ça a, chez-moi :
http://img149.imageshack.us/img149/5370/dofuslog17oq0.jpg
(Mais ça varie selon les paramètres Wintruc. ^^)

Voilà, sinon voir à simplifier quelques trucs, pour l'alléger ..? Je vais voir ça !

Za.

*GROS édit* Je souhaiterais savoir si :
- le clavier virtuel est réellement à l'abris des keylogs, et si non, comment y pallier ?
- la fonction "Send ( {key} )" d'auto-it envoie des informations comme un appui des touches claviers ? (et donc, c'est exactement aussi "nul" du point de vue d'un keylog) ou comme le clavier virtuel ? (voir première question avant.)

À noter que je n'utilise pas Mschut, et donc je n'ai -il me semble- jamais choppé de keyloggueur sur mon ordi. Je n'ai donc eu aucun soucis de sécurité avec mon script de ce côté-là.
(Inutile de m'envoyer des fichiers vérolés, je ne prend même pas la peine de lire les messages avec une pièce jointe, sauf quand j'attends un message avec une pièce-jointe.)
Citation :
Publié par Nikkau
C'est une super idée, perso je trouvais qu'il n'y avais pas assez de gens qui venaient pleurer la perte de leur compte sur JOL.
Connaissant la personne en question (Coucou Zamimule ), je peux te JURER qu'il ne compte pas voler les id's de qui que ce soit ( La preuve, sur not' forum adoré )

Edit au dessus : merci, z'ai la preuve que Dremis c't'une mulaa naah thanks <3
Citation :
Publié par ZaEnForce
- le clavier virtuel est réellement à l'abris des keylogs, et si non, comment y pallier ?
Théoriquement, oui. Mais il existe (il me semble) des keyloggers qui prennent aussi en compte les mouvements de la souris et rendent cette sécurité obsolète.
Les sites des banques l'ont d'ailleurs bien compris et proposent un clavier visuel aléatoire.
(Ptit édit : Dremis était ma mule, avant que je lui confie le perso. Depuis, c'est bien tout le temps le même joueur sur son personnage. -Et je n'ai plus accès à son compte. ^^)
Citation :
Publié par Ganjalo
Les sites des banques (...)proposent un clavier visuel aléatoire.
Je m'amuserais bien à coder un clavier visuel aléatoire pour le phunne, mais j'avoue que je ne pense pas l'intégrer un jour à DofusLog. ^^
(Qui aura certainement changé de nom d'ici-là, vu le projet du même acabit que je prépare par ailleurs.)

Contente d'apprendre que c'est (théoriquement . . .) à l'abris des keylogs, le clavier virtuel.
Reste à savoir comment déterminer si la fonction "Send()" envoie les touches "à la place du clavier" (irf), ou "depuis une zone virtuelle de la mémoire" (cool).

Za.
Bah, un clavier visuel aléatoire, ça passe quand il y a 10 chiffres... Mais quand il y a 26 lettres + 10 chiffres + caractères spéciaux... Je préfère encore prendre le risque de me faire dépouiller que passer 5 minutes à taper mon mot de passe.
Citation :
Publié par Ganjalo
Théoriquement, oui. Mais il existe (il me semble) des keyloggers qui prennent aussi en compte les mouvements de la souris et rendent cette sécurité obsolète.
Les sites des banques l'ont d'ailleurs bien compris et proposent un clavier visuel aléatoire.
En effet il est possible de créer, ce qu'on appelle un "Hook Souris", qui, contrairement au "Hook Clavier"( qui "intercepte" les touches tappées), lui, peut détecter les clics, leur rapidité, l'endroit où a été effectué le clic, les déplacements de souris etc...
Cependant, un hook souris n'est jamais fiable, il est très facile de contourner un hook souris, via par exemple, un clavier virtuel avec des touches aléatoirement placées.
Après, effectivement, on peut également s'amuser à prendre des captures d'écrans régulières pour identifier les clics, mais ça devient une appli très lourde, qui se fera très rapidement détecter par l'utilisateur (ou parfois même l'antivirus, pour les quelques uns qui sont équipés de VMwares).

Donc globalement, le clavier visuel est une bonne idée.
Question peut-être déplacée, mais vous aimeriez avoir un "clavier virtuel" intégré dans le DofusLog ?
(un truc qui apparaît seulement quand y'a besoin d'une saisie, pour remplacer totalement le clavier.)
(Et on passe les détails du style "ASCII/ANSI/UNICODE/etc ?" c'est pas prioritaire. ^^)

Et j'ai donc déjà eu un keylog sur mon PC, sauf que SpyBot m'a gentiment fait remarquer qu'il n'aimait pas "KeyH@@k" qui voulait rentrer dans mon registre.
Merci de l'info, DevilsSniper !

Za.
Hoy les gens c'est re-moi !

Comme j'suis un-peu égoïste, j'ai filé le script à ma guilde principale en preums ici, mais ne vous inquiétez pas, je vous le transmets aussi.

D'abord, l'avancement de la version 1_8, et ce que j'ai fait :
-> Supression d'une ligne dans les logs (Qui font que les anciens deviennent useless.. Il faut les re-faire entièrement. Un jour, j'aurai un Updater.. Un jour.)
-> Menu d'options pour faire comme les boutons (mais dans un menu, smieux.)
-> Menu de Fichier pour changer de fichier (au cas où s'que vous vous seriez gourés.)
-> Désactivation de la vérification de la bonne clef de cryptage (ouais, si vous vous trompez, y'a pu de vérification, bien fait pour vous !)
-> Plus discret, mais j'ai mit de l'ordre dans le script, c'est mieux présenté (enfin, 'faut le dire vite, huhu).

Et ensuite, amélioration de la release :
Je fournis un lien MegaUpload vers la version compilée (vous aurez juste un seul truc à lancer), un autre lien vers la version non-compilée (nécessitera AutoIt 3) et le code source ici toujours.
Pour ceux qui voudront vérifier et être sûrs du contenu du script, même technique qu'avant : vous copiez ce qui est dans la balise [ code]-[/code] ci-dessous, et collez dans Sci-Te, puis lancez le script sauvegardé.

P.S : La version 1_9 est aussi en préparation, mais j'ai la flemme de faire ça pour la 1_8 :
-> sauvegarde de certaines préférences (pas trop d'idée encore lesquelles, mais ça viendra !)
-> ajout d'une possibilité (à voir encore) pour pouvoir connecter plusieurs comptes en "une" fois (une seule sélection de 3 comptes, pour connecter les 3 comptes un après l'autre)
Et plein d'autres trucs. (Vi, je déborde d'imagination, je sais.)

Pour vous donner une idée de la tête que ça prend, voici chez moi :
http://img216.imageshack.us/img216/484/sanstitreyl3.jpg
Lien en téléchargement : Attention, ces versions 1_8 ont un soucis de suppression, il est déconseillé d'utiliser la fonction "supprimer" avant la 1_9. Désolée.
Version compilée (vous téléchargez, vous exécutez, et vous admirez. n_n) :
DofusLog 1_8.exe - 260.69 KB

Version script (nécessite toujours auto-it 3 ^^) :
DofusLog 1_8.au3 - 11.53 KB

Et le code entier (à copier-coller dans Sci-Te) : (Bug du suppression corrigé ici)
Code:
;Dernières modif' : Rien pour le moment. n_n
#include <GUIConstants.au3> ;Nécessaire surtout pour le $GUI_EVENT_CLOSE
#include <String.au3> ;Pour l'encryptage
;~ #include <File.au3>
;~ #include <Array.au3>

Global	$fichier, $prgChemin, $FenBase, $Label, $Lancer, $OLancer, $Modifier, $OModifier, $Nouveau, $ONouveau, $Supprimer, $OSupprimer,  $Boutons, $Options, $Fichiers, $FNouv, $FCharge, $FQuit, $aLog, $Radio
Global	$NbLignes = 2 ;Nombre de lignes utilisées par entrée dans le fichier de Log
Global	$compte = 1
Global	$Separ = 10 ;Séparateur, hauteur en pixels entre deux lignes
Global	$Hligne = 13 ;hauteur présumée par ligne ( 13 pixels de haut )
Global	$Ht = $Separ + 1 * $Hligne
Global	$msg
Charge ()

While	1
	$msg = GUIGetMsg ()
	Switch	$msg
		Case	0
			ContinueLoop
		Case	$GUI_EVENT_CLOSE, $FQuit
			GUIDelete ( $FenBase )
			Exit
		Case	$Radio [ 1 ]	To	$Radio [ UBound ( $Radio ) - 1 ]
			FRadio ()
		Case	$Modifier, $OModifier
			FModifier()
		Case	$Nouveau, $ONouveau
			FNouveau()
		Case	$Supprimer, $OSupprimer
			FSupprimer ()
		Case	$Lancer, $OLancer
			FLancer ()
		Case	$FNouv, $FCharge
			GUIDelete ( $FenBase )
			Charge ()
	EndSwitch
WEnd

;==============================Fonctions totalement créées par Za====================================
Func	Charge ()
	Do
		$fichier = FileOpenDialog ( @ScriptName & " - Sélectionnez ou créez un fichier contenant vos logs", @ScriptDir, "Text files (*.txt)|All files (*.*)", 8, "Log.txt" ) ;Spécial pour JoL ^^
;~ $fichier = @ScriptDir & "\Log.txt" ;Juste pour moi. ^^
		If	$fichier = ""	Then	Exit ;Ok, c'est violent, mais bon.. ^^
	Until	$fichier <> ""
	Dim	$aLog [ 3 ]
	$existe = _FileReadToArray2 ( $fichier, $aLog )
	$prgChemin = RegRead ( "HKEY_LOCAL_MACHINE\SOFTWARE\Ankama\Dofus", "Path" )

	If	Not	$existe	Then
		Modifier ( 1, $fichier )
	EndIf

	_FileReadToArray2 ( $fichier, $aLog )
	Dim	$Radio [ ( UBound ( $aLog ) + 1 ) / $NbLignes ]
	Fenetre ( ( UBound ( $aLog ) - 1 ) / $NbLignes )
EndFunc

Func	Fenetre ( $tFen )
	$FenBase = GUICreate ( @ScriptName, 201, 19 + 50 + $tFen * $Ht + 30, -1, -1, 0x70000 )
	$Label = GUICtrlCreateLabel ( "Choisissez un compte à Logger :", 1, 5, -1, -1 )
;~ 	GUICtrlSetResizing ( $Label, 2 + 32 + 512 )

	$Boutons = GUIStartGroup ( $FenBase ) ;Séparation des groupes, en préparation ! -utile pour la boucle de focus
	$Lancer = GUICtrlCreateButton ( "Lancer !", 150, 18 + $Ht / 3 * $tFen , 47, 25 )
	GUICtrlSetResizing ( $Lancer, 4 + 768 )
	$Modifier = GUICtrlCreateButton ( "Modifier", 150, 33 + $tFen * $Ht, 48, 25, 0x8000 )
	GUICtrlSetResizing ( $Modifier, 4 + 64 + 768 )
	$Nouveau = GUICtrlCreateButton ( "Nouveau ", 1, 33 + $tFen * $Ht, -1, 25, 0x8000 )
	GUICtrlSetResizing ( $Nouveau, 2 + 64 + 768 )
	$Supprimer = GUICTRLCreateButton ( "Supprimer", 75, 33 + $tFen * $Ht, -1, 25, 0x8000 )
	GUICtrlSetResizing ( $Supprimer, 8 + 64 + 768 )

	$Fichiers = GUICtrlCreateMenu ( "Fichier", -1, 0 )
	$FNouv = GUICtrlCreateMenuItem ( "Nouveau", $Fichiers, 0 )
	$FCharge = GUICtrlCreateMenuItem ( "Charger", $Fichiers, 1 )
	$FLigneVide = GUICtrlCreateMenuItem ( "", $Fichiers, 2 )
	$FQuit = GUICtrlCreateMenuItem ( "Quitter", $Fichiers, 3 )
	
	$Options = GUICtrlCreateMenu ( "Options", -1, 1 )
	$OLancer = GUICtrlCreateMenuItem ( "Lancer !", $Options, 0 )
	$ONouveau = GUICtrlCreateMenuItem ( "Nouveau", $Options, 1 )
	$OModifier = GUICtrlCreateMenuItem ( "Modifier", $Options, 2 )
	$OSupprimer = GUICtrlCreateMenuItem ( "Supprimer", $Options, 3 )

;~ 	$Radios = GUIStartGroup ( $Boutons )
	$compteBis = 1
;~ 	_ArrayDisplay( $Radio, "$Radio" )
	While	$compteBis < ( UBound ( $aLog ) ) / $NbLignes
		$Radio [ $compteBis ] = GUICtrlCreateRadio ( $aLog [ ( $compteBis ) * $NbLignes - 1 ] & " .", 5, 27 + ( ( $compteBis - 1 ) * $Ht ), 135 - 136, $Ht - 3, 0x2000 )
		GUICtrlSetData ( $Radio [ $compteBis ], $aLog [ ( $compteBis ) * $NbLignes - 1 ] )
		GUICtrlSetResizing ( $Radio [ $compteBis ], 2 + 32 + 512 )
		$compteBis += 1
	WEnd
	GUICtrlSetState ( $Radio [ $compte ], 0x0001 )
	GUICtrlSetPos ( $Radio [ $compte ], 15, 30 + ( $compte - 1 ) * $Ht )

	GUISetState ()
	DesAct ()
EndFunc

Func	DesAct ( $Active = 0 ) ;Réactive les boutons par défaut
	If	$Active = 1	Then
		GUICtrlSetState ( $Lancer, $GUI_DISABLE )
		GUICtrlSetState ( $Modifier, $GUI_DISABLE )
		GUICtrlSetState ( $Nouveau, $GUI_DISABLE )
		GUICtrlSetState ( $Supprimer, $GUI_DISABLE )
		GUICtrlSetState ( $Options, $GUI_DISABLE )
		GUICtrlSetState ( $Fichiers, $GUI_DISABLE )
	Else
		GUICtrlSetState ( $Lancer, $GUI_ENABLE )
		GUICtrlSetState ( $Modifier, $GUI_ENABLE )
		GUICtrlSetState ( $Nouveau, $GUI_ENABLE )
		GUICtrlSetState ( $Supprimer, $GUI_ENABLE )
		GUICtrlSetState ( $Options, $GUI_ENABLE )
		GUICtrlSetState ( $Fichiers, $GUI_ENABLE )
	EndIf
	If	( UBound ( $aLog ) - 1 ) / $NbLignes < 2	Then
		GUICtrlSetState ( $Supprimer, $GUI_DISABLE )
		GUICtrlSetState ( $OSupprimer, $GUI_DISABLE )
	EndIf
EndFunc

Func	FSupprimer ()
	If	MsgBox ( 0x51, @ScriptName & " - Suppression", "Souhaitez-vous vraiment détruire cette entrée ?" ) = 2	Then	Return
	DesAct ( 1 )
	$ligne = $compte * $NbLignes + 1 ;Correctif pour la suppression
	While	$ligne < UBound ( $aLog )
		$aLog [ $ligne - $NbLignes ] = $aLog [ $ligne ]
		$ligne += 1
	WEnd
	ReDim	$aLog [ UBound ( $aLog ) - $NbLignes ]
	ReDim	$Radio [ UBound ( $Radio ) - 1 ]
	If	$compte > ( UBound ( $aLog ) - 1 ) / $NbLignes	Then	$compte -= 1
	_FileWriteFromArray2 ( $fichier, $aLog, 1, UBound ( $aLog ) - 1 )
	GUIDelete ( $FenBase )
	Fenetre ( ( UBound ( $aLog ) - 1 ) / $NbLignes )
EndFunc

Func	FModifier ()
	DesAct ( 1 )
	If	Modifier ( $compte, $fichier )	Then
		GUIDelete ( $FenBase )
		Fenetre ( ( UBound ( $aLog ) - 1 ) / $NbLignes )
	Else
		Desact ()
	EndIf
EndFunc

Func	FNouveau ()
	DesAct ( 1 )
	ReDim	$aLog [ UBound ( $aLog ) + $NbLignes ]
	ReDim	$Radio [ UBound ( $Radio ) + 1 ]
	If	Modifier ( ( ( UBound ( $aLog ) - 1 ) / $NbLignes ) , $fichier )	Then
		GUIDelete ( $FenBase )
		Fenetre ( ( UBound ( $aLog ) - 1 ) / $NbLignes )
	Else
		ReDim	$aLog [ UBound ( $aLog ) - $NbLignes ]
		ReDim	$Radio [ UBound ( $Radio ) - 1 ]
	EndIf
	DesAct ()
EndFunc

Func	Modifier ( $compteBis, $fich )
	$compteBis = $NbLignes * ( $compteBis - 1 ) + 1
	Local	$FenetreModif = GUICreate ( @ScriptName, 200, $HLigne * 12 )
	Local	$LabelSurnom = GUICtrlCreateLabel ( "Veuillez entrer un" & @CRLF & " pseudonyme :", 0, 0 )
	Local	$LabelClef = GUICtrlCreateLabel ( @CRLF & "Clef de cyptage :", 120, 0 )
	Local	$LabelNDC = GUICtrlCreateLabel ( "Veuillez entrer le nom du compte Dofus :", 0, $Hligne * 4 )
	Local	$LabelMDP = GUICtrlCreateLabel ( "Veuillez entrer le mot de pass associé :", 0, $Hligne * 7 )
	Local	$InputPseudo = GUICtrlCreateInput ( $aLog [ $compteBis ] , 2, $Hligne * 2, 125 )
	Local	$InputClef = GUICtrlCreateInput ( "", 149, $Hligne * 2, 50)
	Local	$InputNDC = GUICtrlCreateInput ( "", 2, $Hligne * 5, 196 )
	Local	$InputMDP = GUICtrlCreateInput ( "", 2, $Hligne * 8, 196 )
	Local	$BValide = GUICtrlCreateButton ( "Valider", 2, $Hligne * 10 )
	Local	$BAnnule = GUICtrlCreateButton ( "Annuler", 100, $Hligne * 10 )
	
	GUISetState ()
	
	While	1
		$Mmsg = GUIGetMsg ()
		Switch	$Mmsg
			Case	0
				ContinueLoop
			Case	$GUI_EVENT_CLOSE
				GUIDelete ( $FenetreModif )
				Return 0
			Case	$BAnnule
				GUIDelete ( $FenetreModif )
				Return 0
			Case	$BValide
				If	MsgBox ( 0x51, @ScriptName & " - Modifications", "Attention, vous vous apprêtez à" & @CRLF & "modifier définitivement ces données." & @CRLF & "Êtes-vous sûr ?") = 2	Then	Return 0
				If	GUICtrlRead ( $InputPseudo ) <> ""	Then
					$aLog [ $compteBis ] = GUICtrlRead ( $InputPseudo, 0 )
					_FileWriteToLine2 ( $fichier, $compteBis, $aLog [ $compteBis ], 1 )
					If	GUICtrlRead ( $InputNDC ) <> ""	and	GUICtrlRead ( $InputMDP ) <> ""	Then
						If	GUICtrlRead ( $InputClef ) = ""	Then
							$aLog [ $compteBis + 1 ] = GUICtrlRead ( $InputNDC ) & "{TAB}" & GUICtrlRead ( $InputMDP )
						Else
							$aLog [ $compteBis + 1 ] = _StringEncrypt ( 1, GUICtrlRead ( $InputNDC ), GUICtrlRead ( $InputClef ) ) & "{TAB}" & _StringEncrypt ( 1, GUICtrlRead ( $InputMDP ), GUICtrlRead ( $InputClef ) )
						EndIf
						_FileWriteToLine2 ( $fichier, $compteBis + 1, $aLog [ $compteBis + 1], 1 )
					EndIf
				EndIf
				GUIDelete ( $FenetreModif )
				Return 1
		EndSwitch
	WEnd
EndFunc

Func	FRadio ()
	If	$msg <> $Radio [ $compte ]	Then
		GUICtrlSetPos ( $Radio [ $compte ], 5, 27 + ( ( $compte - 1 ) * $Ht ) )
		While	$msg <> $Radio [ $compte ]
			$compte += 1
			If	$compte > ( UBound ( $Radio ) - 1 )	Then
				$compte = 1
			EndIf
		WEnd
		GUICtrlSetPos ( $Radio [ $compte ], 15, 30 + ( ( $compte - 1 ) * $Ht ) )
	Else
		FLancer ()
	EndIf
EndFunc

Func	FLancer ()
	DesAct ( 1 )
	Local	$compteBis = ( $compte - 1 ) * $NbLignes + 1
;~ 	If	StringInStr ( $aLog [ $compteBis +1 ], "[TAB}" ) = 0	Then	Return ;vérif alakon, à faire pour la prochaine version ^^
	Local	$Clef = InputBox ( @ScriptName & " - Code du compte " & $aLog [ $compteBis ], "Veuillez entrer la clef de " & $aLog [ $compteBis ] & " :", "", "°" )
	Local	$NDCMDP = StringSplit ( $aLog [ $compteBis + 1 ], "{TAB}", 1 )

	If	$Clef <> ""	Then
		$NDCMDP [ 1 ] = _StringEncrypt ( 0, $NDCMDP [ 1 ], $Clef )
		$NDCMDP [ 2 ] = _StringEncrypt ( 0, $NDCMDP [ 2 ], $Clef )
	EndIf

	If	MsgBox ( 0x51, @ScriptName, "Lancement de la fenêtre Dofus !" & @CRLF & "Cliquez sur Annuler pour fermer.", 2 ) <> 2	Then
		ShellExecute ( "Dofus.exe", "", $prgChemin )
		Do
			Do
				sleep ( 20 )
			Until	MouseGetCursor () = 5
			If	WinActive ( "Dofus" )	Then	MouseClick ( "left" )
			Sleep ( 20 )
		Until	WinActive ( "Dofus" )
		WinSetTitle ( "Dofus", "", "Dofus - " & $aLog [ $compteBis ] )
;~ Send ( "^f" ) ;Mode "plein écran"
		Send ( $NDCMDP [ 1 ], 1 )
		Send ( "{TAB}" )
		Send ( $NDCMDP [ 2 ], 1 )

		Do
			sleep ( 50 )
			$cur = MouseGetPos ()
		Until	( ( MouseGetCursor () = 0 )	And	( PixelGetColor ( $cur [ 0 ], $cur [ 1 ] ) = 0xFF9900 ) )
		MouseClick ( "left" )
	EndIf
	DesAct ()
EndFunc
;==========================Fonctions AutoIt 3 modifiées========================================
Func	_FileWriteToLine2 ( $sFile, $iLine, $sText, $fOverWrite = 0 )
	If	Not	FileExists ( $sFile )	Then	FileWrite ( $sFile, @CRLF )
	
	Local	$filtxt = FileRead ( $sFile, FileGetSize ( $sFile ) )
	$filtxt = StringSplit ( $filtxt, @CRLF, 1 )
	If	$filtxt [ 0 ] < $iLine	Then	ReDim	$filtxt [ $iLine + 1 ]
	
	Local	$fil = FileOpen ( $sFile, 2 ), $i
	For	$i = 1	To	UBound ( $filtxt ) - 1
		If	$i = $iLine	Then
			If	$fOverWrite = 1	Then
				If	$sText <> @CRLF	Then
					If	$i < UBound ( $filtxt, 1 ) - 1	Then
						FileWrite ( $fil, $sText & @CRLF )
					ElseIf	$i = UBound ( $filtxt, 1 ) - 1	Then
						FileWrite ( $fil, $sText ) 
					EndIf
				Else
					If	$i < UBound ( $filtxt, 1 ) - 1	Then
						FileWrite ( $fil, $sText )
					EndIf
				EndIf
			EndIf
			If	$fOverWrite = 0	Then
				If	$i < UBound ( $filtxt, 1 ) - 1	Then
					FileWrite ( $fil, $sText & @CRLF )
					FileWrite ( $fil, $filtxt [ $i ] & @CRLF )
				ElseIf	$i = UBound ( $filtxt, 1 ) - 1	Then
					FileWrite ( $fil, $sText & @CRLF )
					FileWrite ( $fil, $filtxt [ $i ] )
				EndIf
			EndIf
		ElseIf	$i < UBound ( $filtxt, 1 ) - 1	Then
			FileWrite ( $fil, $filtxt [ $i ] & @CRLF )
		ElseIf	$i = UBound ( $filtxt, 1 ) - 1	Then
			FileWrite ( $fil, $filtxt [ $i ] )
		EndIf
	Next
	FileClose ( $fil )
	Return	1
EndFunc ;==>_FileWriteToLine2

Func _FileWriteFromArray2 ( $File, $a_Array, $i_Base = 0, $i_UBound = -1 )
	; Open output file for overwrite by default, or use input file handle if passed
	Local	$hFile, $x
	If	IsString ( $File )	Then
		$hFile = FileOpen ( $File, 2 )
	Else
		$hFile = $File
	EndIf
	If	$hFile = -1	Then	Return	SetError ( 1, 0, 0 )

	If	$i_UBound < 1	Then	$i_UBound = UBound ( $a_Array )

	; Write array data to file
	$x = $i_Base
	Do
		FileWrite ( $hFile, $a_Array [ $x ] & @CRLF )
		$x += 1
	Until	$x = $i_UBound
	FileWrite ( $hFile, $a_Array [ $i_UBound ] )

	; Close file only if specified by a string path
	If	IsString ( $File )	Then	FileClose ( $hFile )
EndFunc   ;==>_FileWriteFromArray2

Func	_FileReadToArray2 ( $sFilePath, ByRef	$aArray )
	Local	$hFile
	$hFile = FileOpen ( $sFilePath, 0 )
	If	$hFile = -1	Then
		SetError ( 1 )
		Return	0
	EndIf
	$aArray = StringSplit ( StringStripCR ( FileRead ( $hFile, FileGetSize ( $sFilePath ) ) ), @CRLF )
	FileClose ( $hFile )
	Return	1
EndFunc ;==>_FileReadToArray2
Voilà, 11742 caractères pour 326 lignes.. Pfiou, à la prochaine pour la 1_9 !

Et n'hésitez pas à me faire vos retours de commentaires.

Dofusément,

Za.
Fil fermé

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés