Petit projet de hack facile et rapide

Résolu/Fermé
ryko1820 Messages postés 1677 Date d'inscription dimanche 28 avril 2013 Statut Membre Dernière intervention 15 août 2021 - Modifié par ryko1820 le 18/05/2013 à 17:47
smed_79 Messages postés 1291 Date d'inscription dimanche 21 septembre 2008 Statut Contributeur Dernière intervention 17 mars 2017 - 27 mai 2013 à 20:22
Bonjour,

J'utilise une GUI connue ici pour encoder certaines de mes videos (mediacoder). En effet, je suis un des infortunés abonnés d'Orange équipé de leur décodeur vidéo "moyenâgeux" (l'UHD87), une superbe pièce de technologie qui ne sait lire que très peu de codec, ce qui m'oblige à transcoder nombre de vidéos de l'XVID (par exemple) vers le MP4 ou le MKV (la qualité est nickel).

Pour info les codec vidéos supportés par l'UHD87

MPEG2 MP@ML
MPEG4-AVC HP@L4.1
Windows Media 9 (profil Simple, Main et
Advanced)
Divx 3.11/ 4/ 5/ 6.x


Comme beaucoup de GUI mediacoder ne fait en réalité que de lancer des tas d'exécutables, freeware utilisables le plus souvent en ligne de commandes (Dans mon cas x264.exe, faac.exe eventuellement nerotag.exe, etc ...).
J'aimerais récupérer ces lignes de commandes dans un log
(pour les utiliser ensuite sur ma bécane linux).

Pour ce faire, si quelqu'un pouvait me donner un bout de code qui une fois renommé en, par exemple, x264.exe, loguerait la ligne de commande qui lui est passée et lancerait le vrai x264.exe renommé en, par exemple, _x264.exe en lui transmettant les paramètres, je lui serait très reconnaissant.

Ca doit faire une dizaine de ligne de code ... :(

Je dois avoir un Visual Studio express qui traîne quelque part, ensuite je me débrouillerais pour la compil, donc dans n'importe quel langage supporté par leur compilo.

Merci d'avance.

A voir également:

2 réponses

ryko1820 Messages postés 1677 Date d'inscription dimanche 28 avril 2013 Statut Membre Dernière intervention 15 août 2021 276
Modifié par ryko1820 le 19/05/2013 à 16:24
Hello,

J'étais pas loin en disant une dizaine de lignes de codes. Bon, comme ça fait au moins dix ans que je l'ai pas fait, c'est moche et ça m'a pris un peu de temps :) mais ça marche, enfin presque ...

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char *argv[])
{
    int i;
    char logFilePath[1000];
    char prgCall[1000];

    strcpy(logFilePath,argv[0]);
    strcpy(prgCall,argv[0]);
    strcat(logFilePath,".log");
    strcat(prgCall,".exe");

    FILE* logFile = NULL;

    logFile = fopen(logFilePath, "a+");

    fprintf(logFile,"%s:%s:%d argument(s) sent to %s\n", __DATE__, __TIME__, argc, argv[0]); 

    for (i = 1 ; i < argc ; i++)
    {
 strcat(prgCall," ");
 strcat(prgCall,argv[i]);
 if (i < 10)
 {
     fprintf(logFile,"arg.#%d:  %s\n", i, argv[i]);
 }
 else
 {
     fprintf(logFile,"arg.#%d: %s\n", i, argv[i]);
 }

    }
    fprintf(logFile,"\n%s\n",prgCall);
    fclose(logFile);

    system("notepad.exe");
    //system(prgCall);
    //execv(prgCall);

    return(0);
}


Ca marche presque car mediacoder doit monitorer un truc. (process, thread, retour ?) du coup l'appel du vrai prog. se fait pas.
Si quelqu'un à une solution, une idée ...
Là j'ai mis notepad mais ça plante aussi en laissant mon "system(prgCall);" ...
Sinon j'ai fait le test en appelant ce prog. un peu modifié depuis ce prog (pas de d'appel system à la fin) et les arguments passent bien ... Donc c'est pas ça ...

Comme j'avais la flemme de coder mon idée de départ, l'exe d'origine est renommé pour être appelé "<nom_du_prog>.exe.exe" (au lieu de "_<nom_du_prog>.exe") et le log "<nom_du_prog>.exe.log".

Pour ffmpeg ça donnera ffmpeg.exe.exe et ffmpeg.exe.log.

Le log à cette tronche là :

May 19 2013:15:47:42:33 argument(s) sent to .\codecs\ffmpeg.exe
arg.#1:  -f
arg.#2:  yuv4mpegpipe
arg.#3:  -i
arg.#4:  pipe:7
arg.#5:  -r
arg.#6:  2997/125
arg.#7:  -s
arg.#8:  720x304
arg.#9:  -me_method
arg.#10: epzs
arg.#11: -me_range
arg.#12: 16
arg.#13: -mbd
arg.#14: 1
arg.#15: -qns
arg.#16: 0
arg.#17: -g
arg.#18: 250
arg.#19: -bf
arg.#20: 0
arg.#21: -b
arg.#22: 1000000
arg.#23: -r
arg.#24: 2997/125
arg.#25: -aspect
arg.#26: 47:20
arg.#27: -threads
arg.#28: 12
arg.#29: -vcodec
arg.#30: mpeg4
arg.#31: -y
arg.#32: C:\Users\Eric\AppData\Local\Temp\mctemp624010867906b9c5.avi

.\codecs\ffmpeg.exe.exe -f yuv4mpegpipe -i pipe:7 -r 2997/125 -s 720x304 -me_method epzs -me_range 16 -mbd 1 -qns 0 -g 250 -bf 0 -b 1000000 -r 2997/125 -aspect 47:20 -threads 12 -vcodec mpeg4 -y C:\Users\Eric\AppData\Local\Temp\mctemp624010867906b9c5.avi
May 19 2013:15:47:42:16 argument(s) sent to .\codecs\ffmpeg.exe
arg.#1:  -f
arg.#2:  s16le
arg.#3:  -ac
arg.#4:  2
arg.#5:  -ar
arg.#6:  48000
arg.#7:  -i
arg.#8:  -
arg.#9:  -f
arg.#10: ac3
arg.#11: -acodec
arg.#12: ac3
arg.#13: -ab
arg.#14: 128000
arg.#15: C:\Users\Eric\AppData\Local\Temp\mctemp624010867906b9c5.ac3

.\codecs\ffmpeg.exe.exe -f s16le -ac 2 -ar 48000 -i - -f ac3 -acodec ac3 -ab 128000 C:\Users\Eric\AppData\Local\Temp\mctemp624010867906b9c5.ac3


J'ai du baisser l'UAC en autorisant tout, car dans cette daube d'OS on peut même pas écrire un log où on veut ... alors que pour attraper des virus, ça le dérange pas ... ;-)
Si quelqu'un sait comment il faut faire pour gérer ça proprement aussi ...

J'ai utilisé mingw32 pour compiler et winvi comme "IDE" c'était bien suffisant :)

Merci
0
ryko1820 Messages postés 1677 Date d'inscription dimanche 28 avril 2013 Statut Membre Dernière intervention 15 août 2021 276
Modifié par ryko1820 le 19/05/2013 à 18:02
bon tant pis, en essayant de comprendre et en cherchant une solution à mes questions, j'ai trouvé une solution de fainéant :)

Process Monitor ... en plus trouvé sur le site de Microsoft.

Permet de visualiser et de logger les process et d'espionner ce qu'ils font (y compris les lignes de commandes qu'ils lancent) ... J'avais oublié l'existence de ce truc.

Bon maintenant je vais pouvoir batcher tout ça et transformer les xvid pendant la nuit.

Je met résolu :)
0
smed_79 Messages postés 1291 Date d'inscription dimanche 21 septembre 2008 Statut Contributeur Dernière intervention 17 mars 2017 844
27 mai 2013 à 20:22
merci pour le partage :)
0