#1 Le 06/05/2010, à 07:35
- Zakhar
Un tuto pour extraire les liens d'un dlc ?
Est-ce qu'un tuto pour extraire les liens d'un dlc vous intéresse ?
(répondez au post si oui !)
Il ne me reste plus qu'à trouver comment on sépare une chaine :
id0=ABCDEFGH&id1=KIOLIUJI&.....&id87=DERFHYUJ
pour en extraire les valeurs séparément (ça doit bien se faire avec une combinaison de cut et de sed...) et le tour est joué.
"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)
Hors ligne
#2 Le 06/05/2010, à 08:41
- sr40150
Re : Un tuto pour extraire les liens d'un dlc ?
Salut,
Je ne vois pas de quoi tu parles (dlc ?, chez moi dlc signifie Date limite de consommation:) mais comme je suis très curieux... Je suis très intéressé...
Hors ligne
#3 Le 06/05/2010, à 08:44
- sr40150
Re : Un tuto pour extraire les liens d'un dlc ?
ah un petit coup de google me renvoie http://www.lire-fichier.com/extension-f … c-1121.htm
Oui le tuto que tu propose pourra toujours servir.
Dernière modification par sr40150 (Le 06/05/2010, à 08:45)
Hors ligne
#4 Le 06/05/2010, à 18:26
- Hizoka
Re : Un tuto pour extraire les liens d'un dlc ?
tiens je ne connaissais pas non plus, ca devient courant ça ?
mais en effet ça peut toujours être pratique
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#5 Le 06/05/2010, à 19:00
- Zakhar
Re : Un tuto pour extraire les liens d'un dlc ?
Effectivement, dlc, outre la date limite de consommation, est également un conteneur de liens vers des sites populaires comme Megaupload, Rapidshare.
Il s'agit d'un format crypté. L'idée est que si quelqu'un publie un truc illégal (ce qu'ici on ne fait évidemment pas vu qu'on utilise du logiciel libre tout à fait légal !) les moteurs de recherche des ayant droit vont associer l'œuvre illégale et l'ensemble des liens, dans le cas où le fichier a été coupé en morceaux.
Les ayant droit vont ensuite demander à MU, RS, etc... de retirer lesdites œuvres illégales, et donc TOUS les morceaux concernant l'ensemble des liens.
Bien sûr aucun risque lorsque vous uploadez une version d'Ubuntu, même en petits morceaux.
Le dlc est donc un conteneur, qui résume en un seul lien l'ensemble de ces liens... et il est crypté pour qu'on ne puisse pas lire les liens unitaires. L'algorithme de cryptage a été inventé par des logiciels comme Jdownloader, lequel est très pratique par ailleurs pour utiliser par exemple Youtube sans avoir à se farcir la saleté d'Adobe Flash !
Et donc le dlc, est sensé protéger les liens unitaires. Si on demande aux vilains de supprimer leur dlc, pas de problème pour en refaire un autre et le remettre en ligne vu qu'un fichier dlc est tout petit.
Bien évidemment la protection est débile et inefficace, vous imaginez bien que les protecteurs des ayant-droit peuvent tout simplement faire tourner JDownloader avec le dlc pour découvrir ce qui se cache derrière.
Et pour nous, Linuxiens, les dlc est juste une barrière stupide pour nous empêcher d'utliser notre commande favorite :
wget
... et profiter à fond de la vitesse de nos lignes !
Voici donc comment on obtient les liens unitaires d'un dlc (ça vous servira si on "pirate" vos œuvres GPL ou CCbySA )
Il vous faut :
- Jdownloader (Ne serait-ce que pour éviter Flash !.. C'est un programme Java, et il existe un dépôt launchpad pour installer les commandes de lancement dans le menu et 2 ou 3 bricoles).
- Une virtualbox avec Lucid/Karmic (pas obligatoire, mais c'est plus simple pour limiter les flux qui circulent sur le réseau)
1) on lance tcpdump pour capturer les paquets
sudo tcpdump -i eth0 -w out_dlc -s 0
2) On lance Jdownloader
3) On ouvre le dlc dans Jdownloder et on attend qu'il ait fini d'explorer le paquet
4) on fait Ctrl+C sur le tcpdump
5) on sépare les flux capturés
tcpflow -r out_dlc
(tcpflow n'est pas installé par défaut, si vous ne l'avez pas déjà installé, la commande vous sera fournie pour l'installer)
Et voila...
On obtient alors des fichiers dont un contient nos liens sous la forme
POST /mgr_linkcheck.php HTTP/1.1
Accept: */*
Accept-Encoding: *;q=0.1
TE: trailers
Expect: 100-continue
Host: www.megaupload.com
Connection: TE
Date: Wed, 05 May 2010 23:41:26 GMT
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Content-Length: 829
Content-Type: application/x-www-form-urlencodedid0=A7FM1HEC&id1=TE2ZOYNE&id2=2TZB6EUY&id3=AUSIZ2K2/......./&id59=8HH3FXM9
La ligne en gras est ce qu'on cherche.
Et donc le premier fichier (id0) sera :
http://www.megaupload.com/?d=A7FM1HEC
etc...
Pour parfaire le script, un grep pour avoir le bon fichier, un cut/sed pour isoler les identifiants, et vous pouvez maintenant faire une bardée de wget en parallèle pour récupérer à fond la caisse votre distribution Ubuntu depuis Megaupload.
Dernière modification par Zakhar (Le 06/05/2010, à 19:03)
"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)
Hors ligne
#6 Le 06/05/2010, à 20:45
- Totor
Re : Un tuto pour extraire les liens d'un dlc ?
Pour parfaire le script, un grep pour avoir le bon fichier, un cut/sed pour isoler les identifiants,
Pas tout saisis (j'ai lu en diagonal) mais pour isoler les identifiants, c'est pas bien compliqué :
ids=( $(awk '/^id0=/ {gsub(/&?id[[:digit:]]+=/," ");print}' <fichier>) )
ids est un tableau contenant la liste des identifiants...
EDIT :
et pour avoir la liste des URL :
urls=( $(awk -F: '/Host/ { host=$2} /^id0=/ {gsub(/&?id[[:digit:]]+=/," "host"\\&d=");print} ' <fichier>) )
Ensuite, si tu veux les utiliser individuellement, tu fais un :
for url in "${urls[@]}"
do
wget "${url}"
done
Dernière modification par Totor (Le 08/05/2010, à 08:37)
-- Lucid Lynx --
Hors ligne
#7 Le 06/05/2010, à 22:31
- Zakhar
Re : Un tuto pour extraire les liens d'un dlc ?
Merci totor !
Mais en réalité on n'a pas besoin de la partie
id0
id1
etc...
On a juste besoin de ce qui est entre le = et le &
De plus le nombre de id est variables.
Donc je pense faire :
- un cut avec le limiteur & (je sais pas la syntaxe, mais un coup de man devrait me la donner)
là on doit alors obtenir une liste de :
id0=ABCDEFG
id1=AAAAAAA
...
id57=12345678
Ensuite je fais un
sed 's/.*=//'
... et normalement le tour est joué.
C'est que awk j'ai pas encore pratiqué... et ça m'a l'air encore plus touffu que sed !
Mais cette partie est pas trop urgente, pour l'instant je l'ai fait "à la main", c'est encore faisable !
Dernière modification par Zakhar (Le 06/05/2010, à 22:33)
"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)
Hors ligne
#8 Le 07/05/2010, à 11:46
- Totor
Re : Un tuto pour extraire les liens d'un dlc ?
Mais en réalité on n'a pas besoin de la partie
id0
id1etc...
On a juste besoin de ce qui est entre le = et le &
De plus le nombre de id est variables.
as-tu testé ce que je t'ai fourni au moins avant de poster de genre de chose ?
-- Lucid Lynx --
Hors ligne
#9 Le 07/05/2010, à 21:09
- Zakhar
Re : Un tuto pour extraire les liens d'un dlc ?
Non
Mais ce qui est bien avec Linux c'est qu'on peut souvent faire de plusieurs façons, et j'aime bien les façons que je suis capable de comprendre. Awk est pour l'instant en dehors de mes pratiques (et donc momentanément de ma compréhension)
Et donc pour l'instant j'ai fait :
echo "$STR" | tr "&" "\n" | sed 's/.*=//'
Ca fonctionne parfaitement.
On obtient :
ABCDEFG
AAAAAAA
...
12345678
Le tr remplace le & par des sauts de ligne.
Sur chaque ligne, le sed coupe tout ce qu'il y a jusqu'au = compris
Et effectivement, je les utilise ensuite dans un for, comme tu le mentionnes.
Cela dit je ne doute pas que ta commande awk fonctionne également, je la testerai à l'occasion et tâcherai de la comprendre !
Dernière modification par Zakhar (Le 07/05/2010, à 21:11)
"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)
Hors ligne
#10 Le 08/05/2010, à 10:30
- Totor
Re : Un tuto pour extraire les liens d'un dlc ?
On obtient :
ABCDEFG
AAAAAAA
...
12345678
Avec ma méthode, on obtient un tableau contenant les éléments suivant :
www.megaupload.com&d=AAAAAAA
...
www.megaupload.com&d=12345678
D'ailleurs, wget acceptant plusieurs urls, on peut procéder ainsi une fois qu'il (le tableau) est constitué:
wget ${urls[@]}
et si tu ne souhaite pas utiliser de tableau, ceci :
wget $(awk -F: '/Host/ { host=$2} /^id0=/ {gsub(/&?id[[:digit:]]+=/," "host"\\&d=");print} ' <fichier>)
suffit amplement !
Pour awk, ça se passe ici
-- Lucid Lynx --
Hors ligne
#11 Le 15/05/2010, à 22:48
- Zakhar
Re : Un tuto pour extraire les liens d'un dlc ?
Oui, mais avoir Megaupload devant ne m'intéresse pas trop, je veux juste l'extension.
"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)
Hors ligne