1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8233],{58064:function(e,t,n){"use strict";Object.defineProperty(t,"$",{enumerable:!0,get:function(){return a}});let s=n(74590);function a(e){let{createServerReference:t}=n(6671);return t(e,s.callServer)}},5738:function(e,t,n){"use strict";n.d(t,{Z:function(){return i}});var s=n(57437),a=n(2265),o=n(4888),r=n.n(o),l=n(9450);function i(e){let{children:t,className:n,onClick:o,customStyle:i,bg:c,bgHover:u,bgActive:d,disabledOpacity:p=.8,textColor:m,textSize:g,disabled:h,loading:v=!1}=e,f=(0,a.useRef)(null),_=()=>{h||(f.current.style.transform="scale(.98)")},x=()=>{h||(f.current.style.transform="scale(1)")};return(0,s.jsxs)("button",{ref:f,onMouseDown:_,onMouseUp:x,onTouchStart:_,onTouchEnd:x,className:"".concat(r().tofButton," ").concat(v?r().loading:""," ").concat(n),onClick:h?()=>{}:o,disabled:h,style:{...i,padding:"15px 20px","--bg":c,"--bgHover":u,"--bgActive":d,"--text-color":m,"--disabledOpacity":p,fontSize:g?"".concat(g,"px"):"inherit"},children:[v&&(0,s.jsx)("span",{className:r().loadingSpinner,children:(0,s.jsx)(l.Z,{color:m,width:17,height:17,padding:2.5,borderWidth:1.5})}),(0,s.jsx)("span",{className:r().buttonContent,children:t})]})}},2667:function(e,t,n){"use strict";n.d(t,{Z:function(){return i}});var s=n(57437),a=n(2265),o=n(64899),r=n(71823),l=n(9450);function i(e){let t=(0,a.useRef)(null),[n,i]=(0,a.useState)((0,s.jsx)(o.TH,{width:22,height:22}));return(0,a.useEffect)(()=>{let n=async e=>{let t=e.match(/^(?:https?:\/\/)?(?:www\.)?([a-zA-Z0-9.-]+)/);if(t){let e=t[1],n="https://t3.gstatic.com/faviconV2?client=SOCIAL&url=http://".concat(e,"&size=32");try{await new Promise((e,t)=>{let s=new Image;s.src=n,s.onload=()=>{s.width>16&&s.height>16?e():t()},s.onerror=()=>{t()}}),i((0,s.jsx)("img",{src:n,width:22,height:22}))}catch(e){i((0,s.jsx)(o.TH,{width:22,height:22}))}}};(null==e?void 0:e.value)?(clearTimeout(t.current),i((0,s.jsx)(l.Z,{width:20,height:20,padding:4})),t.current=setTimeout(()=>{n(null==e?void 0:e.value)},500)):i((0,s.jsx)(o.TH,{width:22,height:22}))},[null==e?void 0:e.value]),(0,s.jsx)(r.Z,{...e,drawable:n})}},62961:function(e,t,n){"use strict";n.d(t,{UserProvider:function(){return l},a:function(){return i}});var s=n(57437),a=n(99426),o=n(2265);let r=(0,o.createContext)(),l=e=>{let{children:t,headerData:n,userData:l}=e,[i,c]=(0,o.useState)(!1),u=(0,o.useRef)(!1),[d,p]=(0,o.useState)(!1),[m,g]=(0,o.useState)(!1),h=Object.fromEntries(null!=n?n:[]),[v,f]=(0,o.useState)(l||{isLoggedIn:!1,userData:{}}),_=async()=>{if(v.isLoggedIn&&!u.current&&!i){u.current=!0;let t={isLoggedIn:!1,userData:{}},n=await (0,a.WY)("/user");if((null==n?void 0:n.status)=="success"){var e;t.isLoggedIn=!0,t.userData=null==n?void 0:null===(e=n.data)||void 0===e?void 0:e.userInfo}g(!0),f(t),c(!0)}},x=async()=>{d||(p(!0),"success"==(await (0,a.WY)("/user/logout",{method:"POST",body:JSON.stringify({action:"current"})})).status&&f({isLoggedIn:!1,userData:{}}),p(!1))};return(0,s.jsx)(r.Provider,{value:{user:v,setUser:f,header:h,loadedUserData:m,fetchData:_,loggingOut:d,logOutUser:x},children:t})},i=()=>(0,o.useContext)(r)},92184:function(e,t,n){"use strict";function s(e){return e.slice(0,1).toUpperCase()+e.substring(1,e.length).toLowerCase()}function a(e){return e.split(" ").map(e=>s(e)).join(" ")}function o(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],s=e.length;if(s<t)return e;let a="".concat(e.slice(0,t/2),"...").concat(e.slice(-t/2)),o=e.split(" ");if(o.length<=1)return a;if(n)return"".concat(e.slice(0,t),"...");for(let e=o.length-2;e>=0&&!((s-=o.splice(e,1)[0].length)<t);e--);let r=o.slice(0,o.length-1);return r.length>0?"".concat(r.join(" ")," ... ").concat(o[o.length-1]):a}function r(e){return(e=Number(e)||0)>1e15?(e/1e15).toFixed(1)+"Q":e>1e12?(e/1e12).toFixed(1)+"T":e>1e9?(e/1e9).toFixed(1)+"B":e>1e6?(e/1e6).toFixed(1)+"M":e>1e3?(e/1e3).toFixed(1)+"K":e}function l(e){return(e=Number(e)||0)>=1e15?(e/1e15).toFixed(2)+" PB":e>=1e12?(e/1e12).toFixed(2)+" TB":e>=1e9?(e/1e9).toFixed(2)+" GB":e>=1e6?(e/1e6).toFixed(2)+" MB":e>=1e3?(e/1e3).toFixed(2)+" KB":e+" B"}function i(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;return Number((Number(e)||0).toFixed(t))}function c(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"en-US",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:2,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;
1return(Number(e)||0).toLocaleString(t,{maximumFractionDigits:n,minimumFractionDigits:s})}function u(e){let t=e=>e.toString(16).padStart(2,"0");return"#".concat(t(e[0])).concat(t(e[1])).concat(t(e[2]))}n.d(t,{F9:function(){return c},II:function(){return r},Z3:function(){return a},aS:function(){return o},sS:function(){return l},vq:function(){return u},xA:function(){return i},zf:function(){return s}}),n(75683)},18233:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return I}});var s=n(57437),a=n(2667),o=n(90447),r=n.n(o),l=n(2265),i=n(48235),c=n(5738),u=n(64337),d=n(16356),p=n(92184),m=n(26393),g=n(62961),h=n(99426),v=n(71823),f=n(69824),_=n(33188),x=n(85097),j=n(54008),b=n(2854),w=n(72655);let y={web:[80,443,8080,8443,8e3,8888,3e3,3001,5e3],email:[25,110,143,465,587,993,995,2525],database:[1433,1521,3306,5432,6379,27017,9200,11211,5e4],ftp_sftp:[20,21,22,69,989,990],remote_access:[22,23,3389,5900,5938,1494,5901,2222,992],development:[3e3,3001,5e3,8e3,8081,9e3,9001,4e3,7e3],dns:[53,5353,853],gaming:[25565,27015,27016,3074,5e3,7777,9999,10011,64738],p2p:[6881,6969,51413,42069,16881,44444],vpn_proxy:[1194,1701,1723,3128,8080,1080,500,4500,2222],iot:[1883,8883,5683,49152,1e4,47808,49153],messaging:[5222,5269,5190,1863,1935],security:[1812,1813,4433,6514],industrial:[502,102,4840,34962,34963],telecom:[5060,5061,1720,2944],misc:[19,42,135,139,161,162,445,5001,9191,4444,6667]},N=e=>{let t=Object.keys(y).find(t=>{var n;return null===(n=y[t])||void 0===n?void 0:n.includes(e)});return t?(0,p.Z3)(t.replace("_"," ")):"Custom"},S=async(e,t)=>{try{let n=window.location.origin,s=await fetch("".concat(n,"/api/tools/networking/port?host=").concat(e,"&port=").concat(t),{cache:"no-store"});return await s.json()}catch(e){return{success:!1,message:e.message}}},C=e=>{let{ip:t,ports:n,ipList:a,domainInfo:o,refreshTrigger:i}=e,[c,u]=(0,l.useState)(!1),[g,h]=(0,l.useState)([]),[v,b]=(0,l.useState)(null),[y,C]=(0,l.useState)(!1),I=a.length>1,T=async()=>{u(!0),b(null),h(n.map(e=>({port:e,loading:!0}))),n.forEach(async e=>{try{var n;let s=await S(t,e),a=null==s?void 0:null===(n=s.data)||void 0===n?void 0:n[0],o=(null==a?void 0:a.status)==="open"?"open":(null==a?void 0:a.status)==="timeout"?"timeout":"closed";h(t=>t.map(t=>t.port===e?{...t,loading:!1,status:o}:t))}catch(t){b(t.message||"Something went wrong"),h(t=>t.map(t=>t.port===e?{...t,loading:!1,status:"error"}:t))}}),u(!1)},B=e=>{C(!1);let n=g.map(e=>({ip:t,port:e.port,status:e.status}));if("csv"===e){let e=new Blob([[["IP","Port","Status"],...n.map(e=>{let{port:n,status:s}=e;return[t,n,s]})].map(e=>e.join(",")).join("\n")],{type:"text/csv;charset=utf-8;"}),s=URL.createObjectURL(e),a=document.createElement("a");a.href=s,a.download="port_scan_".concat(o.value,".csv"),a.click(),URL.revokeObjectURL(s)}else if("json"===e){let e=new Blob([JSON.stringify(n)],{type:"application/json;charset=utf-8;"}),t=URL.createObjectURL(e),s=document.createElement("a");s.href=t,s.download="port_scan_".concat(o.value,".json"),s.click(),URL.revokeObjectURL(t)}};(0,l.useEffect)(()=>{let e=e=>{y&&!e.target.closest(".".concat(r().downloadContext))&&C(!1)};return document.addEventListener("click",e),()=>{document.removeEventListener("click",e)}},[y]),(0,l.useEffect)(()=>{h([]),b(null),u(!1)},[t]),(0,l.useEffect)(()=>{h([]),b(null),u(!1)},[n]);let[k,E]=(0,l.useState)(!1);(0,l.useEffect)(()=>E(!0),[]),(0,l.useEffect)(()=>{!I&&k&&T()},[I,t,i,k]);let P=g.filter(e=>"open"===e.status).length,L=g.filter(e=>!(null==e?void 0:e.loading)).length;return(0,s.jsxs)("div",{children:[I&&(0,s.jsxs)("div",{className:r().header,children:[(0,s.jsxs)("div",{className:r().headerTitleContainer,children:[(0,s.jsx)(j.j7b,{style:{minWidth:18},size:18}),(0,s.jsx)("strong",{className:r().headerTitle,children:t}),(0,s.jsx)("div",{className:r().copyButtonWrapper,children:(0,s.jsx)(_.Z,{copyIcon:(0,s.jsx)(x.mcF,{size:15}),text:t})})]}),(0,s.jsxs)("button",{disabled:c,onClick:T,className:r().checkButton,children:[(0,s.jsx)(d.vU7,{size:16})," ",c?"Scanning...":"Check"]})]}),g.length>0&&(0,s.jsxs)("div",{className:"".concat(r().stats," ").concat(I?r().withHeader:""),children:[(0,s.jsxs)("div",{className:r().statsInfo,children:[(0,s.jsxs)("div",{className:r().statsTitle,style:{color:P>0?"green":"var(--error)"},children:[P," open ports found"]}
1),(0,s.jsxs)("div",{className:r().statsDes,children:["Ports scanned: ",L]})]}),(0,s.jsxs)("div",{className:r().optionButtons,children:[(0,s.jsx)("div",{className:r().optionButton,onClick:()=>C(e=>!e),children:(0,s.jsx)(f.Cb8,{size:18})}),(0,s.jsxs)("div",{className:"".concat(r().downloadContext," hide-transition ").concat(y?"":"hide"),children:[(0,s.jsxs)("div",{className:r().downloadContextItem,onClick:()=>B("csv"),children:[(0,s.jsx)(w.kOK,{})," Export to CSV"]}),(0,s.jsxs)("div",{className:r().downloadContextItem,onClick:()=>B("json"),children:[(0,s.jsx)(w.Bb$,{})," Export to JSON"]})]})]})]}),(0,s.jsx)("div",{className:"".concat(r().result," ").concat(1==a.length?"mt-4":""," mb-6 ").concat(I&&g.length>0?r().withHeader:""),children:g.map((e,t)=>{let{port:n,status:a,loading:o}=e;return(0,s.jsxs)("div",{className:"".concat(r().resultItem," ").concat(o?r().loading:"open"===a?r().open:"closed"===a?r().closed:r().timeout),children:[(0,s.jsxs)("div",{className:r().port,children:[(0,s.jsx)("span",{className:r().portNumber,children:n}),(0,s.jsx)("span",{className:r().portType,children:N(n)})]}),(0,s.jsx)("span",{className:r().status,children:o?(0,s.jsx)(m.Z,{width:60}):(0,p.zf)(a||"error")})]},t)})})]})};function I(){let[e,t]=(0,l.useState)(""),[n,o]=(0,l.useState)(""),[p,m]=(0,l.useState)(""),[f,w]=(0,l.useState)(""),[N,S]=(0,l.useState)("web"),[I,T]=(0,l.useState)({}),B=(0,l.useRef)(null),[k,E]=(0,l.useState)(!1),[P,L]=(0,l.useState)({show:!1,message:"Something went wrong!"}),[D,Z]=(0,l.useState)([]),[z,A]=(0,l.useState)([]),[R,F]=(0,l.useState)({}),[U,O]=(0,l.useState)(0),{header:H}=(0,g.a)(),W=async()=>{let t=null==n?void 0:n.split(",").map(e=>parseInt(e.trim())).filter(Boolean);if((t=[...new Set(t)]).length>100){L({show:!0,message:"You can scan a maximum of 100 ports."});return}if("range"==N){if(t=[],!p||!f){L({show:!0,message:"Please enter start and end port."});return}let e=f-p;if(e<0){L({show:!0,message:"End port must be greater than start port."});return}if(e>100){L({show:!0,message:"Please enter a range less than 100."});return}for(let e=p;e<=f;e++)t.push(e)}if(L({show:!1,message:""}),0==t.length){L({show:!0,message:"Please enter at least one port."});return}E(!0);try{let n=null==I?void 0:I.type,l=[];if("domain"===n){var s,a,o,r;let t=await (0,b.Y)(e,"A","8.8.8.8"),n=await (0,b.Y)(e,"AAAA","8.8.8.8"),i=[],c=[];if((null==t?void 0:t.error)||!((null==t?void 0:null===(s=t.answers)||void 0===s?void 0:s.length)>1)||(i=null==t?void 0:null===(o=t.answers)||void 0===o?void 0:o.slice(1).map(e=>e[4]).filter(e=>/^[0-9.]+$/.test(e))),(null==n?void 0:n.error)||!((null==n?void 0:null===(a=n.answers)||void 0===a?void 0:a.length)>1)||(c=null==n?void 0:null===(r=n.answers)||void 0===r?void 0:r.slice(1).map(e=>e[4]).filter(e=>/^[a-zA-Z0-9:]+$/.test(e))),t.error&&n.error)throw Error(t.message||n.message||"Something went wrong");l=[...i,...c]}else l=[e];let i={...I,ip:l};T(i),Z(l),A(t),F(I)}catch(e){L({show:!0,message:e.message})}finally{E(!1)}},M=()=>{L({show:!1,message:""}),E(!1),o(""),t(""),Z([]),A([]),O(0),F({})},Y=e=>e=e.split(",").map(e=>e.trim()).join(", ");return(0,l.useEffect)(()=>{if("range"==N);else if(y[N]){var e;o(Y(null===(e=y[N])||void 0===e?void 0:e.join(",")))}L({show:!1,message:""})},[N]),(0,l.useEffect)(()=>{if(!f||!p)return;let e=f-p;if(e<0){L({show:!0,message:"End port must be greater than start port."});return}if(e>100){L({show:!0,message:"Range must be less than 100."});return}L({show:!1,message:""})},[p,f]),(0,l.useEffect)(()=>{var e;let n=null!==(e=H["cf-connecting-ip"]||H["x-forwarded-for"])&&void 0!==e?e:"::1",s=(0,h.Ap)(n);"::1"!==s&&t(s)},[]),(0,s.jsx)("div",{className:r().outer,children:(0,s.jsxs)("div",{className:r().input,children:[(0,s.jsxs)("div",{className:r().inputBox,children:[(0,s.jsx)(a.Z,{disabled:k,value:e,placeholder:"Enter IP or domain",onChange:e=>{var n;let s=null===(n=e.target.value)||void 0===n?void 0:n.toLowerCase(),a=s;try{a=new URL(s).hostname}catch(e){a=s.split(/[/?#]/)[0]}let o=/^[0-9.]+$/.test(a),r=/^[a-zA-Z0-9:]+$/.test(a);T({type:o||r?"ip":"domain",family:o?4:r?6:null,value:a,ip:o||r?[a]:[]}),t(s)}}),(0,s.jsx)(u.Z,{value:N,disabled:k,options:[{name:"Range",value:"range"},{name:"Web",value:"web"},{name:"Email",value:"email"},{name:"Database",value:"database"},{name:"FTP & SFTP",value:"ftp_sftp"},{name:"Remote Access",value:"remote_access"},{name:"Development",value:"development"},{name:"DNS",value:"dns"},{name:"Gaming",value:"gaming"},{name:"P2P",value:"p2p"},{name:"VPN & Proxy",value:"vpn_proxy"},{name:"IoT",value:"iot"},{name:"Messaging",value:"messaging"},{name:"Security",value:"security"},{name:"Industrial",value:"industrial"},{name:"Telecom",value:"telecom"},{name:"Miscellaneous",value:"misc"}],allowSearch:!1,setValue:e=>S(e),placeholder:"Ports"})]}),(0,s.jsxs)("div",{children:["range"==N&&(0,s.jsxs)("div",{className:r().rangeInput,children:[(0,s.jsx)(v.Z,{disabled:k,value:p,type:"number",onChange:e=>m(e.target.value?Number(e.target.value):""),placeholder:"Start Port"}),(0,s.jsx)(v.Z,{disabled:k,value:f,type:"number",onChange:e=>w(e.target.value?Number(e.target.value):""),placeholder:"End Port"})]}),"range"!=N&&(0,s.jsx)(i.Z,{disabled:k||"range"==N,value:n,placeholder:"Ports to check",minHeight:"200px",resize:"vertical",onChange:e=>{let t=e.target.value;o(t=t.replace(/[^0-9\, ]/g,"")),clearTimeout(B.current),B.current=setTimeout(()=>{o(Y(t))},1e3)}})]}),(null==P?void 0:P.show)&&(0,s.jsxs)("div",{className:r().error,children:[(0,s.jsx)(d.I5p,{style:{verticalAlign:"middle"}}),(0,s.jsx)("span",{className:"ml-1",children:null==P?void 0:P.message})]}),(0,s.jsxs)("div",{className:r().buttons,children:[(0,s.jsxs)(c.Z,{className:"rounded-1",loading:k,disabled:k,onClick:()=>{W(),O(e=>e+1)},children:[(0,s.jsx)(d.vU7,{size:18}),(0,s.jsx)("span",{className:"ml-1",children:"Check"})]}),(0,s.jsx)(c.Z,{disabled:k,className:"rounded-1",bg:"var(--base-12)",bgHover:"var(--base-12)",bgActive:"var(--base-11)",onClick:()=>M(),children:"Clear"})]}),(0,s.jsxs)("div",{className:r().resultContainer,children:[D.length>1&&(0,s.jsxs)("div",{className:"".concat(r().resultInfo," mb-4"),children:[(0,s.jsxs)("div",{className:r().resultInfoTitle,children:[null==R?void 0:R.value," resolves to ",(0,s.jsxs)("b",{children:[D.length," ",1===D.length?"address":"addresses"]})]}),(0,s.jsx)("div",{className:r().resultInfoDes,children:"You can scan each IP address individually to check port status."})]}),1==D.length&&(null==I?void 0:I.type)==="domain"&&(0,s.jsx)("div",{className:"".concat(r().resultInfo," mb-4"),children:(0,s.jsxs)("div",{className:r().resultInfoDes,children:[(0,s.jsx)(j.j7b,{style:{marginRight:"10px",verticalAlign:"middle"}}),null==R?void 0:R.value," resolves to ",(0,s.jsx)("b",{children:D[0]}),"\xa0\xa0",(0,s.jsx)(_.Z,{copyIcon:(0,s.jsx)(x.mcF,{size:15}),customStyle:{backgroundColor:"var(--result-info-bg)",display:"inline-block",position:"relative",top:"2px"},text:D[0]})]})}),D.map((e,t)=>(0,s.jsx)(C,{ip:e,ipList:D,ports:z,refreshTrigger:U,domainInfo:R},t))]})]})})}},2854:function(e,t,n){"use strict";n.d(t,{Y:function(){return s}}),n(74590);var s=(0,n(58064).$)("164511ae4f18727c48245502b683164dbc2c4abe")},4888:function(e){e.exports={tofButton:"button_tofButton__C8Kvj",loading:"button_loading__DgIvv",buttonContent:"button_buttonContent__GTb_T",loadingSpinner:"button_loadingSpinner__y9SDB"}},90447:function(e){e.exports={outer:"page_outer__G4rMt",input:"page_input__VCuM0",buttons:"page_buttons__aX1ja",inputBox:"page_inputBox__9q3yz",error:"page_error__yeyib",rangeInput:"page_rangeInput__W3WX_",stats:"page_stats__9llEK",withHeader:"page_withHeader__hBOZc",statsTitle:"page_statsTitle__jHjnw",statsDes:"page_statsDes__uVBdm",optionButtons:"page_optionButtons__oPz7q",downloadContext:"page_downloadContext__z6jDD",downloadContextItem:"page_downloadContextItem__gRe6o",o
1ptionButton:"page_optionButton__eKmyC",resultInfo:"page_resultInfo__0yjjm",resultInfoTitle:"page_resultInfoTitle__s09Gu",resultInfoDes:"page_resultInfoDes__UQsYd",header:"page_header__CzbS0",headerTitleContainer:"page_headerTitleContainer__wbQn1",headerTitle:"page_headerTitle__2PD8o",copyButtonWrapper:"page_copyButtonWrapper__OetcL",show:"page_show___Srue",result:"page_result__nNzLc",checkButton:"page_checkButton__V9noo",resultItem:"page_resultItem__PiNoJ",loading:"page_loading__EP3Aa",open:"page_open__Eaks_",closed:"page_closed__KQrdj",timeout:"page_timeout__Wecq2",port:"page_port__DCfPC",portNumber:"page_portNumber__yA3Lq",portType:"page_portType__rAegX",status:"page_status__5d5oU"}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.