ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Прослушивание 80 порта
  #1  
Старый 01.03.2006, 20:05
Аватар для ascas
ascas
Познающий
Регистрация: 20.01.2006
Сообщений: 84
Провел на форуме:
156615

Репутация: 5
По умолчанию Прослушивание 80 порта

Как можно настроить сокет на прослушку 80 порта? когда я его настрайваю мне пишет что одним портом может пользоваться только одна прога. Но проблема в том что когда я соеденяюсь с гугл, он присылает ответ на 80 порт, хотя мой сокет работает на 181.
 
Ответить с цитированием

  #2  
Старый 01.03.2006, 20:09
Аватар для fucker"ok
fucker"ok
Познавший АНТИЧАТ
Регистрация: 21.11.2004
Сообщений: 1,137
Провел на форуме:
2487541

Репутация: 761


По умолчанию

Тебе нужно воспользоватся снифером. (например ethereal)
http://www.ethereal.com/

А открывать сокет на один и тот же порт нельзя (имхо)
Иначе как программа определит что это её пакет? :]
 
Ответить с цитированием

  #3  
Старый 01.03.2006, 20:10
Аватар для nerezus
nerezus
Pagan Heart
Регистрация: 12.08.2004
Сообщений: 3,791
Провел на форуме:
6490435

Репутация: 2290


Отправить сообщение для nerezus с помощью ICQ
По умолчанию

Цитата:
когда я его настрайваю мне пишет что одним портом может пользоваться только одна прога.
да
Цитата:
Но проблема в том что когда я соеденяюсь с гугл, он присылает ответ на 80 порт
нет
 
Ответить с цитированием

  #4  
Старый 01.03.2006, 22:28
Аватар для ascas
ascas
Познающий
Регистрация: 20.01.2006
Сообщений: 84
Провел на форуме:
156615

Репутация: 5
По умолчанию

Цитата:
Сообщение от nerezus  
нет
А куда он отправляет ответ? Через тот же самый сокет который я открываю мне назад ничего не приходит
 
Ответить с цитированием

  #5  
Старый 02.03.2006, 00:43
Аватар для KEZ
KEZ
Banned
Регистрация: 18.05.2005
Сообщений: 1,981
Провел на форуме:
1941233

Репутация: 2726


По умолчанию

КАК МОЖНО ОТПРАВЛЯТЬ ОТВЕТ ЧЕРЕЗ СОКЕТ???
Можно отправлять IP пакет с TCP фреймом, в котором есть
SrcIP
DstIP
SrcPORT
DstPORT

В винде хендл - это индекс в таблицах которые храняться в ядре. Хендлы можно копировать из одного процесса в другой, с помощью DuplicateHandle. Сокеты - это ХЕНДЛЫ. Их используют чтобы приложению было легче.
Гугл шлет ответ на твой айпи и порт который может быть ЛЮБЫМ.
Так что либо ты пишешь драйвер который атачит девайс на \Device\Tcp,
либо создаешь RAW сокет, ставишь сетевуху в неразбор. режим и слушаешь все пакеты которые идут. Доступа к Ethernet заголовкам тогда нету.
 
Ответить с цитированием

  #6  
Старый 02.03.2006, 12:32
Аватар для F1reF0x
F1reF0x
Познающий
Регистрация: 13.11.2004
Сообщений: 48
Провел на форуме:
91229

Репутация: 25
Отправить сообщение для F1reF0x с помощью ICQ
По умолчанию

Цитата:
Как можно настроить сокет на прослушку 80 порта?
Цитата:
uses winsock;

procedure BindPort(Sender: TObject);
var
WSD: TWSAData;
Sock: TSocket;
Addr: TSockAddr;
Len: Integer;
AcceptedSock:TSocket;
begin
WSAStartUp(MakeWord(1,0), WSD);
Sock:= Socket(AF_Inet, Sock_Stream, 0);
Addr.sin_family:= PF_Inet;
Addr.sin_port:= Htons(25555);
Addr.sin_addr.S_addr:=InAddr_Any;
FillChar(Addr.Sin_Zero,SizeOf(Addr.Sin_Zero),0);
Bind(Sock, Addr, SizeOf(Addr));
Listen(Sock, SoMaxConn);
Len:= SizeOf(TSockAddr);
AcceptedSock:= Accept(Sock, @Addr, @Len);
WSACleanUp;
End;
Вот так вот слушаешь 80 порт
 
Ответить с цитированием

  #7  
Старый 03.03.2006, 00:16
Аватар для ascas
ascas
Познающий
Регистрация: 20.01.2006
Сообщений: 84
Провел на форуме:
156615

Репутация: 5
По умолчанию

Цитата:
Сообщение от KEZ  
либо создаешь RAW сокет, ставишь сетевуху в неразбор. режим и слушаешь все пакеты которые идут.
Как я понял ты имеешь в виду во это:
New Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.Unspecified)
мне выдает вот что:

"Предпринятая операция не поддерживается для выбранного типа объекта"

Как бы я не менял настройки, практически всегда мне выдает такую фигню
 
Ответить с цитированием

  #8  
Старый 03.03.2006, 00:18
Аватар для ascas
ascas
Познающий
Регистрация: 20.01.2006
Сообщений: 84
Провел на форуме:
156615

Репутация: 5
По умолчанию

Цитата:
Сообщение от F1reF0x  
Вот так вот слушаешь 80 порт
Спасибо конечно, в будущем пригодиться, но я не на delphi счас пишу
 
Ответить с цитированием

  #9  
Старый 09.03.2006, 17:36
Аватар для drmist
drmist
Green member - Level 3
Регистрация: 08.10.2005
Сообщений: 396
Провел на форуме:
400609

Репутация: 239
По умолчанию

ascas
почитай про перехват апи.
Очень хорошие статьи с исходниками на delphi и C++ есть на Wasm.ru - автор Ms-rem.
В случае с сокетами перехват лучше реализуется в ring0.
__________________
Никому нельзя верить...
 
Ответить с цитированием

  #10  
Старый 09.03.2006, 17:41
Аватар для KEZ
KEZ
Banned
Регистрация: 18.05.2005
Сообщений: 1,981
Провел на форуме:
1941233

Репутация: 2726


Thumbs down

Цитата:
Как я понял ты имеешь в виду во это:
New Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.Unspecified)
Нет я имею ввиду ф-ии socket, bind, accept из ws2_32.dll и winsock.dll
Используя какой язык ты будешь из вызывать - не имеет никакого значения, хоть на вашем дурацком делфи.
(Ты спросил - я ответил)

Цитата:
почитай про перехват апи.
В случае с сокетами перехват лучше реализуется в ring0.
Куришь (план) ?



Для самых ленивых
Код:
#include <conio.h>
#include <stdio.h>
#include <winsock2.h>

#define MAX_PACKET_SIZE    0x10000
#define SIO_RCVALL         0x98000001
#define TH_FIN  0x01
#define TH_SYN  0x02
#define TH_RST  0x04
#define TH_PUSH 0x08
#define TH_ACK  0x10
#define TH_URG  0x20
#define TH_ECNECHO  0x40    /* ECN Echo */
#define TH_CWR      0x80    /* ECN Cwnd Reduced */
#define TH_OFF(th)  (((th)->th_offx2 & 0xf0) >> 4)

#pragma comment( lib, "wsock32.lib" )

char Buffer[MAX_PACKET_SIZE]; 

typedef struct IPHeader {
  UCHAR   iph_verlen;   
  UCHAR   iph_tos;      
  USHORT  iph_length;   
  USHORT  iph_id;     
  USHORT  iph_offset;   
  UCHAR   iph_ttl;      
  UCHAR   iph_protocol; 
  USHORT  iph_xsum;    
  ULONG   iph_src;      
  ULONG   iph_dest;    
} IPHeader;


struct tcphdr {
    USHORT  th_sport;       /* source port */
    USHORT  th_dport;       /* destination port */
    ULONG   th_seq;         /* sequence number */
    ULONG   th_ack;         /* acknowledgement number */
    UCHAR   th_offx2;       /* data offset, rsvd */
    UCHAR   th_flags;
    USHORT  th_win;         /* window */
    USHORT  th_sum;         /* checksum */
    USHORT  th_urp;         /* urgent pointer */
};


char src[10];
char dest[10];
char ds[15];
unsigned short lowbyte;
unsigned short hibyte;


USHORT Checksum( PUCHAR Data, USHORT Length ) 
{ 
    ULONG sum=0; 
    USHORT sshort=0; 
    PUSHORT wd=(PUSHORT)Data; 
    USHORT wc=Length >> 1; 

    while(wc--) 
        sum+=*wd++; 
    if(Length & 1) 
        sum+=*(PUCHAR)wd; 

    while( sum >> 16 ) 
        sum = (sum & 0xFFFF) + (sum >> 16); 

    return (sum != 0xFFFF) ? ~sum : sum; 
}  

void printbuf( char *buf, int len )
{
	char str[15];
	int k = 0;

	for (int i = 0; i < len; i++)
	{
		memset( str, 0, 15 );
		sprintf( str, "%x", abs( buf[i] ) );
		if (strlen( str ) == 1)
		{
			str[1] = str[0];
			str[0] = '0';
		}
		printf( "%s ", str );
		if (k == 15)
		{
			printf( "\n" );
			k = 0;
		}
		else k++;
	}
}

void main()
{
  WSADATA     wsadata;   
  SOCKET      s;         
  char        name[128]; 
  HOSTENT*    phe;       
  SOCKADDR_IN sa;        
  IN_ADDR sa1;           
  char ttl[25];
  int i;
  WORD *wd;
  ULONG summ;
  unsigned long flag = 1;  
  IPHeader *hdr;
    tcphdr *thdr;

  WSAStartup(MAKEWORD(2,2), &wsadata);
  s = socket( AF_INET, SOCK_RAW, IPPROTO_IP );
  gethostname(name, sizeof(name));
  phe = gethostbyname( name );
  ZeroMemory( &sa, sizeof(sa) );
  sa.sin_family = AF_INET;
  sa.sin_addr.s_addr =((struct in_addr *)phe->h_addr_list[0])->s_addr;
  bind(s, (SOCKADDR *)&sa, sizeof(SOCKADDR));
  
  ioctlsocket( s, SIO_RCVALL, &flag );

	int ai = 0;
  while( !_kbhit() )
  {
    memset( Buffer, 0, MAX_PACKET_SIZE );
    int count;
    count = recv( s, Buffer, sizeof( Buffer ), 0 );
    if (count >= sizeof( IPHeader) )
	{
        //summ=0;
        hdr = (IPHeader*)Buffer;
		thdr = (tcphdr*)Buffer + sizeof( IPHeader );
        //wd=(WORD *)Buffer;
        //printf( "%u ", hdr->iph_verlen & 0xF);
        //printf( "0x%X ", ntohs(hdr->iph_xsum));
        //hdr->iph_xsum=0;
        //printf( "0x%X \n", htons(Checksum((PUCHAR)Buffer, (hdr->iph_verlen & 0xF)*4)));
		if (hdr->iph_protocol == IPPROTO_TCP)
		{
			//printf( "%d.\n", ai );
			//printbuf( (char*)hdr, count );
			//printf( "\n\n" );
			printf( "ACK: %d\n", thdr->th_ack );
			for (int j = 0; j <= count; j++)
				printf( "%c", Buffer[j] );
			printf( "\r\n" );
			ai++;
		}
    }
  }

  closesocket( s );
  WSACleanup();
}

Последний раз редактировалось KEZ; 09.03.2006 в 17:51..
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программиста осудили на 1 год за уничтожение базы данных у бывшего работодателя dinar_007 Мировые новости 0 20.02.2006 15:07
Защищаем MySql. Шаг за шагом k00p3r Чужие Статьи 0 13.06.2005 11:18
бинд порта L0GA4 Болталка 1 25.01.2005 14:45



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ