From 2b1fd671da88ca03fbd9aa6ae1d37309c7cb593a Mon Sep 17 00:00:00 2001 From: adrien Date: Thu, 30 Jan 2025 16:20:16 +0100 Subject: [PATCH] init v4 --- .gitignore | 3 - README.md | 38 -- config.php | 31 -- favicon.ico | Bin 9513 -> 0 bytes filter_inputs.php | 124 ----- index.php | 879 ++++----------------------------- index.php.bak | 86 ---- rdp.php | 15 - scan.php | 48 -- script-args.ini | 0 scripts/README.md | 34 -- scripts/http-info.nse | 113 ----- scripts/smb-shares-size.nse | 206 -------- server.php | 3 - style.css | 106 ---- templates/cards.xsl | 186 ------- templates/compact.xsl | 200 -------- templates/hostScan.xsl | 203 -------- templates/lanScan.xsl | 198 -------- templates/lib/head.xsl | 70 --- templates/lib/nav.xsl | 80 --- templates/lib/parseCommand.xsl | 105 ---- templates/lib/service.xsl | 102 ---- templates/lib/toast.xsl | 44 -- 24 files changed, 95 insertions(+), 2779 deletions(-) delete mode 100644 .gitignore delete mode 100644 README.md delete mode 100644 config.php delete mode 100644 favicon.ico delete mode 100644 filter_inputs.php mode change 100755 => 100644 index.php delete mode 100755 index.php.bak delete mode 100644 rdp.php delete mode 100755 scan.php delete mode 100644 script-args.ini delete mode 100644 scripts/README.md delete mode 100644 scripts/http-info.nse delete mode 100644 scripts/smb-shares-size.nse delete mode 100644 server.php delete mode 100644 style.css delete mode 100755 templates/cards.xsl delete mode 100755 templates/compact.xsl delete mode 100755 templates/hostScan.xsl delete mode 100755 templates/lanScan.xsl delete mode 100644 templates/lib/head.xsl delete mode 100644 templates/lib/nav.xsl delete mode 100644 templates/lib/parseCommand.xsl delete mode 100644 templates/lib/service.xsl delete mode 100644 templates/lib/toast.xsl diff --git a/.gitignore b/.gitignore deleted file mode 100644 index d91083d..0000000 --- a/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -scans/ -datadir/script-args.ini -test.php \ No newline at end of file diff --git a/README.md b/README.md deleted file mode 100644 index d75c1ea..0000000 --- a/README.md +++ /dev/null @@ -1,38 +0,0 @@ -# lanScan - -Scanne le réseau avec `nmap` et affiche les résultats dans une page web. - -## Configuration - -On peut personnaliser les options prédéfinies pour les scans de réseau ou d'hôte dans le fichier `config.php` : -```php -$presets = [ - "default" => [ - '-PS' => 'microsoft-ds', - '-F' => true, - '-T' => 5, - '--stylesheet' => "$BASEDIR/templates/lanScan.xsl", - 'refreshPeriod' => 60, - 'sudo' => false, - ], - "host" => [ - '-Pn' => true, - '-F' => true, - '-sV' => true, - '-T' => 5, - '--script' => "http-info,smb-shares-size", - '--stylesheet' => "$BASEDIR/templates/hostScan.xsl", - 'refreshPeriod' => 60, - 'sudo' => true, - ], -]; -``` - -## Accès root - -Certaines options nécessitent l'accès root. -Pour donner les droits à lanScan sous Linux, installer `sudo` au besoin, puis créer le fichier `/etc/sudoers.d/lanScan` avec le contenu -(en remplaçant `www-data` par l'utilisateur du service web) : -``` -www-data ALL = NOPASSWD: /usr/bin/nmap -```` diff --git a/config.php b/config.php deleted file mode 100644 index e38b4c5..0000000 --- a/config.php +++ /dev/null @@ -1,31 +0,0 @@ - [ - '-PS' => 'microsoft-ds', - '-F' => true, - '-T' => 5, - '--stylesheet' => "lanScan", - 'refreshPeriod' => 60, - #'sudo' => false, - ], - "host" => [ - '-Pn' => true, - '-F' => true, - '-sV' => true, - '-T' => 5, - '--script' => "http-info,smb-shares-size", - '--stylesheet' => "hostScan", - 'refreshPeriod' => 60, - #'sudo' => true, - ], -]; diff --git a/favicon.ico b/favicon.ico deleted file mode 100644 index 71265967ad25964ae9055f6284dad2dfae5cad51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9513 zcmeHtc_5VC+y5C;s3zK}Y=u<57^!SoN@5U+>|3cMHH5J*(^F|7JcIO29)AqBKj z8KE`seEER2+0w=97Q^FGlKI|)2#LU>2oe{Ce@4SzPa>F1+Pm96EMt%te*GvVTKK(9 zXn)9GOF??g7BzChojn0d;x0@4xU}iyP|X!fCE`h|OPtdMpAOodY*JQ=`-*qcj5i+_ zKccklxZ8@9>$#QtUJ(wjQeUyOL3y2>i;4Kw=i7K?8J@HKubOpSDW~~CU&mt%Y>Y;J znHi15^q*<URZKwhcR2o0~qz?`R>xrU;m|_qOrj<^O@1$t^hldTUybIY*RaW`1K^>u%#~*;7l*3{Twm%ETqC z!XxiPTN~Fa8CY=cj?YHW=y#P*zwSIcd)70Ema%`!o)D8BiJ2cH$+A|o?+T9k=jODY ztF)|*14r{^zr~I|<3B*jA_PP*&6BaQj3}n(SVqLr+n;4?Aak|ZKlXWA^y;V#Y@eCK z&mJe0+_y#4EKO9TelIZU2Hi6yxPac15QI?l5%i(RqW9NclE$^sgZa_-CDC&oQ6!OT zpO}<9s_LTOZ?xa-sw7%@0Y{BaZ8~GiS+C@NtL*(SLMt!f5b0o^%v>owUTG$d?)!cn z!Za`9xV15fR(gnI`7~P$!ba>zu?O~vHff`qNPU+=_aNf{X>@i=TF+f&_l>?DGQV&N zP6VoPYSW|k&Y7w7%Twbxg)jmYeKX+AsgrELY!Drf_xfWndPCbYnulTx7g5DN+#=ov z)Vj2SRsMWDl0kT{CxC7@=N`?&hbMx}HALA9-c1p+jXF9XhT)LTW-|WfvU`EkQ6%Q2 zb4KWvSO)HS#X;RHPG^2};Un1Ns2E}|VZmNftja)`U=1=J z3s`C_n%4B)nP#XcF^i~%nrPd7`@~pNzqubq9M(dV>`tH(;9!m?2Y1%_VoSy@qbzC6TnMC^g?tX{MC204eMuAVpA%9?1v%5IuQ{hzH=hQ-bp- zVo1TQS|aRkx#0*;!*M?U0o~u6Wx|mhkKxsfca$HN60zHLWau4jr}Ml6OV@d(m%h{6 zxG?5cS&m%HZjPgJ^nMO={ZES{E(^^&EB*Rxk07rnnyBG~@X*|b?8&)udXmMYB`MqQ zwW@5791>rH_o`l_EbAw$d7OD-@YdX`eKkK!1=5JUPLzEeRMBP`ae>l!y=%ijAW47S z&!$+XMuf&1k@UHPx`|5ec`xb&pJGU{3IoOaY66oe1oYv9H0pVzFtA;4Y57-+h$K4S z_qA$OK7^Hvu<8+*OWLS|AaVJmA1Mu%+@y%3TcHH%tH?@vPrl;54wV+9W-`o(LjF5U3kEr<(XF`TCQuQ-ee9dc5<-4rL(94mkGHb550()sgFX z1KZ@g7b1}IWTccbeR!{OM%MpqlEQ@c)FbIE&uhU6l)ds_L045^Y+lvUsD9)j7Z+V& z!g+>SE#!JaTYEl!aySw|dkDl8F4X$SqJ(vLFLCgORV2wrLryudDWxrXBIbEF^XHQS zq0t#cgxTHo@O3pqTPP_ML_A5Leth0JFn3dFuqY96PLAAf2{k|I^xHCDc00})wy?Z2 z)la@w?FLDebxaAg?=p^9(P$Y_M0u(gb;q`F`W$6JGET~O(0Z-cMolD|ey@Gb!!I@u zr<2ffb0>exKpIz;olC?9aKi&&FArh<>YLi9XD=zqrCzxF6iIirxr#CBJ)OkR+TdC` z)6#-rLOpy05x_C!|25zwNTmGArJ&>;u*l zv3%1l8<oMhz9d!-0j)=Qp1oi*5V@Uh+aia;D0vtW{Au|)qX$8|p!Gq>W< z*kjbsU(UrDOg^9hkBpW^GvHllTRiS%9fLqE#0VYd;_n~+F8}1IsR6xvkt`9o+GA+eO(g-r)eRx|AE8E zz=fUv2Yz$YTB_Nlaz z(kL2iZQNoqRFEiV(1x8=oj`pY^+NBK8OUH8N~3cxno!tL$hQn^g~9I^$@D&;Z-{da zN4%~9#)OxL)5avguR@EH&Ss_tPMT7AGR~7A$Eu1PQf)HDKfs z6?8`z*!2_<#r1h(z8VC1%U2d|3Zmuk(Lp^#(%Z**KOZL`5@)qpvfB0TNJ?F6`rbVM z@)?q*?W>`gPwER24b{?{zT5p1Qwqji#YTNyIA$2h5iCROFxW(pLaRM2`zohLIl9z7 zQQPSvLi>_%#JyJ|o>{UuEN^6!JZhM=LL8;Q+o%rnPH$OFs+9SpI~0{@Cwtx6ZKL8))>=b>^O63X+7TgCJ5C-7|fJy`jUc^{G3NK^n~16CV@i)F~|;( z!XD5=A)UOkv1Hx0Pi!m4MiOyE7ytCq_j*Sz?X;MTKd9S%az33%;S!zlWa`{FRr&h! zsp)O5V*wLZFy!%GPv^;DJk7d{y!Ou|(gO(X8m^#)h~L>Uro4FSKHEcy)~zz227y+e ztBI)f-Y5YAckCXH7Dzm0%8|EpIrUmK)VUEM2|%$4Xn_uixjA8pMxDlhEG-0t7Gi@~ z%DoFZaN$gFWxdB%ljM0*Wq!i-D{-hn8hJw$F(rAXls;xXdp<~;wea))U>BL4h7b|r zQVFa(z>#+jrL${jh6QEs7tK+G9ooPWI!YHKk;n5hLLkNMpImr$<^*Xnj;^o7yIc0> z@LkXMaqjF~iV`oU%t&A~`LkPWT3DsLL&q-;Lag-LDO+~BlEGWnLgV8~v>UYAaB87H zAfDTH%0yHXB>;a|q8$C4g=atgb&VcN3$E|>oU61g3_g{Te4Kzx;IJMfjglcm{Bx+I zbH~m(rGW@iHe_?P_e%6dc=iFX;0*%~BuOS2NBll?ZB(0PxN)Edlo`__C+!WSDy>JW zw7k_M%y=0!xWdyZ0VC~^dOV^?E-9&mj9XS+rBvg{sRFy{xavyWNT99) zc6!l*Wee=X6&cggN2O@pUAd06M`X`^Jc8&}c{15s2jrCvo&%d5vruwZ9ry&XU)Z1~ zz2Z0jbatuQ6WRo$a<`OyZ_+J6^dMIgxQoI)i{7w!x>3q!ko-ZVtFSEnhT6`rX^{-? zmk?dA02MNYP$GeJE(y&ijX({B43nZ50yP!%V3az#4jVczNs8DZzvSo=yaFEFbzG_D z8Bk$~kLo1<)Zjyq=-4zIftmnykfZOQmbTnlfHuh_*N?kFXS=9z99&x^SZyB0 zt}h1E(Jw&W&8LWieI{$dm09K2u)WVwmLQpiDrI-@2nRr6Bs$OQ2WYbn92+3l?899f z2TVaI9|koHZCWA9{Rk)d06)M6ciD1UK$M7J*|&Htw05kh!#(gw;9QMFlQq@&8B@`892#rx#!|DU8ftf z0Wyu>|zOQFCqhQwy(6EHcjT^J&s#cjCw+G)@hrJ2ZMQ5HYOk*mmMs_P@(?9VK zqX1$7k>ay`M|5CNUPunb^0_oxN!Rg=w&1u-oEMgALs`zgT@m#$>qNwt?=AN_nGDxG z&(L*Zq|u6Br;1sDH!ww9Y3_BrGw@DDJKfK-l)Pv;-fPcljkghpIWCo5q59ParHxNk zx)rS4-)2x!={8kLu{;60Fe(lha6e zac#49dDt;&JtYq1h>n8PMAx@2-Im^GlFm8j|G+J~^l8tIAG{&Ti?3NhpAAA6BXe1) zUe>F>yY7Dp96T<#wv32G>@o_ozE%zTrEtHleA*^w+*IKfqkQA9=%Yb-WA1`$q(&re zf2Nl8BD7Pu-$gYEsvN3V;DtP)sa?CIpZc4y%P+;Tf)u3m>gPWMDfRhao@RIQ1`36> zlY>dcL)VWIkU0&&X7}h1hHlE|UhdLF3QIvFHp1Gk#W}8_R$E2Um~BR(VQZ*Eia!}k0IdnU)sf8RC9rXT_ zKEra;QarkND1$#K!yl|}VY=o_Dt%-i>Z3s0)V(F^<=WjIMDtk3Xhig~1T;e%uN$i3 zIsUSq>I?guNIi4r!oZh7Vfd6uzW$~~coePL>K~nG!;+e`?%Pt^o>el0Bfh)ySLOJ( znDKjczC6t>(n$Ksr#(NFvXwL(Xw!FWSUDhTbC!;{S8m2g<-4msJJS6+Tyv~MMA5!G z6$dhD<33YL;kC4(0Yj49r<5TEO{tiSPj*-LtWdd;rF*~9-p`qNR2FMmxaDRk2-}9c zvo{HCY-zi?rap&-8>tGH{4nh64f@gjJ@*I_Td}`wwtncLdSo2M46;YE%d-n#Q|Udu zlnlDFK+fy@Vw%xD&Z8f*k3Axas*S7-!%J;wG}`AA>MWikncOo0cH+m-FHV3S(AooT zxvejzN}`#OXTho`$SVD|-vTQ`wre?_Qhzg4N`3)1gpM9KQyURy!zvul9CNO1H*8`x z?%8fImB({*AB*S8IzNM!QG%+vy$#r$Y3=(7&)W7Fb7DuEPG3;adYjYgZ^$LqFE)Z8 zt7K5y0{*}$8y8idxByl1_8lX=JV(!2;N$;-1|xgH)>cQGpP6H0^sD0iiixzxccsbU<%?+Cymw?X04`No#aw65^YCU0?nEE$+*~d~Y6YVFnOpv?Kkb zYE>a?`a5`82yF75*P3cW({>I$x)8%xKE+EXzi1&x)wpe6o^vibXU3Jg)cG->WA9+9 z)hcT1k6Wszdje-j^=BrkwmPsL|Wg{j|-rf;7^bhpNs;RY6MFFo+GzY)_XeynOsiLD5iuI+(?pK4$GxmSPJw zhVQIVi#fF2psJm97w$Pco?>zXT7pQd_s4{m`(c(Z?^P1LT`#ZVK#OZAeKnjt-~fc; z75n!ayz2cC$#CVWkus|1mI@L|v5vAtUZs7N;*G5Etkjx#k!a?WA9txQ*b|a*2nzq6 z@@jN6ouSWd4t;Or!%KDmx^8UaRvS=|(fqo-Cn`q^!jIu&mf}?mS=RRSlT1@Pt!$`M zHL`;}PxF%ZVGG*a3}eaMtQGxLJRfIm`f`BuvgFIbK?&_0B|Mh5K~&D6f2rI1F!VWb z;1Nzz>CH7=y+70hiCN*o)L#n$DAuXu-mA2CJ!97{EE;l>%nojQL^fZKm1evU|9Dk! z(3Z}Qhi^rnz&D-J~GQp|1;L2k6K zdIvdpf>5K#o|^N`Ox}b+=DQUH+@+WlM$vY?VQttyFR;>W$U+d8HSzfjcablcH5$#Y ztp2rIs#lLITQkfXx(tfLUK5_KUhG*;?!REek}M{huf#wqs5jNMv2Lr7RzM)laq^*K zHc7nx+~X=+;C0L z>1|NM&T|$VMpoA+^NdrsUn}ePyN?0tkF0fe8Tq*I(CK4wmtO3J_SkQDCZ9NS z2Ni@l|Dce_A?%WPn=`lPf+luHarLVHnE_6%W%>V&QX-oki!R}Y73ZaeWuI*qwC200 z{DxcvsoKbWUV7%L+_1!w=Goe@$Xi(=y6RrBu|cG!$A z1GtmKj#%-9F>!KSs%HnH>y!3*&uE-U&qs+Jyc%{?mWOYxC)$a-iSs> z;}qC7{!XE*3jGC(-xbVD9Bd>tHOypPKdMTrt?tbj3Ck7pdLG(oQ$p_lE1q0tZJrY2 z!GkX6`-`$7qZ=y8jbnutED}eZBzzax8XlQ&lj^lf>OsemY7g(XAdV1Z%O8cJu*pb-u%Stol^l_*YQy4mRKco0$S!iCVrZ@AC@RD~Dkkx~c zg7=SR7IK%f=@u>zW4(Aqa_Z?*MHG`xA|k#hs0Q5L3`Hs_2xD*))>FH=vIeeG({ncY zTHw%BQb-2fG9Shdy5(9=aKEmHa8lp9gb#7C;@B@0kTDSRLJ#29zK>=KL+G;P(NYozUY>%s|MmazmjhJ4IBOnzjx_C;0wTm~h4{6^uO{?pvGzr*6|MN)31sSxuQ3KC=XUdYq<{)>Ok z8%#qY7u2` z4u%-ie}2um+2V%&V%Q_rdl!b30-W$ED^O)3wo+N!Z#X^%Zg*do4oZ zZa^fC7Z>;4ObHkcop>_Sa{5dQOL57M#=6gMX4oKCTB|aimFvCwPUsbqZ~j*ZbzgFL%N}=m@ST? zRd!5_Ju$5;Xzq<^W-0o?EfUW{-BB$JDICpz!yhJT`|z|Z$Pr&`ZdjH@0<*xf&B`z5 zmu&U_p8w{7FyuJHbzckUk{Rhbt@jTf+Web~7J@yjo#&!!m-MY#eZSnv=O~t2x8*{f zZJt^Z#T*d;>H0$$vV^<8XU+bWX>Tlj{=?1SmgT>teE#`0#3MDhGbtlAXZ&ZqX=P$_ zUt9Um^KD=ybmKF(*OBxbJQ^)$!$``)nKo6Db(+oWMPW$NcT#A`3jdFSi#N0KAZqiO z^Gh~$`_xgU{5;0}3M*f-@H#pg;YNQl`>+0?YQ?LCBk05Cjfnku#3LnQPHUNr)I=_E zCQ6V%TK28a3{k&bK7PChs*!!b@Uh5t6c}Yt^U!Hc|EcvW0Fc5@$n)9FQmsWp*OlNh zj9Hb>&Fr+=$iQcq)_={vdH}pA9k}+~37)1e<~Fad-1i~#YSapxLai{qsgMRjw6mv@ zBtTcmdO)x)-}jMg^NTUN2+B8Ko!(6OU7wxgmy`d3as?Sj?6n1cZCC{b*&Rv~-5a2B z9_wb`{43HIG-}7)vcU^pebde9`a3QV-slNZ4`8131u6ulHc+{GmLdj@D%-cJg?uU0 zKc4TExniA%7y%W1+=$6J4K<6rYtDK2#)qW!rA$ds?2tjyIj-7mj1o08^;$H{!f_U~ zV*eK)aPUOLQ2LGLGC{uUo(33CxZ2!1zPG(32P-Sf$%`^E)?${4NzUT_}vFeCFvY*3JE^@+?sOfa>?ZG)u=1Kzb)qP-aw6$z%LjJg2JBF011h7Mdq+IaR8Gr7@GN{Z zbXE;?XSF%Kxy-#_SgkiOR_GRdD5!GGRIrII2K#P0-`or4HYaIX*;cVRlmf!eQC4!| zL74NWjL^zyIVsc7=cau7RWl_)e%6nciuK6#>kku_Ja?HUi{FoNMe0`*_A3p1YMZ|zk zkO+LuM+(OOe~+o5f$0T(>l69J$YOe5Vy+n2+V0sgzqyLyEdL6~vq2a!S7-+g0II@B zzxXmZ>;LOx0mwQ?c1e3i>ID@4h?&gF;ALD zCGZ`?Q_!sSZCHz}Xp)wb&hTA1AS?rC>_AcG-7mX1-KFH)aV@B|>fO#osQ7L+uE>Pr zDWSi>DW?_Q3ZPSO?4TC=-!Pt@jq} I@%rPx0BYmuZvX%Q diff --git a/filter_inputs.php b/filter_inputs.php deleted file mode 100644 index aa3cf65..0000000 --- a/filter_inputs.php +++ /dev/null @@ -1,124 +0,0 @@ -:\/|?]+$/'; - -$targets = filter_input(INPUT_GET, 'targets', FILTER_VALIDATE_REGEXP, ['options' => ['regexp' => $targetsListRegex], "flags" => FILTER_NULL_ON_FAILURE]); -$preset = filter_input(INPUT_GET, "preset", FILTER_SANITIZE_STRING); - -if ($preset && isset($presets[$preset])) { - $options = $presets[$preset]; -} else { - $options = filter_input_array(INPUT_GET, [ -// TARGET SPECIFICATION: - '-iR' => ['filter' => FILTER_VALIDATE_INT, 'options' => ['min_range' => 0]], - '--exclude' => ['filter' => FILTER_VALIDATE_REGEXP, 'options' => ['regexp' => $hostsListRegex]], -// HOST DISCOVERY: - '-sL' => ['filter' => FILTER_VALIDATE_REGEXP, 'options' => ['regexp' => $hostsListRegex]], - '-sP' => FILTER_VALIDATE_BOOLEAN, - '-P0' => FILTER_VALIDATE_BOOLEAN, - '-Pn' => FILTER_VALIDATE_BOOLEAN, - '-PS' => ['filter' => FILTER_VALIDATE_REGEXP, 'options' => ['regexp' => $portsListRegex]], - '-PA' => ['filter' => FILTER_VALIDATE_REGEXP, 'options' => ['regexp' => $portsListRegex]], - '-PU' => ['filter' => FILTER_VALIDATE_REGEXP, 'options' => ['regexp' => $portsListRegex]], - '-PE' => FILTER_VALIDATE_BOOLEAN, - '-PP' => FILTER_VALIDATE_BOOLEAN, - '-PM' => FILTER_VALIDATE_BOOLEAN, - '-PO' => ['filter' => FILTER_VALIDATE_INT, 'options' => ['min_range' => 0, 'max_range' => 255]], - '-PR' => FILTER_VALIDATE_BOOLEAN, - '--send-ip' => FILTER_VALIDATE_BOOLEAN, - '-n' => FILTER_VALIDATE_BOOLEAN, - '-R' => FILTER_VALIDATE_BOOLEAN, - '--dns-servers' => ['filter' => FILTER_VALIDATE_REGEXP, 'options' => ['regexp' => $hostsListRegex]], -// SCAN TECHNIQUES: - '-sS' => FILTER_VALIDATE_BOOLEAN, - '-sT' => FILTER_VALIDATE_BOOLEAN, - '-sA' => FILTER_VALIDATE_BOOLEAN, - '-sW' => FILTER_VALIDATE_BOOLEAN, - '-sM' => FILTER_VALIDATE_BOOLEAN, - '-sF' => FILTER_VALIDATE_BOOLEAN, - '-sN' => FILTER_VALIDATE_BOOLEAN, - '-sX' => FILTER_VALIDATE_BOOLEAN, - '-sU' => FILTER_VALIDATE_BOOLEAN, - '--scanflags' => ['filter' => FILTER_VALIDATE_REGEXP, 'options' => ['regexp' => '/^(URG|ACK|PSH|RST|SYN|FIN|,)+|[1-9]?[0-9]|[1-2][0-9][0-9]$/']], - '-sI' => ['filter' => FILTER_VALIDATE_REGEXP, 'options' => ['regexp' => '/^[a-zA-Z\d:.-]+(:\d+)?$/']], - '-sO' => FILTER_VALIDATE_BOOLEAN, - '-b' => FILTER_VALIDATE_URL, - '--traceroute' => FILTER_VALIDATE_BOOLEAN, - '--reason' => FILTER_VALIDATE_BOOLEAN, -// PORT SPECIFICATION AND SCAN ORDER: - '-p' => ['filter' => FILTER_VALIDATE_REGEXP, 'options' => ['regexp' => $portsListRegex]], - '-F' => FILTER_VALIDATE_BOOLEAN, - '-r' => FILTER_VALIDATE_BOOLEAN, - '--top-ports' => FILTER_VALIDATE_INT, - '--port-ratio' => ['filter' => FILTER_VALIDATE_FLOAT, 'options' => ['min_range' => 0, 'max_range' => 1]], -// SERVICE/VERSION DETECTION: - '-sV' => FILTER_VALIDATE_BOOLEAN, - '--version-light' => FILTER_VALIDATE_BOOLEAN, - '--version-intensity' => ['filter' => FILTER_VALIDATE_INT, 'options' => ['min_range' => 0, 'max_range' => 9]], - '--version-all' => FILTER_VALIDATE_BOOLEAN, - '--version-trace' => FILTER_VALIDATE_BOOLEAN, -// SCRIPT SCAN: - '-sC' => FILTER_VALIDATE_BOOLEAN, - '--script' => ['filter' => FILTER_VALIDATE_REGEXP, 'options' => ['regexp' => '/^[a-z][a-z0-9,\-\.\/]*$/']], - '--script-args' => ['filter' => FILTER_VALIDATE_REGEXP, 'options' => ['regexp' => '/^([a-zA-Z][a-zA-Z0-9\-_]*=[^"]+(,[a-zA-Z][a-zA-Z0-9\-_]*=[^"]+)?)$/']], -// OS DETECTION: - '-O' => FILTER_VALIDATE_BOOLEAN, - '--osscan-limit' => FILTER_VALIDATE_BOOLEAN, - '--osscan-guess' => FILTER_VALIDATE_BOOLEAN, - '--max-os-tries' => ['filter' => FILTER_VALIDATE_INT, 'options' => ['min_range' => 0]], -// TIMING AND PERFORMANCE: - '-T' => ['filter' => FILTER_VALIDATE_INT, 'options' => ['min_range' => 0, 'max_range' => 5]], - '--min-hostgroup' => ['filter' => FILTER_VALIDATE_INT, 'options' => ['min_range' => 0]], - '--max-hostgroup' => ['filter' => FILTER_VALIDATE_INT, 'options' => ['min_range' => 0]], - '--min-parallelism' => ['filter' => FILTER_VALIDATE_INT, 'options' => ['min_range' => 0]], - '--max-parallelism' => ['filter' => FILTER_VALIDATE_INT, 'options' => ['min_range' => 0]], - '--min-rtt-timeout' => ['filter' => FILTER_VALIDATE_REGEXP, 'options' => ['regexp' => $tempoRegex]], - '--max-rtt-timeout' => ['filter' => FILTER_VALIDATE_REGEXP, 'options' => ['regexp' => $tempoRegex]], - '--initial-rtt-timeout' => ['filter' => FILTER_VALIDATE_REGEXP, 'options' => ['regexp' => $tempoRegex]], - '--max-retries' => ['filter' => FILTER_VALIDATE_INT, 'options' => ['min_range' => 0]], - '--host-timeout' => ['filter' => FILTER_VALIDATE_REGEXP, 'options' => ['regexp' => $tempoRegex]], - '--scan-delay' => ['filter' => FILTER_VALIDATE_REGEXP, 'options' => ['regexp' => $tempoRegex]], - '--max-scan-delay' => ['filter' => FILTER_VALIDATE_REGEXP, 'options' => ['regexp' => $tempoRegex]], -// FIREWALL/IDS EVASION AND SPOOFING: - '-f' => FILTER_VALIDATE_INT, - '--mtu' => FILTER_VALIDATE_INT, - '-D' => ['filter' => FILTER_VALIDATE_REGEXP, 'options' => ['regexp' => $hostsListRegex]], - '-S' => ['filter' => FILTER_VALIDATE_IP], - '-e' => ['filter' => FILTER_VALIDATE_REGEXP, 'options' => ['regexp' => '/^[a-z\d]+$/']], - '-g' => FILTER_VALIDATE_INT, - '--source-port' => FILTER_VALIDATE_INT, - '--data-length' => FILTER_VALIDATE_INT, - '--ip-options' => ['filter' => FILTER_VALIDATE_REGEXP, 'options' => ['regexp' => '/^\"(R|T|U|L [\da-zA-Z-.: ]+|S [\da-zA-Z-.: ]+|\\\\x[\da-fA-F]{1,2}(\*[\d]+)?|\\\\[0-2]?[\d]{1,2}(\*[\d]+)?)\"$/']], - '--ttl' => ['filter' => FILTER_VALIDATE_INT, 'options' => ['min_range' => 0, 'max_range' => 255]], - '--spoof-mac' => FILTER_VALIDATE_MAC, - '--badsum' => FILTER_VALIDATE_BOOLEAN, -// MISC: - // '6' => FILTER_VALIDATE_BOOLEAN, - '-A' => FILTER_VALIDATE_BOOLEAN, - '--send-eth' => FILTER_VALIDATE_BOOLEAN, - '--privileged' => FILTER_VALIDATE_BOOLEAN, - '-V' => FILTER_VALIDATE_BOOLEAN, - '--unprivileged' => FILTER_VALIDATE_BOOLEAN, - '-h' => FILTER_VALIDATE_BOOLEAN, - '--stylesheet' => ['filter' => FILTER_VALIDATE_REGEXP, 'options' => ['regexp' => $fileNameRegex]], -// lanScan - 'name' => ['filter' => FILTER_VALIDATE_REGEXP, 'options' => ['regexp' => $fileNameRegex]], - 'originalURL' => FILTER_VALIDATE_URL, - 'refreshPeriod' => ['filter' => FILTER_VALIDATE_INT, 'options' => ['min_range' => 0]], - 'sudo' => FILTER_VALIDATE_BOOLEAN, - ], false) ?: $presets["default"]; -} - -$options["--datadir"] = $DATADIR; -$options["--script-args-file"] = $SCRIPTARGS; - -/*echo "\n";*/ \ No newline at end of file diff --git a/index.php b/index.php old mode 100755 new mode 100644 index 07b9c6f..25fbff6 --- a/index.php +++ b/index.php @@ -1,784 +1,95 @@ - - - - - - - lanScan - - - - - - - - - - - - - -
- - -
- -
Erreur
-

-
- - -

Scanner un

- -
-
- - -
- -
-
Spécification des cibles
-
-
- - "> -
- -
- - "> -
-
- -
Découverte des hôtes actifs
-
-
-
- /> - -
-
- -
- - " - title="Liste de ports ex: 22,23,25,80,200-1024,60000-"> -
- -
- - " - title="Liste de ports ex: 22,23,25,80,200-1024,60000-"> -
- -
- - " - title="Liste de ports ex: 22,23,25,80,200-1024,60000-"> -
- -
- -
-
-
- /> - -
-
-
-
- /> - -
-
-
-
- /> - -
-
-
-
- -
- - " - title="[num de protocole]"> -
- -
-
-
- /> - -
-
-
-
- /> - -
-
-
- -
-
-
- /> - -
-
-
-
- /> - -
-
-
- -
- - " - title="serv1[,serv2],..."> -
-
- -
Techniques de scan de ports
-
-
-
-
-
- /> - -
-
-
-
- /> - -
-
-
-
- /> - -
-
-
- -
-
-
- /> - -
-
-
-
- /> - -
-
-
-
- /> - -
-
-
- -
-
-
- /> - -
-
-
-
- /> - -
-
-
-
- /> - -
-
-
- -
- - " - title="Mélanger simplement les drapeaux URG, ACK, PSH, RST, SYN et FIN."> -
- -
- - " - title="zombie host[:probeport]"> -
- -
- - " - title="[[:]@][:]"> -
- -
-
- /> - -
-
-
-
- -
Spécifications des ports et ordre du scan
-
-
-
- /> - -
-
- -
-
- - onchange="pInput.disabled = FCheckbox.checked" /> - -
-
- -
- - - pattern="(([TU]:)?[0-9\-]+|[a-z\-]+)(,([TU]:)?[0-9\-]+|,[a-z\-]+)*" value="" - title="Liste de ports ex: ssh,ftp,U:53,111,137,T:21-25,80,139,8080"> -
- -
-
- /> - -
-
-
- -
Détection de services et de versions
-
-
-
- /> - -
-
- -
-
- /> - -
-
- -
- - " title="2: léger, 9: tous, défaut: 7"> -
- -
-
- /> - -
-
-
- -
Scripts
-
-
-
- /> - -
-
- -
- - "> -
- -
- - " - title=""> -
- -
-
- /> - -
-
- -
-
- /> - -
-
-
- -
Détection du système d'exploitation
-
-
-
- /> - -
-
- -
-
- /> - -
-
- -
-
- /> - -
-
- -
- - "> -
-
- -
Temporisation et performances
-
-
- - -
- -
- -
-
- - " - oninput="maxHostgroupInput.min = minHostgroupInput.value"> -
-
- - " - oninput="minHostgroupInput.max = maxHostgroupInput.value"> -
-
-
- -
- -
-
- - " - oninput="maxParallelismInput.min = minParallelismInput.value"> -
-
- - " - oninput="minParallelismInput.max = maxParallelismInput.value"> -
-
-
- -
- -
-
- -
- > - -
- "> -
-
- -
- > - -
- "> -
-
- -
- > - -
- "> -
-
-
- -
- - "> -
- -
- -
- > - -
- "> -
- -
-
- -
- > - -
- "> -
-
- -
- > - -
- "> -
-
-
-
- /> - -
-
-
- -
Divers
-
-
- - -
- -
- - -
- -
- -
- "> -
secondes
-
-
- -
-
- -
- - "> -
- - -
- -

Scans enregistrés

- -
- -
- lanScan est basé sur Nmap -
- - - - - - - -\n"; - if (file_exists("$dir/nmap-services")) { - $nmap_services = file("$dir/nmap-services"); - foreach ($nmap_services as $service) { - if (0 !== strpos($service, '#')) { - [$name, $port] = explode("\t", $service); - $services[$name] = explode("/", $port); - } - } - } -} -foreach ($services as $name => [$portid, $protocol]) { - echo " \n"; -} -?> - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n"; - } - } -} -?> - - - - - - + + + + + + lanScan + + + + + + + +
+
+ +
+
+

Découvrir ou superviser un réseau

+
+ +
+
+ +
+
+ + +
+
+ + + + + + + + - - - - - - lanScan - - - - - - - - - - - - - -
-

Scans enregistrés

-
-
- -
-
- -
- -
- lanScan est basé sur Nmap -
- - - \ No newline at end of file diff --git a/rdp.php b/rdp.php deleted file mode 100644 index 5ef0e94..0000000 --- a/rdp.php +++ /dev/null @@ -1,15 +0,0 @@ - $value) { - if (substr($option, 0, 1) == '-') { - if (is_null($value)) { - http_response_code(400); - $errorMessage = "Valeur incorrecte pour le paramètre $option : " . filter_input(INPUT_GET, $option, FILTER_SANITIZE_FULL_SPECIAL_CHARS); - include_once "."; - die(); - } else if ($value) { - if ($value === true) { - $args .= " $option"; - } else { - if (substr($option, 0, 2) == '--') $args .= " $option " . escapeshellarg($value); - else $args .= " $option" . escapeshellarg($value); - } - } - } -} - - -$command = "$NMAP $args -oX - $targets"; - -if (isset($options["name"])) { - if (!file_exists($SCANSDIR)) mkdir($SCANSDIR); - $path = "$SCANSDIR/{$options["name"]}.xml"; - $command .= " | tee '$path'"; -} - -header('Content-type: text/xml'); -system($command, $retcode); - -exit(); diff --git a/script-args.ini b/script-args.ini deleted file mode 100644 index e69de29..0000000 diff --git a/scripts/README.md b/scripts/README.md deleted file mode 100644 index 10f436d..0000000 --- a/scripts/README.md +++ /dev/null @@ -1,34 +0,0 @@ -# nmap-scripts - -## http-info.nse - -Return status, title and favicon URL of a webpage - -```lua -@args http-get.path Path to get. Default /. -@usage nmap -phttp,https --script http-info.nse --script-args http-info.path=/ -@output -80/tcp open http -| http-info: -| status-line: HTTP/1.1 200 OK\x0D -| -| title: Go ahead and ScanMe! -| favicon: http://scanme.nmap.org:80/shared/images/tiny-eyeicon.png -|_ status: 200 -``` - -## smb-shares-size.nse - -Return free and total size in octets of each SMB shares - -```lua -@args See the documentation for the smbauth library. -@usage nmap -p137-139,445 --script smb-shares-size.nse --script-args-file smb-shares-size.ini -@output -Host script results: -| smb-shares-size: -| data: -| FreeSize: 38495883264 -| TotalSize: 500961574912 -|_ IPC$: NT_STATUS_ACCESS_DENIED -``` diff --git a/scripts/http-info.nse b/scripts/http-info.nse deleted file mode 100644 index 885c5cd..0000000 --- a/scripts/http-info.nse +++ /dev/null @@ -1,113 +0,0 @@ -local shortport = require "shortport" - -description = [[ -Return status, title and favicon URL of a webpage -]] - ---- --- @args http-get.path Path to get. Default /. --- --- @usage nmap -phttp,https --script http-info.nse --script-args http-info.path=/ --- --- @output --- 80/tcp open http --- | http-info: --- | status-line: HTTP/1.1 200 OK\x0D --- | --- | title: Go ahead and ScanMe! --- | favicon: http://scanme.nmap.org:80/shared/images/tiny-eyeicon.png --- |_ status: 200 ---- - -categories = {"discovery", "intrusive"} -author = "Adrien Malingrey" -license = "Same as Nmap--See https://nmap.org/book/man-legal.html" - -portrule = shortport.http - -local http = require "http" -local stdnse = require "stdnse" - -action = function(host, port) - local scheme = "" - local hostaddress = (host.name ~= '' and host.name) or host.ip - local path = "/" - local favicon_relative_uri = "/favicon.ico" - local favicon - - stdnse.debug1("port", port.service) - if (port.service == "ssl") then - scheme = "https" - else - scheme = port.service - end - stdnse.debug1("scheme", scheme) - - if(stdnse.get_script_args('http-get.path')) then - path = stdnse.get_script_args('http-info.path') - end - - stdnse.debug1("Try to download %s", path) - local answer = http.get(hostaddress, port, path) - - local output = {status=answer.status, ["status-line"]=answer["status-line"]} - - if (answer and answer.status == 200) then - stdnse.debug1("[SUCCESS] Load page %s", path) - -- Taken from http-title.nse by Diman Todorov - local title = string.match(answer.body, "<[Tt][Ii][Tt][Ll][Ee][^>]*>([^<]*)") - if (title) then - output.title = title - end - stdnse.debug1("[INFO] Try favicon %s", favicon_relative_uri) - favicon_relative_uri = parseIcon(answer.body) or favicon_relative_uri - else - stdnse.debug1("[ERROR] Can't load page %s", path) - end - - favicon = http.get(hostaddress, port, favicon_relative_uri) - - if (favicon and favicon.status == 200) then - stdnse.debug1("[SUCCESS] Load favicon %s", favicon_relative_uri) - output.favicon = favicon_relative_uri - else - stdnse.debug1("[ERROR] Can't load favicon %s", favicon_relative_uri) - end - - return output -end - ---- function taken from http_favicon.nse by Vlatko Kosturjak - -function parseIcon( body ) - local _, i, j - local rel, href, word - - -- Loop through link elements. - i = 0 - while i do - _, i = string.find(body, "<%s*[Ll][Ii][Nn][Kk]%s", i + 1) - if not i then - return nil - end - -- Loop through attributes. - j = i - while true do - local name, quote, value - _, j, name, quote, value = string.find(body, "^%s*(%w+)%s*=%s*([\"'])(.-)%2", j + 1) - if not j then - break - end - if string.lower(name) == "rel" then - rel = value - elseif string.lower(name) == "href" then - href = value - end - end - for word in string.gmatch(rel or "", "%S+") do - if string.lower(word) == "icon" then - return href - end - end - end -end diff --git a/scripts/smb-shares-size.nse b/scripts/smb-shares-size.nse deleted file mode 100644 index 324bf2a..0000000 --- a/scripts/smb-shares-size.nse +++ /dev/null @@ -1,206 +0,0 @@ -local shortport = require "shortport" - -description = [[ -Return free and total size in octets of each SMB shares -]] - ---- --- @args See the documentation for the smbauth library. --- --- @usage nmap -p137-139,445 --script smb-shares-size.nse --script-args-file smb-authentication.ini --- --- @output --- Host script results: --- | smb-shares-size: --- | data: --- | FreeSize: 38495883264 --- | TotalSize: 500961574912 --- |_ IPC$: NT_STATUS_ACCESS_DENIED ---- - -categories = {"discovery", "intrusive"} -author = "Adrien Malingrey" -license = "Same as Nmap--See https://nmap.org/book/man-legal.html" - -portrule = shortport.service({"microsoft-ds", "netbios-ssn", "smb"}) - -local stdnse = require "stdnse" -local smb = require "smb" -local smb2 = require "smb2" -local msrpc = require "msrpc" -local bin = require "bin" - -action = function(host) - local status, shares, extra - local response = stdnse.output_table() - - -- Try and do this the good way, make a MSRPC call to get the shares - stdnse.debug1("SMB: Attempting to log into the system to enumerate shares") - status, shares = msrpc.enum_shares(host) - if(status == false) then - return stdnse.format_output(false, string.format("Couldn't enumerate shares: %s", shares)) - end - - -- Get more information on each share - for i = 1, #shares, 1 do - local share = shares[i] - if (share ~= nil) then - local status, result = get_share_info(host, share) - if (status) then - response[share] = result - end - end - end - - return response -end - -TRANS2_QUERY_FS_INFORMATION = 0x0003 -SMB_QUERY_FS_SIZE_INFO = 0x0103 ----Attempts to retrieve additional information about a share. Will fail unless we have --- administrative access. --- ---@param host The host object. ---@return Status (true or false). ---@return A table of information about the share (if status is true) or an an error string (if --- status is false). -function get_share_info(host, share) - local status, smbstate, err - local hostaddress = (host.name ~= '' and host.name) or host.ip - local path = "\\\\" .. hostaddress .. "\\" .. share - - status, smbstate = smb.start(host) - status, err = smb.negotiate_protocol(smbstate, {}) - status, err = smb.start_session(smbstate, {}) - status, err = smb.tree_connect(smbstate, path, {}) - - stdnse.debug1("SMB: Getting information for share: %s", path) - - local status, err = send_transaction2(smbstate, TRANS2_QUERY_FS_INFORMATION, bin.pack(" .detail { - margin-left: 0.3em; - text-transform: capitalize; -} - -.ui.form .fields > .field { - width: 100%; -} - -.ui.ui.form .field .fields .field:not(:only-child) .ui.checkbox { - margin-top: 0; -} - -.ui.dropdown.label { - min-width: auto; -} - -.ui.dropdown.label > .remove.icon { - right: 2.3em; -} - -.toast-container .ui.header { - text-transform: capitalize; -} - -.share-size { - --free-ratio: calc(var(--free) / var(--total)); - --used-percent: calc(100% - 100% * var(--free-ratio)); - --color: hsl(calc(120 * var(--free-ratio)) 100% 50%); - background-image: linear-gradient( - to right, - var(--color) var(--used-percent), - transparent var(--used-percent), - transparent - ) !important; - text-align: center !important; -} - -.compact { - position: static !important; - overflow-x: auto; -} - -.compact > input { - min-width: 10em; - padding-right: 0.1em; -} - -.compact .ui.buttons .mini.button { - padding: 0.5em; - position: static; -} - -.compact .ui.dropdown.button:not(.pointing):not(.floating).active { - border-radius: 0; -} - -.compact .ui.dropdown .menu { - left: 0; - right: 0; - margin: -.7em .7em; - min-width: auto; -} \ No newline at end of file diff --git a/templates/cards.xsl b/templates/cards.xsl deleted file mode 100755 index 4781b62..0000000 --- a/templates/cards.xsl +++ /dev/null @@ -1,186 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-

-
- -
- -
-
- -
- lanScan est basé sur Nmap -
- - - - - - - - -
- - - - - - - - - - - - - - - -
- - ui card - - green - red - - -
-
- - -
- - ui empty circular label - - green - red - - -
-
-
-
- - - - - - - - - -
-
- -
- . - -
-
-
- -
-
-
-
- - - - - - - -
-
- -
-
- -
\ No newline at end of file diff --git a/templates/compact.xsl b/templates/compact.xsl deleted file mode 100755 index 6d6d94b..0000000 --- a/templates/compact.xsl +++ /dev/null @@ -1,200 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- -
-
- -
-
-
- -
- lanScan est basé sur Nmap -
- - - - - - - - -
- - - - - - - - - - - - - - - -
-
- - ui fluid mini compact input - - action buttons - - - success - error - - - - - - - - - - -
-
-
- - - - - - - - - - - green - yellow - red - - - - - - ui mini button - - red - orange - green - green - orange - red - - dropdown share-size - - - - rdp.php?v= - - &p= - - - - - / - - - - - : - : - - - - - - - - - - - - - --free: - - ; --total: - - - - - - - - - - - - - - - -
\ No newline at end of file diff --git a/templates/hostScan.xsl b/templates/hostScan.xsl deleted file mode 100755 index 5a0d5b9..0000000 --- a/templates/hostScan.xsl +++ /dev/null @@ -1,203 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- lanScan est basé sur Nmap -
- - - - - - - - -
- - - - - - - - - - - - - - - - -

- - - -
-
- - - -
-

- - - - - - - - - - - - - - - - - - - - - -
EtatProtocolePortServiceProduitVersionInfos
-
- - - - - - - - - - - - - - negative - warning - positive - positive - warning - negative - - - -
- - ui mini circular label - - green - orange - red - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - -
\ No newline at end of file diff --git a/templates/lanScan.xsl b/templates/lanScan.xsl deleted file mode 100755 index 5a2ad8f..0000000 --- a/templates/lanScan.xsl +++ /dev/null @@ -1,198 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- - - - - - - - - - - - - - - -
EtatAdresse IPNomFabricantServicesScanner les services
-
- -
- lanScan est basé sur Nmap -
- - - - - - - - -
- - - - - - - - - - - - - - - - - - - positive - negative - - - - - -
- - ui mini circular label - - green - red - - - -
-
-
down
-
- - - - - -
- -
.
-
- - - - - - - - - - - - - - - - - -
- -
\ No newline at end of file diff --git a/templates/lib/head.xsl b/templates/lib/head.xsl deleted file mode 100644 index f7f8a37..0000000 --- a/templates/lib/head.xsl +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - - - - - - - - - - - - ;URL= - - /scan.php?targets= - - & - - - - - originalURL= - - &refreshPeriod= - - &sudo= - - - - - - <xsl:text>lanScan - </xsl:text> - <xsl:value-of select="$targets"/> - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/templates/lib/nav.xsl b/templates/lib/nav.xsl deleted file mode 100644 index f35a8dc..0000000 --- a/templates/lib/nav.xsl +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/templates/lib/parseCommand.xsl b/templates/lib/parseCommand.xsl deleted file mode 100644 index f2133c7..0000000 --- a/templates/lib/parseCommand.xsl +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - = - - - on - - & - - - - - - - on - - - - - - - - \ No newline at end of file diff --git a/templates/lib/service.xsl b/templates/lib/service.xsl deleted file mode 100644 index a4cec9f..0000000 --- a/templates/lib/service.xsl +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - - - - - - - - - - - - red - orange - green - green - orange - red - - - mini dropdown button share-size - small - - - - - - - - --free: - - ; --total: - - - - - - - - - - https - - - - - - :// - - : - - - - - - rdp.php?v= - - &p= - - - - - / - - - - - : - : - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/templates/lib/toast.xsl b/templates/lib/toast.xsl deleted file mode 100644 index 5adfb99..0000000 --- a/templates/lib/toast.xsl +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - \ No newline at end of file