mirror of
https://github.com/hufrea/byedpi.git
synced 2024-12-22 06:15:14 +00:00
New method: oob
This commit is contained in:
parent
ac99152540
commit
5b272ac5b8
35
desync.c
35
desync.c
@ -144,6 +144,38 @@ int disorder_attack(int sfd, char *buffer,
|
||||
}
|
||||
|
||||
|
||||
int oob_attack(int sfd, char *buffer,
|
||||
ssize_t n, int pos, int fa)
|
||||
{
|
||||
struct packet pkt = oob_data;
|
||||
|
||||
if (send(sfd, buffer, pos, 0) < 0) {
|
||||
uniperror("send");
|
||||
return -1;
|
||||
}
|
||||
for (int i = 0; i < pkt.size; i++) {
|
||||
if (send(sfd, pkt.data + i, 1, MSG_OOB) < 0) {
|
||||
uniperror("send");
|
||||
return -1;
|
||||
}
|
||||
#ifndef _WIN32
|
||||
if (pkt.size == 1) {
|
||||
break;
|
||||
}
|
||||
struct timespec delay = {
|
||||
.tv_nsec = params.sfdelay * 1000
|
||||
};
|
||||
nanosleep(&delay, 0);
|
||||
#endif
|
||||
}
|
||||
if (send(sfd, buffer + pos, n - pos, 0) < 0) {
|
||||
uniperror("send");
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int desync(int sfd, char *buffer, size_t bfsize,
|
||||
ssize_t n, struct sockaddr *dst)
|
||||
{
|
||||
@ -214,6 +246,9 @@ int desync(int sfd, char *buffer, size_t bfsize,
|
||||
case DESYNC_DISORDER:
|
||||
return disorder_attack(sfd, buffer, n, pos, fa);
|
||||
|
||||
case DESYNC_OOB:
|
||||
return oob_attack(sfd, buffer, n, pos, fa);
|
||||
|
||||
case DESYNC_SPLIT:
|
||||
default:
|
||||
if (send(sfd, buffer, pos, 0) < 0) {
|
||||
|
21
main.c
21
main.c
@ -31,9 +31,13 @@ struct packet fake_tls = {
|
||||
},
|
||||
fake_http = {
|
||||
sizeof(http_data), http_data
|
||||
},
|
||||
oob_data = {
|
||||
1, "a"
|
||||
};
|
||||
|
||||
|
||||
|
||||
struct params params = {
|
||||
.ttl = 8,
|
||||
.split = 3,
|
||||
@ -71,9 +75,9 @@ const char help_text[] = {
|
||||
// desync options
|
||||
" -K, --desync-known Desync only HTTP and TLS with SNI\n"
|
||||
#ifdef FAKE_SUPPORT
|
||||
" -m, --method <s|d|f> Desync method: split,disorder,fake\n"
|
||||
" -m, --method <s|d|o|f> Desync method: split,disorder,oob,fake\n"
|
||||
#else
|
||||
" -m, --method <s|d> Desync method: split,disorder\n"
|
||||
" -m, --method <s|d|o> Desync method: split,disorder,oob\n"
|
||||
#endif
|
||||
" -s, --split-pos <offset> Split position, default 3\n"
|
||||
" -H, --split-at-host Add Host/SNI offset to split position\n"
|
||||
@ -83,6 +87,7 @@ const char help_text[] = {
|
||||
" -o, --fake-http <file> Set custom fake packet\n"
|
||||
" -n, --tls-sni <str> Change SNI in fake CH\n"
|
||||
#endif
|
||||
" -e, --oob-data <file> Set custom oob bytes\n"
|
||||
" -M, --mod-http <h,d,r> Modify http: hcsmix,dcsmix,rmspace\n"
|
||||
" -r, --tlsrec <offset> Make 2 TLS records\n"
|
||||
" -L, --tlsrec-at-sni Add SNI offset to tlsrec position\n"
|
||||
@ -111,6 +116,7 @@ const struct option options[] = {
|
||||
{"fake-http", 1, 0, 'o'},
|
||||
{"tls-sni", 1, 0, 'n'},
|
||||
#endif
|
||||
{"oob-data", 1, 0, 'e'},
|
||||
{"mod-http", 1, 0, 'M'},
|
||||
{"tlsrec", 1, 0, 'r'},
|
||||
{"tlsrec-at-sni", 0, 0, 'L'},
|
||||
@ -314,6 +320,9 @@ int main(int argc, char **argv)
|
||||
case 'd':
|
||||
params.attack = DESYNC_DISORDER;
|
||||
break;
|
||||
case 'o':
|
||||
params.attack = DESYNC_OOB;
|
||||
break;
|
||||
#ifdef FAKE_SUPPORT
|
||||
case 'f':
|
||||
params.attack = DESYNC_FAKE;
|
||||
@ -364,6 +373,14 @@ int main(int argc, char **argv)
|
||||
}
|
||||
break;
|
||||
|
||||
case 'e':
|
||||
oob_data.data = ftob(optarg, &oob_data.size);
|
||||
if (!oob_data.data) {
|
||||
perror("read file");
|
||||
return -1;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'M':
|
||||
end = optarg;
|
||||
while (end && !invalid) {
|
||||
|
2
params.h
2
params.h
@ -10,6 +10,7 @@ enum demode {
|
||||
DESYNC_NONE,
|
||||
DESYNC_SPLIT,
|
||||
DESYNC_DISORDER,
|
||||
DESYNC_OOB,
|
||||
DESYNC_FAKE
|
||||
};
|
||||
|
||||
@ -43,3 +44,4 @@ struct packet {
|
||||
};
|
||||
extern struct packet fake_tls;
|
||||
extern struct packet fake_http;
|
||||
extern struct packet oob_data;
|
||||
|
@ -47,6 +47,9 @@ $ ./ciadpi --method disorder --split-pos 3
|
||||
Как disorder, только перед первым запросом отправляется часть поддельного
|
||||
Количество байт отправляемого из фейка равно значению split-pos,
|
||||
поэтому рекомендуется использовать отрицательное значение или вкл. split-at-host
|
||||
oob:
|
||||
Как split, но также отсылается несколько байт вне основного потока после первой части
|
||||
! Не везде может работать стабильно
|
||||
|
||||
-s, --split-pos <offset>
|
||||
Смещение, по которому будет разбит запрос, по умолчанию 3
|
||||
@ -64,6 +67,10 @@ $ ./ciadpi --method disorder --split-pos 3
|
||||
-o, --fake-http <file>
|
||||
Указать свои поддельные пакеты, вместо дефолтных
|
||||
|
||||
-e, --oob-data <file>
|
||||
Данные отсылаемые вне основной потока
|
||||
! При размере более одного байта может поломать сайт
|
||||
|
||||
-n, --tls-sni <str>
|
||||
Изменить SNI в fake пакете на указанный
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user