-
Notifications
You must be signed in to change notification settings - Fork 620
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fixing compiler warnings and code cleanup #205
Conversation
Remove old --oob
Fix readme.txt
На счет is_localnet() в tpws |
И на счет ip, ip6hdr
может конечно это и не успокоит анализатор, но обезопасят мои проверки на счет null dereference при любом раскладе |
Пока держу ситуацию на контроле. Про (*dom & 0x80) идея-то не плохая, но я вообще подумывал превратить его из blacklist в whitelist, будет парой инструкций меньше возможно (тогда условий для проверки будет меньше, ведь допустимые символы доменных имен заданы жестко). Если подходит - запилю. Про scope для переменных также напомню - надо править или нет? Чем больше ветвлений логики - тем больше будет экономить памяти. В принципе анализатор все нашел, ошибиться в них не получится - код просто не соберется. Еще вопрос про то, что много кода дублировано - планируется ли выносить общие функции в отдельное место? |
Я уже накатил те коммиты, к которым у меня особых вопросов нет на счет scope. там только стек экономится. все равно он дорастет до своего максимума при самом "неблагоприятном" ветвлении, а освобождение страниц стека не предусмотрено. так что без разницы. на RSS это не повлияет никак код дублирован в tpws и nfqws, но мне показалось, что лучше делать, чтобы исходники были полностью независимыми в одной директории. иначе либа уже напрашивается общая. долго смотрел и думал как мог возникнуть uninitialized use в send, так и не понял |
Наверное все-таки лучше общая, чем потенциальная возможность рассинхрона кода, когда в одном месте пофиксил, а в другом забыл.
Конкретно у valgrind происходит так: собираю glibc с debug специально под valgrind, собираю проект также с -O0 -g и с -O3 -g (конкретно в этом случае разницы не было в выводе, а вообще бывает ловит что-то дополнительное). |
Не, а физически то как это делается ? с точки зрения процессора вообще нет понятия (не)инициализованной памяти . память лишь содержит байты, а откуда они взялись процу неведомо или это решается на этапе компиляции ? к каждому присваиванию в проге добавляется вызов valgrind, помечающий , что была туда запись ? |
Насколько я знаю, проверки паттерном нет. Там просто запоминается, какие байты из массива уже чем-то заполнялись, а какие еще нет. Т.е. например мусор, оставшийся в буфере с предыдущего заполнения, он не считает неинициализированым.
Все вызовы valgrind оборачивает в свои обертки. Если на стеке хранить - то точно обнаружит, если в регистрах - как повезет. На 100% не скажу, но если жалуется, значит чтение по этим адресам в памяти было. В детали настолько не уходил. |
Вроде здесь на rawsend он кричит ? каким образом оно вышло на эту ситуацию ?
|
стек вызова по версии valgrind (если компилятор что-то выкинул, то вызова не будет):
т.е. на всех этих этапах происходила передача неинициализированой области в следующую функцию и в конце ее чтение
Соответственно тут началось, т.е. никто эти байты не трогал на запись с момента создания и до момента поступления в sendto. Возможно из-за выравнивания где-то добавляются неинициализированые байты, но это только мое предположение.
По назначению, случилось прямо на старте. Возможно даже на первом пакете. Вообще я туда гнал немало живого трафика для теста, если по входящему пересчитать это 300 мегабит с ютуба, по исходящему в пределах 3-5. |
Вообще если брать весь стек, то данные там копируются и не раз |
Вот как раз после |
в таком случае напрашивается единственный вывод, что prepare_tcp_segment заполняет не на всю длину, что он вернул там был ipv4 или ipv6 ? |
ipv4 only, ipv6 нет и не мог поступить на вход. В принципе мне нет сложности повторить тест с разными параметрами, напишите несколько пресетов и я сделаю. |
мне лишь важно знать ветку выполнения интересно было бы хоть посмотреть на лог --debug, когда оно "падает" можно еще тут длину побольше сделать |
Итак, провел тесты, вот листинг:
disorder2:
disorder2 имеет дополнительное срабатывание триггера uninitialized Первые два (там где на libnetfilter_queue жалуется, это уж отдельная либа стиль кода автора мы не знаем) можно игнорить, а исходно я писал об остальном. а это уже с PKTDATA_MAXDUMP = 1500 Длинный лог тут
==29417== Memcheck, a memory error detector
==29417== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==29417== Using Valgrind-3.16.1 and LibVEX; rerun with -h for copyright info
==29417== Command: /tmp/zapret-nfqws-debug --user=nobody --qnum=200 --dpi-desync=disorder2 --hostlist=/etc/zapret/allow-domains.txt --debug=1
==29417==
==29417== Syscall param socketcall.sendto(msg) points to uninitialised byte(s)
==29417== at 0x49622E2: sendto (in /tmp/debug/lib/libc-2.22.so)
==29417== by 0x484FB7D: nfnl_send (in /usr/lib/libnfnetlink.so.0.2.0)
==29417== by 0x4852103: nfnl_query (in /usr/lib/libnfnetlink.so.0.2.0)
==29417== by 0x4846BD0: ??? (in /usr/lib/libnetfilter_queue.so.1.3.0)
==29417== by 0x119E68: nfq_main (nfqws.c:176)
==29417== by 0x11C991: main (nfqws.c:1767)
==29417== Address 0xbef2a079 is on thread 1's stack
==29417== Uninitialised value was created by a stack allocation
==29417== at 0x4846B56: ??? (in /usr/lib/libnetfilter_queue.so.1.3.0)
==29417==
==29417== Syscall param socketcall.sendto(msg) points to uninitialised byte(s)
==29417== at 0x49622E2: sendto (in /tmp/debug/lib/libc-2.22.so)
==29417== by 0x484FB7D: nfnl_send (in /usr/lib/libnfnetlink.so.0.2.0)
==29417== by 0x4852103: nfnl_query (in /usr/lib/libnfnetlink.so.0.2.0)
==29417== by 0x48472D5: nfq_set_mode (in /usr/lib/libnetfilter_queue.so.1.3.0)
==29417== by 0x119F5E: nfq_main (nfqws.c:195)
==29417== by 0x11C991: main (nfqws.c:1767)
==29417== Address 0xbef2a079 is on thread 1's stack
==29417== in frame #3, created by nfq_set_mode (???:)
==29417== Uninitialised value was created by a stack allocation
==29417== at 0x4847256: nfq_set_mode (in /usr/lib/libnetfilter_queue.so.1.3.0)
==29417==
PR_SET_NO_NEW_PRIVS(prctl): Invalid argument
==29417== Syscall param socketcall.sendto(msg) points to uninitialised byte(s)
==29417== at 0x49622E2: sendto (in /tmp/debug/lib/libc-2.22.so)
==29417== by 0x110A5B: rawsend (darkmagic.c:1734)
==29417== by 0x114B6E: dpi_desync_tcp_packet_play (desync.c:1021)
==29417== by 0x1173DF: dpi_desync_packet_play (desync.c:1649)
==29417== by 0x1174E1: dpi_desync_packet (desync.c:1666)
==29417== by 0x119B37: processPacketData (nfqws.c:107)
==29417== by 0x119CD0: nfq_cb (nfqws.c:147)
==29417== by 0x4846B20: ??? (in /usr/lib/libnetfilter_queue.so.1.3.0)
==29417== by 0x4851ABD: nfnl_handle_packet (in /usr/lib/libnfnetlink.so.0.2.0)
==29417== by 0x4847229: nfq_handle_packet (in /usr/lib/libnetfilter_queue.so.1.3.0)
==29417== by 0x11A100: nfq_main (nfqws.c:236)
==29417== by 0x11C991: main (nfqws.c:1767)
==29417== Address 0xbef230a1 is on thread 1's stack
==29417== in frame #2, created by dpi_desync_tcp_packet_play (desync.c:478)
==29417== Uninitialised value was created by a stack allocation
==29417== at 0x112A55: dpi_desync_tcp_packet_play (desync.c:478)
==29417==
==29417== Syscall param socketcall.sendto(msg) points to uninitialised byte(s)
==29417== at 0x49622E2: sendto (in /tmp/debug/lib/libc-2.22.so)
==29417== by 0x110A5B: rawsend (darkmagic.c:1734)
==29417== by 0x114E7D: dpi_desync_tcp_packet_play (desync.c:1046)
==29417== by 0x1173DF: dpi_desync_packet_play (desync.c:1649)
==29417== by 0x1174E1: dpi_desync_packet (desync.c:1666)
==29417== by 0x119B37: processPacketData (nfqws.c:107)
==29417== by 0x119CD0: nfq_cb (nfqws.c:147)
==29417== by 0x4846B20: ??? (in /usr/lib/libnetfilter_queue.so.1.3.0)
==29417== by 0x4851ABD: nfnl_handle_packet (in /usr/lib/libnfnetlink.so.0.2.0)
==29417== by 0x4847229: nfq_handle_packet (in /usr/lib/libnetfilter_queue.so.1.3.0)
==29417== by 0x11A100: nfq_main (nfqws.c:236)
==29417== by 0x11C991: main (nfqws.c:1767)
==29417== Address 0xbef230a1 is on thread 1's stack
==29417== in frame #2, created by dpi_desync_tcp_packet_play (desync.c:478)
==29417== Uninitialised value was created by a stack allocation
==29417== at 0x112A55: dpi_desync_tcp_packet_play (desync.c:478)
==29417==
Loading hostlist /etc/zapret/allow-domains.txt
loading plain text list
Loaded 11 hosts from /etc/zapret/allow-domains.txt
initializing conntrack with timeouts tcp=60:300:60 udp=60
opening library handle
unbinding existing nf_queue handler for AF_INET (if any)
binding nfnetlink_queue as nf_queue handler for AF_INET
binding this socket to queue '200'
setting copy_packet mode
initializing raw sockets bind-fix4=0 bind-fix6=0
set_socket_buffers fd=4 rcvbuf=2048 sndbuf=32768
fd=4 SO_RCVBUF=4096
fd=4 SO_SNDBUF=65536
set_socket_buffers fd=5 rcvbuf=2048 sndbuf=32768
fd=5 SO_RCVBUF=4096
fd=5 SO_SNDBUF=65536
Running as UID=102 GID=102
set_socket_buffers fd=3 rcvbuf=65536 sndbuf=32768
fd=3 SO_RCVBUF=131072
fd=3 SO_SNDBUF=65536
packet: id=1 len=640 mark=00000000
IP4: 10.18.172.111 => 80.64.175.140 proto=tcp ttl=61 sport=36238 dport=443 flags=AP seq=3975708529 ack_seq=3963286899
TCP: 16 03 01 02 47 01 00 02 43 03 03 6D 1D 8A 5E C7 3F E2 73 B8 A8 34 4B 7A FE 88 51 AE 81 7F CB 41 ... : ....G...C..m..^.?.s..4Kz..Q..A ...
packet contains full TLS ClientHello
hostname: rr1---sn-npcnxu-v8cs.googlevideo.com
Checking include hostlist
Hostlist check for rr1---sn-npcnxu-v8cs.googlevideo.com : negative
Hostlist check for googlevideo.com : positive
dpi desync src=10.18.172.111:36238 dst=80.64.175.140:443
split pos 2
sending 2nd out-of-order tcp segment 2-587 len=586 seqovl=0 : 01 02 47 01 00 02 43 03 03 6D 1D 8A 5E C7 3F E2 73 B8 A8 34 4B 7A FE 88 51 AE 81 7F CB 41 DF D9 8D 0E 01 1C A4 8D 02 B3 AC 20 35 05 6B A2 79 25 9D 07 02 66 9F 52 BB 3D 55 F4 09 E9 CA 1B 44 2D 69 90 8C 9C C1 8E 05 C0 A9 3F 00 20 4A 4A 13 01 13 02 13 03 C0 2B C0 2F C0 2C C0 30 CC A9 CC A8 C0 13 C0 14 00 9C 00 9D 00 2F 00 35 01 00 01 DA CA CA 00 00 00 33 00 2B 00 29 7A 7A 00 01 00 00 1D 00 20 C4 4A 03 AC 4D E8 42 1B A3 B0 58 DA C1 5E 58 4A 41 21 35 F5 E6 09 AB C4 AA BF BA AC 54 E0 0C 45 00 0B 00 02 01 00 00 23 00 00 FE 0D 00 FA 00 00 01 00 01 8A 00 20 2F 5A 44 C1 C4 0B 1A 28 BE 9A 7F B9 85 B9 C4 14 82 12 8A 03 61 1E E2 47 57 EA 31 F7 35 25 B5 6A 00 D0 CD 80 0B C4 C3 44 AC C4 34 B3 F0 3F A6 5E D7 AB 41 BD 3B FB F7 4D 82 80 1F 4B F6 D7 9C 50 EF 08 25 7B 9B 76 42 5A 8C 4A B2 7C 70 7A C0 D8 C5 4A DF 49 1F 8E C5 24 64 65 9C 86 4C ED AE ED 94 EB ED 19 82 DA A7 32 A5 45 0E 57 E1 46 C4 B9 F1 50 DB C7 E6 F3 E6 34 F6 52 2A 23 97 4A FB 93 78 04 EC 88 8E 10 51 CF D2 52 A7 E0 A0 C6 91 0A BA 53 FC A5 F0 5C A2 20 CB 86 8D E3 E4 95 23 1A EF 6C F9 D2 FA 14 70 19 79 00 39 C5 60 08 FB 33 12 99 10 8B 50 57 71 70 6F 8B E9 1E BD 1A E1 42 D8 EA 48 69 5F D2 4F 7B 15 A7 70 AB D8 A1 F7 38 30 3C 56 00 BF 4B 13 1D 22 A4 8C 6B 4D 01 95 C6 B9 64 AC 7D CB FD 62 52 A3 95 9F 4C C7 9F 5C 70 00 B3 00 17 00 00 00 12 00 00 44 69 00 05 00 03 02 68 32 00 0D 00 12 00 10 04 03 08 04 04 01 05 03 08 05 05 01 08 06 06 01 00 0A 00 0A 00 08 7A 7A 00 1D 00 17 00 18 00 10 00 0E 00 0C 02 68 32 08 68 74 74 70 2F 31 2E 31 00 2D 00 02 01 01 00 2B 00 07 06 EA EA 03 04 03 03 00 05 00 05 01 00 00 00 00 00 1B 00 03 02 00 02 00 00 00 29 00 27 00 00 24 72 72 31 2D 2D 2D 73 6E 2D 6E 70 63 6E 78 75 2D 76 38 63 73 2E 67 6F 6F 67 6C 65 76 69 64 65 6F 2E 63 6F 6D FF 01 00 01 00 5A 5A 00 01 00 : ..G...C..m..^.?.s..4Kz..Q..A........... 5.k.y%...f.R.=U.....D-i........?. JJ.......+./.,.0............./.5.........3.+.)zz...... .J..M.B...X..^XJA!5.........T..E.......#............. /ZD....(..........a..GW.1.5%.j.......D..4..?.^..A.;..M...K...P..%{.vBZ.J.|pz...J.I...$de..L..........2.E.W.F...P.....4.R*#.J..x.....Q..R.......S...\. ......#..l....p.y.9.`..3....PWqpo......B..Hi_.O{..p....80 173.194.73.101 proto=tcp ttl=61 sport=61598 dport=443 flags=AP seq=403065929 ack_seq=3663994170
TCP: 16 03 01 02 12 01 00 02 0E 03 03 40 9C E9 10 0E 9B AA 78 34 FA 04 34 EC AF 32 04 DD 38 D3 CF E3 ... : [email protected]... ...
packet contains full TLS ClientHello
hostname: play.google.com
Checking include hostlist
Hostlist check for play.google.com : negative
Hostlist check for google.com : negative
Hostlist check for com : negative
not applying tampering to this request
packet: id=2 pass unmodified
packet: id=3 len=60 mark=00000000
IP4: 10.18.174.221 => 173.194.222.156 proto=tcp ttl=61 sport=35020 dport=443 flags=S seq=480458332 ack_seq=0
packet: id=3 pass unmodified
packet: id=4 len=608 mark=00000000
IP4: 10.18.172.111 => 80.64.175.140 proto=tcp ttl=61 sport=36240 dport=443 flags=AP seq=2546205334 ack_seq=3822196974
TCP: 16 03 01 02 27 01 00 02 23 03 03 4F E5 14 6A 28 07 CA 83 13 25 F9 C8 63 EE 44 5B E6 55 3F 4E B6 ... : ....'...#..O..j(....%..c.D[.U?N. ...
packet contains full TLS ClientHello
hostname: rr1---sn-npcnxu-v8cs.googlevideo.com
Checking include hostlist
Hostlist check for rr1---sn-npcnxu-v8cs.googlevideo.com : negative
Hostlist check for googlevideo.com : positive
dpi desync src=10.18.172.111:36240 dst=80.64.175.140:443
split pos 2
sending 2nd out-of-order tcp segment 2-555 len=554 seqovl=0 : 01 02 27 01 00 02 23 03 03 4F E5 14 6A 28 07 CA 83 13 25 F9 C8 63 EE 44 5B E6 55 3F 4E B6 BE 03 CB 14 8F CC 07 15 4D 3C BE 20 99 1C C0 97 A0 CF 92 99 0B 61 CD 86 C8 C6 70 96 99 79 E2 14 84 8D 44 FD 36 D2 10 8F 01 AB 72 0A 00 20 0A 0A 13 01 13 02 13 03 C0 2B C0 2F C0 2C C0 30 CC A9 CC A8 C0 13 C0 14 00 9C 00 9D 00 2F 00 35 01 00 01 BA 5A 5A 00 00 00 33 00 2B 00 29 EA EA 00 01 00 00 1D 00 20 2B 91 FE F9 0B C3 7D 08 05 10 51 C4 05 4E A9 60 97 C1 BE 8F 60 B0 AD 1B 8D A3 52 80 00 8B 4A 78 00 0B 00 02 01 00 00 0A 00 0A 00 08 EA EA 00 1D 00 17 00 18 00 2B 00 07 06 BA BA 03 04 03 03 00 2D 00 02 01 01 00 05 00 05 01 00 00 00 00 00 12 00 00 00 0D 00 12 00 10 04 03 08 04 04 01 05 03 08 05 05 01 08 06 06 01 00 17 00 00 FE 0D 00 DA 00 00 01 00 01 61 00 20 72 CB F8 82 32 F3 AB F6 83 16 66 B9 70 0F CE 53 3D 43 B0 09 A8 B4 2F 76 BB 7B D1 9E CF E3 C3 68 00 B0 EE A6 07 6C 1B 09 2A 52 79 82 A7 DE C8 25 0A 2D 86 04 54 F7 8D CC 74 70 09 A2 03 90 72 6B 93 51 6A 25 85 A3 1B 1F 02 AA DC 11 89 41 2F CC 69 40 C1 E7 37 51 4C 1E E7 6E 0B 1D FB 8A 68 77 2F BD BD 16 B9 53 5C FD B0 19 C3 DC E7 BA EA 2E 30 7A 60 D6 48 74 B8 A7 98 29 4E BD B0 B9 AF 59 98 35 CE 65 75 AC B3 62 67 ED C2 FE FB FE 26 75 B8 A8 1C 48 36 9A 2B 71 DC 44 0A 68 9E A0 22 6D BA BA ED A2 CE 0A 8A C7 C7 39 3F 20 49 F5 87 AB 58 5B BA C5 AC CC CE 6B B9 60 CF F6 B8 E3 4C AC 3B F3 50 0B 06 9A F4 46 D5 48 5E 99 F3 09 7F 33 7C 8F 00 10 00 0E 00 0C 02 68 32 08 68 74 74 70 2F 31 2E 31 44 69 00 05 00 03 02 68 32 00 23 00 00 00 1B 00 03 02 00 02 00 00 00 29 00 27 00 00 24 72 72 31 2D 2D 2D 73 6E 2D 6E 70 63 6E 78 75 2D 76 38 63 73 2E 67 6F 6F 67 6C 65 76 69 64 65 6F 2E 63 6F 6D FF 01 00 01 00 8A 8A 00 01 00 : ..'...#..O..j(....%..c.D[.U?N.........M<. .........a....p..y....D.6.....r.. .........+./.,.0............./.5....ZZ...3.+.)........ +.....}...Q..N.`....`.....R...Jx.....................+..........-....................................................a. r...2.....f.p..S=C..../v.{.....h.....l..*Ry....%.-..T...tp....rk.Qj%.........A/[email protected]/....S\.........0z`.Ht...)N....Y.5.eu..bg.....&u...H6.+q.D.h.."m.........9? I...X[.....k.`....L.;.P....F.H^..3|........h2.http/1.1Di.....h2.#............).'..$rr1---sn-npcnxu-v8cs.googlevideo.com..........
sending 1st out-of-order tcp segment 0-1 len=2 : 16 03 : ..
packet: id=4 drop
packet: id=5 len=52 mark=00000000
IP4: 198.18.174.52 => 64.233.162.157 proto=tcp ttl=62 sport=45596 dport=443 flags=A seq=3874068941 ack_seq=1436147959
packet: id=5 pass unmodified
packet: id=6 len=631 mark=00000000
IP4: 198.18.174.52 => 64.233.162.157 proto=tcp ttl=62 sport=45596 dport=443 flags=AP seq=3874068941 ack_seq=1436147959
TCP: 16 03 01 02 3E 01 00 02 3A 03 03 40 A8 2C 7C 7F 82 44 E6 67 C9 98 71 E6 FF D7 15 90 66 47 B8 98 ... : ....>...:..@.,.D.g..q.....fG.. ...
packet contains full TLS ClientHello
hostname: googleads.g.doubleclick.net
Checking include hostlist
Hostlist check for googleads.g.doubleclick.net : negative
Hostlist check for g.doubleclick.net : negative
Hostlist check for doubleclick.net : negative
Hostlist check for net : negative
not applying tampering to this request
packet: id=6 pass unmodified
packet: id=7 len=60 mark=00000000
IP4: 10.18.172.26 => 173.194.222.95 proto=tcp ttl=61 sport=43068 dport=443 flags=S seq=2796197504 ack_seq=0
packet: id=7 pass unmodified
packet: id=8 len=60 mark=00000000
IP4: 10.18.163.219 => 142.251.1.139 proto=tcp ttl=61 sport=53306 dport=443 flags=S seq=695946816 ack_seq=0
packet: id=8 pass unmodified
packet: id=9 len=1420 mark=00000000
IP4: 10.18.165.63 => 173.194.73.113 proto=tcp ttl=126 sport=57071 dport=443 flags=AP seq=3071686489 ack_seq=1955024405
TCP: E4 A8 B3 BE BB 52 27 9B A4 E7 54 0C BF 00 C2 61 CC 9C 41 24 98 C0 39 CB CF D7 1F 29 D9 1C 86 39 ... : .....R'...T....a..A$..9....)...9 ...
packet: id=9 pass unmodified
packet: id=10 len=60 mark=00000000
IP4: 10.18.172.26 => 64.233.164.119 proto=tcp ttl=61 sport=45072 dport=443 flags=S seq=659446353 ack_seq=0
packet: id=10 pass unmodified
packet: id=11 len=52 mark=00000000
IP4: 10.18.174.208 => 173.194.73.138 proto=tcp ttl=125 sport=55119 dport=443 flags=S seq=1314725451 ack_seq=0
packet: id=11 pass unmodified
packet: id=12 len=52 mark=00000000
IP4: 10.18.100.30 => 173.194.73.139 proto=tcp ttl=125 sport=62710 dport=443 flags=S seq=2339900998 ack_seq=0
packet: id=12 pass unmodified
packet: id=13 len=851 mark=00000000
IP4: 10.168.174.189 => 80.64.175.142 proto=tcp ttl=62 sport=57158 dport=443 flags=AP seq=125980530 ack_seq=2873066956
TCP: 16 03 01 03 1A 01 00 03 16 03 03 A4 93 7C FA 3E BF 83 1D D4 92 69 04 4E 80 4E 01 1B 0E DD 2F 1D ... : .............|.>.....i.N.N..../. ...
packet contains full TLS ClientHello
hostname: rr3---sn-npcnxu-v8cs.googlevideo.com
Checking include hostlist
Hostlist check for rr3---sn-npcnxu-v8cs.googlevideo.com : negative
Hostlist check for googlevideo.com : positive
dpi desync src=192.168.174.189:57158 dst=80.64.175.142:443
split pos 2
sending 2nd out-of-order tcp segment 2-798 len=797 seqovl=0 : 01 03 1A 01 00 03 16 03 03 A4 93 7C FA 3E BF 83 1D D4 92 69 04 4E 80 4E 01 1B 0E DD 2F 1D 12 6A 72 90 45 93 CB 58 9F 60 F0 20 E3 2C E1 23 C3 4C 71 86 6D 1C FB 92 42 7A E6 44 A0 BD 15 C1 0A 53 78 C4 45 BF 8D B5 BA 7A 83 BC 00 20 6A 6A 13 01 13 02 13 03 C0 2B C0 2F C0 2C C0 30 CC A9 CC A8 C0 13 C0 14 00 9C 00 9D 00 2F 00 35 01 00 02 AD 7A 7A 00 00 00 0D 00 12 00 10 04 03 08 04 04 01 05 03 08 05 05 01 08 06 06 01 00 1B 00 03 02 00 02 00 12 00 00 00 2B 00 07 06 4A 4A 03 04 03 03 00 2D 00 02 01 01 00 05 00 05 01 00 00 00 00 00 0B 00 02 01 00 00 00 00 29 00 27 00 00 24 72 72 33 2D 2D 2D 73 6E 2D 6E 70 63 6E 78 75 2D 76 38 63 73 2E 67 6F 6F 67 6C 65 76 69 64 65 6F 2E 63 6F 6D 00 17 00 00 FF 01 00 01 00 FE 0D 00 FA 00 00 01 00 01 F8 00 20 C2 3E F8 94 76 24 ED E2 CF 1F 73 D1 D3 C0 9E 13 0B C8 D1 CB BA DF 05 3F EE 2C F0 B5 2D 05 59 5A 00 D0 30 C1 AE 5A C5 88 6D 15 CA D8 F8 01 B9 38 4F 14 A1 71 D7 F2 58 F9 87 74 E6 E9 56 88 4C 87 34 A2 07 53 57 40 34 BA 27 65 6D D2 25 CF 7A 1F C4 00 47 38 22 7A 1C 58 70 FB 81 02 61 FA 3B 91 22 88 27 5F B9 4B 54 9C 6F BB C7 79 BB A0 FE 09 56 11 0A AB 8A E2 22 70 33 05 7A A3 BC 93 82 72 66 0C 63 75 6D 2E E1 3D 83 8D 40 D2 23 7F 61 9E 5E 2A 7C AC D9 59 73 C4 DA F8 BE 98 C1 F2 BD FC 0C 52 1E FB C2 9D BA 15 88 4D CE 52 6F C6 9B B4 F9 D3 24 BC 62 8C 78 ED C0 B9 B1 0C FE EE FB AF 62 B4 9C A9 3C 1A 27 96 B1 16 B4 53 36 F2 32 36 E5 14 E2 E2 A0 0E D7 5D BD 44 91 97 E8 B9 30 D5 4B 49 44 E2 5A 71 0A C4 59 1C 7E 8B DC B0 F3 22 5C DE 00 23 00 00 00 0A 00 0A 00 08 EA EA 00 1D 00 17 00 18 00 10 00 0E 00 0C 02 68 32 08 68 74 74 70 2F 31 2E 31 44 69 00 05 00 03 02 68 32 00 33 00 2B 00 29 EA EA 00 01 00 00 1D 00 20 17 E1 77 4A 8F EF 78 51 C8 99 EB A3 91 A8 1B E5 D4 BE B6 78 A7 1D 5C FA D3 5C 3A CF 97 3D A2 23 9A 9A 00 01 00 00 29 00 CF 00 AA 00 A4 57 9E BD 7E 70 17 4B 8A 7B A1 CC 6F 2A 2E 2A 66 6D 1B A2 B2 F8 8A 8C CC B9 01 E7 EE 15 24 F0 53 37 2D 28 08 43 F5 CF 60 9B C0 58 FF 38 28 8B 2E 31 80 B5 02 75 4F 21 82 6B 6C 30 6B 40 E7 51 AE 4A 6E C6 FF 8D B5 01 A3 A6 15 31 16 CB A3 1C 75 62 00 79 77 7F 71 78 7B 1C 8F C9 75 32 59 E5 D2 CC 4F D0 02 D4 69 C7 C8 0A 4A 80 52 0C 4B 8E 6F D2 6D D4 90 ED 83 A4 8A DF F9 90 19 26 54 32 00 D7 87 89 CA E5 2E 2B 08 90 8A B0 6B F3 84 EB 9C A8 C5 F5 00 08 84 3E E2 19 32 95 DF F8 E7 10 F3 45 FB 31 EA D0 6E 61 AC 00 21 20 C8 7E F9 AB 5C D0 8E 65 6A E0 7F D0 A6 20 56 93 1B C0 3F 66 9E E3 3B 0B 96 66 05 03 32 9E CD E6 : ...........|.>.....i.N.N..../..jr.E..X.`. .,.#.Lq.m...Bz.D.....Sx.E....z... jj.......+./.,.0............./.5....zz....................................+...JJ.....-......................).'..$rr3---sn-npcnxu-v8cs.googlevideo.com.................... .>..v$....s............?.,..-.YZ..0..Z..m......8O..q..X..t..V.L.4..SW@4.'em.%.z...G8"z.Xp...a.;.".'_.KT.o..y....V....."[email protected].^*|..Ys..........R.......M.Ro.....$.b.x.........b...<.'....S6.26.......].D....0.KID.Zq..Y.~...."\..#.......................h2.http/1.1Di.....h2.3.+.)........ ..wJ..xQ...........x..\..\:..=.#......)......W..~p.K.{..o*.*fm............$.S7-(.C..`..X.8([email protected]{...u2Y...O...i...J.R.K.o.m..........&T2.......+....k..........>..2......E.1..na..! .~..\..ej.. V...?f..;..f..2...
sending 1st out-of-order tcp segment 0-1 len=2 : 16 03 : ..
packet: id=13 drop
packet: id=14 len=242 mark=00000000
IP4: 10.18.139.88 => 173.194.221.155 proto=tcp ttl=61 sport=51974 dport=443 flags=AP seq=2738114880 ack_seq=2300249536
TCP: 16 03 01 00 B9 01 00 00 B5 03 03 11 27 A8 7C 12 F8 C4 C1 9F 34 C6 6D 74 49 09 9E 24 F3 A5 E1 C0 ... : ............'.|.....4.mtI..$.... ...
packet contains full TLS ClientHello
hostname: www.googleadservices.com
Checking include hostlist
Hostlist check for www.googleadservices.com : negative
Hostlist check for googleadservices.com : negative
Hostlist check for com : negative
not applying tampering to this request
packet: id=14 pass unmodified
packet: id=15 len=851 mark=00000000
IP4: 10.18.172.111 => 80.64.175.140 proto=tcp ttl=61 sport=36242 dport=443 flags=AP seq=1106288807 ack_seq=150208219
TCP: 16 03 01 03 1A 01 00 03 16 03 03 48 E1 E9 96 5D 73 2B 74 1E EC 1A DC AE 8C 13 95 89 8B 4F B8 2E ... : ...........H...]s+t..........O.. ...
packet contains full TLS ClientHello
hostname: rr1---sn-npcnxu-v8cs.googlevideo.com
Checking include hostlist
Hostlist check for rr1---sn-npcnxu-v8cs.googlevideo.com : negative
Hostlist check for googlevideo.com : positive
dpi desync src=10.18.172.111:36242 dst=80.64.175.140:443
split pos 2
sending 2nd out-of-order tcp segment 2-798 len=797 seqovl=0 : 01 03 1A 01 00 03 16 03 03 48 E1 E9 96 5D 73 2B 74 1E EC 1A DC AE 8C 13 95 89 8B 4F B8 2E AB 5B FF F8 F2 E1 EA BB 7E 2F 53 20 2C 90 BA 68 E1 A9 00 42 12 C6 BA F9 98 9B 19 E8 6F 04 FF 9E 76 93 DB CA 47 AB D8 37 F5 EC 08 D6 00 20 FA FA 13 01 13 02 13 03 C0 2B C0 2F C0 2C C0 30 CC A9 CC A8 C0 13 C0 14 00 9C 00 9D 00 2F 00 35 01 00 02 AD 3A 3A 00 00 00 10 00 0E 00 0C 02 68 32 08 68 74 74 70 2F 31 2E 31 00 12 00 00 00 2D 00 02 01 01 FE 0D 00 FA 00 00 01 00 01 6E 00 20 3F B6 9E E0 56 F1 8F 00 8E 97 32 4C 47 26 B4 1C 40 41 99 16 B6 EB 02 D3 D7 78 63 6D 1D 8B 3D 36 00 D0 E0 A9 7F F1 6A 15 90 38 3E 77 F9 EF 20 32 C8 4E CB BA 11 80 29 28 BE 15 79 9C 18 40 6D 51 01 18 EC 94 46 CA 43 78 75 C1 AB 44 A0 5E 8D 35 34 73 08 7A 49 4B A7 C5 98 4F B7 71 CA 06 81 A4 90 B3 A8 BD DF BC CB B1 EB AB 68 42 30 A3 6C 2C 11 2F 8D 8B 43 B0 2C 44 58 AD 9C 5C 14 69 53 41 43 2D 8C B9 9A D0 6A 6A D2 1D AA 22 52 8B 4A 36 BB BF 8F 5C 4F C8 91 09 AB 7C 59 D0 51 17 95 E5 7C AC 20 A3 F0 5D 21 8D 1C 34 26 E0 91 13 A4 95 6C D7 EB A1 94 56 A1 22 35 82 AE 6B 0F 88 6E A3 0E A7 2C AC 02 DE 40 63 9A 7E 12 5C 43 45 FC 59 61 E5 32 8B CF 57 68 83 6A 8E C9 E0 E1 06 B5 EE F7 D7 0D 9F E3 AF B8 D6 C6 13 B2 7F 8C 90 2F D5 46 22 00 0B 00 02 01 00 00 00 00 29 00 27 00 00 24 72 72 31 2D 2D 2D 73 6E 2D 6E 70 63 6E 78 75 2D 76 38 63 73 2E 67 6F 6F 67 6C 65 76 69 64 65 6F 2E 63 6F 6D 44 69 00 05 00 03 02 68 32 00 05 00 05 01 00 00 00 00 00 0A 00 0A 00 08 4A 4A 00 1D 00 17 00 18 00 0D 00 12 00 10 04 03 08 04 04 01 05 03 08 05 05 01 08 06 06 01 00 2B 00 07 06 EA EA 03 04 03 03 FF 01 00 01 00 00 33 00 2B 00 29 4A 4A 00 01 00 00 1D 00 20 42 A9 E4 75 BB EA 2E 51 A2 C6 72 24 FB 92 38 41 33 9F 45 51 4C BF 54 B8 3E B7 1E 6F 9E EB CC 35 00 1B 00 03 02 00 02 00 17 00 00 00 23 00 00 EA EA 00 01 00 00 29 00 CF 00 AA 00 A4 57 9E BD 7E 70 17 4B 8A 7B A1 CC 6F 2A 2E 2A 66 71 8F 63 45 EA 84 E3 D4 FC C4 0B 77 2A 12 99 0E 94 27 D8 D3 C8 4C EB F7 6C C0 2F 06 46 0F 18 4C AE F2 C2 D4 68 C4 F4 E1 76 6B 06 FE 6C 53 AC E8 70 2D 82 79 E4 08 AF 44 F5 3A 82 36 75 F1 06 3E 32 97 74 E2 F5 0D D7 15 17 13 4A F8 DE 67 B1 AD F6 64 AC 33 1C 34 D4 96 A4 70 57 BD EB 03 AC 7F DB AF 39 A3 B6 22 14 20 51 A4 09 61 99 99 3C 9C 2A 3C AA BC B7 25 E1 6E B6 11 83 40 97 23 83 26 D8 A0 FB 80 75 01 87 09 0B AF C6 CB 86 84 A6 C2 AF 6B 28 0D C8 EB 74 CD 00 21 20 00 D7 EF 15 EC 9F 59 4D BE 7B D6 49 98 63 76 32 E2 BB 3A A2 42 C2 AF F2 98 67 C2 89 6D E7 32 85 : .........H...]s+t..........O...[......~/S ,..h...B........o...v...G..7..... .........+./.,.0............./.5....::.........h2.http/1.1.....-.............n. ?...V.....2LG&[email protected]..=6....j..8>w.. 2.N....)([email protected].^.54s.zIK...O.q..............hB0.l,./..C.,DX..\.iSAC-....jj..."R.J6...\O....|Y.Q...|. ..]!..4&.....l....V."5..k..n...,...@c.~.\CE.Ya.2..Wh.j.................../.F".........).'..$rr1---sn-npcnxu-v8cs.googlevideo.comDi.....h2...............JJ.............................+...............3.+.)JJ...... B..u...Q..r$..8A3.EQL.T.>..o...5............#........)......W..~p.K.{..o*.*fq.cE.......w*....'...L..l./.F..L....h...vk..lS..p-.y...D.:.6u..>2.t.......J..g...d.3.4...pW.....9..". Q..a..<.*<...%.n...@.#.&....u............k(...t..! ......YM.{.I.cv2..:.B....g..m.2.
sending 1st out-of-order tcp segment 0-1 len=2 : 16 03 : ..
packet: id=15 drop
packet: id=16 len=76 mark=00000000
|
Что-то у меня вызвает сомнение достоверность этих данных. |
Или я что-то неверно понимаю, или выходит nfq_cb ... rawsend Наверно, здесь проблема в fflush. |
скорее всего он сечет вот это |
Про паттерны я не уверен на 100%, возможно они и есть, хотя я не нашел упоминания о них.
|
Не, неправ. Это не мусор. Однако, это не полный пакет, идущий в sendto. Только L4 data payload |
Все, кажется понял в чем дело. |
По факту memset на всю pktlen срабатывание убирает. |
Фикс залил, можно проверять. |
Проверил, ошибка ушла. |
В либах без разницы. Это только netlink сокеты. Прямое общение процесса с ядром. |
Подумалась тут такая вещь: мы инициализируем ip->ip_tos = 0, но правильнее было бы брать tos из исходного пакета, т.к. у некоторых на нем может быть построена какая-то логика (отправка в соответствующий канал, шейпер, итд) |
В общем да, согласен. Лучше брать из исходного. |
Стоит еще протестировать последний мажорный апдейт с профилями. |
Предлагаю на рассмотрение патчи для уменьшения ошибок при компиляции, и чтобы самим потом не запутаться.
На данный момент собирается без варнингов с опциями "-Wall -Wno-unused -Wno-strict-aliasing -Wextra -Wno-sign-compare"
По скобкам (-Wparentheses): я добавил скобки в таком логическом порядке приоритетов, в котором их отрабатывает компилятор. Если автор имел ввиду другое - то значит это был явный баг и надо фиксить. Но на вид все ок.
По знаковым сравнениям (-Wtype-limits):
На текущий момент остаются варнинги:
-Wunused - тут понятно, почищу
-Wstrict-aliasing - тут на разных архитектурах будет от ничего до совсем плохо, хотелось бы комментария автора, что он имел ввиду.
-Wno-sign-compare - много, архитектурно вроде не влияет, можно менять.
также варнинги от cppcheck:
format фигня, а вот null pointer там действительно опасная штука. По типу обращения к ipv6hdr и только затем проверки, реально ли он существует.
Следующим этапом планирую погонять под valgrind на трафике ~300мбит, если утечки будут - напишу. Но пока держится стабильно.