URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 3848
[ Назад ]

Исходное сообщение
"raw сокеты(udp)"

Отправлено zZz , 19-Янв-05 15:58 
Хочу побаловаться с raw сокетами.
Задача:на машину с udp демоном послать пакет,с подделаным айпишником.
Киньте ссылку плз на это,у меня есть статья про то как tcp пакеты с нуля собирать,но хотелось бы udp сначала попробовать.Просто я не знаю все названия структур и полей.

Содержание

Сообщения в этом обсуждении
"raw сокеты(udp)"
Отправлено Alexander S. Salieff , 25-Янв-05 16:30 
>Хочу побаловаться с raw сокетами.

Блин, баловников развелось... И что печально, раньше баловники хоть что-то почитать/раскопать удосуживались, а теперь тема баловства только одна - "сделайте за меня кул спуф/хак/спам etc..."

>Задача:на машину с udp демоном послать пакет,с подделаным айпишником.
>Киньте ссылку плз на это,
> у меня есть статья про то как tcp
>пакеты с нуля собирать,но хотелось бы udp сначала попробовать.Просто я не
>знаю все названия структур и полей.

Удачи тебе в TCP-спуфинге ;) Величайшие умы безрезультатно корячатся, а баловник со статьей лихо утрет им нос ;)

Совет только один книжки+поисковики+инфопорталы=RTFM, а потом, глядишь, и баловаться расхочется, а то и чем нибудь полезным займешься...


"raw сокеты(udp)"
Отправлено chip , 25-Янв-05 17:47 
>Совет только один книжки+поисковики+инфопорталы=RTFM, а потом, глядишь, и баловаться расхочется, а то
>и чем нибудь полезным займешься...

золотые слова! respect!


"raw сокеты(udp)"
Отправлено zZz , 26-Янв-05 10:24 
>>Совет только один книжки+поисковики+инфопорталы=RTFM, а потом, глядишь, и баловаться расхочется, а то
>>и чем нибудь полезным займешься...
>
>золотые слова! respect!
ну хорошо а если бы я не написал слово "баловатся"?вы бы мне помогли?
я уже все сам нашел!а именно похожий исходник,как раз для tcp и udp.правда теперь такой вопрос.эти исходники поставляются вместе с makefil'om т.е:
[wraith@localhost rawsock-0.5]$ ls
CHANGES      ip_gen.c*       Makefile.linux*  rawsock_utils.h*  tcp_gen.c*      udp_gen.c*
checksum.h*  ipicmp.c*       Makefile.sco*    README            trans_check.c*
in_cksum.c*  Makefile.bsd4*  Makefile.sol*    tcp.c*            udp.c*
Ну вот.я в исходниках поковырялся,в принципе понял что к чему.но хотелось бы банально скомпилить.в readme абсолютно ничего нету по поводу компиляции.
если я делаю make linux то пишет что не заданы цели.В самом makefil'e ничего путного нету!!!
Теперь вопрос по существу.есть обьявление:
unsigned char packet[
#if !defined(LINUX)
  sizeof(struct ip) +
#else /* LINUX */
  sizeof(struct iphdr) +
#endif /* LINUX */
              sizeof(struct udphdr) +
              MESG_LENGTH];
что такое MESG_LENGTH?и ведь struct ip и struct udphdr равны нулю вначале,как же их туда впихивают?
Да и еще.что значит
struct udphdr *udphdr;
udphdr = (struct udphdr *)(packet + sizeof(struct ip));
т.е что именно мы явно приводим к типу struct udphdr*?
p.s возможно статью напишу про это дело.инфы мало про это,тем более как строить udp пакеты!


"raw сокеты(udp)"
Отправлено Alexander S. Salieff , 26-Янв-05 15:30 
>я уже все сам нашел!а именно похожий исходник,как раз для tcp и
>udp.
правда теперь такой вопрос.эти исходники поставляются вместе с makefil'om т.е:

>что такое MESG_LENGTH?и ведь struct ip и struct udphdr равны нулю вначале,как
>же их туда впихивают?
>Да и еще.что значит
>struct udphdr *udphdr;
> udphdr = (struct udphdr *)(packet + sizeof(struct ip));
>т.е что именно мы явно приводим к типу struct udphdr*?

>p.s возможно статью напишу про это дело.инфы мало про это,тем более как
>строить udp пакеты!


Йопт, ну это же же просто ужас :-О
Ну какой тебе удп-спуффинг? Ты же даже базовых основ языка не знаешь... Абсолютно без понятия об операторике структур, указателей и прочих вещей... Тебе бы букварь Страуструпа почитать, пописать HelloWord'ы и калькуляторы... Почитать про make-процессор неплохо бы, научиться писать примитивные мейкфайлы...
Статьи он писать будет, инфы мало. Жуть... Для любого человека, способного связать 2 строчки на си, инфы, содержащейся в /usr/include/netinet/*.h хватит за глаза, так что демагогия, которую ты развел, просто смехотворна, займись самообразованием. Материалов для обучения при твоем уровне просто переизбыток...


"raw сокеты(udp)"
Отправлено zZz , 26-Янв-05 16:29 

>Йопт, ну это же же просто ужас :-О
>Ну какой тебе удп-спуффинг? Ты же даже базовых основ языка не знаешь...
>Абсолютно без понятия об операторике структур, указателей и прочих вещей... Тебе
>бы букварь Страуструпа почитать, пописать HelloWord'ы и калькуляторы... Почитать про make-процессор
>неплохо бы, научиться писать примитивные мейкфайлы...
>Статьи он писать будет, инфы мало. Жуть... Для любого человека, способного связать
>2 строчки на си, инфы, содержащейся в /usr/include/netinet/*.h хватит за глаза,
>так что демагогия, которую ты развел, просто смехотворна, займись самообразованием. Материалов
>для обучения при твоем уровне просто переизбыток...

о да,давайте еще что нибудь скажите,типа вали отсюда ламерюга ты ничего не знаешь,и вообще этот форум только для тех кто запредельно крут как вы,что даже опускается до общения с такими как я....да?я угадал что вы подразумеваете?
А может вы просто не знаете как на вопрос ответить?

ну это ладно.Со своими тупыми(как вы говорите) вопросами я разобрался,в том числе и как заспуфить айпишник.....если вы соизволите проскролить чуть ниже,то вот исходник под linux
#include <sys/types.h>
#include <sys/socket.h>              
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include <unistd.h>
#include <linux/tcp.h>
#include <linux/ip.h>
#include <linux/udp.h>

#define DEFAULT_TTL 255                
#define IPVERSION 4                      
#define TH_OFFSET 5
#define TCP_WINDOW_SIZE 512              

#define DEFAULT_TTL 255                
#define IPVERSION 4  
#define MESG_LENGTH    12              
#define TH_OFFSET 5
#define TCP_WINDOW_SIZE 512    
struct pseudohdr            
{

  struct in_addr source_address;
  struct in_addr dest_address;
  unsigned char place_holder;
  unsigned char protocol;
  unsigned short length;
} pseudohdr;


int main(int argc,char *argv[]) {
struct sockaddr_in mysocket;
unsigned char packet[sizeof(struct iphdr) + sizeof(struct udphdr) + MESG_LENGTH];
  struct sockaddr_in sock;        
  struct udphdr *udp;              
  struct iphdr *iphdr;
  char *pseudo_packet;
  unsigned short sport, dport;
  struct in_addr saddr, daddr;
  unsigned long seq, ack;
  int s, on = 1;
if(argc < 5)          
  {
    fprintf(stderr, "usage: %s <source address> <source port> <destination address> <destination port>\n", argv[0]);
    exit(1);
  };
  
  saddr.s_addr = inet_addr(argv[1]);            
  sport        = (unsigned short)atoi(argv[2]);
  daddr.s_addr = inet_addr(argv[3]);          
  dport        = (unsigned short)atoi(argv[4]);
  
  
  
  if((s = socket(AF_INET, SOCK_RAW, IPPROTO_RAW)) < 0)  
  {
    perror("socket");
    exit(1);
  };

  if(setsockopt(s, IPPROTO_IP, IP_HDRINCL, (char *)&on, sizeof(on)) < 0)  
  {                                                                        
    perror("setsockopt");
    exit(1);
  };
  
  seq = rand() % time(NULL);
  ack = rand() % time(NULL);

  
  iphdr = (struct iphdr *)packet;
  memset((char *)iphdr, '\0', sizeof(struct iphdr));
  iphdr->version  = IPVERSION;  
  iphdr->ihl      = 5;    
  iphdr->tot_len  = htons(sizeof(packet));
  iphdr->id       = htons(getpid());  
  iphdr->ttl      = DEFAULT_TTL;  
  iphdr->protocol = IPPROTO_UDP;  
  iphdr->check    = (unsigned short)in_cksum((unsigned short *)iphdr,
               sizeof(struct iphdr));
  iphdr->saddr    = saddr.s_addr;  
  iphdr->daddr    = daddr.s_addr;  


udp = (struct udphdr *)(packet + sizeof(struct iphdr));

udp->source = htons(sport);
  udp->dest = htons(dport);
  udp->len = htons((sizeof(struct udphdr) + MESG_LENGTH));
  udp->check = 0;


  
memset(&mysocket,'\0',sizeof(mysocket));
  
  mysocket.sin_family = AF_INET;
  mysocket.sin_port = htons(dport);
  mysocket.sin_addr = daddr;
  
  if(sendto(s,&packet,sizeof(packet),0x0,(struct sockaddr *)&mysocket,
     sizeof(mysocket)) != sizeof(packet))  {
    perror("sendto");
    exit(1);
  }
  
  exit(0);
}
  
  
  
  unsigned short in_cksum(unsigned short *addr,int len)
{
        register int sum    = 0;
        u_short answer      = 0;
        register u_short *w = addr;
        register int nleft  = len;

        
        while (nleft > 1)  {
                sum += *w++;
                nleft -= 2;
        }

        
        if (nleft == 1) {
                *(u_char *)(&answer) = *(u_char *)w ;
                sum += answer;
        }

        
        sum = (sum >> 16) + (sum & 0xffff);    
        sum += (sum >> 16);                    
        answer = ~sum;                          
        return(answer);
}
  
  
  Знаете я всегда думал что форум,это место,где людям помогают..
я ошибался....))))))


"raw сокеты(udp)"
Отправлено Alexander S. Salieff , 26-Янв-05 16:45 
>о да,давайте еще что нибудь скажите,типа вали отсюда ламерюга ты ничего не
>знаешь,и вообще этот форум только для тех кто запредельно крут как
>вы,что даже опускается до общения с такими как я....да?я угадал что
>вы подразумеваете?
>А может вы просто не знаете как на вопрос ответить?
>  Знаете я всегда думал что форум,это место,где людям помогают..
>я ошибался....))))))

Ты слишком агрессивно все интерпретируешь. Дело не во взаимной субъективной оценке и "крутости" как ты выразился. Просто вышеприведенный примитивный код и его разъяснение ищется за 15 минут, и непонятно почему его за тебя должны искать участники форума, ведь судя по активности, ты не испытываешь проблем с доступом в интернет. Заодно нужно различать действительно стоящую помощь и перемалывание из пустого в порожнее по сотому разу примитивного и сверхдоступного материала.
Потом, если ты еще не понял, задача спуффинга, как таковая, вряд ли может вызвать положительную оценку общественности, потому как 99.9999% области ее применения - деструктивные задачи. А ежели ты косишь под крутого хакера, то напомню тебе, что они много и усердно учатся а не клянчат по форумам "quick one time step-by-step confirmation", такое клянчат именно ламеры (т.е. в принципе не способные к глубокому пониманию и развитию).
Не надо все дословно воспринимать как лично оскорбление, просто я озвучил свое ИМХО, призванное прояснить настроение моих предыдущих постов.
И вообще, предлагаю закрыть эту ветку, а то она уже превратилась в перебранку для нас двоих, абсолютно потеряв и так невеликую практическую ценность.


"raw сокеты(udp)"
Отправлено zZz , 26-Янв-05 16:59 

>Ты слишком агрессивно все интерпретируешь. Дело не во взаимной субъективной оценке и
>"крутости" как ты выразился. Просто вышеприведенный примитивный код и его разъяснение
>ищется за 15 минут, и непонятно почему его за тебя должны
>искать участники форума, ведь судя по активности, ты не испытываешь проблем
>с доступом в интернет. Заодно нужно различать действительно стоящую помощь и
>перемалывание из пустого в порожнее по сотому разу примитивного и сверхдоступного
>материала.
>Потом, если ты еще не понял, задача спуффинга, как таковая, вряд ли
>может вызвать положительную оценку общественности, потому как 99.9999% области ее применения
>- деструктивные задачи. А ежели ты косишь под крутого хакера, то
>напомню тебе, что они много и усердно учатся а не клянчат
>по форумам "quick one time step-by-step confirmation", такое клянчат именно ламеры
>(т.е. в принципе не способные к глубокому пониманию и развитию).
>Не надо все дословно воспринимать как лично оскорбление, просто я озвучил свое
>ИМХО, призванное прояснить настроение моих предыдущих постов.
>И вообще, предлагаю закрыть эту ветку, а то она уже превратилась в
>перебранку для нас двоих, абсолютно потеряв и так невеликую практическую ценность.
>
А вы слишком цинично все воспринимаете.во-первых,в своем первом посте вы обратились лично ко мне("...демагогию которую ты развел...") а это извините меня и есть уже оскорбление.
во-вторых,я не сказал что буду делать что-то плохое для полезности,т.к для этого есть уже готовые решения,и мне просто интересно стало,я же сказал - "побаловатся"/со своим компутером.и этот "примитивный код" я делал сам(почти) и знаете искал два дня хоть какой-нибудь исходник с описанием
я говорю в инете про это мало,рыть исходники других программ - это долго,к тому же там ничего не комментировано.я теперь могу обьснить,для чего нужно каждое поле той или иной структуры.знаете даже на самых крутых форумах я встречал вопросы типа как создать сокет,и люди отвечали на такие вопросы.
с вашей стороны я бы мог и покритиковать,и осудить,но в конце дать ссылочку или исходник.



"raw сокеты(udp)"
Отправлено Direct , 05-Мрт-07 22:50 
Парень, который хочет откомпилить, короче не забудь добавить перед тем как сделать билд во вкладку Project->Settings->Link->Object/Library modules добавь статическую библиотечку ws2_32.lib, отделив ее пробелом от остальных библиотек, это типа библиотечка для сокетов 2-й версии, там типа настройки сокета и другая важная байда. И компиль, вот тока придется тебе файерволы отрубать ВСЕ, иначе винда- штука капризная- не выпустит, мол не от моего ip адреса шлются. Что бы проверить действенность набей "cmd"(без кавычек естесственно) в Пуск->выполнить затем запиши netstat -s -p UDP (в зависимости какой протокол). Но это ерунда, например протокол rip используемый маршрутизаторами также базируется на UDP, короче, если послать UDP с данными- согласно протоколу rip, можно, например пристроиться в сеть в качестве ложного маршрутизатора и ловить пакеты вообще из другой сети.

"raw сокеты(udp)"
Отправлено Direct , 05-Мрт-07 22:59 
>Парень, который хочет откомпилить, короче не забудь добавить перед тем как сделать билд во вкладку Project->Settings->Link->Object/Library modules добавь статическую библиотечку ws2_32.lib, отделив ее пробелом от остальных библиотек, это типа библиотечка для сокетов 2-й версии, там типа настройки сокета и другая важная байда. И компиль, вот тока придется тебе файерволы отрубать ВСЕ, иначе винда- штука капризная- не выпустит, мол не от моего ip адреса шлются. Что бы проверить действенность набей "cmd"(без кавычек естесственно) в Пуск->выполнить затем запиши netstat -s -p UDP (в зависимости какой протокол). Но это ерунда, например протокол rip используемый маршрутизаторами также базируется на UDP, короче, если послать UDP с данными- согласно протоколу rip, можно, например пристроиться в сеть в качестве ложного маршрутизатора и ловить пакеты вообще из другой сети.

и еще, проблемы будут с IPPROTO_IP, IP_HDRINCL лучше заменить на более родной windows это
SOL_SOCKET, SO_BROADCAST короче вещание разрешено, типа =)