![]() |
сокеты в linux
Помогите. Я не врубаюсь вроде все делаю правельно, но эта прога не правельно работает/ Я хочу сделать свой сервер в linux что бы удаленно можно было получать полный доступ к моему компу. Но где то что то какой то не дачет. Help me please
Мой Исходник #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <stdio.h> #define PORT 7777 int main() { int s; int rc; char buffer[255]; struct sockaddr_in addr; bzero(&addr,sizeof(addr)); s=socket(PF_INET,SOCK_STREAM,0); addr.sin_family=PF_INET; addr.sin_port=htons(PORT); addr.sin_addr.s_addr=INADDR_ANY; if(bind(s,(struct sockaddr*)&addr,sizeof(addr))!=0) perror("Error Bind\n"); if(listen(s,20)!=0) perror("Error Listen"); for(;;) { int cl; struct sockaddr_in client; int size; size=sizeof(client); cl=accept(s,(struct sockaddr*)&client,&size); bzero(&client,sizeof(client)); if(cl<0)perror("Error Accept"); else { if(fork()>0) { close(cl); } else if(fork()==0) { while(1) { bzero(buffer,sizeof(buffer)); rc=recv(cl,buffer,255,0); printf("%s",buffer); if(rc>0)break; } dup2(cl,0); dup2(cl,1); dup2(cl,2); execl("/bin/sh","/bin/sh","-c",buffer,0); } else perror("Error fork"); } } return 0; } :confused: После запуска этой программы она слушает пор т 7777, ну впрочем как все стандартные серваки. После того как к ней кто то подключился любым сособом (самый распрастраненый telnet IP 7777). Она должна давать клиенту полный shell доступ с провами root, но когда клиент вводит команду, то вот этот мой долбанный сервер выдает ошибку что такой команды не существует. |
можеш рассказать что проиходит?
|
Сканер портов
#include <sys/socket.h>
#include <sys/types.h> #include <stdio.h> int main() { int s; int sec; struct sockaddr_in addr; s=socket(PF_INET,SOCK_STREAM,0); addr.sin_family=PF_INET; addr.sin_addr.s_addr=inet_addr("127.0.0.1"); for(sec=0;sec<65000;sec++) { addr.sin_port=htons(sec); if(connect(s,(struct sockaddr*)&addr,sizeof(addr))==0) printf("Open Port: %d\n",sec); else printf("Close Port: ",sec); } return 0; } Сканер портов методом connect(). На данный момент очень удобен в приминении! |
может проблема в том что когда запускаешь комманду надо давать полный путь? Например /bin/ls
|
Cash
Хм... избитая тема. connect'ом больно уж медленно сканить будет =) connect() использует ПОЛНУЮ установку TCP-соединения (Syn, Syn+Ack, Ack) с последующим разрывом соединения (rst или fin). Это ОЧЕНЬ медленно и ОЧЕНЬ палевно. |
sasa001
а как же тогда делать? |
Drakosha
ну, например, вот - http://www.samag.ru/ru/articles/last...cle/scaner.txt . На самом деле, вопрос очень больной - и избитый. Сканера(точнее, метода сканирования) быстрого, и не обнаружаемого IDS, нету... Если еще материал нужен - в пм напиши, выложу завтра. |
sasa001
Я думаю что connect(). Хоть и медленный сканер портов. Зато качественный и надежный. Ну это мое мнение. |
Cash
Tol'ko esli svoih portov =) Chuzie s pomosch'u connect'a lutschsche ne skanit'. |
Я полностью с тобой согласен.
Но если тебе например нужны какие нибудь определенные порты. То лучше использовать connect(). Короче я считаю connect - это качество Все остальное - это скорость. Кстати я сканирую компы постоянно конектом. В принципе я доволен. Скорость сканирования на секунд 5 меньше того же самого nmap. :contract: :yees: |
| Часовой пояс GMT +4, время: 17:17. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.