-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.bac85ec7.js
2 lines (2 loc) · 14.5 KB
/
app.bac85ec7.js
1
2
(function(){"use strict";var e={3832:function(e,t,l){var s=l(5130),n=l(1387),a=l(6768);const i=(0,a.Lk)("h1",null," Linux Firmware DB ",-1);function r(e,t,l,s,n,r){const o=(0,a.g2)("RouterView");return(0,a.uX)(),(0,a.CE)(a.FK,null,[i,(0,a.bF)(o)],64)}var o={name:"App",components:{RouterView:n.Tp}},u=l(1241);const c=(0,u.A)(o,[["render",r]]);var h=c,d=l(4232);const m=e=>((0,a.Qi)("data-v-b337e81a"),e=e(),(0,a.jt)(),e),f={class:"container-fluid"},p={class:"container"},k={class:"text-danger"},g=m((()=>(0,a.Lk)("p",{class:"text-info"},[(0,a.eW)(" Linux Firmware DB is a data set of Instruction Set Architectures for each of the files in the "),(0,a.Lk)("code",null,"linux-firmware"),(0,a.eW)(" git repository. "),(0,a.Lk)("br"),(0,a.eW)(" The goal of this project is to spread knowledge and awareness on the proprietary firmware blobs bundled with Linux. "),(0,a.Lk)("br"),(0,a.eW)(" The data set was built with "),(0,a.Lk)("a",{href:"https://github.com/airbus-seclab/cpu_rec"},"cpu_rec"),(0,a.eW)(" and "),(0,a.Lk)("a",{href:"https://rada.re/n/"},"radare2"),(0,a.Lk)("br"),(0,a.eW)(" See the repository for this project on "),(0,a.Lk)("a",{href:"https://github.com/nstarke/linux-firmware-db/"},"Github")],-1))),y={class:"container"},b=m((()=>(0,a.Lk)("option",{value:"",disabled:"",selected:""}," Choose Git Tag ",-1))),L={key:0,class:"form-group"},S=m((()=>(0,a.Lk)("p",null,"Filter",-1))),_={class:"checkbox"},C=["checked"],v=m((()=>(0,a.Lk)("code",null,"data",-1))),F={class:"checkbox"},x=["checked"],O={class:"checkbox"},A=["checked"],T={class:"input"},w={class:"input"},j={class:"input"},I=m((()=>(0,a.Lk)("option",{value:"",selected:""}," All Arch ",-1))),W={key:0,class:"border"},z={key:0,class:"text-primary"},E={key:1,class:"text-warning"},X={class:"container"},M={class:"table table-striped table-bordered"},V=m((()=>(0,a.Lk)("th",{class:"text-center"}," Disassembly ",-1))),N={class:"text-center"},J=["href"],Q={class:"text-center"},U={class:"text-center"},D={class:"text-center"},P={class:"text-center"},R={class:"text-center"},K={class:"text-center"},$={class:"text-center"},B={key:0,class:"text-center"};function G(e,t,l,n,i,r){const o=(0,a.g2)("router-link");return(0,a.uX)(),(0,a.CE)("div",f,[(0,a.Lk)("div",p,[(0,a.Lk)("p",k,(0,d.v_)(i.errorMsg),1),g]),(0,a.Lk)("div",y,[(0,a.Lk)("span",null,[(0,a.Lk)("div",null,[(0,a.eW)(" Select Tag "),(0,a.bo)((0,a.Lk)("select",{onChange:t[0]||(t[0]=(...e)=>r.selectTagChanged&&r.selectTagChanged(...e)),"onUpdate:modelValue":t[1]||(t[1]=e=>i.selectedTag=e),class:"form-control"},[b,((0,a.uX)(!0),(0,a.CE)(a.FK,null,(0,a.pI)(i.tags,(e=>((0,a.uX)(),(0,a.CE)("option",{key:e},(0,d.v_)(e),1)))),128))],544),[[s.u1,i.selectedTag]])]),i.selectedTag?((0,a.uX)(),(0,a.CE)("div",L,[S,(0,a.Lk)("div",_,[(0,a.Lk)("label",null,[(0,a.bo)((0,a.Lk)("input",{type:"radio",checked:i.dataOnly,"onUpdate:modelValue":t[2]||(t[2]=e=>i.dataOnly=e),onClick:t[3]||(t[3]=(...e)=>r.dataOnlyClicked&&r.dataOnlyClicked(...e))},null,8,C),[[s.XL,i.dataOnly]]),(0,a.eW)(" Show only files with "),v,(0,a.eW)(" file types (most likely to be firmware images) ")])]),(0,a.Lk)("div",F,[(0,a.Lk)("label",null,[(0,a.bo)((0,a.Lk)("input",{type:"radio",checked:i.fullOnly,"onUpdate:modelValue":t[4]||(t[4]=e=>i.fullOnly=e),onClick:t[5]||(t[5]=(...e)=>r.fullOnlyClicked&&r.fullOnlyClicked(...e))},null,8,x),[[s.XL,i.fullOnly]]),(0,a.eW)(" Show only files with an architecture detected for the entire file ")])]),(0,a.Lk)("div",O,[(0,a.Lk)("label",null,[(0,a.bo)((0,a.Lk)("input",{type:"radio",checked:i.noAscii,"onUpdate:modelValue":t[6]||(t[6]=e=>i.noAscii=e),onClick:t[7]||(t[7]=(...e)=>r.noAsciiClicked&&r.noAsciiClicked(...e))},null,8,A),[[s.XL,i.noAscii]]),(0,a.eW)(" Don't Show Text Files ")])]),(0,a.Lk)("div",T,[(0,a.Lk)("label",null,[(0,a.bo)((0,a.Lk)("input",{min:"0",type:"number","onUpdate:modelValue":t[8]||(t[8]=e=>i.minimumFullSize=e),onChange:t[9]||(t[9]=(...e)=>r.minimumFullSizeChanged&&r.minimumFullSizeChanged(...e))},null,544),[[s.Jo,i.minimumFullSize]]),(0,a.eW)(" Minimum Full File Length ")])]),(0,a.Lk)("div",w,[(0,a.Lk)("label",null,[(0,a.bo)((0,a.Lk)("input",{min:"0",type:"number","onUpdate:modelValue":t[10]||(t[10]=e=>i.maximumFullSize=e),onChange:t[11]||(t[11]=(...e)=>r.maximumFullSizeChanged&&r.maximumFullSizeChanged(...e))},null,544),[[s.Jo,i.maximumFullSize]]),(0,a.eW)(" Maximum Full File Length ")])]),(0,a.Lk)("div",j,[(0,a.eW)(" Select Full Architecture "),(0,a.bo)((0,a.Lk)("select",{onChange:t[12]||(t[12]=(...e)=>r.fullArchTypeChanged&&r.fullArchTypeChanged(...e)),"onUpdate:modelValue":t[13]||(t[13]=e=>i.selectedFullArchType=e),class:"form-control"},[I,((0,a.uX)(!0),(0,a.CE)(a.FK,null,(0,a.pI)(r.fullArchTypes,(e=>((0,a.uX)(),(0,a.CE)("option",{key:e},(0,d.v_)(e),1)))),128))],544),[[s.u1,i.selectedFullArchType]])])])):(0,a.Q3)("",!0)]),i.selectedTag?((0,a.uX)(),(0,a.CE)("span",W,[r.resultsCount>0?((0,a.uX)(),(0,a.CE)("span",z,"Results Count: "+(0,d.v_)(r.resultsCount),1)):(0,a.Q3)("",!0),0===r.resultsCount?((0,a.uX)(),(0,a.CE)("span",E,"No Results")):(0,a.Q3)("",!0)])):(0,a.Q3)("",!0)]),(0,a.Lk)("div",X,[(0,a.Lk)("table",M,[(0,a.Lk)("thead",null,[(0,a.Lk)("th",{class:"text-center",onClick:t[14]||(t[14]=e=>r.performSort("file_name"))}," File Name "),(0,a.Lk)("th",{class:"text-center",onClick:t[15]||(t[15]=e=>r.performSort("full_arch"))}," Full Arch "),(0,a.Lk)("th",{class:"text-center",onClick:t[16]||(t[16]=e=>r.performSort("chunk_arch"))}," Chunk Arch "),(0,a.Lk)("th",{class:"text-center",onClick:t[17]||(t[17]=e=>r.performSort("full_length"))}," Full Length "),(0,a.Lk)("th",{class:"text-center",onClick:t[18]||(t[18]=e=>r.performSort("chunk_length"))}," Chunk Length "),(0,a.Lk)("th",{class:"text-center",onClick:t[19]||(t[19]=e=>r.performSort("chunk_count"))}," Chunk Count "),(0,a.Lk)("th",{class:"text-center",onClick:t[20]||(t[20]=e=>r.performSort("file_type"))}," File Type "),(0,a.Lk)("th",{class:"text-center",onClick:t[21]||(t[21]=e=>r.performSort("shannon_entropy"))}," Shannon Entropy "),V]),(0,a.Lk)("tbody",null,[((0,a.uX)(!0),(0,a.CE)(a.FK,null,(0,a.pI)(i.results,(e=>((0,a.uX)(),(0,a.CE)("tr",{key:e.file_name},[(0,a.Lk)("td",N,[(0,a.Lk)("a",{href:`https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/${e.file_name.substring(e.file_name.indexOf("/")+1,e.file_name.length)}?h=${this.selectedTag}`},(0,d.v_)(e.file_name),9,J)]),(0,a.Lk)("td",Q,(0,d.v_)(e.full_arch),1),(0,a.Lk)("td",U,(0,d.v_)(e.chunk_arch),1),(0,a.Lk)("td",D,(0,d.v_)(e.full_length),1),(0,a.Lk)("td",P,(0,d.v_)(e.chunk_length),1),(0,a.Lk)("td",R,(0,d.v_)(e.chunk_count),1),(0,a.Lk)("td",K,(0,d.v_)(e.file_type),1),(0,a.Lk)("td",$,(0,d.v_)(e.shannon_entropy),1),["SuperH","ARM","MIPS","X86","8051","ARcompact","6502"].some((t=>e.full_arch.includes(t)))||["ARM","MIPS","mips","8051","6502"].some((t=>e.chunk_arch.includes(t)))?((0,a.uX)(),(0,a.CE)("td",B,[(0,a.bF)(o,{onClick:t=>r.disassemblyClicked(e),to:{name:"disassembly",params:{firmware:e,sha256:e.sha256}}},{default:(0,a.k6)((()=>[(0,a.eW)("View")])),_:2},1032,["onClick","to"])])):(0,a.Q3)("",!0)])))),128))])])])])}var H={name:"MainView",data(){return{selectedFullArchType:localStorage.getItem("selectedFullArchType"),fullOnly:"true"===localStorage.getItem([this.selectedTag,"fullOnly"].join("")),dataOnly:"true"===localStorage.getItem([this.selectedTag,"dataOnly"].join("")),noAscii:"true"===localStorage.getItem([this.selectedTag,"noAscii"].join("")),selectedTag:localStorage.getItem("selectedTag"),errorMsg:"",tags:[],asc:!0,results:[],json:[],minimumFullSize:parseInt(localStorage.getItem([this.selectedTag,"minimumFullSize"].join()))||0,maximumFullSize:268435456,maximumPossibleSize:0}},async mounted(){let e=await fetch("/data/json/tags.json");if(200===e.status){let t=await e.json();this.tags=t}else this.errorMsg="Tags not found, please try again later";this.getCache(),this.json=JSON.parse(localStorage.getItem([this.selectedTag,"data"].join(".")))||[],this.results=this.json,this.performFilter()},computed:{resultsCount(){return this.results.length},fullArchTypes(){return[...new Set(this.results.map((e=>e.full_arch)))].sort()}},methods:{disassemblyClicked(e){localStorage.setItem("state",JSON.stringify(e))},async selectTagChanged(){this.results=[],localStorage.setItem("selectedTag",this.selectedTag);const e=localStorage.getItem([this.selectedTag,"data"].join("."));if(e)this.json=JSON.parse(e),this.results=this.json;else{let e=await fetch("/data/json/linux-firmware-db-"+this.selectedTag+"-cpu_rec.json");if(200!==e.status)return this.errorMsg=e.statusText;this.json=await e.json(),localStorage.setItem([this.selectedTag,"data"].join("."),JSON.stringify(this.json)),this.results=this.json}this.performFilter()},dataOnlyClicked(){this.dataOnly=!this.dataOnly,localStorage.setItem("dataOnly",this.dataOnly),this.performFilter()},fullOnlyClicked(){this.fullOnly=!this.fullOnly,localStorage.setItem("fullOnly",this.fullOnly),this.performFilter()},noAsciiClicked(){this.noAscii=!this.noAscii,localStorage.setItem("noAscii",this.noAscii),this.performFilter()},minimumFullSizeChanged(){localStorage.setItem("minimumFullSize",this.minimumFullSize),this.performFilter()},maximumFullSizeChanged(){this.performFilter()},fullArchTypeChanged(){localStorage.setItem("selectedFullArchType",this.selectedFullArchType),this.performFilter()},performFilter(){this.dataOnly&&this.fullOnly?this.results=this.json.filter((e=>"data"===e.file_type&&"None"!==e.full_arch)):this.dataOnly&&!this.fullOnly?this.results=this.json.filter((e=>"data"===e.file_type)):!this.dataOnly&&this.fullOnly?this.results=this.json.filter((e=>"None"!==e.full_arch)):this.noAscii?this.results=this.json.filter((e=>e.file_type&&!["ascii","unicode","utf-8","text"].some((t=>e.file_type.includes(t))))):this.results=this.json,this.results=this.results.filter((e=>this.maximumFullSize>=e.full_length&&this.minimumFullSize<=e.full_length)),this.selectedFullArchType&&(this.results=this.results.filter((e=>e.full_arch===this.selectedFullArchType))),this.results.length&&(this.maximumPossibleSize=this.results.reduce(((e,t)=>e&&Number.isInteger(t.full_length)&&Number.isInteger(e.full_length)&&e.full_length>t.full_length?e:t)),this.maximumFullSize=this.maximumPossibleSize.full_length),this.getCache()},performSort(e){this.asc=!this.asc,this.results.sort(((t,l)=>t[e]>l[e]?this.asc?-1:1:t[e]<l[e]?this.asc?1:-1:void 0))},getCache(){this.dataOnly="true"===localStorage.getItem("dataOnly"),this.fullOnly="true"===localStorage.getItem("fullOnly"),this.noAscii="true"===localStorage.getItem("noAscii"),this.minimumFullSize=parseInt(localStorage.getItem("minimumFullSize"))||0,this.selectedFullArchType=localStorage.getItem("selectedFullArchType")}}};const q=(0,u.A)(H,[["render",G],["__scopeId","data-v-b337e81a"]]);var Y=q;const Z=e=>((0,a.Qi)("data-v-be25959e"),e=e(),(0,a.jt)(),e),ee={class:"container"},te={class:"text-danger"},le=Z((()=>(0,a.Lk)("p",{class:"text-info"}," Disassembly assumes a naive base address of 0. ",-1))),se={key:0},ne=Z((()=>(0,a.Lk)("b",null,"File Name: ",-1))),ae=Z((()=>(0,a.Lk)("b",null,"SHA256: ",-1))),ie=Z((()=>(0,a.Lk)("b",null,"Shannon Entropy: ",-1))),re=Z((()=>(0,a.Lk)("b",null,"Full Arch: ",-1))),oe=Z((()=>(0,a.Lk)("b",null,"Chunk Arch: ",-1))),ue=Z((()=>(0,a.Lk)("b",null,"Full Length: ",-1))),ce=Z((()=>(0,a.Lk)("b",null,"Chunk Length: ",-1))),he=Z((()=>(0,a.Lk)("b",null,"Chunk Count: ",-1)));function de(e,t,l,n,i,r){return(0,a.uX)(),(0,a.CE)(a.FK,null,[(0,a.Lk)("div",ee,[(0,a.Lk)("p",te,(0,d.v_)(i.errorMsg),1),le]),i.noState?(0,a.Q3)("",!0):((0,a.uX)(),(0,a.CE)("div",se,[(0,a.Lk)("span",null,[ne,(0,a.eW)((0,d.v_)(i.state.file_name),1)]),(0,a.eW)(" | "),(0,a.Lk)("span",null,[ae,(0,a.eW)((0,d.v_)(i.state.sha256),1)]),(0,a.eW)(" | "),(0,a.Lk)("span",null,[ie,(0,a.eW)(" "+(0,d.v_)(i.state.shannon_entropy),1)]),(0,a.eW)(" | "),(0,a.Lk)("span",null,[re,(0,a.eW)(" "+(0,d.v_)(i.state.full_arch),1)]),(0,a.eW)(" | "),(0,a.Lk)("span",null,[oe,(0,a.eW)(" "+(0,d.v_)(i.state.chunk_arch),1)]),(0,a.eW)(" | "),(0,a.Lk)("span",null,[ue,(0,a.eW)(" "+(0,d.v_)(i.state.full_length),1)]),(0,a.eW)(" | "),(0,a.Lk)("span",null,[ce,(0,a.eW)(" "+(0,d.v_)(i.state.chunk_length),1)]),(0,a.eW)(" | "),(0,a.Lk)("span",null,[he,(0,a.eW)(" "+(0,d.v_)(i.state.chunk_count),1)])])),(0,a.bo)((0,a.Lk)("textarea",{"onUpdate:modelValue":t[0]||(t[0]=e=>i.disassembly=e),class:"form-control"},"\n ",512),[[s.Jo,i.disassembly]])],64)}var me={name:"DisassemblyView",data(){return{errorMsg:"",disassembly:"",noState:!1,state:{}}},async mounted(){const e=localStorage.getItem("state");e?(this.noState=!1,this.state=JSON.parse(e),this.$route.params.sha256!==this.state.sha256&&(localStorage.clear(),this.state={},this.noState=!0)):this.noState=!0;let t=await fetch("/data/txt/disassembly/linux-firmware-db-"+this.$route.params.sha256+"-disassembly.txt");200===t.status?this.disassembly=await t.text():this.errorMsg="Disassembly not found, please try again later"},computed:{},methods:{}};const fe=(0,u.A)(me,[["render",de],["__scopeId","data-v-be25959e"]]);var pe=fe;const ke=[{path:"/",component:Y,name:"main"},{path:"/disassembly/:sha256",component:pe,name:"disassembly",props:!0}],ge=(0,n.aE)({history:(0,n.Bt)(),routes:ke});let ye=localStorage.getItem("refresh");ye=ye?parseInt(ye):0;let be=(0,s.Ef)(h);be.use(ge),be.mount("#app")}},t={};function l(s){var n=t[s];if(void 0!==n)return n.exports;var a=t[s]={exports:{}};return e[s].call(a.exports,a,a.exports,l),a.exports}l.m=e,function(){var e=[];l.O=function(t,s,n,a){if(!s){var i=1/0;for(c=0;c<e.length;c++){s=e[c][0],n=e[c][1],a=e[c][2];for(var r=!0,o=0;o<s.length;o++)(!1&a||i>=a)&&Object.keys(l.O).every((function(e){return l.O[e](s[o])}))?s.splice(o--,1):(r=!1,a<i&&(i=a));if(r){e.splice(c--,1);var u=n();void 0!==u&&(t=u)}}return t}a=a||0;for(var c=e.length;c>0&&e[c-1][2]>a;c--)e[c]=e[c-1];e[c]=[s,n,a]}}(),function(){l.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return l.d(t,{a:t}),t}}(),function(){l.d=function(e,t){for(var s in t)l.o(t,s)&&!l.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})}}(),function(){l.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()}(),function(){l.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}}(),function(){var e={524:0};l.O.j=function(t){return 0===e[t]};var t=function(t,s){var n,a,i=s[0],r=s[1],o=s[2],u=0;if(i.some((function(t){return 0!==e[t]}))){for(n in r)l.o(r,n)&&(l.m[n]=r[n]);if(o)var c=o(l)}for(t&&t(s);u<i.length;u++)a=i[u],l.o(e,a)&&e[a]&&e[a][0](),e[a]=0;return l.O(c)},s=self["webpackChunkweb"]=self["webpackChunkweb"]||[];s.forEach(t.bind(null,0)),s.push=t.bind(null,s.push.bind(s))}();var s=l.O(void 0,[504],(function(){return l(3832)}));s=l.O(s)})();
//# sourceMappingURL=app.bac85ec7.js.map