dotpanic Conseiller(ère) Municipal(e)

Offline
Joined: 15 Jul 2007 Posts: 189
|
Posted: Thu 19 Jul - 13:29 Post subject: >>> URLBooster - v2.2.4 ! <<< |
|
|
Aucun lien vers URLBooster ne sera publié ici. Vous pouvez néanmoins le trouver sur le plus efficace des moteurs de recherche...
Pour information, au 30/09/2008, URLBooster a été téléchargé plus de 1300 fois depuis sa version 2.0.0. Merci de votre fidélité ! 
Salut à tous !
Le support d'URLBooster est assuré sur ce topic. Il est normalement indispensable de se présenter pour pouvoir poster dans ce forum. Toutefois, si vous souhaitez obtenir du support, sans vous présenter, mais tout en respectant la volonté des modérateurs, vous pouvez simplement m'envoyer un message privé avec la description de votre problème. Je vous répondrai avec plaisir...
Voici l'historique des différentes versions d'URLBooster :
version 2.2.4 – 27/06/2009
- mise à jour des entêtes HTTP avec les nouveaux cookies Antiville - correction problème de lancement du mode console
version 2.2.3 - 23/12/2008 - Christmas Edition
- mise à jour des entêtes HTTP avec les nouveaux cookies Miniville et Minicity
version 2.2.2 - 05/08/2008
- Compilation avec JDK 6.0. Il est nécessaire d’installer un nouveau JRE pour ceux qui disposaient d’un JRE <= 5.0 - Mise à jour des jars SWT (simplification de la procédure d’installation)
version 2.2.1 - 26/04/2008
- correction problème URLFactories en mode multi urls - correction pb Socks then Http
version 2.2.0 - 10/04/2008
- possibilité de spécifier plusieurs villes ou URLs séparées par un point-virgule. Exemple : "ville1;ville2;ville3;ville4". Lorsqu'un hit répond correctement, le proxy est utilisé pour hitter toutes les autres villes/URLs. On peut donc faire évoluer une quantité énorme de villes en même temps. Cette possibilité fonctionne également avec Antiville... - Proxies Types : nouvelle prise en compte des proxies de type Socks. 4 options existent : * Http : les proxies seront considérés comme des proxies HTTP * Http then Socks : les proxies seront d'abord considérés comme des proxies HTTP, puis, s'ils ne répondent pas, un nouvel essai est tenté en mode Socks * Socks then Http : l'inverse... * Socks : les proxies seront considérés comme des proxies Socks - Exclude good proxies when iterating : cette option ne prend pas en compte les bons proxies contenus dans le fichier good lors des itérations. Cette option peut devenir très puissante si on l'utilise en conjonction avec les tags spéciaux. Par exemple, vous souhaitez que, chaque jour, tous les proxies soient testés, mais que les bons proxies ne soient pas retestés à chaque itération. Il suffit alors de faire changer le nom du fichier good automatiquement chaque jour à l'aide par exemple du tag <ts>, en appelant par exemple le fichier de goods "good - <ts>.txt". On peut pousser plus loin en réinitialisant le fichier toutes les heures par example "good - <ts><hh>.txt". De futurs tags permettront de mieux contrôler cette option. - Use validator : possibilité d'utiliser ou non le Validator pour Miniville/Antiville - Validator is a regular expression : permet d'indiquer si le validator d'une URL générique est une expression régulière - le nom du fichier proxies supporte les tags spéciaux - modification de la police de caractère de l'execution board - rajout d'une barre de progression à l'execution board - L'execution board peut être redimensionné - affichage de la config au début des itérations - amélioration de l'affichage de certaines erreurs - pas mal de modifs au niveau du code et correction de quelques bugs mineurs - mise à jour de la config par défaut
Screenshots :
version 2.0.6 - 26/03/2008
- les urls génériques et les noms de fichiers good et bad supportent les tags spéciaux suivants : <yy>, <yyyy>, <year>, <mm>, <month>, <dd>, <day>, <hh>, <hour>, <mm>, <minutes>, <ss>, <seconds>, <ts>, <timestamp>, <fts> et <fulltimestamp> - les urls génériques supportent les tags spéciaux suivants : <count>, <rslo:n>, <randomStringLowerOnly:n>, <rsuo:n>, <randomStringUpperOnly:n>, <rsdo:n>, <randomStringDigitsOnly:n>, <rsld:n>, <randomStringLowerDigit:n>, <rsud:n>, <randomStringUpperDigit:n>, <rsul:n>, <randomStringUpperLower:n>, <rsuld:n>, <randomStringUpperLowerDigit:n> et <rs(a)(b):n> - les urls génériques ne supportent plus les tags spéciaux suivants : <r1> à <r9> Se référer à la documentation en ligne pour une description détaillée de l'utilisation ces tags
version 2.0.5 - 24/03/2008
- erreurs proxy mieux détaillées - HTTP Headers : tirage aléatoire des User-Agent et Accept-Language - les urls génériques supportent les tags spéciaux suivants : <r1> : nombre aléatoire sur 1 position <r2> : nombre aléatoire sur 2 positions ... <r9> : nombre aléatoire sur 9 positions <c> : compteur incrémental exemple d'utilisation : http://www.monurl.com/?page=<r2>
version 2.0.4 - 13/03/2008
- Faute Goog -> Good au niveau du Gui - nouveau serveur pour le validator d’Antiville - utilisation swt-3.3.1.1 Attention ! Pour cette version, merci de lire les instructions en page d'acceuil !
version 2.0.3 - 29/02/2008
- modification du validator Miniville suite aux modifs apportées par Motion-Twin - modif du comportement GUI lors de la sélection du HitMode - correction d'un problème de timeout - modification du shortcut de debug
version 2.0.2 - 30/01/2008
- nouvelle méthode de détection des hits à l'aide d'un validator http. Le nombre de hits constatés est considérablement réduit par rapport aux précédentes versions, mais aucune crainte à avoir : ce nombre s'approche beaucoup plus de la réalité. Le fichier good ne comporte maintenant que des proxies valides et fonctionnels ! - correction comportement GUI qui empêchait des poids et des objectifs = 0
Update v2.0.1 - 29/01/2008
- correction bug statistiques - quelques images manquantes rajoutées
Update v2.0.0 - 28/01/2008
La version 2.0 reprend les améliorations de LG666 ci-dessous (merci à lui) :
- Ajout des options pour myminicity.com - Passage de 60 secondes à 300 secondes pour la récupération des statistiques afin d'éviter le banissement potentiel - Rajout des options SaveBadProxies et BadProxiesPath - Rajout de l'option StatisticsRefreshInterval - Correction problème de reload du fichier HTTP des proxies
et ajoute les suivantes :
- ajout d’une interface utilisateur - remaniement conséquent de la structure de l’application - publication des sources sur un serveur SVN : amélioration du versioning - renommage de l’application (URL Booster -> URLBooster) - nouveau format de fichier de config (rétrocompatibilité assurée) - la version GUI supporte les instances d’exécution multiples - option de nettoyage automatique des proxies - possibilité d'interrompre et de reprendre une tâche d'exécution - Miniville : plus de clicks inutiles en mode Intelligent sur des liens alors qu’ils ne sont pas encore actifs (naissance de la ville) - lancement du site URLBooster - suppression des références à un-click-pour-la-foret.com (site fermé) - passage du programme sous license GPL
Update v1.5.1 bêta
- Correction bug statistiques - Généralisation de la méthode (ajout de l'option generic). Tout site ne demandant pas d'options particulières (cookies spécifiques) peut être visité selon le même principe.
Update v1.5.0
- Correction bug proxies (voir ici) - Interrogation des proxies selon l'ordre alphabétique ou selon l'ordre défini dans le fichier proxies. - Statistiques en fin d'exécution - Remplacement du mode sans fin par le nombre d'itération à effectuer - Attente d'une entrée utilisateur en fin d'exécution - Ajout de l'option LogLevel pour debuggage et implémentation Logger - Indication du nombre d'entrées lues dans le fichier proxies - Rajout options pour un-click-pour-la-foret.com - Expérimental : spécification d'objectifs étranges (85% transport par exemple) - Modifications cosmétiques, encore...
Update v1.4.2
- Correction mode INTELLIGENT
Update v1.4.1
- Révision du locking du fichier des bons proxies - Rajout du paramètre MaxThreadsInactivity - L'unité du paramètre HTTPConnectionTimeout est la seconde (milliseconde précédemment)
Update v1.4.0
Update assez important. Détail des changements :
- Fusion des projets Miniville et Antiville. Un paramètre a été rajouté dans le fichier de configuration pour indiquer le type de fonctionnement : ConfigType - Possibilité de spécifier un fichier de configuration à utiliser. Ceci permet de gérer plusieurs villes sans multiplier les répertoires, mais juste en couplant un .cmd avec un .ini. L'archive contient deux exemples (antiville-maville et miniville-ultim8team). Note : le programme est normalement capable de gérer l'écriture des bons proxies dans un fichier unique lorsque plusieurs programmes tournent en parallèle, mais il est peut-être préférable d'utiliser un fichier de goods par ville gérée. Je n'ai pas pu tester en profondeur... - L'exécuteur de processus est réinitialisé si aucune activité n'est détectée depuis plus de 15 secondes (30 précédemment). - Possibilité de récupérer le fichier proxies directement sur le web en indiquant une adresse HTTP (voir fichier de config pour l'exemple) - Réorganisation du code pour une plus grande modularité - Quelques modifications cosmétiques
Update v1.3.1
Tout léger update pour faire plaisir à adrexo (et à lui seul je pense ) : - Possibilité d'émettre un beep à chaque fois qu'un bon proxy est trouvé (paramètre EmitBeep dans le fichier de config)
Update v1.3.0
Au programme : - Rajout du paramètre EndlessMode dans le fichier de configuration (Miniville + Antiville). Si ce mode est activé, le programme tourne en boucle sans jamais s'arrêter. - Vérification des doublons dans le fichier good.txt avant de rajouter un nouveau proxy. - Remise à niveau du module Antiville sur le même principe que le module Miniville
Update v1.2.0
Problèmes fixés : - Au bout d'un certain temps, plus aucun processus n'était lancé, et une longue série de points (".") s'affichait. Pour une raison inconnue, certains processus ne respectent pas le timeout imposé. Lorsque tous les processus semblent bloqués pendant plus de 30 secondes, l'exécuteur de processus est réinitialisé.
Modifs : - Mise à jour de la logique d'exécution des processus (utilisation d'un Java Executor).
Update v1.1.1
.jar incorrect -> repackaging
Update v1.1.0
Suite à diverses demandes, rajout/modif des paramètres suivants dans le fichier de config : - Rajout du poids des URLs pour le mode PSEUDORANDOM - Rajout du timeout de connexion - Rajout du nombre de processus concurrents - Le fichier proxies.txt est récupéré dans le répertoire courant (précédemment dans c:\proxies.txt) Have fun!
Disclaimer
J’aimerais prévenir d’avance que ce post ne va certainement pas faire plaisir à tout le monde. Je précise à l’attention des néophytes que je ne suis en rien un guru de l’info, et que toutes les techniques décrites ici sont à la portée de n’importe quel programmeur.
Le logiciel fourni plus bas nécessite une recompilation pour chaque modification de paramètre (nom de la Miniville à traiter par exemple), ce qui présuppose tout de même une connaissance de l'environnement de programmation Eclipse. Libre à ceux qui le souhaitent de modifier le programme pour le rendre utilisable par n'importe quel utilisateur lamba (rajout d'un front-end ou d'un fichier de paramétrage par exemple). Pour ma part, je m'en tiendrai à cette version élitiste. Je manque de temps pour aller plus loin. Désolé pour les autres... (Finalement, j'ai eu le temps de le rendre un peu plus accessible...)
Tout a commencé la semaine dernière, lorsque qu’un de mes potes m’a montré Miniville. J’ai assez aimé le principe pour décider de monter ma propre ville. Mais je me suis vite rendu compte que certaines villes (eurobarville, Georgio’s, koreus, Mortecouille, etc.) ne jouaient pas avec les mêmes armes que moi, et qu’il me serait difficile voir impossible de rivaliser avec elles. Je me suis donc mis en tête de creuser le problème pour voir si je ne pouvais pas améliorer grandement la progression de mon petit village…
Alors que certains construisaient leurs villes depuis plusieurs semaines, il m’a suffit de deux jours pour faire de ma ville la capitale de ma région. De même, j'ai réussi à envoyer plusieurs gros missiles en quelques heures seulement ! Certains vont crier à la triche, et ils auront raison. Mais où commence la triche ?
Peut-on considérer que les plus grosses villes de Miniville ne trichent pas ? Elles usent de techniques qui ne sont pas à la portée du plus grand nombre. Donc l’équilibre des forces est fortement biaisé, et la balance penche largement à leur avantage.
De même, l’utilisation de ce forum pour améliorer de manière artificielle (car basée sur l’échange de clicks) sa ville pourrait être considérée par certains comme de la triche.
Tout le problème réside dans le fait que Miniville ne possède aucun règlement. Et tout jeu sans règle ne peut, par définition, être violé.
Fort de ce constat, je pars donc du principe que la technique que je propose est juste une technique parmi tant d’autres, et qu’elle doit être considérée comme telle.
Si certains ne sont pas content, et comme le dirait certainement mon grand-père : go fuck yourself !
Maintenant que les choses sont claires, poursuivons…
Comment fonctionne Miniville.fr et Antiville.fr ?
Très simplement : - Ces sites comptent les hits en provenance d’IP différentes. - Le compteur est réinitialisé tous les jours à minuit. - Une IP ne peut visiter qu’une seule URL par jour (habitant OU transport OU securité OU etc.).
De ce fait, le site interdit à un utilisateur unique d'améliorer indéfiniment sa Miniville.
IP Spoofing
Comment dans ce cas simuler des hits en provenance d’IP différentes ?
Si l’on veut spoofer un site Internet, il est presque indispensable de disposer d’un sniffer sur le réseau interne du site en question. Pourquoi ? Car l’établissement d’une connexion TCP s’effectue en 3 étapes :
1. Le client envoie une requête SYN au serveur en précisant son IP
| Code: | | Client ---SYN--> Server |
2. Le serveur renvoie une requête SYN/ACK en indiquant un numéro de séquence
| Code: | | Client <--SYN/ACK--- Server |
Or, si le client modifie son IP à l’étape 1 pour faire croire qu’une autre IP essaye de visiter le site, le serveur, à l’étape 2, va renvoyer un numéro de séquence à l’IP indiquée en 1. Le client ne recevra donc jamais le numéro de séquence et ne pourra finaliser l’établissement de la connexion.
Il y a bien longtemps, les numéros de séquence étaient séquentiels, il était donc assez simple de deviner le numéro de séquence suivant, et de réussir à établir une connexion en spoofant le site. Mais les éditeurs d’OS ont réagi assez vite à ce problème, et les numéros de séquence ne se suivent plus. Deviner le numéro généré à l’étape 2 est devenu quasi mission impossible sur les OS récents. C’est pourquoi, pour pouvoir intercepter la trame de la seconde étape, il est nécessaire de sniffer le réseau local du serveur…
Bref ! C’était pour la petite histoire, mais ça n’intéressera personne ici (pour les furieux, plus d’infos ici : http://www.cert.org/advisories/CA-1996-21.html). Passons à la seconde solution, l’utilisation de proxies !
Proxy, ma vie pour toi
C’est une solution très simple à mettre en œuvre. Beaucoup de sites proposent des listes de proxies mises à jour continuellement, et tous les langages de programmation récents disposent de toutes les fonctions permettant leur exploitation.
Nous (mon pote et moi) avons donc codé un truc rapide en PHP pour tester le principe (notre Proof Of Concept :p). Voici ce à quoi ressemblait le programme :
| Code: | <php>setOptions(array('proxyhost' => $host, 'proxyport' => $port));
try { $r->send(); fwrite($d, print_r($r->getResponseHeader(), TRUE)); } catch (HttpException $ex) { fwrite($d, $ex . "\n"); } }
?>
|
Nous nous sommes vite aperçus que notre programme ne fonctionnait pas très bien. Les trames émises ne devaient pas être très correctes. Alors on a décomposé avec Ethereal les trames sortantes lors d’une visite standard avec un browser.
En fait, la première requête du browser :
| Code: | GET http://maville.miniville.fr/ind HTTP/1.1 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */* Accept-Language: en-us Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322) Host: maville.miniville.fr |
renvoie toujours la même page :
| Code: | HTTP/1.1 200 OK Transfer-Encoding: chunked Date: Tue, 10 Jul 2007 09:28:02 GMT Content-Type: text/html; Charset=UTF-8 Expires: Tue, 10 Jul 2007 09:28:02 GMT Cache-Control: no-store, no-cache, must-revalidate Server: Apache/1.3.37 (Unix) PHP/5.0.4 X-Real-Server: patate2.motion-twin.com Pragma: no-cache P3P: CP="ALL DSP COR NID CURa OUR STP PUR"
232
<html> <head> <title>Miniville</title> </head> <body> .<noscript> ..Ce site n..cessite JavaScript pour fonctionner. .</noscript>
.<script type="text/javascript"> .//<CDATA cookie="X-MV-Referer=" cookie="X-Ref-Ok=1;expires="> .</script> .<p><em>Veuillez patienter quelques instants...</em></p>
</body> </html> |
Le but de cette page est de vérifier que le browser supporte le scripting et les cookies. Si le browser (ou le proxy) ne les supporte pas, on bloque à ce niveau, et aucun compteur n'est mis à jour. Par contre, en cas de succès, le browser interroge de nouveau le serveur avec cette requête :
| Code: | GET http://maville.miniville.fr/ind HTTP/1.1 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */* Accept-Language: en-us Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322) Host: maville.miniville.fr Cookie: X-MV-Referer=; X-Ref-Ok=1 |
Mis à part le cookie rajouté, aucune différence. Et c'est là que tout se joue... Car quand le proxy ou le browser se bloque sur le premier échange, le site n'est pas mis à jour. Par contre, dès que cette deuxième étape est complétée, le site enregistre la visite. Le serveur renvoie ensuite un code 302, qui a juste pour but de redirigier vers la racine du site :
| Code: | HTTP/1.1 302 Found Date: Tue, 10 Jul 2007 09:28:02 GMT Content-Type: text/html Proxy-Connection: close Server: Apache/1.3.37 (Unix) PHP/5.0.4 X-Real-Server: patate2.motion-twin.com Location: / |
Et lors du troisième échange (get / + retour site), le browser récupère les infos du site mises à jour.
Il fallait donc très certainement rajouter ce petit cookie (et tant qu’à faire tous les autres éléments) dans la requête pour incrémenter le compteur, ce qu’on a fait en PHP avec :
| Code: | $r->setHeaders(array('Accept' => 'image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*')); $r->setHeaders(array('Host' => 'maville.miniville.fr')); $r->setHeaders(array('Cookie' => 'X-MV-Referer=; X-Ref-Ok=1')); $r->setOptions(array('timeout' => '20')); |
Et là… magie ! Le compteur s’est incrémenté.
ultim8solution
Il ne manquait plus qu’une application un peu plus conséquente, que l’on a codé en Java sous Eclipse.
Que fait le programme ?
Tout d'abord, il va chercher sa liste de proxies dans un fichier (par défaut sous proxies.txt), qui contient des proxies sous la forme : IP1:port1 IP2:port2 IP3:port3
Il crée ensuite plusieurs processus qui sont chargés de requêter les URLs de Miniville. En parallèle, il va interroger le serveur de Miniville pour connaitre quels sont les besoins spécifiques de la ville, et adapter les requêtes en conséquence. Ce mode de fonctionnement permet d'optimiser les requêtes et améliore grandement l'usage des proxies.
Petite notice d'utilisation :
1. Installer, si elle n'est pas déjà présente, la JRE (Java Runtime Environment) sur votre PC, que vous pouvez directement télécharger sur le site de Sun (cherchez 'JRE' dans la page). 2. Décompresser mon archive. Vous devriez obtenir un répertoire 3. Dans ce répertoire, plusieurs exemples de configuration ini sont présents (chacun est associé à un cmd). Editez-les avec Notepad (ou vi, c'est plus sérieux ! :p) et modifiez les paramètres. 4. Récupérez une liste de proxy sur le net et constituez-vous un fichier proxies.txt. Une simple recherche sous google vous renvoie vers plusieurs sites en proposant, mais je conseille fortement l'utilisation de la MEGA Proxy List. Ces gars font un super boulot d'agrégation, alors autant en profiter ! 5. Lancez le cmd correspondant. Une fenêtre DOS devrait s'ouvrir, et normalement, les proxies devraient commencer à être interrogés. 6. Regardez l'évolution de votre Miniville. Si tout se passe bien... enjoy 
Pour faire fonctionner le bordel sous Eclipse, il faut juste importer les projets et lancer le Main. J'ai essayé de commenter le programme au mieux, donc la compréhension ne devrait pas être trop difficile.
Les choses qui ne marchent pas tout à fait, ou à améliorer : - L'identification d'un "bon proxy" ne se fait pas correctement. Cela est dû aux différents types de proxy utilisés (anonymous, high anonymous (Elite proxy), etc.). Nous recherchons actuellement une solution.
Greetings
Un grand merci à mon ami de 15 ans (mangez des pommes !), Cyberjeff (ouais je sais, son pseudo est pourri, mais le mec qui se cache derrière est fin cool !), pour avoir codé le proof of concept, et pour avoir réagi au quart de tour à l'idée de monter la plus grosse ville de Lorraine. You're the man! Charlemagne represents!
Et un second merci à Ga3l, qui a finalement bien réagi suite à notre petite altercation. Je t'ai piqué l'idée qui consiste à récupérer le fichier XML pour optimiser les requêtes en fonction des besoins de la Miniville. J'espère que tu ne m'en voudras pas. Charlemagne represents too!
Outro
Voilà, j'arrive à la fin de ce post. En espérant que ces informations puissent servir à quelques personnes... Je répondrai avec plaisir à toutes les questions que vous vous posez encore (si j'en ai les moyens bien sûr, car sur des questions du type "Mais qu'est-ce que l'Univers ?", ma réponse risque de vous décevoir )._________________ 
Last edited by dotpanic on Sat 27 Jun - 16:53; edited 92 times in total |
|