[Source] Login Cheat-Gam3 + sauvegarde des cookies [Vb.Net]


Ben

Master Chief
Ancien staff
3 Mars 2011
4,070
3
603
Un peut partout.
Salut, je vois que cette section ne bouge quasiment jamais ...

Donc je partage une source codé par moi qui vous permet de faire un system de login sur CG3 pour peut-être des cheats réservé aux membres d'ici ?

Dans cette source vous pouvez comprendre à peux près tous ce que je fait, vue que j'ai mis des annotations à cotés de ce qui est important (et même ce qui est moins important)

Alors les fonctions :
-Se loguer sur CG3.

-
Enregistrer les identifiants dans les paramètres de l'application.

-
Enregistrer les cookies de connexion dans les paramètres de l'application, et la création de nouveaux cookies avec les valeurs des cookies des précédentes connexion. (ce qui fait qu'une fois que la personne c'est logué sur vôtre programme il n'a plus besoin de se reconnecter à chaque lancement de l'application)


Fonctions supplémentaire
(non utile pour vôtre programme) :
-
Vous pouvez tester le cookie créé avec une requête "GET".

-
Vous pouvez aussi afficher le contenue du CookieContainder sous forme de tableaux : "Noms : Value" (il y a 6 cookies qui se créé lors d'une identification sur CG3)

Aperçu :

-En gros si vous n'êtes pas une bille en Vb.Net vous pouvez très facilement comprendre comment tous cela fonctionne !

Télécharger :
 

Pièces jointes

ced5959

Membre
23 Août 2011
15
0
301
Salut et merci pour t'es source, j'aimerais savoir comment as tu recupérer le nombre de cookies necessaire a l'identification sur CG3?
 

Ben

Master Chief
Ancien staff
3 Mars 2011
4,070
3
603
Un peut partout.
En fessant des testes ;) regarde le code.
En me logant sur CG3 le serveur renvois 6 cookies, c'est en essayant d'en récupérer
plus que j'ai trouver le nombre 5 (en comptant le 0 ça fait 6)

For i As Integer = 0 To 5
txt_val = txt_val + _
Master_cookies.GetCookies(cg3_uri).Item(i).Name & " : " & _
Master_cookies.GetCookies(cg3_uri).Item(i).Value & vbCrLf
Next
Exemple si je met 6 ou 7 ou n'importe quel nombre plus élevé sa me ferra une erreur et je serrais à ce moment que le serveur ne renvois pas plus de cookies.
For i As Integer = 0 To 7
txt_val = txt_val + _
Master_cookies.GetCookies(cg3_uri).Item(i).Name & " : " & _
Master_cookies.GetCookies(cg3_uri).Item(i).Value & vbCrLf
Next
 

Evaelis

La Voix de la Sagesse
Administrateur
Marchand
28 Avr. 2010
23,002
456
1,699
Valhalla
For i = 0 to Master_cookies.GetCookies(cg3_uri).Items.length
 

SonGoku

Je suis Légendaire
Ancien staff
27 Mars 2011
6,125
73
954
Alpha
Ah ça, ça peut être pas mal du tout !

Je test ça ce soir

Cordialement SonGoku
 

NePk

Membre actif
8 Nov. 2011
149
0
922
Cherche bien :P
Yo !
J'ai utilisé tes sources pour un petit programme de vote auto pour un serveur privé, il est propre (m'enfin ... j'utilise quand même un timer, mais soit dit en passant je l'utilise proprement, puisque l'intervalle est choisie par l'utilisateur et enregistrée dans appdata/roaming :P).

Mais j'ai un problème, je l'utilise beaucoup, et il ya quelques types de bugs que je n'arrive pas à résoudre:
1- timeout
2- 500
(c'est celles que je trouve le plus souvent).
Et ces erreurs arrivent beaucoup et arrêtent le programme :/

Donc je me demandais si tu pouvais pas expliquer comment utiliser system.net.WebExeption.
Je m'y connais pas troptrop (un minimum quand même), apparemment il y a un Handle ?
 

Ben

Master Chief
Ancien staff
3 Mars 2011
4,070
3
603
Un peut partout.
hmm tu utilise quoi dans ce timer ?

Ces bug's,
1- timeout
2- 500
arrive quand et ou c'est la réponse du serveur tous simplement non ?
Soit plus clair please !

Pour que les erreurs n’arrête pas ton application suffit d'utiliser :
Try
'Ce que tu veux faire
Catch ex As Exception
End Try
Si tu veux afficher l'erreur sans faire planter l'appli tu à juste à récupérer le message d'erreur :
Try
'Ce que tu veux faire
Catch ex As Exception
MsgBox(ex.Message)
End Try
Mais bon si tu m’explique mieux les problèmes que tu as pas besoin de passer par là et suffit de faire des ajustement aux niveaux de la requête, exemple mettre une limite de temps de réponse du serveur car apparemment c'est de là que viens ton problème.
 

NePk

Membre actif
8 Nov. 2011
149
0
922
Cherche bien :P
Code:
[COLOR="RoyalBlue"]Public Function[/COLOR] Connexion([COLOR="RoyalBlue"]ByVal[/COLOR] NDC [COLOR="RoyalBlue"]As String[/COLOR], _
                              [COLOR="RoyalBlue"]ByVal[/COLOR] MDP [COLOR="RoyalBlue"]As String[/COLOR], _
                             [COLOR="RoyalBlue"] ByVal[/COLOR] Mine_Cookies [COLOR="RoyalBlue"]As[/COLOR] [COLOR="DimGray"]CookieContainer[/COLOR])

        [COLOR="Green"]'Variable pour stocker le code source[/COLOR]
        [COLOR="RoyalBlue"]Dim[/COLOR] CodeSource_Page [COLOR="RoyalBlue"]As String[/COLOR]
       [COLOR="Green"] 'ça c'est ce que j'envoie[/COLOR]
        [COLOR="RoyalBlue"]Dim[/COLOR] PostData [COLOR="RoyalBlue"]As String[/COLOR] = [COLOR="Sienna"]"pseudo="[/COLOR] & NDC & [COLOR="Sienna"]"&pass="[/COLOR] & MDP
       [COLOR="Green"] 'Converti en bytes[/COLOR]
        [COLOR="RoyalBlue"]Dim[/COLOR] PostData_asbyte [COLOR="RoyalBlue"]As Byte[/COLOR]() = System.Text.[COLOR="DimGray"]ASCIIEncoding[/COLOR].ASCII.GetBytes(PostData)
        [COLOR="Green"]'Ma HTTPwebrequest et ses paramètres[/COLOR]
            [COLOR="RoyalBlue"]Dim[/COLOR] ReqHTTP [COLOR="RoyalBlue"]As[/COLOR] [COLOR="DimGray"]HttpWebRequest[/COLOR] = [COLOR="RoyalBlue"]DirectCast[/COLOR]([COLOR="DimGray"]HttpWebRequest[/COLOR].Create(Mine_ID), [COLOR="DimGray"]HttpWebRequest[/COLOR])
            
            [COLOR="RoyalBlue"]With[/COLOR] ReqHTTP
                .Method = [COLOR="Sienna"]"POST"[/COLOR]
                .CookieContainer = Mine_Cookies
                .ContentType = [COLOR="Sienna"]"application/x-www-form-urlencoded"[/COLOR]
                .UserAgent = [COLOR="Sienna"]"Mozilla/5.0 (Windows NT 5.1; rv:19.0) Gecko/20100101 Firefox/19.0"[/COLOR]
                .Headers.Add([COLOR="Sienna"]"Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3"[/COLOR])
                .Accept = [COLOR="Sienna"]"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"[/COLOR]
                .KeepAlive = [COLOR="RoyalBlue"]True[/COLOR]
                .Referer = URL
                .ContentLength = PostData_asbyte.Length
            [COLOR="RoyalBlue"]End With[/COLOR]
            [COLOR="Green"]'On écrit dans le stream[/COLOR]
            [COLOR="RoyalBlue"]Dim[/COLOR] ReqHTTP_Stream [COLOR="RoyalBlue"]As[/COLOR] [COLOR="DimGray"]Stream[/COLOR] = ReqHTTP.GetRequestStream()
            ReqHTTP_Stream.Write(PostData_asbyte, 0, PostData_asbyte.Length)
            ReqHTTP_Stream.Close()

           
               [COLOR="Green"] 'On prends la réponse[/COLOR]
        [COLOR="RoyalBlue"]Dim[/COLOR] ReqResponse [COLOR="RoyalBlue"]As [/COLOR][COLOR="DimGray"]HttpWebResponse[/COLOR] = [COLOR="RoyalBlue"]DirectCast[/COLOR](ReqHTTP.GetResponse(), [COLOR="DimGray"]HttpWebResponse[/COLOR])
                Mine_Cookies.Add(ReqResponse.Cookies)
               [COLOR="Green"] 'On récupère le code source[/COLOR]
                [COLOR="RoyalBlue"]Dim[/COLOR] ReqHTTP_Streamreader [COLOR="RoyalBlue"]As New[/COLOR] [COLOR="DimGray"]StreamReader[/COLOR](ReqResponse.GetResponseStream(), [COLOR="DimGray"]Encoding[/COLOR].GetEncoding([COLOR="Sienna"]"windows-1252"[/COLOR]))
               [COLOR="Green"] ' ... qu'on mets dans la variable[/COLOR]
                CodeSource_Page = ReqHTTP_Streamreader.ReadToEnd

                [COLOR="Green"]'''''On interprète le code source[/COLOR]
. . .
    [COLOR="RoyalBlue"]End Function[/COLOR]
Voilà un bout de mon code.
Je ne sais pas d'où vient le bug, je sais juste que j'ai un timeout (souvent) ou une erreur 500, les deux c'est le serveur qui met trop de temps à repondre ou qui ne réponds pas . . .

Mais logiquement c'est au niveau de la HttpWebResponse, puisqu'il n'y a pas d'erreur d'envoi. Ce qui bug c'est la réponse.


---------

Dans le timer j'ai mis l'appel de la fonction de vote, que j'ai mis dans un fichier class.
ce que fait mon programme: Lancement: Demande du ndc/mdp; quand on appuies sur le bouton, il essaye de se connecter au site du serveur privé avec les ID (HTTPwebrequest toujours), pour ça j'utilise une fonction(celle au dessus), qui renvoie true si ça a marché, false si ça n'a pas marché, si les ID sont bons (donc true) ça ouvre un formulaire(le même pour chaque compte connecté, mis à part les variables NDC et MDP qui changent), bien sûr ce formulaire ne s'ouvre pas si le compte est déjà co, Après ya deux boutons un qui lance le timer(qui appel la fonction toutes les XXXX milisecondes), et un qui appel tout de suite la fonction, sans le timer (soit un vote direct).
 
Dernière édition:

Ben

Master Chief
Ancien staff
3 Mars 2011
4,070
3
603
Un peut partout.
Ajoute pour les paramètres de la requête : (fait des testes mais je pense qu'entre 5000 & 8000 c'est le bon timing)
.Timeout = 7000
En fessant ça la requête s'annule aux bout du temps indiqué (7sec)

Mais le problème suivant se fait aux niveaux de la réponse donc là comme ça j'utiliserais un Try comme je t'ai dis plus haut :


Code:
[COLOR=RoyalBlue]Public Function[/COLOR] Connexion([COLOR=RoyalBlue]ByVal[/COLOR] NDC [COLOR=RoyalBlue]As String[/COLOR], _
                              [COLOR=RoyalBlue]ByVal[/COLOR] MDP [COLOR=RoyalBlue]As String[/COLOR], _
                             [COLOR=RoyalBlue] ByVal[/COLOR] Mine_Cookies [COLOR=RoyalBlue]As[/COLOR] [COLOR=DimGray]CookieContainer[/COLOR])
        [COLOR=RoyalBlue]Dim[/COLOR] CodeSource_Page [COLOR=RoyalBlue]As String[/COLOR]
        [COLOR=RoyalBlue]Dim[/COLOR] PostData [COLOR=RoyalBlue]As String[/COLOR] = [COLOR=Sienna]"pseudo="[/COLOR] & NDC & [COLOR=Sienna]"&pass="[/COLOR] & MDP
        [COLOR=RoyalBlue]Dim[/COLOR] PostData_asbyte [COLOR=RoyalBlue]As Byte[/COLOR]() = System.Text.[COLOR=DimGray]ASCIIEncoding[/COLOR].ASCII.GetBytes(PostData)
            [COLOR=RoyalBlue]Dim[/COLOR] ReqHTTP [COLOR=RoyalBlue]As[/COLOR] [COLOR=DimGray]HttpWebRequest[/COLOR] = [COLOR=RoyalBlue]DirectCast[/COLOR]([COLOR=DimGray]HttpWebRequest[/COLOR].Create(Mine_ID), [COLOR=DimGray]HttpWebRequest[/COLOR])
            
            [COLOR=RoyalBlue]With[/COLOR] ReqHTTP
                .Method = [COLOR=Sienna]"POST"[/COLOR]
                .CookieContainer = Mine_Cookies
                .ContentType = [COLOR=Sienna]"application/x-www-form-urlencoded"[/COLOR]
                .UserAgent = [COLOR=Sienna]"Mozilla/5.0 (Windows NT 5.1; rv:19.0) Gecko/20100101 Firefox/19.0"[/COLOR]
                .Headers.Add([COLOR=Sienna]"Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3"[/COLOR])
                .Accept = [COLOR=Sienna]"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"[/COLOR]
                .KeepAlive = [COLOR=RoyalBlue]True[/COLOR]
                .Referer = URL
                .ContentLength = PostData_asbyte.Length
                .Timeout = 7000
            [COLOR=RoyalBlue]End With[/COLOR]
            
            [COLOR=RoyalBlue]Try[/COLOR]
            [COLOR=RoyalBlue]Dim[/COLOR] ReqHTTP_Stream [COLOR=RoyalBlue]As[/COLOR] [COLOR=DimGray]Stream[/COLOR] = ReqHTTP.GetRequestStream()
            ReqHTTP_Stream.Write(PostData_asbyte, 0, PostData_asbyte.Length)
            ReqHTTP_Stream.Close()

        [COLOR=RoyalBlue]Dim[/COLOR] ReqResponse [COLOR=RoyalBlue]As [/COLOR][COLOR=DimGray]HttpWebResponse[/COLOR] = [COLOR=RoyalBlue]DirectCast[/COLOR](ReqHTTP.GetResponse(), [COLOR=DimGray]HttpWebResponse[/COLOR])
                Mine_Cookies.Add(ReqResponse.Cookies)
                [COLOR=RoyalBlue]Dim[/COLOR] ReqHTTP_Streamreader [COLOR=RoyalBlue]As New[/COLOR] [COLOR=DimGray]StreamReader[/COLOR](ReqResponse.GetResponseStream(), [COLOR=DimGray]Encoding[/COLOR].GetEncoding([COLOR=Sienna]"windows-1252"[/COLOR]))
                CodeSource_Page = ReqHTTP_Streamreader.ReadToEnd
    [COLOR=RoyalBlue]Catch[/COLOR] ex [COLOR=RoyalBlue]As[/COLOR] [COLOR="DimGray"]Exception[/COLOR]
            '[COLOR="SeaGreen"]MsgBox(ex.Message)[/COLOR]
        [COLOR=RoyalBlue]End Try[/COLOR]

    [COLOR=RoyalBlue]End Function[/COLOR]
Voilà dis moi si t'a encore des choses à demander ;)
 

NePk

Membre actif
8 Nov. 2011
149
0
922
Cherche bien :P
J'ai un nouveau problème: J'ai une grande textbox où le programme écrit pour voir l’avancement (ex. Vote effectué à 14:45:23 22/02/2003). Et le message "Vote échoué, cause: déjà voté" apparait alors que je peux voter manuellement. Comme si la page qui se chargeait était une page déjà chargée précédemment.

Y a t'il un système qui garde les pages chargées ou je ne sais quoi ?

Note: je vais faire des tests cette nuit en changeant le timeout. J'ai fait un système de logs (variable exception.tostring dans un fichier texte avec la date(pour chaque exception)) et j'ai trouvé qu'à chaque vote j'avais un timeout. donc je test en mettant "ReqHTTP.timeout = 7000" je ne peux pas mettre de timeout à la response
 
Dernière édition:

Ben

Master Chief
Ancien staff
3 Mars 2011
4,070
3
603
Un peut partout.
Si à chaque vote tu as un timeout, c'est ou bien que t'a une connexion de merde ou c'est le serveur qui est pourris de chez pourris ... car la moyenne pour une réponse c'est 5secondes, et là même avec 7sec ça ne suffit pas apparemment ...
Teste avec 10 secondes ou plus pour voir .Timeout = 10000
 

NePk

Membre actif
8 Nov. 2011
149
0
922
Cherche bien :P
en fait je crois que c'est pas une question de timeout, jvais test un truck,
ah et je pense que si ça affiche "déjà voté" alors que je peux voter, c'est que le code source que je split et tout ne change pas.

---------- Message ajouté à 03h39 ---------- Le message précédent était à 12h24 ----------

. . . et j'ai beau chercher je ne trouve pas pourquoi
 

Ben

Master Chief
Ancien staff
3 Mars 2011
4,070
3
603
Un peut partout.
Bha je sais pas quoi te dire sa ça se trouve ça ne viens pas d'un problème de requête mais de configuration, je ne sais pas sur quel site tu fait des votes,
mais en temps normal tu peux voter qu'une seule fois avec un seul compte non ?
fin bref c'est pas le bon endroits pour parler de ça.
Envois un Mp.
 

Demmon

The One
Administrateur
4 Mai 2011
8,204
184
969
C'est un bout de code pour ceux qui savent programmer, pas un tuto.
 

[S]hin

Membre reconnu
18 Janv. 2014
1,601
0
161
Tahia Dz.
Justement je voudrais lui demander d'en faire un mais bon, c'est pas une obligation, je voudrais juste faire l'anti leech
 

Ben

Master Chief
Ancien staff
3 Mars 2011
4,070
3
603
Un peut partout.
Oui rien de compliqué pour ceux qui ont de bonnes bases, le plus important pour ceux qui n'y comprennent rien c'est d'essayer de comprendre comment fonctionne ce langage très simplifié.

Pour tous ceux qui commence la programmation je conseil de faire le "faux leecher" en gros ddl le plus de code source possible en essayant petit à petit de jours en jours de le comprendre, sans copier le code source original et en le postant avec 2 ou 3 modifications .

Juste en le modifiant et en le gardent pour vous pour débuter.

Et par la suite avec toute vos nouvelles connaissances vous pourrez coder et programmer des choses nouvelles !
 

[S]hin

Membre reconnu
18 Janv. 2014
1,601
0
161
Tahia Dz.
Ouai j'avais réussi de moi même sauf que j'avais rajouté plusieurs fonctions en + et j'ai perdu mes projets et je ne m'en rappelle plus >< Pas grave au moins j'avais réussi.
 

Ben

Master Chief
Ancien staff
3 Mars 2011
4,070
3
603
Un peut partout.
Si tu as rajouter des fonctions n'hésite pas à les partager, même si tu les as perdu, si tu les a écrits rien de plus simple que de les ré-écrire !