Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 14/03/2013, à 19: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, à 19:52)

Hors ligne

#2 Le 14/03/2013, à 19: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, à 20: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 smile

Hors ligne

#4 Le 14/03/2013, à 21: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, à 21: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, à 22: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, à 23: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, à 08: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, à 18:57

Aspirine6

Re : Un virus qui n'en ai pas un

Oh ben merci smile C'est génial ça big_smile 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 big_smile

Hors ligne

#10 Le 26/03/2013, à 19:20

pingouinux

Re : Un virus qui n'en ai pas un

Aspirine6   #9 a écrit :
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, à 20:48

Aspirine6

Re : Un virus qui n'en ai pas un

Ok ok big_smile Merci !

Hors ligne