Accueil > > > ANALYSEUR DE FICHIERS .TORRENT
ANALYSEUR DE FICHIERS .TORRENT
Information sur la source
Description
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
}
?>
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
Sources de la même categorie
Commentaires et avis
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é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 ça bloque.Une fois la base de donnée cré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
|
Derniers Blogs
SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|