nfqws: --dpi-desync-fake-tls=!

This commit is contained in:
bol-van
2025-04-21 14:52:51 +03:00
parent 8fce75daa4
commit 581badfb73
4 changed files with 22 additions and 6 deletions

View File

@@ -1222,6 +1222,19 @@ static struct blob_item *load_blob_to_collection(const char *filename, struct bl
blob->size_buf = blob->size+size_reserve;
return blob;
}
static struct blob_item *load_const_blob_to_collection(const void *data,size_t sz, struct blob_collection_head *blobs, size_t size_reserve)
{
struct blob_item *blob = blob_collection_add(blobs);
if (!blob || (!(blob->data = malloc(sz+size_reserve))))
{
DLOG_ERR("out of memory\n");
exit_clean(1);
}
blob->size = sz;
blob->size_buf = sz+size_reserve;
memcpy(blob->data,data,sz);
return blob;
}
#ifdef __CYGWIN__
@@ -1441,7 +1454,7 @@ static void exithelp(void)
" --dpi-desync-badack-increment=<int|0xHEX>\t; badseq fooling ackseq signed increment. default %d\n"
" --dpi-desync-any-protocol=0|1\t\t\t; 0(default)=desync only http and tls 1=desync any nonempty data packet\n"
" --dpi-desync-fake-http=<filename>|0xHEX\t; file containing fake http request\n"
" --dpi-desync-fake-tls=<filename>|0xHEX\t\t; file containing fake TLS ClientHello (for https)\n"
" --dpi-desync-fake-tls=<filename>|0xHEX|!\t; file containing fake TLS ClientHello (for https)\n"
" --dpi-desync-fake-tls-mod=mod[,mod]\t\t; comma separated list of TLS fake mods. available mods : none,rnd,rndsni,sni=<sni>,dupsid,padencap\n"
" --dpi-desync-fake-unknown=<filename>|0xHEX\t; file containing unknown protocol fake payload\n"
" --dpi-desync-fake-syndata=<filename>|0xHEX\t; file containing SYN data payload\n"
@@ -2211,7 +2224,9 @@ int main(int argc, char **argv)
break;
case IDX_DPI_DESYNC_FAKE_TLS:
{
dp->tls_fake_last = load_blob_to_collection(optarg, &dp->fake_tls, FAKE_MAX_TCP,4+sizeof(dp->tls_mod_last.sni));
dp->tls_fake_last = strcmp(optarg,"!") ?
load_blob_to_collection(optarg, &dp->fake_tls, FAKE_MAX_TCP,4+sizeof(dp->tls_mod_last.sni)) :
load_const_blob_to_collection(fake_tls_clienthello_default,sizeof(fake_tls_clienthello_default),&dp->fake_tls,4+sizeof(dp->tls_mod_last.sni));
if (!(dp->tls_fake_last->extra2 = malloc(sizeof(struct fake_tls_mod))))
{
DLOG_ERR("out of memory\n");