1import{u as K,q as R,w as k,k as b,o as n,a as e,N as T,I as N,O as H,t as s,c as i,f as u,E as p,e as _,F as g,p as w,d as D,b as q,R as z,r as v}from"./vendor-DcWJ6w6z.js";import{b as V}from"./index-DmBseAOX.js";import{T as j}from"./ToolShell-BWq8TznE.js";import{_ as E}from"./ToolLearn-DQ3uUJTO.js";import{_ as O}from"./MonitorCta-D1cJhfjF.js";import"./useSeo-CYLr5JmJ.js";import"./FooterSection-CYGrcjBn.js";import"./_plugin-vue_export-helper-DlAUqK2U.js";import"./ToolIcon-CqHoy1aX.js";const W={class:"flex items-center gap-3"},B=["disabled"],G={class:"text-[12px]",style:{color:"#8a9bbe"}},L={key:0,class:"text-sm",style:{color:"#f87171"}},U={key:1,class:"space-y-3"},$={class:"rounded-2xl p-5",style:{background:"#1a1a2e",border:"1px solid #2a3a5c"}},J={class:"flex items-center gap-3 mb-3"},Q={class:"grid sm:grid-cols-2 gap-x-6 gap-y-1.5 text-[12.5px]"},X={class:"flex gap-2"},Y={class:"break-all",style:{color:"#e2e8f0"}},Z={class:"flex gap-2"},ee={class:"flex gap-2"},se={class:"break-all",style:{color:"#9fb3d9"}},ae={class:"flex gap-2"},te={style:{color:"#9fb3d9"}},oe={class:"flex gap-2 sm:col-span-2"},le={style:{color:"#e2e8f0"}},re={class:"flex gap-2 sm:col-span-2"},ne={class:"font-mono break-all",style:{color:"#9fb3d9"}},ie={class:"grid grid-cols-3 gap-3"},de={class:"text-[11px] uppercase tracking-wide mb-1",style:{color:"#8a95b8"}},ce={key:0,class:"text-[11px] font-mono mt-0.5 break-all",style:{color:"#8899bb"}},ue={key:0,class:"text-[12.5px]",style:{color:"#8899bb"}},pe={class:"rounded-2xl p-5",style:{background:"#1a1a2e",border:"1px solid #2a3a5c"}},me={class:"text-sm font-semibold mb-3",style:{color:"#f0f4ff"}},he={class:"font-normal",style:{color:"#8a9bbe"}},fe={key:0,class:"text-[12.5px]",style:{color:"#f87171"}},ye={key:1,class:"space-y-2"},be={class:"w-5 h-5 rounded-full flex items-center justify-center text-[11px] font-bold shrink-0",style:{background:"#2563eb",color:"#fff"}},_e={class:"min-w-0 flex-1"},ve={class:"flex flex-wrap gap-x-2",style:{color:"#e2e8f0"}},xe={class:"font-mono break-all"},ke={key:0,class:"font-mono",style:{color:"#8899bb"}},ge={class:"font-mono break-all"},we={class:"flex flex-wrap gap-x-3 text-[11px]",style:{color:"#8899bb"}},Re={key:0},De={key:1},Me={key:1,class:"rounded-2xl p-5 space-y-2",style:{background:"#1a1a2e",border:"1px solid #2a3a5c"}},Se={class:"text-sm font-semibold mb-1",style:{color:"#f0f4ff"}},Ie={class:"font-mono text-[11px] mr-2",style:{color:"#8899bb"}},Pe={style:{color:"#cdd6f4"}},Ae={key:2,class:"text-[12.5px]",style:{color:"#34d399"}},Fe=`Received: from mail.example.com ([203.0.113.7]) by mx.yourdomain.ua ... 2Authentication-Results: ... 3From: "Name" <[email protected]> 4Subject: ...`,Oe={__name:"HeaderAnalyzerView",setup(Ce){const{locale:M}=K(),t=(a,o)=>M.value==="uk"?a:o,m=v(""),f=v(!1),y=v(""),r=v(null);async function S(){var a,o,l,d,h;if(m.value.trim()){f.value=!0,y.value="",r.value=null;try{const{data:c}=await V.post("/api/tools/headers",{headers:m.value.slice(0,65536)});r.value=c}catch(c){y.value=((l=(o=(a=c==null?void 0:c.response)==null?void 0:a.data)==null?void 0:o.detail)==null?void 0:l.message)||((h=(d=c==null?void 0:c.response)==null?void 0:d.data)==null?void 0:h.message)||t("Ðе вдалоÑÑ ÑозÑбÑаÑи заголовки.","Could not parse the headers.")}finally{f.value=!1}}}const x=b(()=>{var o;const a=((o=r.value)==null?void 0:o.risk_score)??0;return a>=60?{color:"#f87171",label:t("ÐиÑокий Ñизик пÑдмÑни","High spoofing risk")}:a>=25?{color:"#fbbf24",label:t("РпÑдозÑÑÐ»Ñ Ð¾Ð·Ð½Ð°ÐºÐ¸","Suspicious signs")}:{color:"#34d399",label:t("Ðаголовки виглÑдаÑÑÑ Ð½Ð¾ÑмалÑно","Headers look normal")}}),I=b(()=>{var o,l,d;const a=(o=r.value)==null?void 0:o.summary;return!(a!=null&&a.reply_to)||!(a!=null&&a.from)?!1:((l=a.reply_to.split("@")[1])==null?void 0:l.toLowerCase())!==((d=a.from.split("@")[1])==null?void 0:d.toLowerCase())}),P=b(()=>{var l,d,h;const a=((l=r.value)==null?void 0:l.auth)||{},o=c=>c==="pass"?"#34d399":c?"#f87171":"#8899bb";return[{k:"SPF",value:a.spf||t("немаÑ","none"),color:o(a.spf),domain:a.spf_domain},{k:"DKIM",value:a.dkim||t("немаÑ","none"),color:o(a.dkim),domain:a.dkim_domain},{k:"DMARC",value:a.dmarc||t("немаÑ","none"),color:o(a.dmarc),domain:(h=(d=r.value)==null?void 0:d.summary)==null?void 0:h.from_domain}]});function A(a){return{critical:"#f87171",high:"#f87171",medium:"#fbbf24",low:"#8899bb"}[a]||"#8899bb"}function F(a){return a<60?a+" s":a<3600?Math.round(a/60)+" min":(a/3600).toFixed(1)+" h"}const C=b(()=>[{q:t("Ðе взÑÑи заголовки лиÑÑа?","Where do I get the headers?"),a:t("Gmail: Ð¼ÐµÐ½Ñ Ð»Ð¸ÑÑа â «ÐоказаÑи оÑигÑнал». Outlook: Файл â ÐлаÑÑивоÑÑÑ â
4 «Ðаголовки ÐнÑеÑнеÑÑ». Apple Mail: ÐиглÑд â ÐовÑÐ´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ â УÑÑ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ¸.","Gmail: message menu â âShow originalâ. Outlook: File â Properties â âInternet headersâ. Apple Mail: View â Message â All Headers.")},{q:t("Чи збеÑÑгаÑÑе ви вÑÑÐ°Ð²Ð»ÐµÐ½Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ¸?","Do you store pasted headers?"),a:t("ÐÑ. Ðаголовки аналÑзÑÑÑÑÑÑ Ð² памâÑÑÑ Ð¹ вÑдповÑÐ´Ñ Ð¿Ð¾Ð²ÐµÑÑаÑÑÑÑÑ Ð¾Ð´ÑазÑ; в Ð±Ð°Ð·Ñ Ð½ÑÑого не пиÑеÑÑÑÑ.","No. Headers are analysed in memory and the answer is returned immediately; nothing is written to a database.")},{q:t("Ð§Ð¾Ð¼Ñ dmarc=fail, Ñ
оÑа лиÑÑ ÑпÑавжнÑй?","Why dmarc=fail on a genuine message?"),a:t("ÐайÑаÑÑÑÑе â пеÑеÑÐ¸Ð»Ð°Ð½Ð½Ñ ÑеÑез ÑпиÑок ÑозÑилки або ÑоÑваÑд, Ñкий Ð»Ð°Ð¼Ð°Ñ DKIM Ñ Ð·Ð¼ÑнÑÑ ÑлÑÑ
SPF. Ðбо домен вÑдпÑавника не налаÑÑÑвав DKIM. ÐивÑÑÑÑÑ, Ñи збÑгаÑÑÑÑÑ Ð´Ð¾Ð¼ÐµÐ½ Ñ From з доменами в SPF/DKIM.","Usually a mailing list or a forward that breaks DKIM and changes the SPF path, or the sender never set up DKIM. Check whether the From domain aligns with the SPF/DKIM domains.")}]);return(a,o)=>(n(),R(j,{icon:"mail",title:t("ÐналÑзаÑÐ¾Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÑв лиÑÑа","Email Header Analyzer"),subtitle:t("ÐÑÑавÑе заголовки лиÑÑа: ÑлÑÑ
ÑеÑез ÑеÑвеÑи, SPF/DKIM/DMARC, пÑдмÑна вÑдпÑавника Ñ Reply-To â за ÑекÑндÑ.","Paste an emailâs headers: the path through mail servers, SPF/DKIM/DMARC, sender spoofing and Reply-To tricks â in a second."),path:"/tools/email-header-analyzer","seo-title":t("ÐналÑзаÑÐ¾Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÑв email â Received, SPF, DKIM, DMARC | PhishScan","Email Header Analyzer â Received path, SPF, DKIM, DMARC | PhishScan"),"seo-desc":t("ÐезкоÑÑовний аналÑз заголовкÑв лиÑÑа: ланÑÑжок Received з заÑÑимками, ÑезÑлÑÑаÑи авÑенÑиÑÑкаÑÑÑ, пÑдмÑна вÑдпÑавника, Reply-To на ÑнÑий домен. Ðез ÑеÑÑÑÑаÑÑÑ.","Free email header analysis: the Received chain with delays, authentication results, sender spoofing, Reply-To to another domain. No signup."),"cta-title":t("ХоÑеÑе веÑÐ´Ð¸ÐºÑ Ð¿Ð¾ вÑÑÐ¾Ð¼Ñ Ð»Ð¸ÑÑÑ, а не лиÑе заголовкам?","Want a verdict on the whole message, not just headers?"),"cta-text":t("Ðовна пеÑевÑÑка PhishScan дивиÑÑÑÑ Ð½Ð° поÑиланнÑ, вкладеннÑ, ÑекÑÑ Ñ Ð´Ð°Ñ AI-поÑÑненнÑ.","A full PhishScan check looks at links, attachments and text and explains the verdict with AI."),"cta-button":t("ÐеÑевÑÑиÑи лиÑÑ","Check a message"),"cta-to":"/",faq:C.value},{learn:k(()=>[e("h2",null,s(t("Як ÑиÑаÑи заголовки","How to read headers")),1),e("p",null,s(t("Ðожен ÑеÑÐ²ÐµÑ Ð½Ð° ÑлÑÑ
Ñ Ð´Ð¾Ð´Ð°Ñ Received звеÑÑ
Ñ, ÑÐ¾Ð¼Ñ Ð½Ð°Ð¹Ð½Ð¸Ð¶Ñий â пеÑÑий. IP Ñ Ð´ÑжкаÑ
пÑÑÐ»Ñ Â«from» â Ñе Ñе, Ñо баÑив ÑеÑвеÑ-одеÑжÑваÑ; ÑмâÑ Ð¿ÐµÑед ним ÑеÑвеÑ-вÑдпÑавник Ð½Ð°Ð·Ð¸Ð²Ð°Ñ Ñам Ñ Ð¼Ð¾Ð¶Ðµ вигадаÑи.","Every server on the way prepends a Received line, so the bottom one is the first hop. The IP in brackets after âfromâ is what the receiving server saw; the name before it is what the sender claimed and can be made up.")),1),e("h2",null,s(t("Що ознаÑаÑÑÑ SPF, DKIM Ñ DMARC Ñ ÑезÑлÑÑаÑаÑ
","What SPF, DKIM and DMARC mean here")),1),e("p",null,[_(s(t("spf=pass каже, Ñо ÑеÑвеÑ-вÑдпÑавник дозволений Ð´Ð»Ñ Ð´Ð¾Ð¼ÐµÐ½Ñ Ð· Return-Path, dkim=pass â Ñо пÑÐ´Ð¿Ð¸Ñ Ð´Ð¾Ð¼ÐµÐ½Ñ Ð· header.d не зламано, dmarc=pass â Ñо один Ñз ниÑ
Ñе й збÑгаÑÑÑÑÑ Ð· доменом Ñ From. ÐиÑÑ Ð²Ñд «банкÑ» з dmarc=fail Ñ Reply-To на gmail â клаÑиÑна пÑдмÑна.","spf=pass means the sending server is allowed for the Return-Path domain, dkim=pass that the signature of header.d is intact, dmarc=pass that one of them also aligns with the From domain. A âbankâ message with dmarc=fail and a Reply-To at gmail is classic spoofing."))+" ",1),D(q(z),{to:"/guides/how-to-check-email-headers"},{default:k(()=>[_(s(t("ÐеÑалÑний гайд â","Detailed guide â")),1)]),_:1})]),D(E,{tool:"headerAnalyzer"})]),default:k(()=>[e("form",{class:"space-y-2",onSubmit:T(S,["prevent"])},[N(e("textarea",{"onUpdate:modelValue":o[0]||(o[0]=l=>m.value=l),rows:"9",spellcheck:"false",placeholder:Fe,class:"w-full rounded-xl px-3 py-2 text-[12px] font-mono",style:{background:"#0f1626",border:"1px solid #2a3a5c",color:"#e2e8f0"}},null,512),[[H,m.value]]),e("div",W,[e("button",{type:"submit",disabled:f.value||!m.value.trim(),class:"rounded-xl px-5 py-2.5 text-sm font-semibold",style:{background:"#2563eb",color:"#fff"}},s(f.value?"â¦":t("ÐÑоаналÑзÑваÑи","Analyze")),9,B),e("span",G,s(t("Gmail: «ÐоказаÑи оÑигÑнал»;
4 Outlook: «ÐлаÑÑивоÑÑÑ â Ðаголовки ÐнÑеÑнеÑÑ». ÐÐ°Ð½Ñ Ð½Ðµ збеÑÑгаÑÑÑÑÑ.","Gmail: âShow originalâ; Outlook: âProperties â Internet headersâ. Nothing is stored.")),1)])],32),y.value?(n(),i("p",L,s(y.value),1)):u("",!0),r.value?(n(),i("div",U,[e("div",$,[e("div",J,[e("span",{class:"text-2xl font-extrabold",style:p({color:x.value.color})},[_(s(r.value.risk_score),1),o[1]||(o[1]=e("span",{class:"text-sm font-normal",style:{color:"#8a9bbe"}},"/100",-1))],4),e("span",{class:"text-sm font-semibold",style:p({color:x.value.color})},s(x.value.label),5)]),e("div",Q,[e("div",X,[o[2]||(o[2]=e("span",{class:"w-24 shrink-0",style:{color:"#8a95b8"}},"From",-1)),e("span",Y,s(r.value.summary.from_name?r.value.summary.from_name+" ":"")+"<"+s(r.value.summary.from||"â")+">",1)]),e("div",Z,[o[3]||(o[3]=e("span",{class:"w-24 shrink-0",style:{color:"#8a95b8"}},"Reply-To",-1)),e("span",{class:"break-all",style:p({color:I.value?"#fbbf24":"#9fb3d9"})},s(r.value.summary.reply_to||"â"),5)]),e("div",ee,[o[4]||(o[4]=e("span",{class:"w-24 shrink-0",style:{color:"#8a95b8"}},"Return-Path",-1)),e("span",se,s(r.value.summary.return_path||"â"),1)]),e("div",ae,[o[5]||(o[5]=e("span",{class:"w-24 shrink-0",style:{color:"#8a95b8"}},"Date",-1)),e("span",te,s(r.value.summary.date||"â"),1)]),e("div",oe,[o[6]||(o[6]=e("span",{class:"w-24 shrink-0",style:{color:"#8a95b8"}},"Subject",-1)),e("span",le,s(r.value.summary.subject||"â"),1)]),e("div",re,[o[7]||(o[7]=e("span",{class:"w-24 shrink-0",style:{color:"#8a95b8"}},"Message-ID",-1)),e("span",ne,s(r.value.summary.message_id||"â"),1)])])]),e("div",ie,[(n(!0),i(g,null,w(P.value,l=>(n(),i("div",{key:l.k,class:"rounded-xl p-3",style:{background:"#1a1a2e",border:"1px solid #2a3a5c"}},[e("p",de,s(l.k),1),e("p",{class:"text-sm font-semibold",style:p({color:l.color})},s(l.value),5),l.domain?(n(),i("p",ce,s(l.domain),1)):u("",!0)]))),128))]),r.value.auth.present?u("",!0):(n(),i("p",ue,s(t("Ðаголовка Authentication-Results немаÑ: ÑеÑвеÑ-одеÑжÑÐ²Ð°Ñ Ð½Ðµ пеÑевÑÑÑв SPF/DKIM/DMARC або виÑÑзав ÑезÑлÑÑаÑ.","No Authentication-Results header: the receiving server did not check SPF/DKIM/DMARC or stripped the result.")),1)),e("div",pe,[e("h3",me,[_(s(t("ШлÑÑ
лиÑÑа","Delivery path"))+" ",1),e("span",he,"· "+s(r.value.hops.length)+" "+s(t("ÑÑÑибкÑв","hops")),1)]),r.value.hops.length?(n(),i("ol",ye,[(n(!0),i(g,null,w(r.value.hops,(l,d)=>(n(),i("li",{key:d,class:"flex gap-3 text-[12.5px]"},[e("span",be,s(d+1),1),e("div",_e,[e("div",ve,[e("span",xe,s(l.from||"?"),1),l.ip?(n(),i("span",ke,"["+s(l.ip)+"]",1)):u("",!0),o[8]||(o[8]=e("span",{style:{color:"#8a9bbe"}},"â",-1)),e("span",ge,s(l.by||"?"),1)]),e("div",we,[l.with?(n(),i("span",Re,s(l.with),1)):u("",!0),l.time?(n(),i("span",De,s(l.time.replace("T"," ").slice(0,19)),1)):u("",!0),l.delay_s!=null?(n(),i("span",{key:2,style:p({color:l.delay_s>300?"#fbbf24":"#8899bb"})},"+"+s(F(l.delay_s)),5)):u("",!0)])])]))),128))])):(n(),i("p",fe,s(t("ÐаголовкÑв Received Ð½ÐµÐ¼Ð°Ñ â Ñак виглÑдаÑÑÑ Ð»Ð¸ÑÑа, згенеÑÐ¾Ð²Ð°Ð½Ñ Ð»Ð¾ÐºÐ°Ð»Ñно або з виÑÑзаними заголовками.","No Received headers â typical of locally generated messages or stripped headers.")),1))]),r.value.findings.length?(n(),i("div",Me,[e("h3",Se,s(t("Що пÑивеÑÑÐ°Ñ ÑвагÑ","What stands out")),1),(n(!0),i(g,null,w(r.value.findings,(l,d)=>(n(),i("div",{key:d,class:"flex gap-2 text-[12.5px]"},[e("span",{class:"w-2 h-2 rounded-full mt-1.5 shrink-0",style:p({background:A(l.severity)})},null,4),e("div",null,[e("span",Ie,s(l.type),1),e("span",Pe,s(l.description),1)])]))),128))])):(n(),i("p",Ae,s(t("ЯвниÑ
ознак пÑдмÑни в заголовкаÑ
немаÑ.","No clear spoofing signs in the headers.")),1))])):u("",!0),r.value?(n(),R(O,{key:2})):u("",!0)]),_:1},8,["title","subtitle","seo-title","seo-desc","cta-title","cta-text","cta-button","faq"]))}};export{Oe as default};
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.