ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.

25.11.2019, 13:39
|
|
Guest
Сообщений: n/a
Провел на форуме: 14443
Репутация:
0
|
|
Сообщение от Seoul
Seoul said:
↑
Вопрос простой. Можно ли до сих пор ставить ложный айпи в заголовках удп пакетов? Пропустит ли их провайдер?
Мой провайдер - билайн
Если кто-нибудь позволит с включенным wireshark попробовать это провернуть, то будет вообще замечательно
Лучше называть это не фальсификацией, а IP-спуфингом или подменой IP-адреса, не когда не слышал чтоб это называли фальсификацией.
На счет провайдера твоего не знаю, если нет NAT, то вполне вероятно, а с NAT - нет(точнее да, он скорее пропустит, но со своим IP, без спуфа).
Сделал простую отправку UDP датаграммы чтоб прочекать у себя, можешь тоже проверить:
Код:
Code:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define PACKET_SIZE 8192
#define SOURCE_ADDR "1.2.3.4"
#define SOURCE_PORT 12345
#define DST_ADDR "1.1.1.1"
#define DST_PORT 12345
unsigned short csum(unsigned short *buf, int nwords) {
unsigned long sum;
for(sum=0; nwords>0; nwords--) {
sum += *buf++;
}
sum = (sum >> 16) + (sum &0xffff);
sum += (sum >> 16);
return (unsigned short)(~sum);
}
int main(int argc, char *argv[]) {
int sock = socket(AF_INET, SOCK_RAW, IPPROTO_RAW);
assert(sock != -1);
const int optval = 1;
int ret = setsockopt(sock, IPPROTO_IP, IP_HDRINCL, &optval, sizeof(optval));
assert(ret != -1);
char packet[PACKET_SIZE] = { 0 };
struct iphdr *ip = (struct iphdr *)packet;
struct udphdr *udp = (struct udphdr *)(packet + sizeof(*ip));
ip->ihl = 5;
ip->version = 4;
ip->tos = 16;
ip->tot_len = sizeof(*ip) + sizeof(*udp);
ip->id = htons(12345);
ip->ttl = 64;
ip->protocol = 17;
ip->saddr = inet_addr(SOURCE_ADDR);
ip->daddr = inet_addr(DST_ADDR);
udp->source = htons(SOURCE_PORT);
udp->dest = htons(DST_PORT);
udp->len = htons(sizeof(*udp));
ip->check = csum((unsigned short *)packet, sizeof(*ip) + sizeof(*udp));
struct sockaddr_in sin;
sin.sin_family = AF_INET;
sin.sin_port = htons(DST_PORT);
sin.sin_addr.s_addr = inet_addr(DST_ADDR);
ret = sendto(sock, packet, ip->tot_len, 0, (struct sockaddr *)&sin, sizeof(sin));
assert(ret != -1);
close(sock);
printf("Datagram sent to %s:%d, from %s:%d", DST_ADDR, DST_PORT, SOURCE_ADDR, SOURCE_PORT);
return EXIT_SUCCESS;
}
|
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|