Powered by Invision Power Board


Forum Rules Bienvenue dans la Distillerie d'entraide

Quelques soient vos problèmes, nous sommes là !

  Closed TopicStart new topicStart Poll

> compilation C++, erreurs...
Aramil Naïlo
Écrit le : Lundi 09 Mai 2005 à 16h00


Humain
Group Icon

Groupe : Citoyens
Messages : 126
Membre n° : 23
Inscrit le : 17/01/2003




Bonjour,

J'essaye de compiler un code C++ trouvé sur internet avec Visual C++ 6.0 Pro.

Les 3/4 des codes ne font des erreur d'en tête, faut-il modifier les fichier *.h pour chaque code ?

Si non, comment faire pour tous les codes marchent, sachant que je suis sur qu'ils ne contiennent pas d'erreurs.

Merci.


--------------------
Last night it came as a picture
With a good reason, a warning sign
This place is void of all passion
If you can imagine it's easy if you try
Believe me I failed this effort
I wrote a reminder this wasn't a vision
This time where are you Houston

My head is made up of memories
Most of them useless delusions
This room is bored of rehearsal
And sick of the boundaries
I miss you so much

"Asthenia" de Blink-182
PM
Top
Krokador
Écrit le : Lundi 09 Mai 2005 à 18h56


Pantoufle maléfique
Group Icon

Groupe : Citoyennes
Messages : 463
Membre n° : 646
Inscrit le : 12/02/2005




Bien euh... Il faut utiliser un compilateur compatible. Par exemple, nous au cégep on utilise Borland V.5.0. Il est très difficile de se e procurer chez soi parce que c'est un logiciel très vieux. On est tous équippés de Visual Studio chez nou, et certains ont essayés de coder le C++ habituel et ont accumuler des erreurs qui étaient du à la différence de compilateur.

Donc retourne voir ta source et tente de trouver quel compilateur a été utilisé, c'est le seul truc que je peux te donner (Je fais du C++ depuis janvier seulement, alors j'essaie d'aider au mieux de ma conaissance)


--------------------
user posted image
PMEmail PosterUsers Website
Top
Krokador
Écrit le : Mardi 10 Mai 2005 à 17h03


Pantoufle maléfique
Group Icon

Groupe : Citoyennes
Messages : 463
Membre n° : 646
Inscrit le : 12/02/2005




Heh :s j'ai du mal à vraiment comprendre à quoi ce code peut servir (imprimer/afficher un rapport sur la sécurité d'un réseau quelconque... ou quelque chose dans le genre)

Et j'ai beaucoup de difficulté à comprendre sa structure blink.gif wacko.gif

Ce que je sais cependant, c'est que c'est pas n'importe quel compilateur qui peut arriver à faire un .exe de ce code... Et que ça prend de foutus bons yeux pour le lire dans le bon ordre. (On a appris à tout aligner en prog, et veut veut pas, on s'est habitué à lire du code bien aligné aussi.)

Hmm, une recherche s'impose dans mon cas, étant donné que je n'avais jamais vu de variables defined et undefined (curiosité).

Tes bibliothèques semblent en ordre, je vais passer un testrun avec le compilateur Borland et ensuite celui de VisualStudio.net

*quelques minutes plus tard*

Résultat de VS.Net: Erreur fatale c1010 fin de fichier innatendue lors de la recherche d'une directive d'en-tête précompilée

Résultat de Borland C++ V5.0: Incapable de trouver les bibliothèques unistd.h, sys/socket.h, netinet/in.h et netdb.h
plusieurs fonctions non définies, structures non reconnues malgré le code, et finalement le message too many errors or warning message en fin de ligne.

Je sais pas si ça va t'aider de savoir ça, mais en gros je crois que le compilateur est vraiment une grosse partie du problème. Si tu as encore l'adresse où tu as trouvé le code sous la main ça peut toujours être bon d'y jeter un coup d'oeil.


--------------------
user posted image
PMEmail PosterUsers Website
Top
Forty-two
Écrit le : Mardi 10 Mai 2005 à 21h54


Script Master
Group Icon

Groupe : Admin
Messages : 364
Membre n° : 262
Inscrit le : 04/08/2003




Pour Krokador :

"Erreur fatale c1010 fin de fichier innatendue lors de la recherche d'une directive d'en-tête précompilée" veut simplement dire qu'il manque un #include <en-têteprécompilé> au début du source. Par défaut, VS.NET est configuré pour exiger un tel en-tête, dont le nom est en général stdafx.h.

Deux solutions pour résoudre le problème :
1) Solution bourrine : ajouter une ligne #include <stdafx.h> au début du code
2) Solution plus intelligente : modifier les paramètres de compilation, rubrique C/C++, En-têtes précompilés, choisir "Sans utiliser les en-têtes précompilés" dans la première ligne.


Pour Aramil :

1) Ce programme, comme indiqué dans le commentaire tout en haut, fait un "DoS", i.e. un Denial of Service, c'est-à-dire une attaque réseau, un piratage. Il utilise pour cela un exploit (cf. 2e paragraphe du commentaire), c'est-à-dire une faille de Windows, pour pénétrer (illégalement) dans un système cible.

J'ose supposer que celui qui a posté ce code source devait bien avoir une idée de son utilité rolleyes.gif

2) Le code est prévu pour Unix/Linux. Preuve : la moitié des #include sont spécifiques Unix (unistd.h, sys/socket, etc.). La fonction srandom() est elle aussi spécifique Unix/Linux.

3) Bref, bon courage pour compiler ça sous Windows sans changer plein de code. À la rigueur sous Cygwin, la chose peut éventuellement passer.

4) Même si on arrivait à le compiler, le code ne fonctionnerait certainement pas sous Windows, car les RAW-stockets, qui permettent de se créer des paquets réseau sur mesures, sont volontairement bridés. Or ce programme en utilise, comme une majorité de programmes de piratage réseau : cf. la ligne qui contient : "socket(AF_INET,SOCK_RAW,IPPROTO_UDP)".

5) La structure du code est assez triviale :
a] Lire les paramètres de ligne de commande
b] Choisir la méthode d'attaque
c] Envoyer un paquet réseau volontairement bidouillé

Le boulot est fait dans les fonctions nbt_nospoof et nbt_spoof, les autres fonctions ne sont que des utilitaires.

Toute la difficulté du programme se cache dans le contenu du fameux paquet réseau malformé, dont le code est écrit après la ligne "static char payload[]" (comme l'indique le commentaire d'ailleurs : "malformed SMB data").

Il faut savoir que tous les programmes de piratage se ressemblent, seul le contenu des paquets réseau malformés change (i.e. les quelques lignes remplies de chiffres au début du programme).


Je ne me permettrai pas de commenter longuement l'apparition d'un tel code source entre les mains d'un zanarkandien, sachez juste que :
1) la chose me fait moyennement rire...
2) si la personne qui a reçu ce code source est incapable de voir qu'on ne peut pas le compiler sous Windows alors que ça crève les yeux pour quelqu'un qui connaît un minimum, c'est qu'elle n'a pas le niveau pour s'en servir.


--------------------
#define QUESTION ((2b) || !(2b))
#define ANSWER 42

mon site perso
PMEmail PosterUsers Website
Top
Aramil Naïlo
Écrit le : Mercredi 11 Mai 2005 à 00h06


Humain
Group Icon

Groupe : Citoyens
Messages : 126
Membre n° : 23
Inscrit le : 17/01/2003




Alors tout d'abord merci pour vos réponses.

Ensuite, Forty-two, je ne savais pas a quoi servait ce code, un pote avec une connection 56k voulais le compiler, et il ne pouvais télécharger Visual C++, j'ai donc voulu l'aider.

Je ne lui compilerai pas son code si c'est un code malveillant. Surtout si il faut pour cela que j'aille sous Linux.

Mais tout de même pour ma culture perso, qu'est ce que cygwin ? J'ai des cygwin.dll avec certains de mes fichiers, genre mon serveur xdcc sur mirc (iroffer) a quoi cela sert ?

2) si la personne qui a reçu ce code source est incapable de voir qu'on ne peut pas le compiler sous Windows alors que ça crève les yeux pour quelqu'un qui connaît un minimum, c'est qu'elle n'a pas le niveau pour s'en servir.

J'ai juste voulu aider, je n'ai (malheuresement mais je compte bien remédier au pb) aucune connaissance en C++.


--------------------
Last night it came as a picture
With a good reason, a warning sign
This place is void of all passion
If you can imagine it's easy if you try
Believe me I failed this effort
I wrote a reminder this wasn't a vision
This time where are you Houston

My head is made up of memories
Most of them useless delusions
This room is bored of rehearsal
And sick of the boundaries
I miss you so much

"Asthenia" de Blink-182
PM
Top
Forty-two
Écrit le : Mercredi 11 Mai 2005 à 01h17


Script Master
Group Icon

Groupe : Admin
Messages : 364
Membre n° : 262
Inscrit le : 04/08/2003




QUOTE
Mais tout de même pour ma culture perso, qu'est ce que cygwin ? J'ai des cygwin.dll avec certains de mes fichiers, genre mon serveur xdcc sur mirc (iroffer) a quoi cela sert ?

Grosso-modo, Cygwin est une sorte d'émulateur Unix. Plus exactement, il fournit tout ce qu'il faut à Windows pour pouvoir compiler et exécuter des programmes Unix. Voir http://cygwin.com/ pour plus d'infos.

Le fichier cygwin.dll sert aux programmes compilés avec Cygwin : avec les mains, il contient le "trucs" qui traduisent les commandes Unix en commandes Windows.

QUOTE
2) si la personne qui a reçu ce code source est incapable de voir qu'on ne peut pas le compiler sous Windows alors que ça crève les yeux pour quelqu'un qui connaît un minimum, c'est qu'elle n'a pas le niveau pour s'en servir.

J'ai juste voulu aider, je n'ai (malheuresement mais je compte bien remédier au pb) aucune connaissance en C++.

Je m'excuse d'avoir pris la mouche à ton encontre. Mais la remarque est dans ce cas valable pour ton pote tongue.gif Pour sa culture, il peut télécharger Dev-Cpp, un compilateur C++ beaucoup plus léger que VC++, gratuit, librement téléchargeable, etc. : http://www.bloodshed.net/dev/devcpp.html. Et avec un peu de chance, vu que Dev-Cpp repose sur un compilateur compatible Unix, son code compilera (mais s'exécutera mal à cause de la limitation d'XP sur les paquets malformés).


--------------------
#define QUESTION ((2b) || !(2b))
#define ANSWER 42

mon site perso
PMEmail PosterUsers Website
Top
Aramil Naïlo
Écrit le : Jeudi 12 Mai 2005 à 19h47


Humain
Group Icon

Groupe : Citoyens
Messages : 126
Membre n° : 23
Inscrit le : 17/01/2003




Merci a tous de vos réponses.

J'ai éditer mon message, le code n'y figure plus... Je ne désire pas procurer ce genre de code sur Zanarkand.

J'ai une remarque au sujet de DevCPP 4, il me fait des erreurs de compilation sur un code que j'ai compiler sans problèmes sous VCPP6.0.


--------------------
Last night it came as a picture
With a good reason, a warning sign
This place is void of all passion
If you can imagine it's easy if you try
Believe me I failed this effort
I wrote a reminder this wasn't a vision
This time where are you Houston

My head is made up of memories
Most of them useless delusions
This room is bored of rehearsal
And sick of the boundaries
I miss you so much

"Asthenia" de Blink-182
PM
Top
Forty-two
Écrit le : Jeudi 12 Mai 2005 à 21h55


Script Master
Group Icon

Groupe : Admin
Messages : 364
Membre n° : 262
Inscrit le : 04/08/2003




QUOTE
J'ai une remarque au sujet de DevCPP 4, il me fait des erreurs de compilation sur un code que j'ai compiler sans problèmes sous VCPP6.0.

DevCpp et VC++ sont assez différents (options de compilation, tolérance aux erreurs, particularités spécifiques, etc.). Je ne peux pas t'aider plus sans le code source ou la liste des erreurs de compilation.


--------------------
#define QUESTION ((2b) || !(2b))
#define ANSWER 42

mon site perso
PMEmail PosterUsers Website
Top
Aramil Naïlo
Écrit le : Vendredi 13 Mai 2005 à 00h58


Humain
Group Icon

Groupe : Citoyens
Messages : 126
Membre n° : 23
Inscrit le : 17/01/2003




Ce que je ne comprend pas, c'est pourquoi un compilateur C++ n'est pas capable de compiler tous les codes C++ c'est... nul.


--------------------
Last night it came as a picture
With a good reason, a warning sign
This place is void of all passion
If you can imagine it's easy if you try
Believe me I failed this effort
I wrote a reminder this wasn't a vision
This time where are you Houston

My head is made up of memories
Most of them useless delusions
This room is bored of rehearsal
And sick of the boundaries
I miss you so much

"Asthenia" de Blink-182
PM
Top
Forty-two
Écrit le : Vendredi 13 Mai 2005 à 01h23


Script Master
Group Icon

Groupe : Admin
Messages : 364
Membre n° : 262
Inscrit le : 04/08/2003




Arf, c'est malheureusement pas aussi simple...

Le C/C++ est un langage plutôt bas niveau, proche du système, donc dépendant d'un tas de choses. Il est normal que si tu crées un programme système prévu pour Windows, il ne marche pas sous Unix, et réciproquement : les fonctions système de Windows n'existant pas sous Unix, le compilateur ne va pas les inventer tout seul.

En plus de ça, chaque compilateur C/C++ offre un tas d'options de compilation qui lui sont spécifique. Rien n'oblige à les utiliser, mais si tu crées un programme qui s'en sert, il y a de fortes chances pour qu'il ne compile pas ailleurs.

Il existe cependant des outils du C/C++ permettant de faire en sorte qu'un programme compile partout, même sur des compilateurs exotiques.


À côté de ça, il existe des langages conçus exprès pour compiler partout avec zéro changement ; mais on en paye le prix dans la lenteur (je pense à Java par exemple), et dans la nécessité d'avoir à installer un tas de DLL ou assimilés pour que le programme tourne.

Un programme C/C++ peut ne faire qu'une dizaine de Ko et très bien fonctionner... Le runtime Java pèse à lui seul plusieurs dizaines de Mo !



Bref, c'est normal qu'un langage bas niveau pose des difficultés de portage. D'autre part, avec un peu d'habitude tu pourras corriger ces problèmes très facilement Wink.gif


--------------------
#define QUESTION ((2b) || !(2b))
#define ANSWER 42

mon site perso
PMEmail PosterUsers Website
Top
1 utilisateur(s) sur ce sujet (1 invités et 0 utilisateurs anonymes)
0 membres :

Topic Options Closed TopicStart new topicStart Poll

 


Habillé par Shadowillusions

Sites de nos membres :
Le blog de Mortis Ghost Le site de la réécriture Avatar RPG Le site de Fauna Friends