Хочу побаловаться с raw сокетами.
Задача:на машину с udp демоном послать пакет,с подделаным айпишником.
Киньте ссылку плз на это,у меня есть статья про то как tcp пакеты с нуля собирать,но хотелось бы udp сначала попробовать.Просто я не знаю все названия структур и полей.
>Хочу побаловаться с raw сокетами.Блин, баловников развелось... И что печально, раньше баловники хоть что-то почитать/раскопать удосуживались, а теперь тема баловства только одна - "сделайте за меня кул спуф/хак/спам etc..."
>Задача:на машину с udp демоном послать пакет,с подделаным айпишником.
>Киньте ссылку плз на это,
> у меня есть статья про то как tcp
>пакеты с нуля собирать,но хотелось бы udp сначала попробовать.Просто я не
>знаю все названия структур и полей.Удачи тебе в TCP-спуфинге ;) Величайшие умы безрезультатно корячатся, а баловник со статьей лихо утрет им нос ;)
Совет только один книжки+поисковики+инфопорталы=RTFM, а потом, глядишь, и баловаться расхочется, а то и чем нибудь полезным займешься...
>Совет только один книжки+поисковики+инфопорталы=RTFM, а потом, глядишь, и баловаться расхочется, а то
>и чем нибудь полезным займешься...золотые слова! respect!
>>Совет только один книжки+поисковики+инфопорталы=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 пакеты!
>я уже все сам нашел!а именно похожий исходник,как раз для 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 хватит за глаза, так что демагогия, которую ты развел, просто смехотворна, займись самообразованием. Материалов для обучения при твоем уровне просто переизбыток...
>Йопт, ну это же же просто ужас :-О
>Ну какой тебе удп-спуффинг? Ты же даже базовых основ языка не знаешь...
>Абсолютно без понятия об операторике структур, указателей и прочих вещей... Тебе
>бы букварь Страуструпа почитать, пописать 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);
}
Знаете я всегда думал что форум,это место,где людям помогают..
я ошибался....))))))
>о да,давайте еще что нибудь скажите,типа вали отсюда ламерюга ты ничего не
>знаешь,и вообще этот форум только для тех кто запредельно крут как
>вы,что даже опускается до общения с такими как я....да?я угадал что
>вы подразумеваете?
>А может вы просто не знаете как на вопрос ответить?
> Знаете я всегда думал что форум,это место,где людям помогают..
>я ошибался....))))))Ты слишком агрессивно все интерпретируешь. Дело не во взаимной субъективной оценке и "крутости" как ты выразился. Просто вышеприведенный примитивный код и его разъяснение ищется за 15 минут, и непонятно почему его за тебя должны искать участники форума, ведь судя по активности, ты не испытываешь проблем с доступом в интернет. Заодно нужно различать действительно стоящую помощь и перемалывание из пустого в порожнее по сотому разу примитивного и сверхдоступного материала.
Потом, если ты еще не понял, задача спуффинга, как таковая, вряд ли может вызвать положительную оценку общественности, потому как 99.9999% области ее применения - деструктивные задачи. А ежели ты косишь под крутого хакера, то напомню тебе, что они много и усердно учатся а не клянчат по форумам "quick one time step-by-step confirmation", такое клянчат именно ламеры (т.е. в принципе не способные к глубокому пониманию и развитию).
Не надо все дословно воспринимать как лично оскорбление, просто я озвучил свое ИМХО, призванное прояснить настроение моих предыдущих постов.
И вообще, предлагаю закрыть эту ветку, а то она уже превратилась в перебранку для нас двоих, абсолютно потеряв и так невеликую практическую ценность.
>Ты слишком агрессивно все интерпретируешь. Дело не во взаимной субъективной оценке и
>"крутости" как ты выразился. Просто вышеприведенный примитивный код и его разъяснение
>ищется за 15 минут, и непонятно почему его за тебя должны
>искать участники форума, ведь судя по активности, ты не испытываешь проблем
>с доступом в интернет. Заодно нужно различать действительно стоящую помощь и
>перемалывание из пустого в порожнее по сотому разу примитивного и сверхдоступного
>материала.
>Потом, если ты еще не понял, задача спуффинга, как таковая, вряд ли
>может вызвать положительную оценку общественности, потому как 99.9999% области ее применения
>- деструктивные задачи. А ежели ты косишь под крутого хакера, то
>напомню тебе, что они много и усердно учатся а не клянчат
>по форумам "quick one time step-by-step confirmation", такое клянчат именно ламеры
>(т.е. в принципе не способные к глубокому пониманию и развитию).
>Не надо все дословно воспринимать как лично оскорбление, просто я озвучил свое
>ИМХО, призванное прояснить настроение моих предыдущих постов.
>И вообще, предлагаю закрыть эту ветку, а то она уже превратилась в
>перебранку для нас двоих, абсолютно потеряв и так невеликую практическую ценность.
>
А вы слишком цинично все воспринимаете.во-первых,в своем первом посте вы обратились лично ко мне("...демагогию которую ты развел...") а это извините меня и есть уже оскорбление.
во-вторых,я не сказал что буду делать что-то плохое для полезности,т.к для этого есть уже готовые решения,и мне просто интересно стало,я же сказал - "побаловатся"/со своим компутером.и этот "примитивный код" я делал сам(почти) и знаете искал два дня хоть какой-нибудь исходник с описанием
я говорю в инете про это мало,рыть исходники других программ - это долго,к тому же там ничего не комментировано.я теперь могу обьснить,для чего нужно каждое поле той или иной структуры.знаете даже на самых крутых форумах я встречал вопросы типа как создать сокет,и люди отвечали на такие вопросы.
с вашей стороны я бы мог и покритиковать,и осудить,но в конце дать ссылочку или исходник.
Парень, который хочет откомпилить, короче не забудь добавить перед тем как сделать билд во вкладку Project->Settings->Link->Object/Library modules добавь статическую библиотечку ws2_32.lib, отделив ее пробелом от остальных библиотек, это типа библиотечка для сокетов 2-й версии, там типа настройки сокета и другая важная байда. И компиль, вот тока придется тебе файерволы отрубать ВСЕ, иначе винда- штука капризная- не выпустит, мол не от моего ip адреса шлются. Что бы проверить действенность набей "cmd"(без кавычек естесственно) в Пуск->выполнить затем запиши netstat -s -p UDP (в зависимости какой протокол). Но это ерунда, например протокол rip используемый маршрутизаторами также базируется на UDP, короче, если послать UDP с данными- согласно протоколу rip, можно, например пристроиться в сеть в качестве ложного маршрутизатора и ловить пакеты вообще из другой сети.
>Парень, который хочет откомпилить, короче не забудь добавить перед тем как сделать билд во вкладку 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 короче вещание разрешено, типа =)