diff --git a/docs/changes.txt b/docs/changes.txt index d067535..7eef2eb 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -485,3 +485,4 @@ blockcheck: use tpws --fix-seg on linux for multiple splits v70.7 nfqws,tpws: debug tls version, alpn, ech +nfqws: --dpi-desync-fake-tls=! means default tls fake diff --git a/docs/readme.en.md b/docs/readme.en.md index 4d31ef0..ce64942 100644 --- a/docs/readme.en.md +++ b/docs/readme.en.md @@ -1,4 +1,4 @@ -# zapret v70.6 +# zapret v70.7 # SCAMMER WARNING @@ -173,7 +173,7 @@ nfqws takes the following parameters: --dpi-desync-badack-increment= ; badseq fooling ackseq signed increment. default -66000 --dpi-desync-any-protocol=0|1 ; 0(default)=desync only http and tls 1=desync any nonempty data packet --dpi-desync-fake-http=|0xHEX ; file containing fake http request - --dpi-desync-fake-tls=|0xHEX ; file containing fake TLS ClientHello (for https) + --dpi-desync-fake-tls=|0xHEX|! ; file containing fake TLS ClientHello (for https). '!' = standard fake --dpi-desync-fake-tls-mod=mod[,mod] ; comma separated list of TLS fake mods. available mods : none,rnd,rndsni,sni=,dupsid,padencap --dpi-desync-fake-unknown=|0xHEX ; file containing unknown protocol fake payload --dpi-desync-fake-syndata=|0xHEX ; file containing SYN data payload diff --git a/docs/readme.md b/docs/readme.md index abf2187..225b37d 100644 --- a/docs/readme.md +++ b/docs/readme.md @@ -1,4 +1,4 @@ -# zapret v70.6 +# zapret v70.7 # ВНИМАНИЕ, остерегайтесь мошенников @@ -195,7 +195,7 @@ dvtws, собираемый из тех же исходников (см. [док --dpi-desync-badack-increment= ; инкремент ack sequence number для badseq. по умолчанию -66000 --dpi-desync-any-protocol=0|1 ; 0(default)=работать только по http request и tls clienthello 1=по всем непустым пакетам данных --dpi-desync-fake-http=|0xHEX ; файл, содержащий фейковый http запрос для dpi-desync=fake, на замену стандартному www.iana.org ---dpi-desync-fake-tls=|0xHEX ; файл, содержащий фейковый tls clienthello для dpi-desync=fake, на замену стандартному +--dpi-desync-fake-tls=|0xHEX|! ; файл, содержащий фейковый tls clienthello для dpi-desync=fake, на замену стандартному. '!' = стандартный фейк --dpi-desync-fake-tls-mod=mod[,mod] ; список через запятую режимов runtime модификации фейков : none,rnd,rndsni,sni=,dupsid,padencap --dpi-desync-fake-unknown=|0xHEX ; файл, содержащий фейковый пейлоад неизвестного протокола для dpi-desync=fake, на замену стандартным нулям 256 байт --dpi-desync-fake-syndata=|0xHEX ; файл, содержащий фейковый пейлоад пакета SYN для режима десинхронизации syndata diff --git a/nfq/nfqws.c b/nfq/nfqws.c index e86658a..311f505 100644 --- a/nfq/nfqws.c +++ b/nfq/nfqws.c @@ -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=\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=|0xHEX\t; file containing fake http request\n" - " --dpi-desync-fake-tls=|0xHEX\t\t; file containing fake TLS ClientHello (for https)\n" + " --dpi-desync-fake-tls=|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=,dupsid,padencap\n" " --dpi-desync-fake-unknown=|0xHEX\t; file containing unknown protocol fake payload\n" " --dpi-desync-fake-syndata=|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");