Pages : 1
#1 Le 14/03/2013, à 18:50
- Aspirine6
Un virus qui n'en ai pas un
Salut à tous, je viens vers vous car j'ai besoin d'aide, je vous explique rapidement le problème, j'ai développe en toute modestie ^^ un petit soft pour apprendre son vocabulaire anglais (oui on ressent la fainéantise du lycéen) , et je voulais le partager avec plein de gens, donc j'essaie de le mettre sur facebook mais là il me dit que mon fichier contient un virus, alors je me suis dit que c'était une erreur de l'antivirus facebook, donc j'ai cherché à le mettre sur un autre hébergeur mais ils me disent tous la même chose "virus détecté" pourtant ça n'en ai pas un je le jure !! Pour en savoir plus j'ai fait un scan avec clamav et il me dit virus détecté, trojan.rozena-win, je comprends pas ??? Est-ce un faux positif ? Si oui comment remédier à ce probleme sans réécrire tous le code source ? Est-ce vraiment un virus ?
J'ai compilé ce fichier avec g++ et le truc pour windows i586minmachin et seul la version windows réagi comme étant un virus.
Je vous passerai bien le fichier mais je ne peux l'héberger nul part ^^ et je ne veux infecter personne :/
Si quelqu'un à une idée, merci d'avance :)
Edit: c'est un programme en C, j'espère que c'est la bonne section, j'ai hésité entre sécurité et dev
Dernière modification par Aspirine6 (Le 14/03/2013, à 18:52)
Hors ligne
#2 Le 14/03/2013, à 18:59
- pires57
Re : Un virus qui n'en ai pas un
le fichier peut être mais le code source tu peut. (entre balise code de préfèrence)
Utilisateur d'Archlinux, Ubuntu et Kali Linux
Administrateur système et réseau spécialisé Linux.
LinkedIn
Hors ligne
#3 Le 14/03/2013, à 19:04
- Aspirine6
Re : Un virus qui n'en ai pas un
Ah oui pas con ^^
Vous allez voir comment je code mal:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int count(FILE* list);
int count(FILE* list)
{
int c = 0, n = 0;
while ((c = fgetc(list)) != EOF)
{
if (c == '\n')
{
n++;
}
}
return n;
}
int main(int argc, char *argv [])
{
char essai[100];
char mot_fr[100], mot_en[100];
char maison_fr[100] = "maison_fr.txt", cuisine_fr[100] = "cuisine_fr.txt";
char maison_en[100] = "maison_en.txt", cuisine_en[100] = "cuisine_en.txt";
char hall_fr[100] = "hall_fr.txt", jardin_fr[100] = "jardin_fr.txt";
char hall_en[100] = "hall_en.txt", jardin_en[100] = "jardin_en.txt";
char salle_a_manger_fr[100] = "salle_a_manger_fr.txt", salle_de_bain_fr[100] = "salle_de_bain_fr.txt";
char salle_a_manger_en[100] = "salle_a_manger_en.txt", salle_de_bain_en[100] = "salle_de_bain_en.txt";
char salon_fr[100] = "salon_fr.txt", erreur_fr[100] = "erreur_tr.txt";
char salon_en[100] = "salon_en.txt", erreur_tr[100] = "erreur.txt";
char buanderie_fr[100] = "buanderie_fr.txt", bureau_fr[100] = "bureau_fr.txt", chambre_fr[100] = "chambre_fr.txt";
char buanderie_en[100] = "buanderie_en.txt", bureau_en[100] = "bureau_en.txt", chambre_en[100] = "chambre_en.txt";
char listing_fr[100], listing_en[100];
int choix_liste = 0, verify = 0, n = 0;
float pourcentage_erreur = 0, faux = 0;
printf("Bienvenue dans voca v1.1 stable.\nDeveloppement logiciel: Dylan Nina et Pierre Wulles :p\n");
while (choix_liste != 12)
{
verify = 0;
faux = 0;
choix_liste = 0;
printf("Choisissez une liste:\n1.maison_en.txt\n2.cuisine_en.txt\n3.hall_en.txt\n4.jardin_en.txt\n5.salle_a_manger_en.txt\n6.salle_de_bain_en.txt\n7.salon_en.txt\n8.buanderie_en.txt\n9.bureau_en.txt\n10.chambre.txt\n11.Erreur.txt\n12.Quitter\n");
scanf("%d", &choix_liste);
if(choix_liste == 12){return 0;}
switch (choix_liste)
{
case 1:
strcpy(listing_fr, maison_fr);
strcpy(listing_en, maison_en);
break;
case 2:
strcpy(listing_fr, cuisine_fr);
strcpy(listing_en, cuisine_en);
break;
case 3:
strcpy(listing_fr, hall_fr);
strcpy(listing_en, hall_en);
break;
case 4:
strcpy(listing_fr, jardin_fr);
strcpy(listing_en, jardin_en);
break;
case 5:
strcpy(listing_fr, salle_a_manger_fr);
strcpy(listing_en, salle_a_manger_en);
break;
case 6:
strcpy(listing_fr, salle_de_bain_fr);
strcpy(listing_en, salle_de_bain_en);
break;
case 7:
strcpy(listing_fr, salon_fr);
strcpy(listing_en, salon_en);
break;
case 8:
strcpy(listing_fr, buanderie_fr);
strcpy(listing_en, buanderie_en);
break;
case 9:
strcpy(listing_fr, bureau_fr);
strcpy(listing_en, bureau_en);
break;
case 10:
strcpy(listing_fr, chambre_fr);
strcpy(listing_en, chambre_en);
break;
case 11:
strcpy(listing_fr, erreur_fr);
strcpy(listing_en, erreur_tr);
break;
case 12:
return 0;
break;
default:
return 0;
break;
}
FILE* liste_fr = NULL;
liste_fr = fopen(listing_fr, "r");
if (liste_fr == NULL)
{
printf("ERREUR, IMPOSSIBLE D'OUVRIR LE FICHIER\n");
return 0;
}
FILE* liste_en = NULL;
liste_en = fopen(listing_en, "r");
if (liste_en == NULL)
{
printf("ERREUR, IMPOSSIBLE D'OUVRIR LE FICHIER\n");
return 0;
}
n = count(liste_en);
rewind(liste_en);
while(verify < n)
{
fscanf(liste_fr, "%s", mot_fr);
fscanf(liste_en, "%s", mot_en);
printf("Comment dit-on %s en anglais ?\n", mot_fr);
scanf("%s", essai);
if(strcmp(essai, mot_en) == 0)
{
printf("Correct !\n");
}
else
{
printf("Faux !\n");
printf("%s se dit %s en anglais\n", mot_fr, mot_en);
faux++;
FILE* erreur_la = NULL;
erreur_la = fopen("erreur.txt", "a");
fprintf(erreur_la, "%s\n", mot_en);
FILE* erreur_tr = NULL;
erreur_tr = fopen("erreur_tr.txt", "a");
fprintf(erreur_tr, "%s\n", mot_fr);
fclose(erreur_la);
fclose(erreur_tr);
}
verify ++;
}
pourcentage_erreur = faux/n;
pourcentage_erreur = pourcentage_erreur * 100;
printf("Votre taux d'erreur est %1.lf pour 100\n", pourcentage_erreur);
fclose(liste_en);
fclose(liste_fr);
}
return 0;
}
Je suis conscient que ce n'est pas parfait et qu'il y a sûrement plus simple mais je fais ça pour m’entraîner, je débute
Hors ligne
#4 Le 14/03/2013, à 20:28
- Zakhar
Re : Un virus qui n'en ai pas un
La chose la plus probable est que la machine Windows sur laquelle tu as compilé contient un virus et qu'elle a contaminé l'exécutable aussitôt celui-ci produit.
"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)
Hors ligne
#5 Le 14/03/2013, à 20:36
- Aspirine6
Re : Un virus qui n'en ai pas un
Mais j'ai compilé sur linux avec mingw, mingw pourrait contenir un virus ? c'est possible ça ? je fais quoi alors ?
Hors ligne
#6 Le 14/03/2013, à 21:18
- Braun
Re : Un virus qui n'en ai pas un
Bonsoir,
Il me semble que faire un bon scan de ta bibliothèque mingw (api, dll ... ) serait une première étape.
Pour manger avec le diable il faut une longue cuiller dit-on.
Hors ligne
#7 Le 14/03/2013, à 22:07
- Aspirine6
Re : Un virus qui n'en ai pas un
Euh j'ai beau cherché je ne trouve pas la bibliothèque mingw, j'ai scanné le répertoire lib et le usr entièrement sans rien trouvé, et ensuite j'ai compilé un autre programme avec la même technique et en le scannant clamav ne détecte rien ce qui veut dire que c'est spécifique à ce programme de vocabulaire en particulier non ? but why.... ?
Hors ligne
#8 Le 23/03/2013, à 07:31
- pingouinux
Re : Un virus qui n'en ai pas un
Bonjour Aspirine6,
Ceci est complètement hors-sujet
Pour info, ton script peut-être beaucoup simplifié.
Utilisation de #define pour définir la dimension des tableaux, ce qui permet de la changer facilement.
Utilisation de tableaux de chaînes. On peut ainsi introduire de nouveaux fichiers .txt sans avoir à modifier le reste du programme (même pas la liste des choix).
Suppression de l'imposant bloc switch. On va pointer directement sur la bonne chaîne de caractères.
Voici le programme modifié
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 100
int count(FILE* list)
{
int c = 0, n = 0;
while ((c = fgetc(list)) != EOF)
{
if (c == '\n')
{
n++;
}
}
return n;
}
int main(int argc, char *argv [])
{
char tablo_fr[][N] = {
"maison_fr.txt", "cuisine_fr.txt",
"hall_fr.txt", "jardin_fr.txt",
"salle_a_manger_fr.txt", "salle_de_bain_fr.txt",
"salon_fr.txt",
"buanderie_fr.txt", "bureau_fr.txt", "chambre_fr.txt", "erreur_tr.txt"
};
char tablo_en[][N] = {
"maison_en.txt", "cuisine_en.txt",
"hall_en.txt", "jardin_en.txt",
"salle_a_manger_en.txt", "salle_de_bain_en.txt",
"salon_en.txt",
"buanderie_en.txt", "bureau_en.txt", "chambre_en.txt", "erreur.txt"
};
int nb_listes = sizeof(tablo_en)/N; // Nombre de fichiers .txt
char essai[N];
char mot_fr[N], mot_en[N];
char *listing_fr, *listing_en; // N'ont pas besoin d'être dimensionnés
int choix_liste = 0, verify = 0, n = 0, k;
float pourcentage_erreur = 0, faux = 0;
printf("Bienvenue dans voca v1.1 stable.\nDeveloppement logiciel: Dylan Nina et Pierre Wulles :p\n");
while (1)
{
verify = 0;
faux = 0;
choix_liste = 0;
printf("Choisissez une liste:\n"); // Impression de la liste des choix
for(k=0;k<nb_listes;++k) { printf("%d.%s\n",k+1,tablo_en[k]); }
printf("%d.%s\n",k+1,"Quitter");
scanf("%d", &choix_liste);
if(choix_liste == nb_listes+1){return 0;}
if(choix_liste<1 || choix_liste>nb_listes+1){return 1;}
listing_fr = tablo_fr[choix_liste-1]; // Pas de copie
listing_en = tablo_en[choix_liste-1];
FILE* liste_fr = NULL;
liste_fr = fopen(listing_fr, "r");
if (liste_fr == NULL)
{
printf("ERREUR, IMPOSSIBLE D'OUVRIR LE FICHIER\n");
return 0;
}
FILE* liste_en = NULL;
liste_en = fopen(listing_en, "r");
if (liste_en == NULL)
{
printf("ERREUR, IMPOSSIBLE D'OUVRIR LE FICHIER\n");
return 0;
}
n = count(liste_en);
rewind(liste_en);
while(verify < n)
{
fscanf(liste_fr, "%s", mot_fr);
fscanf(liste_en, "%s", mot_en);
printf("Comment dit-on %s en anglais ?\n", mot_fr);
scanf("%s", essai);
if(strcmp(essai, mot_en) == 0)
{
printf("Correct !\n");
}
else
{
printf("Faux !\n");
printf("%s se dit %s en anglais\n", mot_fr, mot_en);
faux++;
FILE* erreur_la = NULL;
erreur_la = fopen("erreur.txt", "a");
fprintf(erreur_la, "%s\n", mot_en);
FILE* erreur_tr = NULL;
erreur_tr = fopen("erreur_tr.txt", "a");
fprintf(erreur_tr, "%s\n", mot_fr);
fclose(erreur_la);
fclose(erreur_tr);
}
verify ++;
}
pourcentage_erreur = faux/n;
pourcentage_erreur = pourcentage_erreur * 100;
printf("Votre taux d'erreur est %1.lf pour 100\n", pourcentage_erreur);
fclose(liste_en);
fclose(liste_fr);
}
return 0;
}
Hors ligne
#9 Le 26/03/2013, à 17:57
- Aspirine6
Re : Un virus qui n'en ai pas un
Oh ben merci C'est génial ça
Je savais même pas qu'on pouvait faire des tableaux de chaînes de caractères, après tout c'est logique ^^, mais j'aurais jamais pensé à le faire comme ça, merci tu vas me simplifier grandement mon code, pour le problème de virus il s'est résolu de lui même dans ma version 1.3, j'ai ajouté une fonction de verbes irréguliers et donc ça a suffisamment modifié la signature numérique pour qu'il ne soit plus reconnu comme un virus.
J'ai juste deux-trois questions sur le code que tu m'as donné:
listing_fr = tablo_fr[choix_liste-1]; // Pas de copie
Pourquoi "-1" ?
if(choix_liste<1 || choix_liste>nb_listes+1){return 1;}
euh return 1 ça fait quoi en fait ?
Merci encore
Hors ligne
#10 Le 26/03/2013, à 18:20
- pingouinux
Re : Un virus qui n'en ai pas un
listing_fr = tablo_fr[choix_liste-1]; // Pas de copie
Pourquoi "-1" ?
Parce que l'indice des tableaux débute à 0, et ta liste à 1, d'où le décalage.
euh return 1 ça fait quoi en fait ?
C'est le code de retour du programme, que tu peux tester pour voir si tout s'est bien passé (variable $?, juste en sortie du programme).
Hors ligne
#11 Le 26/03/2013, à 19:48
- Aspirine6
Re : Un virus qui n'en ai pas un
Ok ok Merci !
Hors ligne
Pages : 1