IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Программирование (https://www.imho.ws/forumdisplay.php?f=40)
-   -   сокеты в linux (https://www.imho.ws/showthread.php?t=64390)

Cash 17.07.2004 07:55

сокеты в 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, но когда клиент вводит команду, то вот этот мой долбанный сервер выдает ошибку что такой команды не существует.

Drakosha 17.07.2004 11:21

можеш рассказать что проиходит?

Cash 22.07.2004 02:18

Сканер портов
 
#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(). На данный момент очень удобен в приминении!

Drakosha 22.07.2004 11:28

может проблема в том что когда запускаешь комманду надо давать полный путь? Например /bin/ls

sasa001 22.07.2004 13:03

Cash
Хм... избитая тема.
connect'ом больно уж медленно сканить будет =) connect() использует ПОЛНУЮ установку TCP-соединения (Syn, Syn+Ack, Ack) с последующим разрывом соединения (rst или fin). Это ОЧЕНЬ медленно и ОЧЕНЬ палевно.

Drakosha 22.07.2004 14:40

sasa001

а как же тогда делать?

sasa001 22.07.2004 15:20

Drakosha
ну, например, вот - http://www.samag.ru/ru/articles/last...cle/scaner.txt .
На самом деле, вопрос очень больной - и избитый. Сканера(точнее, метода сканирования) быстрого, и не обнаружаемого IDS, нету...
Если еще материал нужен - в пм напиши, выложу завтра.

Cash 26.07.2004 12:58

sasa001

Я думаю что connect(). Хоть и медленный сканер портов. Зато качественный и надежный.

Ну это мое мнение.

sasa001 26.07.2004 17:34

Cash
Tol'ko esli svoih portov =) Chuzie s pomosch'u connect'a lutschsche ne skanit'.

Cash 27.07.2004 06:16

Я полностью с тобой согласен.
Но если тебе например нужны какие нибудь определенные порты. То лучше использовать connect().
Короче я считаю connect - это качество
Все остальное - это скорость.
Кстати я сканирую компы постоянно конектом. В принципе я доволен. Скорость сканирования на секунд 5 меньше того же самого nmap. :contract: :yees:


Часовой пояс GMT +4, время: 17:17.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.