From b2f26dec119c24fa147cb386856b04e91c654c1a Mon Sep 17 00:00:00 2001 From: Timothy Noel Date: Sun, 4 Aug 2024 20:40:22 -0400 Subject: [PATCH] fixed Ja4x errors, warnings and built new binary for windows (#138) --- wireshark/binaries/windows/4.2.0/ja4.dll | Bin 38912 -> 38400 bytes wireshark/source/packet-ja4.c | 36 ++++++++++++++++------- 2 files changed, 26 insertions(+), 10 deletions(-) diff --git a/wireshark/binaries/windows/4.2.0/ja4.dll b/wireshark/binaries/windows/4.2.0/ja4.dll index c260e0772ee55b95516282427c0ddebc384ee7f2..d9a2c1ddd610e149c13d7c0ea1e9a10b6e66bc47 100755 GIT binary patch literal 38400 zcmeHw4SZD9weKF1fgvPJ&>Rd3IB2jzAch2M_|h4e$cauMLO`lW5|Rmth9qWYAR=fm zL>LcKsnsjC_BH|9Vr!LJFAdg@1QddbM%pUYwx-r=2ZJ_#2fxnyueJAlB%rtN`rhxo z_j?^ZXYIZAT5GSp_S$Rjv-dfq@S1HRK?sqE%QS^(2c(~q?_YmQwFoit+{Z?WM~5Go z&~EV@nNVC+?Q_&O)U9eLTkR+>tF5i`J63uf4S`xmb*;m_aIs@`U4=I*B_%0CiJr34 z`$5(I5v`G{?6K{wwa9OHBB||qh9ld&4DD^D3~g;U0G|JtEdSM05?(bosckjzRr`}# zM*voB^=KAMb+h1ROjFp7Uc_3ar;p5cKRmDh3H4pd8=UcBIr}#EudjVRY|=N%c$eO;+N(3Hu_PPz8E*s zjoME2$Nd~alx8(ll=;h`+awe~rnnH-GF)*#C#uepWWtt=f>vB)sM~PG{hVlJR=p(T zHtsX!wYoX+SHMTepWh#sCZu!m64z2GVrnUbH=VpuFaM)%cTc^BDuxu}h{yQA z)aI>3wxz?~G7Vm<2mKjNJ-9wY_uy7!YF^ZVS|6)Ip{dn@Hb2+Yjeb3(+k)wyV7nUy z03HB$u)SF3$d63zfim!h7N(opk7X*;)b5d~JX14dN;kEQGPTUq)^h63YzwhpkBmF` z6b&X06PSp3{xx8F^$0 zrw78NIZEK0M?f3(O-hh`()D0XhGXf~?3hr*dh1#P#XV&$dXon{R`DjcQgqzw}Zm1_CQ_p=qeAx_A zV0lKVZq#H{p^vj&D@s-zh;I-zC0z}${kriU`A$fCs}j!IK17hjYf!Cjgmt6Hrnelm zZ~6hSG7XBD)(9 z@3ub)Us%m1T4Iw;I@Cb|b+e;s_7D;HWLE$B4pJZDMw;4%OiJ}O_gmJU1)L{j&4(li z%mFYp2UFBwsroa_4O0y#nKy%Q&nXZ-*bhh+5a*)R-#ln|?}7Gm6r= zo%eC(2n_>gcp}IQ?Gp^u{M?V-KxM*E2xf<1d(zos95A)kBj*&;G9*3#9NbLMX z^T4cQ>pRFjoxMXShAxMnqF;+>I4q;iEkVyZmn?M^yAU%mazhVh*vOt6PxQmv;HR(L z2|#|@5=P_lbKmj6H%r^80dDv~qdU0z!9t_ogS753-avLYTmm%fgZWK*uoylR^kmeV z+IVhSmn*cS!qmo~DTng6+z%=F#z%TEzk`Go)6GpcC*6u5Y?CLrx*PCOT>txz<6aJ874gQOVe!Wxb;;%v;-mj{tO*%SztULzH1!y z`Bv~rpUtSCdQ)`G)3}K2PlA_1dmPJd#nDI?5O!;7bpQ&9MEqQ@U zUXUdSQyI~cN4extS%O}ECYZl9m_H?$zbBZVjjA(E?UQR*Ia7O5QlXAFB?><4XMVpd zL5O-bT5=7STq8?TO>IxK#K|R2S(0vQ{}wH|fJ-irB@X-EeCO;6|LEB_>Y;HzLbEYZ z|A2tq{c7(p;5H&tV7#aYuY;pDl9XV}c6RtKnnX9*&O!j7COz(+QEju|-and19?$4g zVXHDae;H%YmM_^K#vag(1l?$~>BfuU`2|8?Mi__EelC46JYAxa+;G^&;}4)Z!=2IC z+&{$LavRl+4u($Q>Z!5x>MTkZI>QwckuWxNc|x8H-9^OLl0m8{|*J6VVLFx z`(BKbr;)Yq?V9zXf2?HuH4roM-D{O~b|D+J&Sh~L*kc+LDGffqoZ1<)HO@S-CT&3zKiD}sRsd##+3 z20b&b?(cI&{<9!qtg5?-QTCP}fYsD4;96;h+>3eE)b>(7*wV^{!=r`wap8Tka5op8 zfTA)^t>?n^vTzRWSNHEcvS`{d$1#*xjvE~J~uvICx4T?3d&uAQB zZ)ri&D9%`qz6RemrIW|#F|~5mNhvr!qTmrchPsRwrGB2!>?07sE7c3t`b4Q4gx#Um zY*Tv;tf#2^EvQ=y5>|H~3!eqlS`NPpZQ*O&?4c{9Z+4(k`(A|f`A9(3Fi5v!l9WrH zbxKiF+s<^l1@mc)ur5k?m8{2Y+&Uc{wWT)^Hrhh#2Z+;9bNJ19TlG}c8_}{S ze8I<<_BmuFvWl?gZzS=#l6YK{xIaAUBTWBBAlnE`=^bVSwj#Ypj*Zt503%McmibZj z`#`!LSI*?JyFUyDwgv-J!b>9r`z)X==MAiz`%|VK=o$xC!va?=c!yz*IJokilVi z?qK9n#3NwsOj<~W%cOA~oNx0OLrv`;Ohn-%g;Ry8pco1Y4jC^=90iimlSr>uOzjKC zjd0JnX}Z1TZEj2fiG2s*C0sn0`orFGG}_3$Xpf86SD?8VJ6TN;()(1^bTV5>7kDadE2L9=?yyL6N z)8Mpy(Bm^WkEtDox@LYRTmqIzM?;AlPXqRI;q_223F^6Kx@~44P3k8*c>h&A8y8DI zd=q@S0YALR#ZG&sBx(T>b$BqpyEjoc0^O4O1r9x+whW-I1GSuxoxN6CMK~q-s)+ET zP8N>2fI8I~BbRiWBVvCp>68-bOxKTjzKF!~V=+zlj)>Ts2Z%jhL|QPp6q_0myI9hl zA*=5M9h13x6Co567YY4Eg!lqUoGOX$juJ~d(|i%Nvr|OZTLbKUChU#=loA#}LNI?5 z*J6Ew+5g}%TsC+}a;k3bpXo_81K{{H%Hd#+M?@X(hf;xiCauT|g~2m;(eBup(I*yjE-0?Y7#wv3)*A*P1J_`sEJ zYDZ8GF;J7l0P!dg1?3^yrD;Byv|(b%Wub*-bLVhZu!XRC=U)>G5{_U#;|fXEx1`}; zT|jju2GR>cA=>hxDics8__0m_wIq9l$x;K$n>TC{fu*iyb97*s%WNqE3+7#!p^c~9 z4)R3lVNSR^R|PFIO>MMPdrb3&M=gOfn>VyuXthaAK;e6+Kvp%Mt4a^#xSBWA2>)b& zDuHbc=zK0{^U!`!Y(n_iEcKMgJuF~-MwJKFETt#SdMWRdLh^Wwi{}1Ofh#c=J4gG6 zasw`fkB0NcqT*1>Bn+2A15cNpjBH+S8w=BD-wCbBG_1Whb2xB>FPwX=&%wRy z#$)L5Z=s7^8^7FgrVty>fik+OO=b-vJp{xVK)5!VL}L#v!NVr#(9;R3CG&uhrU3FS zC~Ru=xFg_V(AnU6re@>z^_$w&(Sm=_Y_I(T`NB{>CWZcj(2{gL6zYOqKnDik^MKTW zJjTemKpHJQNaq`cHTO;4|5Crv)&9G}m8qW`cN_a%o&7^yMn`A(Tz5i;(b5gN``j>r zV*nx6VV$22HTHunp&MM#aV7!-{DoD+&euFnpfg}uS|7?j;l~)Pfa)WLh9#AOZ(pYj zeE590a%f2=G>Ouyrr?ona8v5o+~4z12t!jEk&xaL zO5t^6yoYc@;34o7!}{b+sts1Oft=)vanyx@?&H2MXp;qQDPzf>F(+}n>6t0#+{@rW zDwZ5R9*HG=rZ)RZjz=rW_pgKd{1yW&aDG9EwjaAth9IEfDYTd{a35Fj@+$1Nq5$sh zROFLTm~LwKN%C_PdAcO8LHkg^A>Jv6OV8$l1cJnT0xoqbaYiK3BC$YDTY-GgeRdr!iu#MCAM%ggh|XhA9$q@tiO zbUE7BR}fkn^9j;hdT73}V2~$E2W5XIPbLR_0IMid`z;GcukPRkToDeM#mlb9xMzn% zzZ%x}*Gk8&q5;4U;^D~?SeZ;{k{2Cl??P5old6Hvh$l+;*8okC;Wh^>ZeVjDeD68vz$9`ngg(fjrNy%RmXB}Q zAieEg4&qpjG~}^2jhFr0gQs@gDBK3y+=FWQvHJc3!qG(E5Mi1lnbef{3or%qw@aGJ z2+f!QG@F^`en~^~EW7$gmq=I7BIkhKMIXDS+w3jpB8vv&K?d6-N8Tde?>C$1JVR&CrwFo3Ng<6b&WFbX$?&pQ|JPLk7pZcFb~pB#^k z^6LFv2y3&t>@7P0X}9O%(FCP4glKF=hd5g}vgu-2-wY`0pAYfU`eV)p{UO#0(kMw& zBK=J5m)H&P7}oIsHuARz=Qjo}ARoa#B)8$1sl6Ie6x+Z7LIyVzE1oZU zmqC7lz2$qv9O=?e-=sQ@8T$HQ;r+%I5*#dSHT1?{A-re{v$hvjSxp90tx|O!; zS}sO{#_M`l^FfP!(^zEV*RQaBhs*c__6OMNeSB2(I(8OtexQenOjCPjZ1nJES%65ZZIT^9TaOM89hKdz%1o_{Q_4&{cw&)? zY=v&Xy6N5qWvKTNq!0_kS5PmK6LWWQ|G+*2>}6QJ5w6F<q9-zZ|u#q^had#G;8@FH$03?eyhbme-PI7$ly}pXJvkWdwaj`3C5ZL*1%ILQZy%w)0K0v`7sfxx z><8t^F3yRZd`@H>SV@^|>1k77`HB)Y`#{`QupXCCe{k zEPGGK;)-LLAz9YNSej4Ak`>32Bv~$tu@s$-luG zHmAeSkoGglQv@FD3u4D$VADYnBns7slR!p%(o#>Ij(kNN`KMT=#mKjvj{KrH^5+JS zmz_cm2bmJr-2NJF?igAMN`Q)=Em;anYb_{#$lIM52w_qh|NV@%?!}>Mh z;4qvu{{$JtO;f93#ph?6+FcRUcO)v$)NYk12)6T5&@M|bhP=^|k6=o?7ee{qd^~?$ z87+B@OJ0*DPMm{8OFFrvlk+@7&rhe2dP@5#=&PU_J&bQYQHry4oG;Ag7C<*2OY^a` z1+?=O{zn>>b?+MjGZe^|Ax!Pj#uKeC z+AE}YbWuy}`G0<@8u{j1a3GN1kN2ve6{;DErfeoQI9`#*=rS%(#h#Q0+kmlpb z_?!jC-y(B7y&ALwBINr(wpf4jct@Yp>lfVP$6;@h&f8El)5AV&&cbxe)uvXAjO(d5 zbJAwyd_}?L%s~e2tdQpXJCE;bKI>WdI zl^cbyverm_VH|ss%*i&k(>o7mLrv5}i#crtXsIb|(0my51u`!TT0sWI+{gyamj>mR zRCaMA3*lb3QA&CnWpAczNP8OdKE$xMH3CIxWnc#kjO`yE41F^UEseY!7IqRV#gnhM zZ*T_4*uE1`iK$H>Hdu-6`ymQXvG3oRqfol*QDjcB?-N83v+rI>L-s|e*e%%|^q{T% z5E*6Re$468!qgw9TDTn#`4J0$uIB%L-okTbtuU#BQZWmUp=?N735gL4j|S?WvG8A@ zQ6zFpNcMIt!Mkmdmx$oS9^7pHLm>@~{WajO#N~ zvw+uy&FUgpXKFv_3XJ3oI&2DA-$G6|zCcjvCkhWJtbZh&Js%;iOR0hlvty?A7;;n_ zc7U~)K|?Quq1T@C7>{y$DD2|FfJ{Iyo8paAI+x<8gUu&;<^dL~8@w`TY8xP|5L=Om zJ6P2ZLql|9E4Nk0GdzwYKfIU-5Q-3iu#b%#Nr3!z$j4+;8Vx}!uEP)+2YCZJkopf@ z5`EuoU_T-nUCVWLp)ns|R>XTC$QKxe(0EhEHq?RhK8eZWN#}8yN#&OS9+nw7vUVVY zg9Wzk53s(05a>$Q-9oFKh;=uxaW@c(jeCQXA#J;YWEh2H+Hz1()P`w0q#a@6L8jcw z8phjmDg=-PN%KfNK@7RUiFkr1rvU-`Js6YU-~3wp%wm(1eSU{&2k*5YkEUhE?DK%c zWU_tkmlDrzH{sE8 zV5t-#1F{Plgh@Y5cy7E<$P0!kM1h!xT~uP2h^+m|Ok@y`Qzf@U56z)<1;`5Q`PkVJ zz++wE30YSVI;7po*1(v~fIjuh7@>$?MHIhi`BV-f*hbCo{)|-Kf6$GS*aw*gQl8L@ zFqNBH5lD68PTI*ufC)dqXT^8&KJ~Hi50NwOq#a}IzZ>_`0jk@04)3bsbU|AHeQ77! zxRdt2k;*jgq}^|%&}u~BcepBSqo5}v@6kF*y{Az?T{lp_Y8TD%MTX6h<{+NKO$<;$zC4-bz0NDSZ!Z9moZG~7Ay1KD<9!j~C z3s0cXNV#2>(0j+O_GGAtZPRtE#G@#eZ*+!I!Wg)wmIDmfC%=ssA+-OHnTMXGOc!O0 z6c-7D1<_>>0VBK2xdaw=u#NCJ1aH+)i$W>S!H-OB4hW5I-p#)P$)*jW0x>Rd4hWuQ zg0V4zNl4NH5X;*eb6=aW!nWpmo-1@?sBR=5L;s^29-It;T}J=LzuN6M6F=y%P<|iX$tgtn-@@G3Bc9_~w zCZ+~(=QQ^xtif3=m7GAml%mrM>MvS6hY3gNIG=Lz-j%Wk#d^60MSO;9nA%iQU)p0P zl1-OY;3<>MAtaiS2)I%LuG)Uw((xzN>qi<^TM}$iV#Atm2N_p8~nY3{75MidGz!% zh=7q#mas4QEh4&bDQVh;bsmWHV1n^N_-7=>I7S~u1?FHLrUHb{RPrM&2TI~`xKtg; z7~MfcN)LS+q$6>q4eM@d+`L3Rcr$_~Pr)^qf)Oc;1{n{HjP{p<*HzCzB~%4BUP5aE zZ3$P62VgkUeVpb`50|oyn^Yl2#T4uZQZA%j!gK$NywPNr1bDuPvId^%9fR+CB<-1T zw14B8UmVaMPXUMTQ!k+VWKNIcyPfYAzJI`_zvTPte3$gU<@6JLe~RyIe7~9RtNC8S z_v3u`@%;$jU*!9%e1DDaf9AWCf0EO^ad=7J#`=7p?=5^^%lB%&U(5GGzF)@oX?#DQ z?;78S@%^jhcXExt=KD|helOpHe2;I}xh$t_BH3**-}Cu?F5gG-{rpq#?`6RIX}&Ks zTnOOL78oyuQ{Zv~2D)=`z5%cLqpSIE{T}16>tm7VF<$bY=|XTQEH6s@`blv1YbM`EC=+?!>PxQCJ+nh+j7)Dqxo%%Ka*~wn?JSqlVUoDKOK%R zYz;pLVBgz;5s-PH08d|u{6)ItN_y9@(k{WtnXbX1cm+ZY*dSP+!lsk9Ese~VYr>d z4Flzm=m47M0m45$lg?NIlfth;Cde^OYCo6dKcw;|lpnI*51~UK)R|-6@mzSp2&6Wd zfy=_SWJtoU9p2i$+qj}ET zSUU{~ToUd@%ffFA#mxdsG*3JVyg)NHL)YA+&O2TVw;}cMv2$K){+lKI4ycU-y*s25 zmyi*!wkG?TS6weLWLRIhhv?rT(vbu;39BYMLb`Op|L?o%>`@}M|? z+3#F%qEC-M^|@)rjXFxk{GTV)0;3<(s_`BMRlpjamq^w*L?8Y0!<}*(S~naoK~upW z{r3iP599glTyjjz#@|H(-ve;A>#^a9g2o~L;{#iPi&ueOjKXIYC-U~41$*N?6_jIs z8OD!!M9I3H^o+8kwEMc_`6BBPfP9QbrLz=t*=$kXTxze7IO4 z!I+IzaQFl2`sSzeu(qWbwT}dc;r_IO!$Xv6W~ORpXgoL5h9+ejUEI$7s3yFTLK2YJ zzqURA?Wvuas+}_^Z&>dl5VR(M{E+oH)R1la8&a}u@2FHnU25BZ0*5!;u&bJeuYXc* z!BREsk{V|ops$kCv4fL3s4v3fqDnfIlJp%@n6@$^osp=NjC97`WGut_4uPO`1*$z{ zb>l9Tyi}=%GXPzzN!9tZAYjAz)FG3;I@3q4NkaQ|#1`B+)e*Fg2VZ=1Mk9~rppVlm zw7w$dUgC3@^fJGL_+|k5&LbRFOAfOW-=BvxdXL!y9JUb?JM>`Uv%Sy49Ca6>RXG@o zvIA*M@R#dOUL!p)mYVe2e$=7kQ>Y@Gq4IZW_Yoexnxi*YWaOdDLud3Lz+Mu$HTE+O z5wesrne++{#A4mV;+A6p7dgszE?!E5Pu4bzi+@eE<(m9zMlo#$VDD^_s&7WDzACD( zG*%xz`@{F*1MB`jO6bgCH!rEcWo%l-UR zQyYTnj1GMorQbyf(jh$0asFk>=R1JFJl*5abCJ%?Pt|if^?i5(#t)Ltr&*RB_Nd|M zsy>7eYex}Ef19)8^{My45A|6G0)A+bN?M?8gkp>CgiCBGv+L z{o&;~sYN=p=sQJ=eYvr!@I`hf9CHq-fY@22f6|TY1(d~{b{+nihZC6;{NS5&7G|Oo z0yrf4@!4wj1P#VAjVE$@bK)&1z<3X(`~msnKgG0#$6^J7~#SvM|et_)!i_(pt&=%_ph{_liNXkeEcd11f-*`3)%~>!8=|vEP=5)s?ZZU zH|Ej5r4&fnHv$2#a)zF6zq{i=4l&|i6-k_krMghDEc_eH)Nu3((E=R{yk4sgMbdIR z`gHrRQa;Ck54@X0aX$0F9!u{hR4=vfX30A&{3Ie`@0f5o@>sI$k?6#nj^1J62awrA z&!d@ae=NM_Ae7;InR}$Xh^%wa9&At&(;4BBGBYeZ9Esi&as1&=ATRuWOepcg2QgVh z_Z`Xg3yhPrkidL*Jp6mC+c58rZvM;?z$=!Rwsiv=aoGHLgZ;5MV;RB-#y)RC)zFRy z9XrCoOOF2qyxi71S%^Os4)Hl66nE<3tyb}A3FPWl-Z^^JOY%5o$SlgAK9cy{9q z_Q#TT>5s1TK(S}?e*15(!dH&_)AfXx?7wmG81RIWpGDx$D46woUX!N+rQBhXM{^H%&hv?S03qynf9+3cHNh^cprv zH)~m#CZs7PP1Bt7ff0AS>QCHsG>{zr0el&2+3y2H8Vny(YoX>jUtWcfi@75(Ec_OF zt=CTbM%Xt5I(!%istbV#%c}j64nw% z8Y1~!{61HEHCMYjTHG&7-aY`{um0ew&R)a$5aAy&5q1Op&l+}qS$PN zAQ%c$0nL9LrIB#ZLa~xXw{%eIq(i6f@ z^1A*0jBXeUuNRZeXx`d*g47_b=tw6tw<`PxBA^_;FMy1X-5JX*?HGG_do~|hftNTi z0FU1Qh<>9;OtFC!$O8wNZN@$si*136^l}}sxJ&uIBj)>B^S(`xFmg?D^FCS&2*g6= zxV$9~_ZS5%=Aa89Rn~**WSrxrypDe<#5lQeR=IC=Phf2G&FP7O(Z*s&=(e6uYu>`= zQfsu0p9<%F7CPcZP{WfQ1+xR;x46gf%wJ*)bGHW5!#Qa70NJ5&*JhF><`e_;;se|S zY8a-~AtV%aaHUZHUpNnYCLisx(9yUPSi8NX2BsYSxqmD3g|3M`Gmq z0y?4Wy~1eOidY%WHb~xN+OsR+R5!YA*0c71qpACOeRIk_;-fPiY7i_E(tb06I1p<( znhIuhtT`K~3}Ovg$FYPs!$otP{uSE<3U1E zbhGY23RZ?auy|oZZ&Txg47~~Ih@l6_>~#!iOBQ4#va!P53uoI)++=KXXp$&>_M`(u9_?n}xa(FxvLz;ei%0X0avJD4&7N&91ePqR0FPa=|m_$@u&2FKCA z8-lWPd^h1f*5`wGOE-?F9r_5Yt&8d8-<{z&@4(ChfvfRvV!08fyKIN72a!l10ap6v z#r5$4hd-~m%W=s1OJuEF@C&5cLDlU(|CoE$u>gV+BxUr>?g^wcr))*3GdS)x017mj z=q#+sveCt& z`}ux(9DXjRC4D8QoA@s2D>yCjRU@g!>-k>8_gcQ!^ZjhT`}w|x?~Qz4$M^MoU%>Zt zz9;eh^AwW#F5i1_-(xxO{NRgx)|}V?dTM$6FSg%m_Qc~O>A3QVZ=}M^^3>9J`wqOg zhIoG6@ecfpC-e|WPmqLmgdYNC8y6mk6-Z(`{>2lC!{Z+gJuL=?5!M9c9C#HY6Gy1{ zs;S;sg6G-7(s0p-QW74=_&Jq0au09JgHv?a@9s1@fro$mfAQ04J%OM5J_&Oa9Iv2F zL0+kV zUa9no@KvbtNPdUP|3$&u6kMa=rwVRU@Nor4tM<%RaFK$`70gmFQcsQIi{u|t`qe8~ zq~PNUu2b-S1!pUGfr9A@-l1Sb?v`yb^#a95{Prr?s$i0WL+_I1-&XnC71R}6u3&?L z;}v{g$^Vmr2Nir&!Bzz?Q1UNVFs%4XRo<`Q76t!Z!I9sWdYw@DqYCa-P?idD;%=Gx zqk>%uKBD0L3i7`u1kx&%U#j3-1+x?!t6-9XpDI1xRDww2EhouQ{f}||29m;@kl9dqE*AK`y$*Nm_S7~-BNYj z>gkq>MVu%t!mWpH*~*1OyA%wuWP8tieU%K$G^4httF0VO@rz=gN7Ao%xti0Y^ z?vLizl+{#MRQqo#@z!`(du#m>x@d#4l)x&#zdozMdt<=s^JlI0`m5?>MFa40J;M01 z@^Wvzzoe$Dc2%Hk6?Z-3%j@cHsFt1(moKR=tB#mWD7ls1239|km-W}+2?K4auFvxO zYh-)<<@H&xy0>g~T)v^4T!j%-Ug7f($k%vl1>wueZ(!*2-pH`Brfijuu^0y^=e!il z`MP>PhC;~=)wLCId0*CQpRWW4jn*gWd|7LK0B zUx3;as2JD|&d0Tb^6~Ac#9uPN_^)2=E%DaZl~*Y>MI64uTjMV)si^kV*OcAlRsP}g zRb^FFW8hO$z;t7vx;(3e5xLiwP0zyRD?v|D*4 z4W5SOPvN<<2p?%k1n&bG@QW8KjT9bcV|?)-Ioz+HFP^FdDSAK2$;OZ9Cn7`h-NbU> z2xd=joT4BA%BSF(LqI~{N{9(Rk`ejIJfk6Nq7PSgP6c1(6U$2`PRq%fmg9@SuciZu z6b=%WLsD2mtmG8D6fOo;60MB7gZv3i$* z8#K>E_@e~TI7ZcFH)c=ElYE2m**T}jPs?$vU+*}DdOA_V*J-RUBcS8*>e^M_hWdtT z%qQ~Kb6MsMwF^{+LF!NCdTNh?kuq$@5BNFN`YlrazY1>uiCPa161dDK@l^_TD>yPj z7qFy8k_6M$I#DeHk&r+pVy@HJjHYvD8K~f^}w_<2LOpf^AMqJfY5-Uqa zIt|y@+i+b^C9yJWuZRvXXQM1zl`+A;ZvWdYkd7LLG!1D=N1xGTwFxj2aKu$YY{qpz zt`Bf+Uxe7Q6t92b+KJ2e9U=aR6Yu0}(XV)JO2^fNYb&l+To2;<6Rv(-*(-3)hU+6- zb4uVNxSlE%;%QtX%TO6S{yhZ6QV;LS^0S!}&XTzja#4Ic;9Y==7P}XZ&1`*C9C2T{ z@jsXBe&e3Io;%NiSUPk05+9cT%l)-=-kRmUx+-%IXTF5udn^vQ|}>(PAVU`R)-YSAQ2tG|4`d`HXpGKL7kcSwqFrN`KkP8n2Hk zYWgo|=7C0Rgiiq|Icw@_{Htklq*&u7n{s^_>(;HSSV@mqeVddW8~o)N1ukw+{{Y-I z+#b;qM^`NAYy)tTE)}?L?8j#{%D>MP`TJB^UYV!AQ`JiP$-d=TZfr=#JcY|evB(B4 z&IhIwj`p^~=yXL#Zp6aqv^4T}qq=_rKcV_p`e0@J_TXI>Dp!9mN_1fS0L_0FDkFOu zlA^Q&u9_Idu}*~lx}ODSAVYJ8WRIC_6K7j46C?VD_YCW{b|jPzDWdTiwg@r7HbmI) z#}8s6LiiF;w)7Ld-t{e!W??H9l_{n=Hmwq=~V`XNs}Y&k$oDN$(rolh%Dk z2l`@svKa3_Q;e@TLyRvTCB{!r72_W{yDzid2z~gP`>3BSrdMX?bLTVQ&~wFZ08Z$3N?`2zm08h>yy#RX+iPG8Mi@{@ruA5O3kC z*`oRl{!jUt^D*BN4*fkiAJ3!4YZ1!?FUjoA7lQs}rH+V9^dsf7Ah%1&9Gs8miH;j? zTQb^$_EFm+<7tRR49SKcsytNWZO~EVHy9Hd^w6LO{HCX9=t0Rr!A){b^h|YKI@^L~*K&q6*y=36vG_4P2=1AU$Yd)O?(HW%fiEMgRBBlfTi zw}|1C=eDGXqz1$%TcWTvB-SI2W-C3iEh&j21%8vV2!1qt2;v0lh}d{ARB?GY;m^Z* zL+Se5G9i{=Ek+N-1TEAzq;rH{@kQ$#oKK^;iK}=R{ClWK%ZZDd5gGq195zG@vz!^L zTeHFs9uu0ST?{3i;>W^QrT^KwB6RGd=#S}EVLt9{g+(VC9dE_t|S69i7jbv3SPDhKBfkwDL)Srs)kLM|Fh8oaBjeST~qs(fUJQf1ec z)%r_Tmt9{MC6JivT42Pn?~+{kyWsmm?7k6W_Ra`Kh$NhWZ3A6X9NqK46%ifQ5s}}b ze*;}T*4lBnDxA}G0aqW#y9GEWcx`dGp96OcbhIvs{FdE^6mX~e{p-9`TIFBorP2=n zIxm%W_@?KjeTn$9!T!2vKq-+CL@cwdUF}_sqYK_N_m$V-Aa1F|RaVz{OC)CMF#npB zCFN!H{y>Abq67yItNc}BH)H8Jn9s8mHa($|4+Bb28%{K^mxfB~8-y)_UxnTIl{fjl zc+MDp3a*47cg~E*)8T+PBOW8ginMrK0K0WwY}<(|ZKz&VUQ%9H>qE4CO|>59cdJXv zDk@5Fj)cP&FFoT(yHJixh(uHl#;O|MKgEh<)bhF-@sGhJmDS#wijuO1hO(P*T06K@ z)gLJrsy-R+8_F6=$Vk-{uv0D0N5m@;{e2~TFjB%wQ@#6DNhQu=N^q;J!=szRmDSWp z6fFIWH8PdZNs15WCNx7FjbW>6tNl1+2>9u2>d6?syvAEr8>o*Ki9f{3umR$alja`k zgVqC(B{UzwW2)rS{9j_c{<8X#8k*Z`(PuT)E7#&M2ZzB8H}Lc)F0!y+q6u|ad1S}s zvc(LQBioi>14f9PcuZM+y%#52dGR<{$BPY;Yb1{9EvfRBRp41U4kJxli?c(_%ctPw zbNID!cx>w67_-F3?k|?dm5@?ZGQS$_WF5V+ykr!WF-#4%>jT)~k739GZt&jZ6E2A> zuUlPT*5EB6KNnji4qmx3P|4z(2VkTL;3Xig6yFHMsHQZ%PD z#}M|3=Yi!w!J~nW8HM;9I5I`R?=2~>@|NG=3#=}wtZPuAM(ne!!Vsa69YRW;5c1JD zY!=Pq7?_SZr%fBIw6Fa;R=b*ei(9nSM>Jo1w9Wm1x z=GfC=DS+``3cpk!OvCm z65}Gd5<1~^wpqp z7zz{9*HK`UkiW;1e3ZDzUo%fmg7Z|rd_g!5kKW5w>+);;4T$-PR+KEQZt%m`mekT& zIi4!5OKPQ?ROClG{&MaLA$D08d;MQooHJy;*FR4>O;JN#xfk1XPg{#4?T?_u?t}uL z%G5Pn?k%GUy9kk$-i@eFyb3Q<+*IUkz<^m@R$K0!SBF-@WphuJUQi(}iNh9G;oXD^ zAVpFFG+BHTBKPWI7|7*A1H6_yB6l_#*yMi4G zh847}mGqek<|(KvxJQ}FEgPC89GvL`@A@oAfq zcfXRe`y0wjR`S}FoUU&uFICC=y^_=O4dtaNc_);d{%G<=G*v$oI9!uk7D>|uhQU?R?^mLpAYBCZ;w zvNz#@I8RjF2iR?z&im8ouEa!2=D|hCusTr z_s<0mY5JQiXSrcF(9{FohU-sgOZ>SYofq2kVSnHWo{j54r0Es#XK_tITjI|<;?F|p zjAT2m9@Itf5nLZ4P4H!0iQtVte~CYvp);E3eL*Kkco zx({$)m}=eV{ZO>k-vAkhH+2-lQ5pby~haru#^H{>6= zN{C{l9|b&w%Y$?mV8tTnfHXnhV(5yrAMmfZmLvTp;F4na2GYv_58&E@^wWU#OVD1V z34R~fHl#ZM=}%T~NBU2IeYo5P+PD<|G%2oQz&{SyhifeG1g%(arXg(u%*HhxX@dE< zW+SZw?#3mMCU^{22GRuS@4rt$n&8FDFa{w%5AXo4ex#oUT>c&O9nu7waP=Tf@Bv(X zNIwYp7Ove$+wfMwxwu-9&IY_0@5d~M{Plo)apCVIi>CoKd~i^VG<|qr;Hp7-D_|F{ zMx+TQ;@z1|NS6Zs09Py0^lw%@hHD$rj{|;yYd6v#0^0F@&32^s04Cran>|P;0v6+H zM|vw@UKwnRG``0WD{*xrjc+peT<#dsbUsJtY+K+D1nG?JO{59ZdDsc03DS8}2HHq4 z9alG{|DXR^=opCJXK5PP6!{fs_G$1q-sksWN;@##kRJR?O`HzYQn6T+;GQoQAypt2 ziUr6Q;C?yM^m`)lA792!t>~<2ps+;bhcIRAR+~T^i-lh_h-$nQy9&~(@fMdCl50h! zr~~O0Op}eB0PM@*nl4uIyTSL1OTjx2G^=scQwI8*piLQaUap{6R3YUMS3_b0Qa8wvRYVd)s9OWbj;|gz4#bhjHEq!sk z*&+)xSz;PPj0=$rda|3JX=@?7Ce9*}x(4%oh&Eb;2Ry5ogDhH))|0lYxczuP?G&6t zJOI6?p+{z*W`~&1byAHL$jM$=i55AqOS3Aj%=tBzyOb?HANAItkEvJu;9mr-Rs%WR2UQlX3iRWppeDZ{jp`ta{GkClk*&zK3z=gTc%`i(zDGIf zMbc(jkWhpF5SK*~_=><+$2CxI#rxc;zDE5x^c0@Ky*V8^=csF2xaUBF9Q;Q=H!cf!XdFaZ8yjhehdgGB zQA&36p|&#A6Z6;MiF*bPYL@!1+y7Au)XRQdwzG6+)z12zjXSsO)ORi0Rkf>e*Opz| zckSNQzN>53v0cZ0+4IX~57j@^_)ybBtq+NZ(;s#`ocVC}!+8%w`&O)r0GzFQYf!!bI;Dco&7t-F6S)M UlJ^tmPnv%6f7IgtS5^K$0O|{}3;+NC literal 38912 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 A$N&HU diff --git a/wireshark/source/packet-ja4.c b/wireshark/source/packet-ja4.c index 99b1eba..6bb126e 100644 --- a/wireshark/source/packet-ja4.c +++ b/wireshark/source/packet-ja4.c @@ -12,6 +12,8 @@ #include #include +#include +#include #define FIELD_VALUE_IS_PTR ((WIRESHARK_VERSION_MAJOR > 4) || (WIRESHARK_VERSION_MAJOR == 4 && WIRESHARK_VERSION_MINOR > 1)) @@ -48,11 +50,11 @@ char *bytes_to_string(fvalue_t *fv) { static int proto_ja4; static gint ett_ja4 = -1; -static int hf_ja4_raw = -1; -static int hf_ja4_raw_original = -1; +//static int hf_ja4_raw = -1; +//static int hf_ja4_raw_original = -1; static int hf_ja4s_raw = -1; static int hf_ja4s = -1; -static int hf_ja4 = -1; +//static int hf_ja4 = -1; static int hf_ja4x_raw = -1; static int hf_ja4x = -1; static int hf_ja4h = -1; @@ -567,9 +569,9 @@ char *ja4x (cert_t *cert) { gchar *hash2 = g_compute_checksum_for_string(G_CHECKSUM_SHA256, wmem_strbuf_get_str(cert->oids[1]),-1); gchar *hash3 = g_compute_checksum_for_string(G_CHECKSUM_SHA256, wmem_strbuf_get_str(cert->oids[2]),-1); wmem_strbuf_append_printf(display, "%12.12s_%12.12s_%12.12s", - hash1, - hash2, - hash3 + wmem_strbuf_get_len(cert->oids[0]) ? hash1 : "000000000000", + wmem_strbuf_get_len(cert->oids[1]) ? hash2 : "000000000000", + wmem_strbuf_get_len(cert->oids[2]) ? hash3 : "000000000000" ); if (hash1 != NULL) g_free(hash1); if (hash2 != NULL) g_free(hash2); @@ -922,11 +924,25 @@ dissect_ja4(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *dummy if ((strcmp(field->hfinfo->abbrev, "x509if.oid") == 0) && (handshake_type == 11)) { cert_t *current_cert = (cert_t *) wmem_array_index(certificate_list, cert_num); - wmem_strbuf_append_printf(current_cert->oids[oid_type], "%s,", bytes_to_string(get_value_ptr(field))); + + //BUG-FIX: Ja4x should use Hex codes instead of ascii + const guint8 *bytes = fvalue_get_bytes_data(field->value); + gsize size = g_bytes_get_size(fvalue_get_bytes(field->value)); + for (int i=0; ioids[oid_type], "%02x", bytes[i]); + } + wmem_strbuf_append_printf(current_cert->oids[oid_type], "%x", 0); } + if ((strcmp(field->hfinfo->abbrev, "x509af.extension.id") == 0) && (handshake_type == 11)) { cert_t *current_cert = (cert_t *) wmem_array_index(certificate_list, cert_num); - wmem_strbuf_append_printf(current_cert->oids[2], "%s,", bytes_to_string(get_value_ptr(field))); + //BUG-FIX: Ja4x should use Hex codes instead of ascii + const guint8 *bytes = fvalue_get_bytes_data(field->value); + gsize size = g_bytes_get_size(fvalue_get_bytes(field->value)); + for (int i=0; ioids[oid_type], "%02x", bytes[i]); + } + wmem_strbuf_append_printf(current_cert->oids[oid_type], "%x", 0); } // Added for JA4H - HTTP1.0 and 1.1 @@ -1380,12 +1396,12 @@ proto_register_ja4(void) { "JA4 Raw", "ja4.ja4_r", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } - },*/ + }, { &hf_ja4_raw_original, { "JA4 Raw (Original)", "ja4.ja4_ro", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } - }, + },*/ { &hf_ja4s_raw, { "JA4S Raw", "ja4.ja4s_r", FT_STRING, BASE_NONE, NULL, 0x0,