begin process at 2012 02 11 17:05:35
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Application

 > ANALYSEUR DE FICHIERS .TORRENT

ANALYSEUR DE FICHIERS .TORRENT


 Information sur la source

Note :
10 / 10 - par 2 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Application Classé sous :bittorrent, torrent, hash, tracker Niveau :Débutant Date de création :07/03/2007 Vu / téléchargé :16 994 / 484

Auteur : Zaltez

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (12)
Ajouter un commentaire et/ou une note


 Description

Cliquez pour voir la capture en taille normale
Ce script permet l'analyse d'un fichier torrent en y récupérant des informations comme:
-Le nom du fichier a télécharger
-Le calcul du hash du fichier torrent
-Le nombre de fichiers qui composent le fichier a télécharger
-La taille du(des) fichier(s) a télécharger
-L'url du tracker indexant le torrent
-La date de création du fichier torrent

Source

  • <?php
  • require_once ("BDecode.php");
  • require_once ("BEncode.php");
  • //*********************************************//functions
  • function calcfilesize($bytes)
  • {
  • if ($bytes < 1000 * 1024)
  • return number_format($bytes / 1024, 2) . " kB";
  • elseif ($bytes < 1000 * 1048576)
  • return number_format($bytes / 1048576, 2) . " MB";
  • elseif ($bytes < 1000 * 1073741824)
  • return number_format($bytes / 1073741824, 2) . " GB";
  • else
  • return number_format($bytes / 1099511627776, 2) . " TB";
  • }
  • function checktorrent($alltorrent)
  • {
  • $debutTorrent = "";
  • for ($i=0;$i<11;$i++)
  • {
  • $debutTorrent .= $alltorrent[$i];
  • }
  • if($debutTorrent == "d8:announce")
  • {
  • //echo $debutTorrent;
  • echo " Le fichier est bien un torrent <br />";
  • }
  • else
  • {
  • //echo $debutTorrent;
  • exit (" Erreur le fichier n'est pas un torrent");
  • }
  • }
  • function calchash($alltorrent)
  • {
  • $array = BDecode($alltorrent);
  • if (!$array)
  • {
  • echo "<p class=\"error\">There was an error handling your uploaded torrent. The parser didn't like it.</p>";
  • endOutput();
  • exit;
  • }
  • $hash = @sha1(BEncode($array["info"]));
  • echo "<b>Hash du torrent : </b>$hash <br />";
  • }
  • function parcourirtorrent($filesTorrentSize,$alltorrent)
  • {
  • $compt=0;
  • $tailleFichier = '';
  • $urlfound = false;
  • $namefound = false;
  • $datefound = false;
  • for ($i=0;$i<$filesTorrentSize;$i++)
  • {
  • //************//nom du torrent
  • if ($alltorrent[$i] == "n" and $namefound !=true)
  • {
  • $a = $i;
  • $name = $alltorrent[$a].$alltorrent[$a+1].$alltorrent[$a+2].$alltorrent[$a+3];
  • if ($name == "name")
  • {
  • $index = $alltorrent[$a+4].$alltorrent[$a+5];
  • $index = $a+7+$index;
  • $nameTorrent = "";
  • for ($j=$a+7;$j<$index;$j++)
  • {
  • $nameTorrent .= $alltorrent[$j];
  • }
  • echo " <b>Nom du torrent :</b> $nameTorrent <br />";
  • $namefound = true;
  • }
  • }
  • //************//trouver l'url du tracker
  • if ($alltorrent[$i] == "e" and $urlfound != true)
  • {
  • $b = $i;
  • $index = $alltorrent[$b+1] . $alltorrent[$b+2];
  • $index = $b+4+$index;
  • $urlTracker = "";
  • for ($j=$b+4;$j<$index;$j++)
  • {
  • $urlTracker .= $alltorrent[$j];
  • }
  • echo " <b>URL du tracker :</b> $urlTracker <br />";
  • $urlfound = true;
  • }
  • //************//trouver la date création du torrent
  • if ($alltorrent[$i] == "d" and $datefound != true)
  • {
  • $d = $i;
  • $datei = $alltorrent[$d] . $alltorrent[$d+1] . $alltorrent[$d+2] . $alltorrent[$d+3]. $alltorrent[$d+4];
  • if ($datei == "datei")
  • {
  • $indexdepart = $d+4;
  • $timestamp = "";
  • for ($j=$indexdepart+1;$j<$indexdepart+11;$j++)
  • {
  • $timestamp .= $alltorrent[$j];
  • }
  • $date = date('d/m/Y à H:i',$timestamp);
  • echo "<b>Date de création du .torrent:</b> $date<br/>";
  • $datefound = true;
  • }
  • }
  • //************//trouver la taille total du fichier
  • if ($alltorrent[$i] == 'l')
  • {
  • $c = $i;
  • $checklength = $alltorrent[$c].$alltorrent[$c+1].$alltorrent[$c+2].$alltorrent[$c+3].$alltorrent[$c+4].$alltorrent[$c+5];
  • //echo "<b>doit contenir lenght:</b> $checklength";
  • if ($checklength == "length")
  • {
  • for ($d=$c+7;$d<$filesTorrentSize;$d++)
  • {
  • //echo " <b>variable parcoure : </b>$alltorrent[$d]";
  • if ($alltorrent[$d] == 'e')
  • {
  • $compt++;
  • $tabTailleFichier[$compt]=$tailleFichier;
  • $tailleFichier = '';
  • break;
  • }
  • else
  • {
  • $tailleFichier .= $alltorrent[$d];
  • //echo " <b>!!!!taille fichier!!!!!:</b> $tailleFichier";
  • }
  • }
  • }
  • }
  • }
  • $globalPoid=0;
  • for ($b=1;$b<=$compt;$b++)
  • {
  • //echo " >>Fichiers $b et sa tailles : $tabTailleFichier[$b]";
  • $globalPoid = $globalPoid+$tabTailleFichier[$b];
  • }
  • $calcfilesize = calcfilesize($globalPoid);
  • echo " <b>Poids total du dossier :</b> $calcfilesize <br />";
  • echo " <b>Nombre de fichiers :</b> $compt <br />";
  • }
  • //*********************************************//main()
  • if (isset($_FILES["torrent"]))
  • {
  • //is_uploaded_file($_FILES["torrent"]["tmp_name"]) or die("<p class=\"error\">File upload error 2</p>\n");
  • $filesTorrent = fopen($_FILES["torrent"]["tmp_name"], "rb") or die(" File check error");
  • $filesTorrentSize = filesize($_FILES["torrent"]["tmp_name"]);
  • $alltorrent = fread($filesTorrent, $filesTorrentSize);
  • //************//Verif si le fichier est un torrent
  • checktorrent($alltorrent);
  • //************//calcul du hash
  • calchash($alltorrent);
  • //************//Debut
  • parcourirtorrent($filesTorrentSize,$alltorrent);
  • //************//End
  • }
  • ?>
<?php

require_once ("BDecode.php");
require_once ("BEncode.php");

//*********************************************//functions
         function calcfilesize($bytes)
        {
        if ($bytes < 1000 * 1024)
            return number_format($bytes / 1024, 2) . " kB";
        elseif ($bytes < 1000 * 1048576)
            return number_format($bytes / 1048576, 2) . " MB";
        elseif ($bytes < 1000 * 1073741824)
            return number_format($bytes / 1073741824, 2) . " GB";
        else
            return number_format($bytes / 1099511627776, 2) . " TB";
        }
		
		
		 function checktorrent($alltorrent)
		{
			$debutTorrent = "";
			for ($i=0;$i<11;$i++)
			{
				$debutTorrent .= $alltorrent[$i];
			}
			if($debutTorrent == "d8:announce")
			{
				//echo $debutTorrent;
				echo " Le fichier est bien un torrent <br />";
			}
			else
			{
				//echo $debutTorrent;
				exit (" Erreur le fichier n'est pas un torrent");
			}
		}		
		 function calchash($alltorrent)
		{
			$array = BDecode($alltorrent);
			if (!$array)
			{
				echo "<p class=\"error\">There was an error handling your uploaded torrent. The parser didn't like it.</p>";
				endOutput();
				exit;
			}
			$hash = @sha1(BEncode($array["info"]));
			
			echo "<b>Hash du torrent : </b>$hash <br />";
		}
		 function parcourirtorrent($filesTorrentSize,$alltorrent)
		{
			$compt=0;
			$tailleFichier = '';
			$urlfound = false;
			$namefound = false;
			$datefound = false;
			for ($i=0;$i<$filesTorrentSize;$i++)
			{
				//************//nom du torrent
				if ($alltorrent[$i] == "n" and $namefound !=true)
				{
					$a = $i;
					$name = $alltorrent[$a].$alltorrent[$a+1].$alltorrent[$a+2].$alltorrent[$a+3];
					if ($name == "name")
					{
						$index = $alltorrent[$a+4].$alltorrent[$a+5];
						
							$index = $a+7+$index;
							$nameTorrent = "";
							for ($j=$a+7;$j<$index;$j++)
							{
								$nameTorrent .= $alltorrent[$j];
								
							}
							echo " <b>Nom du torrent :</b> $nameTorrent <br />";
							$namefound = true;
					}
					
				}
				//************//trouver l'url  du tracker
				if ($alltorrent[$i] == "e" and $urlfound != true)
				{
					$b = $i;
					$index = $alltorrent[$b+1] . $alltorrent[$b+2];
					$index = $b+4+$index;
					$urlTracker = "";
					for ($j=$b+4;$j<$index;$j++)
					{
						$urlTracker .= $alltorrent[$j];
						
					}
					echo " <b>URL du tracker :</b> $urlTracker <br />";
					$urlfound = true;
					
				}
				//************//trouver la date création du torrent 
				if ($alltorrent[$i] == "d" and $datefound != true)
				{
					$d = $i;
					$datei = $alltorrent[$d] . $alltorrent[$d+1] . $alltorrent[$d+2] . $alltorrent[$d+3].  $alltorrent[$d+4];
					if ($datei == "datei")
					{
	 					$indexdepart = $d+4;
						$timestamp = "";
						for ($j=$indexdepart+1;$j<$indexdepart+11;$j++)
						{
							$timestamp .= $alltorrent[$j];	
						}
						$date = date('d/m/Y à H:i',$timestamp);
						echo "<b>Date de création du .torrent:</b> $date<br/>";
						$datefound = true;
					}
					
				}
				//************//trouver la taille total du fichier
				if ($alltorrent[$i] == 'l')
				{
					$c = $i;
					$checklength = $alltorrent[$c].$alltorrent[$c+1].$alltorrent[$c+2].$alltorrent[$c+3].$alltorrent[$c+4].$alltorrent[$c+5];
					//echo "<b>doit contenir lenght:</b> $checklength";
					if ($checklength == "length")
					{
						
						for ($d=$c+7;$d<$filesTorrentSize;$d++)
						{	
						
						
							//echo " <b>variable parcoure : </b>$alltorrent[$d]";
							if ($alltorrent[$d] == 'e')
							{
								$compt++;
								$tabTailleFichier[$compt]=$tailleFichier;
								$tailleFichier = '';
								break;
							}
							else
							{
								$tailleFichier .= $alltorrent[$d];
								//echo " <b>!!!!taille fichier!!!!!:</b> $tailleFichier";
								
							}
						}					
					}
				}
			}
			$globalPoid=0;
			for ($b=1;$b<=$compt;$b++)
			{
				//echo " >>Fichiers $b et sa tailles : $tabTailleFichier[$b]";
				$globalPoid =  $globalPoid+$tabTailleFichier[$b];
			}
			$calcfilesize = calcfilesize($globalPoid);
			echo " <b>Poids total du dossier :</b> $calcfilesize <br />";
			echo " <b>Nombre de fichiers :</b> $compt <br />";
		}
		

		
		
//*********************************************//main()	
	
if (isset($_FILES["torrent"]))
{
		//is_uploaded_file($_FILES["torrent"]["tmp_name"]) or die("<p class=\"error\">File upload error 2</p>\n");
		$filesTorrent = fopen($_FILES["torrent"]["tmp_name"], "rb") or die(" File check error");
		$filesTorrentSize = filesize($_FILES["torrent"]["tmp_name"]);
		$alltorrent = fread($filesTorrent, $filesTorrentSize);
		
		//************//Verif si le fichier est un torrent
		checktorrent($alltorrent);
		//************//calcul du hash 
		calchash($alltorrent);
		//************//Debut
		parcourirtorrent($filesTorrentSize,$alltorrent);
		//************//End
}

?>

 Conclusion

Ce script utilise pour le calcul du hash, les fonctions BDecode et BEncode écrites par Bram Cohen (le créateur de BitTorrent), réecrites en PHP.
Je debute en php et je suis conscient que la methode utilisée pour le traitement du fichier torrent n'est surement pas la meilleur. Je pense qu'il doit exister des fonctions pour le traitement des chaines de caractères dans les fichiers de données (Byte). Je suis ouvert à toutes les critiques, je pense qu'il y en aura ...
Dernier point pour la création de ce script, je me suis appuyé sur un très bon tutorial disponible à cette adresse : http://www.run.montefiore.ulg.ac.be/~martin/resour ces/BitTorrentTutoriel.html

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources de la même categorie

Source avec Zip Source avec une capture PHPREPOGENERATOR + REPO (WIN) par alvinp
Source avec Zip IPHONE - ICÔNE D'APPEL TÉLÉPHONIQUE SUR L'ÉCRAN D'ACCUEIL par Rainbow
Source avec Zip Source avec une capture [APP WEB]SERVEUREXPLOREUR par thematrix01
Source avec Zip Source avec une capture MY.BOOKMARKS par inwebo
Source avec Zip M.V.C M.E.D par faceme

 Sources en rapport avec celle ci

BASE DE HASH MD5 par 0x0syscall
Source avec Zip Source avec une capture PHPBTTRACKERMOD : TRACKER POUR TORRENTS par RedFo1
Source avec Zip Source avec une capture GOOGLE ADSENSE FRENCH TRACKER par Mathieu White
VÉRIFICATION DE LOGIN VIA HASH MD5 par FhX
Source avec Zip TRACKER BITTORRENT PHP par MASTERADGE

Commentaires et avis

Commentaire de Zaltez le 08/03/2007 23:23:22

Bonjour à toutes et tous je vous laisse un lien, pour tester le script à cette adresse :
http://www.remind.ironie.org/infotorrent/INFOTORRENT.php

Commentaire de pouda le 24/03/2007 01:08:51

ecoute je teste ca et ca pourrai fortement me servir je te remercie l'ami..

Commentaire de pouda le 24/03/2007 01:12:25

génial terrible on rajoute par la dessus un upload et un system de listing.de fichier et hop le tour est joué...

Commentaire de expertmax le 04/04/2007 02:30:48

Fais attention, au lieu décrire directement un echo avec des variables directement déclarés comme ca :

echo " <b>Nombre de fichiers :</b> $compt <br />";

fait plutot comme ca :

echo " <b>Nombre de fichiers :</b> ".$compt." <br />";

Voila, c'est mieux en terme de compatiblité !

Commentaire de Renfield le 04/04/2007 08:55:25 administrateur CS

de compatibilité ?

perso, du temps où je faisais du php , c'est a dire il y a six ou sept ans (analyseur SQL, génération de fichiers Excel, ...)

j'utilisais ce genre de choses:
echo " <b>Nombre de fichiers :</b> $compt <br />";

je ne vois pas vraiment quel est le soucis....
peux tu m'éclairer ?

Commentaire de expertmax le 05/04/2007 07:15:27

Certainement ! Questce que tu dis sil y a les carateres " " dans ton compte ? Ton script ne fonctionnerai plus ! ca donnerai ca :

$compt = "Salut ! \"l'ami\"";
echo " <b>Nombre de fichiers :</b> Salut ! "l'ami" <br />";

et ca bogue dans la derniere ligne ! A+

Commentaire de Renfield le 06/04/2007 02:49:18 administrateur CS

je vois....

en l'occurrence, c'est de la parano ^^ $compt contenant un numérique...

enfin, j'ai saisi l'idée.
merci

Commentaire de trasher le 11/11/2007 09:56:46

Le mieu c'est

echo '<b>Nombre de fichiers :</b> Salut ! '.$compt.' <br />';

xD

Commentaire de Waldo2188 le 20/05/2008 09:15:43

Salut,
Chapeau pour l'idée.
Cependant j'ai une question, est-il possible de connaitre le nombre de leechers et seeds sur un torrent?
merci

Commentaire de Zaltez le 20/05/2008 22:28:35

Salut,

Oui il est tout à fait possible de connaître de le nombre de seeders et de leechers en interrogeant le tracker, mais le nombre de seeders et leechers n'est pas ecrit dans le fichier torrent.
Pour plus d'information sur le protocole et sur la façon de connacté de la tracker: http://www.run.montefiore.ulg.ac.be/~martin/resources/BitTorrentTutoriel.html

Voilou

Commentaire de dabiz59 le 22/03/2010 18:28:56

bonsoir Waldo2188
Exellente idée de connaitre les sources disponible Mais perso
J'aimerai trouver cette source mais sans upload de fichier pour tester le torrent simplement une url serais parfait mais avec tout les infos possible (seed leech complete hash tracker etc...)
si vous connaissez faite moi signe ;)
merci à tous ;)

Commentaire de zebulon1950 le 08/01/2012 16:34:02

si j'ai bien compris le souhait de dabiz59, il peut trouver son bonheur sur un site comme http://torrenteditor.com/

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Avoir des informations sur un torrent [ par mizoz ] Bonjour, Je suis entrain de développer un site de torrent plutôt un torrent indexer. Mais j'aurai besoin d'avoir les informations sur un torrent uplo Comment connaître le nom de tous les fichiers contenu dans le fichier torrent? [ par PetiteNonne ] Bonjour, est ce qu'il y a une fonction php qui peut donner le nom des fichiers contenu dans un .torrent? je n'ai pas trouver comment faire avec le co Tracker PHP [ par larafale ] Bonjour,J'ai créé la base, et toutes les tables sauf une...( la table comments) Mysql me sort une érreur aux environs de la clé user?J'ai rééssayé plu Passer un tableau en parametre du constructeur d'une classe [ par p0236 ] Salut , Moi j'ai un soucis, je cr&#233;e un tableau que je passe en parametre d'une classe.exemple : class Commande //class{var $tab_hash_pd Tracker php probleme include/secrets.inc [ par zamalphp ] Bonjour, j'ai suivi le instruction d'insllation du tracker php mais un moment &#231;a bloque.Une fois la base de donn&#233;e cr&#233;e je ne trouve pa cree un site torrent [ par jojosnoopy ] bjr je voudrais cree un site pour les torrent comme il en existe deja j'ai mon hebergeur merci pour votre aide @+ tracker [ par jojosnoopy ] bjr je voudrais quon maide pour intaller BtitTracker merci pour votre aide @++ Base de hash MD5 [ par hazkaal ] Bonjour,Voici une base de hash MD5 que j'ai développé en PHP.On peut :    -ajouter un mot dont sa valeur md5 sera ajoutée dans un dictionnaire   -rech torrent trader [ par patziz ] Bonjour a tousJ'ai un petit souci a propos d'un tracker Torrent Trader que j'ai installe.Quand je télécharge un torrent que j'ai uploader çà m'amène v Tracker email php : génération d'image et enregistrement dans une bdd. [ par bartuk3 ] Bonjour à tous ! Je ne poste jamais sur les forums, trouvant toujours une réponse. Cette fois-ci, je ne trouve aucune documentation ni aucun topic su


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 9,812 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales