First update

This commit is contained in:
felixaime 2023-09-10 18:06:16 +02:00
parent ead39a5727
commit 3f008d8d95
44 changed files with 108 additions and 93 deletions

0
app/frontend/dist/.vscode/settings.json vendored Normal file → Executable file
View File

File diff suppressed because one or more lines are too long

0
app/frontend/dist/css/chunk-0d175fb6.3b87afd9.css vendored Normal file → Executable file
View File

View File

@ -1 +0,0 @@
#app{overflow-y:visible}

0
app/frontend/dist/css/chunk-vendors.466ce708.css vendored Normal file → Executable file
View File

0
app/frontend/dist/fonts/Exo.73922868.ttf vendored Normal file → Executable file
View File

0
app/frontend/dist/fonts/Exo.e105e55b.woff2 vendored Normal file → Executable file
View File

0
app/frontend/dist/fonts/Roboto-Regular.1cfd1aa3.woff vendored Normal file → Executable file
View File

0
app/frontend/dist/fonts/Roboto-Regular.2222f1fd.woff2 vendored Normal file → Executable file
View File

0
app/frontend/dist/fonts/Roboto-Regular.3e4fe426.ttf vendored Normal file → Executable file
View File

0
app/frontend/dist/fonts/Roboto-Regular.74670bfc.otf vendored Normal file → Executable file
View File

0
app/frontend/dist/fonts/Roboto-Regular.89207cf8.eot vendored Normal file → Executable file
View File

0
app/frontend/dist/img/Roboto-Regular.f886f6f8.svg vendored Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 784 KiB

After

Width:  |  Height:  |  Size: 784 KiB

0
app/frontend/dist/img/icon_spinner.57ed8eec.svg vendored Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 970 B

After

Width:  |  Height:  |  Size: 970 B

0
app/frontend/dist/img/icon_success.cfd1f9ca.svg vendored Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 377 B

After

Width:  |  Height:  |  Size: 377 B

0
app/frontend/dist/img/icon_usb.21f6dada.svg vendored Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

2
app/frontend/dist/index.html vendored Normal file → Executable file
View File

@ -1 +1 @@
<!DOCTYPE html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Vue App</title><link href="/css/chunk-0d175fb6.3b87afd9.css" rel="prefetch"><link href="/css/chunk-7cb613d5.030f6319.css" rel="prefetch"><link href="/js/chunk-0d175fb6.56d23ddc.js" rel="prefetch"><link href="/js/chunk-2d0b23b3.3d66404f.js" rel="prefetch"><link href="/js/chunk-2d0b6d35.9c950e8a.js" rel="prefetch"><link href="/js/chunk-2d0baeaa.9d6eca74.js" rel="prefetch"><link href="/js/chunk-2d0cfa15.805b5619.js" rel="prefetch"><link href="/js/chunk-2e6079ad.3b1ceaed.js" rel="prefetch"><link href="/js/chunk-7cb613d5.35dd63f5.js" rel="prefetch"><link href="/css/app.f82c83ee.css" rel="preload" as="style"><link href="/css/chunk-vendors.466ce708.css" rel="preload" as="style"><link href="/js/app.13d7f657.js" rel="preload" as="script"><link href="/js/chunk-vendors.3521aad3.js" rel="preload" as="script"><link href="/css/chunk-vendors.466ce708.css" rel="stylesheet"><link href="/css/app.f82c83ee.css" rel="stylesheet"></head><body><div id="app"></div><script src="/js/chunk-vendors.3521aad3.js"></script><script src="/js/app.13d7f657.js"></script></body></html> <!DOCTYPE html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Vue App</title><link href="/css/chunk-0d175fb6.3b87afd9.css" rel="prefetch"><link href="/css/chunk-26111425.030f6319.css" rel="prefetch"><link href="/js/chunk-0d175fb6.e0662e09.js" rel="prefetch"><link href="/js/chunk-26111425.a6e3f63c.js" rel="prefetch"><link href="/js/chunk-2d0b23b3.2995d2b5.js" rel="prefetch"><link href="/js/chunk-2d0b6d35.34f80742.js" rel="prefetch"><link href="/js/chunk-2d0baeaa.f849dd44.js" rel="prefetch"><link href="/js/chunk-2d0cfa15.8db26e9f.js" rel="prefetch"><link href="/js/chunk-2e6079ad.3f383516.js" rel="prefetch"><link href="/css/app.9dd9f6a0.css" rel="preload" as="style"><link href="/css/chunk-vendors.466ce708.css" rel="preload" as="style"><link href="/js/app.ee76b359.js" rel="preload" as="script"><link href="/js/chunk-vendors.0c96780d.js" rel="preload" as="script"><link href="/css/chunk-vendors.466ce708.css" rel="stylesheet"><link href="/css/app.9dd9f6a0.css" rel="stylesheet"></head><body><div id="app"></div><script src="/js/chunk-vendors.0c96780d.js"></script><script src="/js/app.ee76b359.js"></script></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,2 +0,0 @@
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-0d175fb6"],{"192d":function(e,s,t){"use strict";t("fd7d")},9152:function(e,s,t){"use strict";t.r(s);var a=function(){var e=this,s=e._self._c;return s("div",{staticClass:"wrapper"},[e.save_usb&&e.init?s("div",{staticClass:"center"},[s("div",{staticClass:"canvas-anim",class:{"anim-connect":!e.saved&&!e.usb},on:{click:function(s){return e.new_capture()}}},[!e.saved&&e.usb?s("div",{staticClass:"icon-spinner"}):e._e(),e.saved?s("div",{staticClass:"icon-success"}):e._e(),s("div",{staticClass:"icon-usb"}),s("div",{staticClass:"icon-usb-plug"})]),e.saved||e.usb?e._e():s("p",{staticClass:"legend"},[s("br"),e._v(e._s(e.$t("save-capture.please_connect")))]),!e.saved&&e.usb?s("p",{staticClass:"legend"},[s("br"),e._v(e._s(e.$t("save-capture.we_are_saving")))]):e._e(),e.saved?s("p",{staticClass:"legend"},[s("br"),e._v(e._s(e.$t("save-capture.tap_msg")))]):e._e()]):!e.save_usb&&e.init?s("div",{staticClass:"center"},[s("div",[s("p",{staticClass:"legend"},[e._v(e._s(e.$t("save-capture.capture_download"))),s("br"),s("br"),s("br")]),s("button",{staticClass:"btn btn-primary",on:{click:function(s){return e.new_capture()}}},[e._v(e._s(e.$t("save-capture.start_capture_btn")))]),s("iframe",{staticClass:"frame-download",attrs:{src:e.download_url}})])]):e._e()])},n=[],c=(t("14d9"),t("bc3a")),i=t.n(c),u=t("a18c"),o={name:"save-capture",components:{},data(){return{usb:!1,saved:!1,save_usb:!1,init:!1}},props:{capture_token:String},methods:{check_usb:function(){console.log("[save-capture.vue] Checking connected USB device..."),i.a.get("/api/save/usb-check",{timeout:3e4}).then(e=>{e.data.status&&(this.usb=!0,clearInterval(this.interval),this.save_capture())})},save_capture:function(){var e=this.capture_token;console.log("[save-capture.vue] Saving the capture on USB"),i.a.get(`/api/save/save-capture/${e}/usb`,{timeout:3e4}).then(e=>{e.data.status&&(this.saved=!0,console.log("[save-capture.vue] Capture saved, going back to main view"),this.timeout=setTimeout(()=>u["a"].push("/"),6e4))})},new_capture:function(){console.log("[save-capture.vue] Capture saved, generating a new access point"),clearTimeout(this.timeout),u["a"].push({name:"generate-ap"})}},created:function(){console.log("[save-capture.vue] Showing save-capture.vue"),window.config.download_links?(console.log("[save-capture.vue] Using download links instead of USB key"),this.init=!0,this.save_usb=!1,this.download_url=`/api/save/save-capture/${this.capture_token}/url`):(console.log("[save-capture.vue] Using USB key to save the capture"),this.init=!0,this.save_usb=!0,this.interval=setInterval(()=>{this.check_usb()},500))}},r=o,v=(t("192d"),t("2877")),l=Object(v["a"])(r,a,n,!1,null,null,null);s["default"]=l.exports},fd7d:function(e,s,t){}}]);
//# sourceMappingURL=chunk-0d175fb6.56d23ddc.js.map

File diff suppressed because one or more lines are too long

View File

@ -1,2 +0,0 @@
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0b23b3"],{"22da":function(e,t,a){"use strict";a.r(t);var s=function(){var e=this,t=e._self._c;return t("div",{staticClass:"wrapper"},[t("div",{staticClass:"center"},[t("svg",{staticStyle:{margin:"auto",background:"none",display:"block","shape-rendering":"auto"},attrs:{xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",width:"194px",height:"194px",viewBox:"0 0 100 100",preserveAspectRatio:"xMidYMid"}},[t("circle",{attrs:{cx:"50",cy:"50",r:"0",fill:"none",stroke:"#dfdfdf","stroke-width":"1"}},[t("animate",{attrs:{attributeName:"r",repeatCount:"indefinite",dur:"2.941176470588235s",values:"0;43",keyTimes:"0;1",keySplines:"0 0.2 0.8 1",calcMode:"spline",begin:"0s"}}),t("animate",{attrs:{attributeName:"opacity",repeatCount:"indefinite",dur:"2.941176470588235s",values:"1;0",keyTimes:"0;1",keySplines:"0.2 0 0.8 1",calcMode:"spline",begin:"0s"}})]),t("circle",{attrs:{cx:"50",cy:"50",r:"0",fill:"none",stroke:"#dadada","stroke-width":"1"}},[t("animate",{attrs:{attributeName:"r",repeatCount:"indefinite",dur:"2.941176470588235s",values:"0;43",keyTimes:"0;1",keySplines:"0 0.2 0.8 1",calcMode:"spline",begin:"-1.4705882352941175s"}}),t("animate",{attrs:{attributeName:"opacity",repeatCount:"indefinite",dur:"2.941176470588235s",values:"1;0",keyTimes:"0;1",keySplines:"0.2 0 0.8 1",calcMode:"spline",begin:"-1.4705882352941175s"}})])]),e.long_waiting?e._e():t("p",{staticClass:"legend"},[e._v(e._s(e.$t("analysis.please_wait_msg")))]),e.long_waiting?t("p",{staticClass:"legend fade-in"},[e._v(e._s(e.$t("analysis.some_time_msg")))]):e._e()])])},i=[],n=a("a18c"),l=a("bc3a"),r=a.n(l),o={name:"analysis",data(){return{check_alerts:!1,long_waiting:!1}},props:{capture_token:String},methods:{start_analysis:function(){console.log("[analysis.vue] Starting the analysis..."),setTimeout(function(){this.long_waiting=!0}.bind(this),15e3),r.a.get("/api/analysis/start/"+this.capture_token,{timeout:6e4}).then(e=>{"Analysis started"==e.data.message&&(this.check_alerts=setInterval(()=>{this.get_alerts()},500))}).catch(e=>{console.log(e)})},get_alerts:function(){r.a.get("/api/analysis/report/"+this.capture_token,{timeout:6e4}).then(e=>{"No report yet"!=e.data.message?(console.log("[analysis.vue] Got the results analysis, moving to report view"),clearInterval(this.check_alerts),this.long_waiting=!1,n["a"].replace({name:"report",params:{alerts:e.data.alerts,device:e.data.device,methods:e.data.methods,pcap:e.data.pcap,records:e.data.records,capture_token:this.capture_token}})):console.log("[analysis.vue] No analysis results yet")}).catch(e=>{console.log(e)})}},created:function(){console.log("[analysis.vue] Showing analysis.vue"),this.start_analysis()}},c=o,d=a("2877"),p=Object(d["a"])(c,s,i,!1,null,null,null);t["default"]=p.exports}}]);
//# sourceMappingURL=chunk-2d0b23b3.3d66404f.js.map

File diff suppressed because one or more lines are too long

View File

@ -1,2 +0,0 @@
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0b6d35"],{"1f8b":function(e,t,s){"use strict";s.r(t);var n=function(){var e=this,t=e._self._c;return t("div",{staticClass:"wrapper-dark"},[t("div",{staticClass:"center"},[t("h1",{attrs:{id:"title"}},[e._v(e._s(e.title))]),t("span",{staticClass:"loading loading-lg loadingsplash"}),t("span",{staticClass:"message_splash"},[e._v(e._s(e.message))])])])},a=[],o=s("a18c"),i=s("bc3a"),l=s.n(i),c={name:"splash-screen",components:{},data(){return{internet:!1,message:"",title:"SPYGUARD",letters:["SSS§ṠSSSSS","PPPþ⒫PPPP","YYYÿYYYÿYȲYY","GGḠGGGǤG¬G","UÚUUÜUɄUUU","AAAAÄA¬AAA","RЯRɌRRRɌʭR","DD¬DDDDƋDD"]}},methods:{delete_captures:function(){this.message="Doing some cleaning...",console.log("[splash-screen.vue] Deleting previous captures..."),l.a.get("/api/misc/delete-captures",{timeout:3e4}),setTimeout(function(){this.goto_home()}.bind(this),2e3)},goto_home:function(){console.log("[splash-screen.vue] Going to home..."),this.message="Going to home...",o["a"].replace({name:"home"})},generate_random:function(e=0,t=1e3){let s=t-e,n=Math.random();return n=Math.floor(n*s),n+=e,n}},created:function(){window.access_point="",console.log("[splash-screen.vue] Welcome to SPYGUARD"),setInterval(function(){let e="";this.letters.forEach(t=>{e+=t.charAt(this.generate_random(0,9))}),this.title=e,setTimeout(function(){this.title="SPYGUARD"}.bind(this),this.generate_random(30,100))}.bind(this),this.generate_random(500,4e3)),this.delete_captures()}},r=c,h=s("2877"),u=Object(h["a"])(r,n,a,!1,null,null,null);t["default"]=u.exports}}]);
//# sourceMappingURL=chunk-2d0b6d35.9c950e8a.js.map

File diff suppressed because one or more lines are too long

View File

@ -1,2 +0,0 @@
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0baeaa"],{"38f5":function(e,t,a){"use strict";a.r(t);var s=function(){var e=this,t=e._self._c;return t("div",{staticClass:"wrapper"},[t("div",{staticClass:"center"},[0==e.error?t("div",[e.ssid_name?t("div",[t("div",{staticClass:"card apcard",on:{click:function(t){return e.generate_ap()}}},[t("div",{staticClass:"columns"},[t("div",{staticClass:"column col-5"},[t("center",[t("img",{attrs:{src:e.ssid_qr,id:"qrcode"}})])],1),t("div",{staticClass:"divider-vert white-bg",attrs:{"data-content":"OR"}}),t("div",{staticClass:"column col-5"},[t("br"),t("span",{staticClass:"light-grey"},[e._v(e._s(e.$t("generate-ap.network_name"))+" ")]),t("br"),t("h4",[e._v(e._s(e.ssid_name))]),t("span",{staticClass:"light-grey"},[e._v(e._s(e.$t("generate-ap.network_password"))+" ")]),t("br"),t("h4",[e._v(e._s(e.ssid_password))])])])]),t("br"),t("br"),t("br"),t("br"),e._v(" "),t("br"),t("br"),t("br"),t("br"),t("br"),t("br"),t("span",{staticClass:"legend"},[e._v(e._s(e.$t("generate-ap.tap_msg")))])]):t("div",[t("svg",{staticStyle:{margin:"auto",background:"none",display:"block","shape-rendering":"auto"},attrs:{xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",width:"194px",height:"194px",viewBox:"0 0 100 100",preserveAspectRatio:"xMidYMid"}},[t("circle",{attrs:{cx:"50",cy:"50",r:"0",fill:"none",stroke:"#dfdfdf","stroke-width":"1"}},[t("animate",{attrs:{attributeName:"r",repeatCount:"indefinite",dur:"2.941176470588235s",values:"0;43",keyTimes:"0;1",keySplines:"0 0.2 0.8 1",calcMode:"spline",begin:"0s"}}),t("animate",{attrs:{attributeName:"opacity",repeatCount:"indefinite",dur:"2.941176470588235s",values:"1;0",keyTimes:"0;1",keySplines:"0.2 0 0.8 1",calcMode:"spline",begin:"0s"}})]),t("circle",{attrs:{cx:"50",cy:"50",r:"0",fill:"none",stroke:"#dadada","stroke-width":"1"}},[t("animate",{attrs:{attributeName:"r",repeatCount:"indefinite",dur:"2.941176470588235s",values:"0;43",keyTimes:"0;1",keySplines:"0 0.2 0.8 1",calcMode:"spline",begin:"-1.4705882352941175s"}}),t("animate",{attrs:{attributeName:"opacity",repeatCount:"indefinite",dur:"2.941176470588235s",values:"1;0",keyTimes:"0;1",keySplines:"0.2 0 0.8 1",calcMode:"spline",begin:"-1.4705882352941175s"}})])]),t("p",{staticClass:"legend"},[e._v(e._s(e.$t("generate-ap.generate_ap_msg")))])])]):t("div",[t("p",[t("strong",{domProps:{innerHTML:e._s(e.$t("generate-ap.error_msg1"))}}),t("br"),t("br"),t("span",{domProps:{innerHTML:e._s(e.$t("generate-ap.error_msg2"))}}),t("br"),t("br")])])])])},r=[],n=a("bc3a"),i=a.n(n),o=a("a18c"),c={name:"generate-ap",components:{},data(){return{ssid_name:!1,ssid_qr:!1,ssid_password:!1,capture_token:!1,capture_start:!1,interval:!1,error:!1,reboot_option:window.config.reboot_option,attempts:3}},methods:{generate_ap:function(){console.log("[generate-ap.vue] Trying to start a new access point"),clearInterval(this.interval),this.ssid_name=!1,i.a.get("/api/network/ap/start",{timeout:3e4}).then(e=>this.show_ap(e.data))},show_ap:function(e){e.status?(console.log("[generate-ap.vue] Access point created, showing SSID"),window.access_point=e.ssid,this.ssid_name=e.ssid,this.ssid_password=e.password,this.ssid_qr=e.qrcode,this.start_capture()):(console.log("[generate-ap.vue] Issue when creating AP, let's retry"),0!=this.attempts?(setTimeout(function(){this.generate_ap()}.bind(this),1e4),this.attempts-=1):(console.log("[generate-ap.vue] Fatal error when creating AP, showing the error message"),this.error=!0))},start_capture:function(){console.log("[generate-ap.vue] Starting the capture in background"),i.a.get("/api/capture/start",{timeout:3e4}).then(e=>this.get_capture_token(e.data))},reboot:function(){console.log("[generate-ap.vue] Rebooting the device"),i.a.get("/api/misc/reboot",{timeout:3e4}).then(e=>{console.log(e)})},get_capture_token:function(e){e.status&&(console.log("[generate-ap.vue] Capture token retrieved, waiting a device to connect"),this.capture_token=e.capture_token,this.capture_start=Date.now(),this.get_device())},get_device:function(){this.interval=setInterval(()=>{i.a.get("/api/device/get/"+this.capture_token,{timeout:3e4}).then(e=>this.check_device(e.data))},500)},check_device:function(e){if(e.status){console.log("[generate-ap.vue] Device connected, going to capture view."),clearInterval(this.interval);var t=this.capture_token,a=this.capture_start,s=e.name;o["a"].replace({name:"capture",params:{capture_token:t,capture_start:a,device_name:s}})}}},created:function(){console.log("[generate-ap.vue] Showing generate-ap.vue"),this.generate_ap()}},p=c,d=a("2877"),l=Object(d["a"])(p,s,r,!1,null,null,null);t["default"]=l.exports}}]);
//# sourceMappingURL=chunk-2d0baeaa.9d6eca74.js.map

File diff suppressed because one or more lines are too long

View File

@ -1,2 +0,0 @@
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0cfa15"],{6511:function(t,n,s){"use strict";s.r(n);var e=function(){var t=this,n=t._self._c;return n("div",{staticClass:"wrapper"},[n("div",{staticClass:"center"},[n("h3",{staticClass:"lobster"},[t._v(t._s(t.$t("home.welcome_msg")))]),n("p",[t._v(t._s(t.$t("home.help_msg")))]),n("button",{staticClass:"btn btn-primary",on:{click:function(n){return t.next()}}},[t._v(t._s(t.$t("home.start_btn")))])])])},a=[],c=(s("14d9"),s("a18c")),o={name:"home",methods:{next:function(){c["a"].push({name:"generate-ap"})}}},r=o,i=s("2877"),l=Object(i["a"])(r,e,a,!1,null,null,null);n["default"]=l.exports}}]);
//# sourceMappingURL=chunk-2d0cfa15.805b5619.js.map

View File

@ -1 +0,0 @@
{"version":3,"sources":["webpack:///./src/views/home.vue","webpack:///src/views/home.vue","webpack:///./src/views/home.vue?d449","webpack:///./src/views/home.vue?46ae"],"names":["render","_vm","this","_c","_self","staticClass","_v","_s","$t","on","$event","next","staticRenderFns","name","methods","router","component"],"mappings":"uHAAA,IAAIA,EAAS,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACE,YAAY,WAAW,CAACF,EAAG,MAAM,CAACE,YAAY,UAAU,CAACF,EAAG,KAAK,CAACE,YAAY,WAAW,CAACJ,EAAIK,GAAGL,EAAIM,GAAGN,EAAIO,GAAG,wBAAwBL,EAAG,IAAI,CAACF,EAAIK,GAAGL,EAAIM,GAAGN,EAAIO,GAAG,qBAAqBL,EAAG,SAAS,CAACE,YAAY,kBAAkBI,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOT,EAAIU,UAAU,CAACV,EAAIK,GAAGL,EAAIM,GAAGN,EAAIO,GAAG,2BAErXI,EAAkB,G,wBCWP,GACfC,YACAC,SACAH,gBACAI,aAAAF,wBCjB8U,I,YCO1UG,EAAY,eACd,EACAhB,EACAY,GACA,EACA,KACA,KACA,MAIa,aAAAI,E","file":"js/chunk-2d0cfa15.805b5619.js","sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"wrapper\"},[_c('div',{staticClass:\"center\"},[_c('h3',{staticClass:\"lobster\"},[_vm._v(_vm._s(_vm.$t(\"home.welcome_msg\")))]),_c('p',[_vm._v(_vm._s(_vm.$t(\"home.help_msg\")))]),_c('button',{staticClass:\"btn btn-primary\",on:{\"click\":function($event){return _vm.next()}}},[_vm._v(_vm._s(_vm.$t(\"home.start_btn\")))])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div class=\"wrapper\">\r\n <div class=\"center\">\r\n <h3 class=\"lobster\">{{ $t(\"home.welcome_msg\") }}</h3>\r\n <p>{{ $t(\"home.help_msg\") }}</p>\r\n <button class=\"btn btn-primary\" v-on:click=\"next()\">{{ $t(\"home.start_btn\") }}</button>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport router from '../router'\r\n\r\nexport default {\r\n name: 'home',\r\n methods: {\r\n next: function() {\r\n router.push({ name: 'generate-ap' });\r\n }\r\n }\r\n}\r\n</script>\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./home.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./home.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./home.vue?vue&type=template&id=66a1090d&\"\nimport script from \"./home.vue?vue&type=script&lang=js&\"\nexport * from \"./home.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1100,7 +1100,25 @@ ul {
color: #cecece; color: #cecece;
} }
.no-alerts-to-show {
text-align: center;
padding: 50px;
background-color: #f7f8f9;
border: 1px dashed #eee;
border-radius: 5px;
font-size: 25px;
color: #CFCFCF;
margin-bottom: 30px;
margin-top: 20px;
}
.no-alerts-to-show>.main-text {
color: #CCC;
}
.no-alerts-to-show>.second-text {
font-size: 20px;
}
.icon-usb { .icon-usb {
background: url('../assets/icon_usb.svg') no-repeat 0 0; background: url('../assets/icon_usb.svg') no-repeat 0 0;

View File

@ -62,6 +62,9 @@
"moderate": "Mittel", "moderate": "Mittel",
"low": "Niedrig", "low": "Niedrig",
"uncat_coms_table" : "Kommunikation nicht kategorisiert", "uncat_coms_table" : "Kommunikation nicht kategorisiert",
"whitelisted_coms_table" : "Kommunikation auf der Whitelist",
"no_alerts_title" : "Die Analyse der Kommunikation Ihres Geräts hat zu keinen Warnungen geführt.",
"no_alerts_subtext" : "Unten können Sie die von ihm während der Erfassung ausgegebenen Mitteilungen sehen.",
"protocol" : "Protokoll", "protocol" : "Protokoll",
"domain_name" : "Domain", "domain_name" : "Domain",
"ip_address": "IP-Adresse:", "ip_address": "IP-Adresse:",
@ -77,7 +80,7 @@
"please_connect": "Bitte schließen Sie einen USB-Stick an, um Ihre Aufnahme zu speichern.", "please_connect": "Bitte schließen Sie einen USB-Stick an, um Ihre Aufnahme zu speichern.",
"we_are_saving": "Wir speichern Ihre Aufnahme.", "we_are_saving": "Wir speichern Ihre Aufnahme.",
"tap_msg": "Sie können den USB-Stick antippen, um eine neue Aufnahme zu starten.", "tap_msg": "Sie können den USB-Stick antippen, um eine neue Aufnahme zu starten.",
"capture_download": "Der Download der Aufnahme beginnt …", "capture_download": "Der Download der Aufnahme beginnt…",
"start_capture_btn": "Noch eine Aufnahme starten" "start_capture_btn": "Noch eine Aufnahme starten"
}, },
"modals": { "modals": {

View File

@ -62,6 +62,9 @@
"moderate": "moderate", "moderate": "moderate",
"low": "low", "low": "low",
"uncat_coms_table" : "Uncategorized communications", "uncat_coms_table" : "Uncategorized communications",
"whitelisted_coms_table" : "Whitelisted communications",
"no_alerts_title" : "Analysis of your smartphone's communications did not cause any alerts.",
"no_alerts_subtext" : "You can see below the communications issued by it during the capture.",
"protocol" : "Protocol", "protocol" : "Protocol",
"domain_name" : "Domain", "domain_name" : "Domain",
"ip_address" : "IP Address", "ip_address" : "IP Address",

View File

@ -62,6 +62,9 @@
"moderate": "moderada", "moderate": "moderada",
"low": "bajo", "low": "bajo",
"uncat_coms_table" : "Sin categorizar Comunicaciones", "uncat_coms_table" : "Sin categorizar Comunicaciones",
"whitelisted_coms_table": "Comunicaciones incluidas en la lista blanca",
"no_alerts_title": "El análisis de las comunicaciones de su dispositivo no generó ninguna alerta.",
"no_alerts_subtext": "Puedes ver a continuación las comunicaciones emitidas por éste durante la captura.",
"protocol" : "Protocolo", "protocol" : "Protocolo",
"domain_name" : "Dominio", "domain_name" : "Dominio",
"ip_address" : "Dirección IP ", "ip_address" : "Dirección IP ",

View File

@ -62,6 +62,9 @@
"moderate": "moyenne", "moderate": "moyenne",
"low": "basse", "low": "basse",
"uncat_coms_table" : "Communications non catégorisées", "uncat_coms_table" : "Communications non catégorisées",
"whitelisted_coms_table": "Communications sur liste blanche",
"no_alerts_title": "L'analyse des communications de votre appareil n'a provoqué aucune alerte.",
"no_alerts_subtext": "Vous pouvez voir ci-dessous les communications émises par celui-ci lors de la capture.",
"protocol" : "Protocole", "protocol" : "Protocole",
"domain_name" : "Domaine", "domain_name" : "Domaine",
"ip_address" : "Adresse IP", "ip_address" : "Adresse IP",

View File

@ -62,6 +62,9 @@
"moderate": "moderata", "moderate": "moderata",
"low": "bassa", "low": "bassa",
"uncat_coms_table" : "Comunicazioni non categorizzate", "uncat_coms_table" : "Comunicazioni non categorizzate",
"whitelisted_coms_table": "Comunicazioni autorizzate",
"no_alerts_title": "L'analisi delle comunicazioni del tuo dispositivo non ha causato alcun avviso.",
"no_alerts_subtext": "Di seguito puoi vedere le comunicazioni emesse da esso durante la cattura.",
"protocol" : "Protocollo", "protocol" : "Protocollo",
"domain_name" : "Dominio", "domain_name" : "Dominio",
"ip_address" : "Indirizzo IP", "ip_address" : "Indirizzo IP",

View File

@ -62,6 +62,9 @@
"moderate": "moderado", "moderate": "moderado",
"low": "leve", "low": "leve",
"uncat_coms_table" : "Comunicações não categorizadas", "uncat_coms_table" : "Comunicações não categorizadas",
"whitelisted_coms_table" : "Comunicações na lista branca",
"no_alerts_title" : "A análise das comunicações do seu dispositivo não causou nenhum alerta.",
"no_alerts_subtext" : "Você pode ver abaixo as comunicações emitidas por ele durante a captura.",
"protocol" : "Protocolo", "protocol" : "Protocolo",
"domain_name" : "Domínio", "domain_name" : "Domínio",
"ip_address": "Endereço IP:", "ip_address": "Endereço IP:",

View File

@ -62,6 +62,9 @@
"moderate": "средний", "moderate": "средний",
"low": "низкий", "low": "низкий",
"uncat_coms_table" : "Несекретные сообщения", "uncat_coms_table" : "Несекретные сообщения",
"whitelisted_coms_table": "Связь в белом списке",
"no_alerts_title": "Анализ сообщений вашего устройства не вызвал никаких предупреждений.",
"no_alerts_subtext": "Ниже вы можете увидеть сообщения, отправленные им во время захвата.",
"protocol" : "Протокол", "protocol" : "Протокол",
"domain_name" : "домен", "domain_name" : "домен",
"ip_address": "IP-адрес:", "ip_address": "IP-адрес:",

View File

@ -29,7 +29,7 @@
<button class="btn btn-report-low" @click="show_report=true;results=false;">{{ $t("report.show_full_report") }}</button> <button class="btn btn-report-low" @click="show_report=true;results=false;">{{ $t("report.show_full_report") }}</button>
</div> </div>
</div> </div>
<div v-else class="none-wrapper"> <div v-else class="none-wrapper">
<div class="center"> <div class="center">
<h1 class="warning-title" v-html="$t('report.fine_msg')"></h1> <h1 class="warning-title" v-html="$t('report.fine_msg')"></h1>
<button class="btn btn-report-low-light" @click="show_report=true;results=false;">{{ $t("report.show_full_report") }}</button> <button class="btn btn-report-low-light" @click="show_report=true;results=false;">{{ $t("report.show_full_report") }}</button>
@ -48,41 +48,47 @@
{{ $t("report.detection_methods") }} {{ detection_methods }} {{ $t("report.detection_methods") }} {{ detection_methods }}
</div> </div>
</div> </div>
<ul class="alerts"> <div v-if="alerts.length>0">
<li class="alert" v-for="alert in alerts.high" :key="alert.message"> <ul class="alerts">
<div class="alert-header"> <li class="alert" v-for="alert in alerts.high" :key="alert.message">
<span class="high-label">{{ $t("report.high") }}</span> <div class="alert-header">
<span class="alert-id">{{ alert.id }}</span> <span class="high-label">{{ $t("report.high") }}</span>
<span class="btn-whitelist" v-on:click="add_whitelist(alert.host)">Add to the whitelist</span> <span class="alert-id">{{ alert.id }}</span>
</div> <span class="btn-whitelist" v-on:click="add_whitelist(alert.host)">Add to the whitelist</span>
<div class="alert-body"> </div>
<span class="title">{{ alert.title }}</span> <div class="alert-body">
<p class="description">{{ alert.description }}</p> <span class="title">{{ alert.title }}</span>
</div> <p class="description">{{ alert.description }}</p>
</li> </div>
<li class="alert" v-for="alert in alerts.moderate" :key="alert.message"> </li>
<div class="alert-header"> <li class="alert" v-for="alert in alerts.moderate" :key="alert.message">
<span class="moderate-label">{{ $t("report.moderate") }}</span> <div class="alert-header">
<span class="alert-id">{{ alert.id }}</span> <span class="moderate-label">{{ $t("report.moderate") }}</span>
<span class="btn-whitelist" v-on:click="add_whitelist(alert.host)">Add to the whitelist</span> <span class="alert-id">{{ alert.id }}</span>
</div> <span class="btn-whitelist" v-on:click="add_whitelist(alert.host)">Add to the whitelist</span>
<div class="alert-body"> </div>
<span class="title">{{ alert.title }}</span> <div class="alert-body">
<p class="description">{{ alert.description }}</p> <span class="title">{{ alert.title }}</span>
</div> <p class="description">{{ alert.description }}</p>
</li> </div>
<li class="alert" v-for="alert in alerts.low" :key="alert.message"> </li>
<div class="alert-header"> <li class="alert" v-for="alert in alerts.low" :key="alert.message">
<span class="moderate-label">{{ $t("report.low") }}</span> <div class="alert-header">
<span class="alert-id">{{ alert.id }}</span> <span class="moderate-label">{{ $t("report.low") }}</span>
<span class="btn-whitelist" v-on:click="add_whitelist(alert.host)">Add to the whitelist</span> <span class="alert-id">{{ alert.id }}</span>
</div> <span class="btn-whitelist" v-on:click="add_whitelist(alert.host)">Add to the whitelist</span>
<div class="alert-body"> </div>
<span class="title">{{ alert.title }}</span> <div class="alert-body">
<p class="description">{{ alert.description }}</p> <span class="title">{{ alert.title }}</span>
</div> <p class="description">{{ alert.description }}</p>
</li> </div>
</ul> </li>
</ul>
</div>
<div class="no-alerts-to-show" v-else>
<span class="main-text">{{ $t("report.no_alerts_title") }}</span>
<span class="second-text">{{ $t("report.no_alerts_subtext") }}</span>
</div>
<h5 class="title-report" v-if="uncategorized_records.length>0">{{ $t("report.uncat_coms_table") }}</h5> <h5 class="title-report" v-if="uncategorized_records.length>0">{{ $t("report.uncat_coms_table") }}</h5>
<div v-if="uncategorized_records.length>0"> <div v-if="uncategorized_records.length>0">
<table class="table-uncat"> <table class="table-uncat">
@ -102,6 +108,25 @@
</tr> </tr>
</table> </table>
</div> </div>
<h5 class="title-report" v-if="uncategorized_records.length>0">{{ $t("report.whitelisted_coms_table") }}</h5>
<div v-if="whitelisted_records.length>0">
<table class="table-uncat">
<thead>
<tr>
<td>{{ $t("report.protocol") }}</td>
<td>{{ $t("report.domain_name") }}</td>
<td>{{ $t("report.ip_address") }}</td>
<td>{{ $t("report.port") }}</td>
</tr>
</thead>
<tr v-for="record in whitelisted_records" :key="record.ip_dst">
<td>{{ Object.keys(record.protocols).map(key => record.protocols[key].name).join(", ") }}</td>
<td>{{ record.domains.join(", ") }}</td>
<td>{{ record.ip_dst }}</td>
<td>{{ Object.keys(record.protocols).map(key => record.protocols[key].port).join(", ") }}</td>
</tr>
</table>
</div>
<div id="controls-analysis"> <div id="controls-analysis">
<div class="column col-6"> <div class="column col-6">
<button class="btn btn btn-primary width-100" v-on:click="save_capture()">{{ $t("report.save") }}</button> <button class="btn btn btn-primary width-100" v-on:click="save_capture()">{{ $t("report.save") }}</button>
@ -133,7 +158,8 @@ export default {
return { return {
results: true, results: true,
detection_methods: "", detection_methods: "",
uncategorized_records: [] uncategorized_records: [],
whitelisted_records: []
} }
}, },
props: { props: {
@ -178,10 +204,12 @@ export default {
add_whitelist: function(host){ add_whitelist: function(host){
EventBus.$emit("showModal", {"action" : "whitelist", "host" : host}) EventBus.$emit("showModal", {"action" : "whitelist", "host" : host})
}, },
get_uncategorized_records: function(){ get_records: function(){
this.records.forEach( r => { this.records.forEach( r => {
if (!r.suspicious && !r.whitelisted){ if (!r.suspicious && !r.whitelisted){
this.uncategorized_records.push(r); this.uncategorized_records.push(r);
} else if (r.whitelisted){
this.whitelisted_records.push(r);
} }
}) })
} }
@ -189,7 +217,7 @@ export default {
created: function() { created: function() {
console.log("[report.vue] Showing report.vue"); console.log("[report.vue] Showing report.vue");
this.get_detection_methods(); this.get_detection_methods();
this.get_uncategorized_records(); this.get_records();
} }
} }
</script> </script>