Advertisement
StringManolo

JEX

May 8th, 2020
583
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>JEX</title>
  6. <script>
  7. /* SHORTCUTJS lib by StringManolo.
  8. Use of the global Scope to code faster, reduce file sizes, reduce memory usage and make some code more readable/compact. Readable Version */
  9. (function (){
  10.   DEFINE=function(constant, value) {
  11.   if(window[constant]===undefined) {
  12.     window[constant] = value
  13.   } else {
  14.     throw new ReferenceError(constant + " is already a property of the global/window Object.\nRedefinition not allowed.");
  15.   }
  16. }
  17.  
  18. wrapQS=function(selector) {
  19.   return d.querySelector(selector)
  20. }
  21.  
  22. wrapQSA=function(selector) {
  23.   return d.querySelectorAll(selector)
  24. }
  25.  
  26. wrapAEL=function(elemnt, event, value) {
  27.   elemnt.addEventListener(event, value);
  28. }
  29.  
  30. DEFINE("d", window.document);
  31. DEFINE("w", window);
  32. DEFINE("$", wrapQS);
  33. DEFINE("$$", wrapQSA);
  34. DEFINE("dw", d.write);
  35. DEFINE("_", window.alert);
  36. DEFINE("ael", wrapAEL);
  37.  
  38. })();
  39. </script>
  40. </head>
  41. <body>
  42. <input type="file" id="inp">
  43. <br />
  44. <section>
  45. <button type="button" id="Compilar">Compile</button>
  46. <button type="button" id="Info">Info</button>
  47. <br />
  48. <div id="top">
  49. <textarea id="addressRes" readonly>ADDRESS</textarea>
  50. <textarea id="respuesta" contentEditable="true">HEX</textarea>
  51. </div>
  52. <br />
  53. <div id="bottom">
  54. <textarea id="addressRes2" readonly>ADDRESS</textarea>
  55. <textarea id="respuesta2" readonly>ASCII PRINTABLE CHARACTERS</textarea>
  56. </div>
  57. </section>
  58. <style>
  59. textarea {
  60.  
  61. width: 75%;
  62. height: 200px;
  63. overflow: scroll;
  64. background-color: #fff;
  65. text-size-adjust: none;
  66. font-family: Verdana, Arial, Helvetica, sans-serif;
  67. font-size: 33px;
  68. border-style: none;
  69. text-align: justify;
  70. white-space: pre-line;
  71. resize: none;
  72. -moz-text-align-last: justify;
  73. text-align-last: justify;
  74. }
  75.  
  76. #top, #bottom {
  77.   display: flex;
  78.   background-color: #eee;
  79.   text-align: justify;
  80. }
  81.  
  82. #addressRes, #addressRes2 {
  83.   width: 20%;
  84.   font-family: Verdana, Arial, Helvetica, sans-serif;
  85.   font-size: 33px;
  86.   background-color: #ddd;
  87.   text-align: center;
  88. }
  89. </style>
  90.  
  91. <script>
  92. let bin = {}
  93.  
  94. if(!(w.FileReader && w.Blob))
  95.   _("Tu navegador no soporta el manejo de archivos.");
  96.  
  97.  
  98. function hexDump(file) {
  99.   return new Promise((res, rej) => {
  100.     if(!(file instanceof Blob))
  101.       rej('Elige Un Archivo');
  102.     const fr = new FileReader();
  103.     fr.onload = e => {
  104.       try {
  105.         res(hex(fr.result));
  106.       } catch(err) {}
  107.     };
  108.     fr.onerror = e => rej('No se pudo leer');
  109.     fr.readAsArrayBuffer(file);
  110.   });
  111.  
  112.   function hex(buffer) {
  113.     const hexCodes = [];
  114.     let view;
  115.     try {
  116.       view = new DataView(buffer);
  117.     } catch(err) {}
  118.     for(let i=0; i<view.byteLength; i+=4) {
  119.       let value;
  120.       try{
  121.         value = view.getUint32(i);
  122.       } catch(err) {}
  123.       let stringValue;
  124.       try{
  125.         stringValue = value.toString(16);
  126.       } catch(err) {}
  127.       let padding = '00000000';
  128.       let paddedValue;
  129.       try{
  130.         paddedValue = (padding+stringValue).slice(-padding.length).toUpperCase();
  131.       } catch(err) {}
  132.       hexCodes.push(paddedValue.slice(0, 4),
  133.       paddedValue.slice(4, 8));
  134.     }
  135.     try {
  136.       hexCodes.join(' ');
  137.     } catch(err) {}
  138.     let finalx = [];                                           for(let i=1; i < hexCodes.length+1; ++i) {
  139.       try{
  140.         finalx += hexCodes[i-1];
  141.       } catch(err) {}
  142.     }
  143.     bin.hex = {};
  144.     bin.hex.raw = finalx;
  145.     return finalx;
  146.   }
  147. }
  148.  
  149. let hexSinFormato;
  150.  
  151. ael($("#Compilar"), "click", function() {
  152.   CompilarBin($("#respuesta").value);
  153. });
  154.  
  155. ael($("#Info"), "click", function() {
  156.   MostrarInfo($("#respuesta").value);
  157. });
  158.  
  159. function getRawDatos(datos) {
  160.   return datos.replace(/(\r\n|\n|\r)/gm,"").replace(/\s/gm,"");
  161. }
  162.  
  163. function CompilarBin(datos) {
  164.   datos = getRawDatos(datos);
  165.   window.location=URL.createObjectURL(Compile(datos));
  166. }
  167.  
  168. function MostrarInfo(datos) {
  169.   datos = getRawDatos(datos);
  170.   let rawHeader = "";
  171.   for (let i = 0; i < 48; ++i)
  172.     rawHeader += datos[i];
  173.  
  174.   bin.info = {};
  175.   bin.info.type = MimeType(rawHeader);
  176.   bin.info.rawHeader = bin.info.type;
  177.   bin.info.arch = "unavailable";
  178.   bin.info.dataEncoding = "unavailable";
  179.   bin.info.ABI = "unavailable";
  180.   bin.info.machine = "unavailable";
  181.   bin.info.entryPoint = "unavailable";
  182.   bin.info.programHeaderT = "unavailable";
  183.   bin.info.sectionHeaderT = "unavailable";
  184.  
  185.   function MimeType(header) {
  186.     function CompareMagicN(header, magic) {
  187.       for(let j = 0; j < magic.length; ++j) {
  188.         if (magic[j] != header[j])
  189.       return 0;
  190.       }
  191.       return magic;
  192.     }
  193.  
  194.     let magicN = ("2321,a1b2c3d4,d4c3b2a1,0a0d0d0a,edabeedb,53514c69746520666f726d6174203300,"+
  195. "53503031,00,000000000000000000000000000000000000000000,bebafeca,00014244,00014454,54444624,"+
  196. "54444546,00010000,00000100,667479703367,1f9d,1fa0,4241434b4d494b454449534B,425a68,474946383761,"+
  197. "474946383961,49492a00,4d4d002a,49492a00100000004352,802a5fd7,524e4301,524e4302,53445058,58504453,"+
  198. "762f3101,425047fb,ffd8ffdb,ffd8ffe000104a4649460001,ffd8ffee,ffd8ffe1,464f524d,464f524d,464f524d,464f524d,464f524d,464f524d,464f524d,"+
  199. "464f524d,464f524d,464f524d,464f524d,464f524d,494e4458,4c5a4950,4d5a,504b0304,504b0506,504b0708,"+
  200. "526172211a0700,526172211a070100,5a4d,7f454c46,89504e470d0a1a0a,c9,cafebabe,efbbbf,feedface,feedfacf,"+
  201. "feedfeed,cefaedfe,cffaedfe,fffe,fffe0000,25215053,255044462d,3026b2758e66cf11a6d900aa0062ce6c,"+
  202. "2453444930303031,4f676753,38425053,52494646,52494646,fffb,494433,424d,4344303031,53494d504c452020,"+
  203. "3d202020202020202020202020202020202020202054,664c6143,4d546864,d0cf11e0a1b11ae1,6465780a30333500,"+
  204. "4b444d,43723234,41474433,05070000424f424f05070000000000000000000001,0607e100424f424f0607e10000000000000000000001,455202000000,8b455202000000,"+
  205. "7801730d626260,78617221,504d4f43434d4f43,4e45531a,7573746172003030,7573746172202000,"+
  206. "746f7833,4d4c5649,44434d0150413330,377abcaf271c,1f8b,fd377a585a0000,04224d18,4d534346,535a444488f02733,"+
  207. "464c4946,1a45dfa3,4d494c20,41542654464f524d,3082,4449434d,774f4646,774f4632,3c3f786d6c20,0061736d,cf8401,"+
  208. "435753,465753,213c617263683e,52494646,27051956,7b5c72746631,54415045,47,000001ba,000001ba,47,000001b3,"+
  209. "7801,789c,78da,62767832,4f5243,4f626a01,53455136,65877856,5555aaaa,785634,50415231,454d5832,"+
  210. "454d5533,1b4c7561,626f6f6b000000006d61726b00000000,5b5a6f6e655472616e736665725d,5265636569766564,"+
  211. "20020162a01eab0702000000,3748030200000000583530394b4559,85010c03,28b52ffd,3a290a,4a6f7921,310a3030,"+
  212. "3c21444f43545950452068746d6c3e,"+
  213. "3c68746d6c3e,23696e636c756465,7061636b61676520,0001028bae6c5b291cc78e25470b8625,56455253494f4e20352e30300d0a426567696e2056422e46,"+
  214. "466f726d31203d2034362c2034372c20,547970653d4578650d0a466f726d3d,696d706f727420,3c3f706870").toUpperCase();
  215.  
  216.     let typeN = "shebang,pcap,pcap,pcapng,rpm,sqlitedb/sqlite/db,bin,PIC/PIF/SEA/YTR,PDB,DBA,DBA,TDA,TDF$,"+
  217. "TDEF,n/a,ico,3gp/3g2,z/tar.z,z/tar.z,bac,bz2,gif,gif,tif/tiff,tif/tiff,cr2,cin,n/a,n/a,dpx,dpx,exr,"+
  218. "bpg,jpg/jpeg,jpg/jpeg,jpg/jpeg,jpg/jpeg,ilbm/lbm/ibm/iff,8svx/8sv/svx/snd/iff,acbm/iff,anbm/iff,anim/iff,faxx/fax/iff,"+
  219. "ftxt/iff,smus/smu/mus/iff,cmus/mus/iff,yuvn/yuv/iff,iff,aiff/aif/aifc/snd/iff,idx,lz,exe/dll,"+
  220. "zip/aar/apk/docx/epub/ipa/jar/kmz/maff/odp/ods/odt/pk3/pk4/pptx/usdz/vsdx/xlsc/xpi,"+
  221. "zip/aar/apk/docx/epub/ipa/jar/kmz/maff/odp/ods/odt/pk3/pk4/pptx/usdz/vsdx/xlsc/xpi,"+
  222. "zip/aar/apk/docx/epub/ipa/jar/kmz/maff/odp/ods/odt/pk3/pk4/pptx/usdz/vsdx/xlsc/xpi,rar,rar,exe,bin/axf/elf/o/prx/puff/ko/mod/so,"+
  223. "png,com,class,n/a,n/a,n/a,n/a,n/a,n/a,n/a,n/a,ps,pdf,asf/wma/wmv,n/a,ogg/oga/ogv,psd,wav,avi,mp3,mp3,"+
  224. "bpm/dib,iso,fits,fits,flac,mid/midi,doc/xls/ppt/msg,dex,vmdk,crx,fh8,cwk,cwk,toast,toast,dmg,xar,dat,nes,"+
  225. "tar,tar,tox,MLV,n/a,7z,gz/tar.gz,xz/tar.xz,lz4,cab,??_,flif,mkv/mka/mks/mk3d/webm,stg,djvu/djv,der,dcm,woff,"+
  226. "woff2,XML,wasm,lep,swf,swf,deb,webp,n/a,rtf,n/a,ts/tsv/tsa,m2p/vob,mpg/mpeg,mpg/mpeg,mpg/mpeg,zlib,zlib,zlib,"+
  227. "lzfse,orc,avro,rc,p25/obt,pcv,pbt/pdt/pea/peb/pet/pgt/pict/pjt/pkt/pmt,n/a,ez2,ez3/iso,luac,alias,Identifier,"+
  228. "eml,tde,kdb,pgp,zst,sml,n/a,srt,html,html,c/cpp,java,"+
  229. "db.crypt1,frm,vbw,vbp,py,php";
  230.  
  231.     magicN = magicN.split(',');
  232.     typeN = typeN.split(',');
  233.     bin.info.type = "unavailable";
  234.     for (let k = 0; k < magicN.length; ++k) {
  235.       if(CompareMagicN(header, magicN[k])) {
  236.         bin.info.type = magicN[k];
  237.     bin.info.typeString = HexToAscii(magicN[k]);
  238.     bin.info.typeExtension = typeN[k];
  239.       }
  240.     }
  241.    
  242.     if(bin.info.type != "unavailable") {
  243.       _("Cabecera:\n" + bin.info.type);                          _("Cabecera en ascii:\n" + bin.info.typeString);           _("Extension de archivo:\n" + bin.info.typeExtension);
  244.  
  245. /* The switch stuff is just extra type dependent info. */
  246.       switch (bin.info.typeExtension) {
  247.         case "bin/axf/elf/o/prx/puff/ko/mod/so":
  248. /* ELF */
  249.       if(datos[9] == 1)
  250.         bin.info.arch = "x86";
  251.       else if (datos[9] == 2)
  252.         bin.info.arch = "x64";
  253.       else
  254.         _("No se pudo determinar la arquitectura. Bit = " + datos[9]);
  255.       _("Arquitectura: " + bin.info.arch)
  256.       if(datos[11] == 1)
  257.         bin.info.encoding = "LSB";
  258.       else if(datos[11] == 2)
  259.         bin.info.encoding = "MSB";
  260.           else
  261.         _("No se pudo determinar el encoding. Bit = " + datos[9]);
  262.       _("Encoding: " + bin.info.encoding);
  263.           for(let k = 32,tmp=""; k < 36; ++k) {
  264.         tmp += datos[k];
  265.         bin.info.ABI = tmp;
  266.       }
  267.  
  268.       for(let k = 36,tmp=""; k < 40; ++k) {                        tmp += datos[k];                                           bin.info.machine = tmp;
  269.       }
  270.  
  271.       if(bin.info.arch != "unavailable") {
  272.         let bytes = 4*2, baseAddress = 48;
  273.         if(bin.info.arch == "x64")
  274.           bytes = 8*2;
  275.         for(let k = 48,tmp=""; k < (baseAddress + bytes); ++k) {
  276.               tmp += datos[k];
  277.           bin.info.entryPoint = tmp;
  278.         }
  279.             baseAddress += bytes;
  280.  
  281.         for(let k = baseAddress ,tmp=""; k < (baseAddress + bytes); ++k) {
  282.               tmp += datos[k];
  283.           bin.info.programHeaderT = tmp;
  284.         }
  285.             baseAddress += bytes;
  286.  
  287.         for(let k = baseAddress,tmp=""; k < (baseAddress+bytes); ++k) {
  288.               tmp += datos[k];
  289.           bin.info.sectionHeaderT = tmp;
  290.         }
  291.       }
  292.    
  293.       /* Format Little Endian */
  294.           function formatLSB(hexa) {
  295.         return hexa.match(/../g).reverse().join('');
  296.       }
  297.  
  298.       if(bin.info.encoding == "LSB") {
  299.         bin.info.ABI = formatLSB(bin.info.ABI);
  300.         bin.info.machine = formatLSB(bin.info.machine);
  301.         bin.info.entryPoint = formatLSB(bin.info.entryPoint);
  302.         bin.info.programHeaderT = formatLSB(bin.info.programHeaderT);
  303.         bin.info.sectionHeaderT = formatLSB(bin.info.sectionHeaderT);
  304.       }
  305.  
  306.       else if(bin.info.encoding == "MSB");
  307.       else /* Check for more encodings to handle*/;
  308.  
  309. _("Entry Point:\n" + bin.info.entryPoint + "\n" + parseInt(bin.info.entryPoint,16));
  310. _("Program Header\n" + bin.info.programHeaderT);
  311. _("Section Header\n" + bin.info.sectionHeaderT);
  312.  
  313.  
  314.       switch(parseInt(bin.info.ABI, 16)) {
  315.            
  316.         case 0:
  317.               bin.info.ABI = "System V";
  318.         break;
  319.        
  320.         case 1:
  321.           bin.info.ABI = "Hewlett-Packard HP-UX";
  322.         break;
  323.  
  324.         case 2:
  325.           bin.info.ABI = "NetBSD";
  326.         break;
  327.  
  328.         case 3:
  329.           bin.info.ABI = "Linux";
  330.         break;
  331.  
  332.         case 4:
  333.           bin.info.ABI = "GNU Hurd";
  334.         break;
  335.  
  336.         case 6:
  337.           bin.info.ABI = "Sun Solaris";
  338.         break;
  339.  
  340.         case 7:
  341.           bin.info.ABI = "AIX";
  342.         break;
  343.  
  344.         case 8:
  345.           bin.info.ABI = "IRIX";
  346.         break;
  347.      
  348.         case 9:
  349.           bin.info.ABI = "FreeBSD";
  350.         break;
  351.  
  352.         case 10:
  353.           bin.info.ABI = "Compaq Tru64 UNIX";
  354.         break;
  355.  
  356.         case 11:
  357.           bin.info.ABI = "Novell Modesto";
  358.         break;
  359.  
  360.         case 12:
  361.           bin.info.ABI = "OpenBSD";
  362.         break;
  363.  
  364.         case 13:
  365.           bin.info.ABI = "OpenVMS";
  366.         break;
  367.  
  368.         case 14:
  369.           bin.info.ABI = "Hewlett-Packard NonStop Kernel";
  370.         break;
  371.  
  372.         case 15:
  373.           bin.info.ABI = "Amiga Research AROS";
  374.         break;
  375.  
  376.         case 16:
  377.           bin.info.ABI = "Fenix OS";
  378.         break;
  379.  
  380.         case 17:
  381.           bin.info.ABI = "CloudABI";
  382.         break;
  383.      
  384.         case 18:
  385.           bin.info.ABI = "Stratus Technologies OpenVOS";
  386.         break;
  387.  
  388.         case 97:
  389.           bin.info.ABI = "ARM";
  390.         break;
  391.  
  392.         case 255:
  393.           bin.info.ABI = "Standalone Application";
  394.         break;
  395.  
  396.         defualt:
  397.           bin.info.ABI = "UNKNOWN";
  398.       }
  399.  
  400.       _("Application Binary Interface: " + bin.info.ABI);
  401.  
  402.       switch(parseInt(bin.info.machine,16)) {
  403.  
  404.         case 0:
  405.           bin.info.machine = "Defualt";
  406.         break;
  407.  
  408.         case 1:
  409.           bin.info.machine = "AT&T WE 32100";
  410.         break;
  411.  
  412.         case 2:
  413.           bin.info.machine = "Sun SPARC";
  414.         break;
  415.  
  416.         case 3:
  417.           bin.info.machine = "Intel 80386";
  418.         break;
  419.  
  420.         case 4:
  421.           bin.info.machine = "Motorola 68000";
  422.         break;
  423.  
  424.         case 5:
  425.           bin.info.machine = "Motorola 88000";
  426.         break;
  427.  
  428.         case 6:
  429.           bin.info.machine = "Intel 80486";
  430.         break;
  431.  
  432.         case 7:
  433.           bin.info.machine = "Intel i860";
  434.         break;
  435.  
  436.         case 8:
  437.           bin.info.machine = "MIPS RS3000 Big-Endian";
  438.         break;
  439.  
  440.         case 9:
  441.           bin.info.machine = "IBM System/370 Processor";
  442.         break;
  443.  
  444.         case 10:
  445.           bin.info.machine = "MIPS RS3000 Little-Endian";
  446.         break;
  447.  
  448.         case 11:
  449.           bin.info.machine = "RS6000";
  450.         break;
  451.  
  452.         case 12:
  453.         case 13:
  454.         case 14:
  455.           bin.info.machine = "UNKNOWN";
  456.         break;
  457.  
  458.         case 15:
  459.           bin.info.machine = "PA-RISC";
  460.         break;
  461.  
  462.         case 16:
  463.           bin.info.machine = "nCUBE";
  464.         break;
  465.  
  466.         case 17:
  467.           bin.info.machine = "Fujitsu VPP500";
  468.         break;
  469.  
  470.         case 18:
  471.           bin.info.machine = "Sun SPARC 32+";
  472.         break;
  473.  
  474.         case 19:
  475.           bin.info.machine = "Intel 80960";
  476.         break;
  477.  
  478.         case 20:
  479.           bin.info.machine = "PowerPC";
  480.         break;
  481.  
  482.         case 21:
  483.           bin.info.machine = "64-bit PowerPC";
  484.         break;
  485.  
  486.         case 22:
  487.           bin.info.machine = "IBM System/390 Processor";
  488.         break;
  489.  
  490.         case 23:
  491.         case 24:
  492.         case 25:
  493.         case 26:
  494.         case 27:
  495.         case 28:
  496.         case 29:
  497.         case 30:
  498.         case 31:
  499.         case 32:
  500.         case 33:
  501.         case 34:
  502.         case 35:
  503.           bin.info.machine = "UNKNOWN";
  504.         break;
  505.  
  506.         case 36:
  507.           bin.info.machine = "NEX V800";
  508.         break;
  509.  
  510.         case 37:
  511.           bin.info.machine = "Fujitsu FR20";
  512.         break;
  513.  
  514.         case 38:
  515.           bin.info.machine = "TRW RH-32";
  516.         break;
  517.  
  518.         case 39:
  519.           bin.info.machine = "Motorola RCE";
  520.         break;
  521.  
  522.         case 40:
  523.           bin.info.machine = "Advanced RISC Machines ARM";
  524.         break;
  525.  
  526.         case 41:
  527.           bin.info.machine = "Digital Alpha";
  528.         break;
  529.  
  530.         case 42:
  531.           bin.info.machine = "Hitachi SH";
  532.         break;
  533.  
  534.         case 43:
  535.           bin.info.machine = "Sun SPARC V9 (64-bit)";
  536.         break;
  537.  
  538.         case 44:
  539.           bin.info.machine = "Siemens Tricore embedded processor";
  540.         break;
  541.  
  542.         case 45:
  543.           bin.info.machine = "Argonaut RISC Core / Argonaut Technologies Inc";
  544.         break;
  545.  
  546.         case 46:
  547.           bin.info.machine = "Hitachi H8/300";
  548.         break;
  549.  
  550.         case 47:
  551.           bin.info.machine = "Hitachi H8/300H";
  552.         break;
  553.  
  554.         case 48:
  555.           bin.info.machine = "Hitachi H8S";
  556.         break;
  557.  
  558.         case 49:
  559.           bin.info.machine = "Hitachi H8/500";
  560.         break;
  561.  
  562.         case 50:
  563.           bin.info.machine = "Intel IA 64";
  564.         break;
  565.  
  566.         case 51:
  567.           bin.info.machine = "Stanford MIPS-X";
  568.         break;
  569.    
  570.         case 52:
  571.           bin.info.machine = "Motorla ColdFire";
  572.         break;
  573.  
  574.         case 53:
  575.           bin.info.machine = "Motorola M68HC12";
  576.         break;
  577.  
  578.         case 54:
  579.               bin.info.machine = "Fujitsu MMA Multimedia Acelerator";
  580.         break;
  581.  
  582.         case 55:
  583.           bin.info.machine = "Siemens PCP";                        break;
  584.  
  585.         case 56:
  586.           bin.info.machine = "Sony nCPU embedded RISC processor";                                  
  587.         break;
  588.  
  589.         case 57:
  590.               bin.info.machine = "Denso NDR1 microprocessor";                                
  591.         break;
  592.  
  593.         case 58:
  594.               bin.info.machine = "Motorola Star*Core processor";                                  
  595.         break;
  596.        
  597.         case 59:
  598.           bin.info.machine = "Toyota ME16 processor";
  599.         break;
  600.  
  601.         case 60:
  602.           bin.info.machine = "STMicroelectronics ST100";        
  603.         break;
  604.  
  605.         case 61:
  606.           bin.info.machine = "Advanced Logic Corp. TinyJ";                        
  607.         break;
  608.  
  609.         case 62:
  610.           bin.info.machine = "AMDs x86-64 architecture";                                  
  611.         break;
  612.  
  613.         case 63:
  614.           bin.info.machine = "Sony DSP Processor";
  615.         break;
  616.  
  617.         case 64:
  618.         case 65:
  619.           bin.info.machine = "UNKNOWN";
  620.         break;
  621.  
  622.         case 66:
  623.           bin.info.machine = "Siemens FX66 microcontroller";                                  
  624.         break;
  625.  
  626.         case 67:
  627.           bin.info.machine = "STMicroelectrics ST9+8/16 bit";                                  
  628.         break;
  629.  
  630.         case 68:
  631.           bin.info.machine = "STMicroelectrics ST7 8-bit";                                  
  632.         break;
  633.  
  634.         case 69:
  635.           bin.info.machine = "Motorola MC68HC16 Microcontroller";                                  
  636.         break;
  637.  
  638.         case 70:
  639.           bin.info.machine = "Motorola MC68HC11 Microcontroller";                                  
  640.         break;
  641.        
  642.         case 71:
  643.           bin.info.machine = "Motorola MC68HC08 Microcontroller";                                  
  644.         break;
  645.  
  646.         case 72:
  647.           bin.info.machine = "Motorola MC68HC05 Microcontroller";                                  
  648.         break;
  649.  
  650.         case 73:
  651.           bin.info.machine = "Silicon Graphics SVx";
  652.         break;
  653.  
  654.         case 74:
  655.           bin.info.machine = "STMicroelectrics ST19 8-bit";                                  
  656.         break;
  657.  
  658.         case 75:
  659.           bin.info.machine = "Digital VAX";
  660.         break;
  661.  
  662.         case 76:
  663.           bin.info.machine = "Axis Communications 32-bit";                                  
  664.         break;
  665.  
  666.         case 77:
  667.           bin.info.machine = "Infineon Technologies 32-bit";                                  
  668.         break;
  669.  
  670.         case 78:
  671.           bin.info.machine = "Element 14 64-bit DSP Processor";                                  
  672.         break;
  673.  
  674.         case 79:
  675.           bin.info.machine = "LSI Logic 16-bit DSP Processor";                                  
  676.         break;
  677.  
  678.         case 80:
  679.           bin.info.machine = "Donald Knuth's educational";                                  
  680.         break;
  681.  
  682.         case 81:
  683.           bin.info.machine = "Harvard University";
  684.         break;
  685.  
  686.         case 82:
  687.           bin.info.machine = "SiTera Prism";
  688.         break;
  689.  
  690.         case 83:
  691.           bin.info.machine = "Atmel AVR 8-bit microcontroller";                                  
  692.         break;
  693.  
  694.         case 84:
  695.           bin.info.machine = "Fujitsu FR30";
  696.         break;
  697.  
  698.         case 85:
  699.           bin.info.machine = "Mitsubishi D10V";
  700.         break;
  701.  
  702.         case 86:
  703.           bin.info.machine = "Mitsubishi D30V";
  704.         break;
  705.  
  706.         case 87:
  707.           bin.info.machine = "NEC v850";
  708.         break;
  709.        
  710.         case 88:
  711.           bin.info.machine = "Mitsubishi M32R";
  712.         break;
  713.  
  714.         case 89:
  715.           bin.info.machine = "Matsushita MN10300";
  716.         break;
  717.  
  718.         case 90:
  719.           bin.info.machine = "Matsushita MN10200";
  720.         break;
  721.  
  722.         case 91:
  723.           bin.info.machine = "picoJava";
  724.         break;
  725.  
  726.         case 92:
  727.           bin.info.machine = "OpenRISC 32-bit embedded";
  728.         break;
  729.  
  730.         case 93:
  731.           bin.info.machine = "ARC Cores Tangent-AS";
  732.         break;
  733.  
  734.         case 94:
  735.           bin.info.machine = "Tensilica Xtensa architecture";                                  
  736.         break;
  737.  
  738.         default:
  739.           bin.info.machine = "UNKNOWN";
  740.  
  741.       }
  742.       _("ELF compilado para: " + bin.info.machine);
  743.       /* CHECK TABLE TO COMPARE */
  744.         break;
  745.  
  746.         case "exe/dll":
  747.         /* Extract PE headers data */
  748.  
  749.     break;
  750.  
  751.  
  752.       }
  753.  
  754.     } else
  755.       _("No se pudo determinar el tipo de archivo");
  756.  
  757.     bin.info.size = +(datos).length;
  758.       _("Tamaño de archivo:\n" + bin.info.size/2048 +"KB");
  759.   return header;
  760.   }
  761. }
  762.  
  763.  
  764. inp.onchange = e => {
  765.   _("Analizando...");
  766.   hexDump(inp.files[0])
  767.   .then(hex => {
  768.     hexSinFormato=hex;
  769.     $("#respuesta").value=Format(hex, 4, " ", 32);
  770.     $("#respuesta2").value=Format(HexToAscii(hexSinFormato), 2, "  ", 16, " ");
  771.     $("#addressRes").value=agregarDirecciones(contarLineas(hexSinFormato, 32));
  772.     $("#addressRes2").value=agregarDirecciones(contarLineas(hexSinFormato, 32));
  773.   })
  774.   .catch(e => _(e));
  775. }
  776.  
  777. function HexToAscii(hex) {
  778.   hex = hex.toString();
  779.   let str = "";
  780.   for (let i=0; i < hex.length; i+=2) {
  781.     if(parseInt(hex.substr(i, 2), 16) > 31 && parseInt(hex.substr(i, 2), 16)  < 128) {     
  782.       switch (parseInt(hex.substr(i, 2), 16)) {
  783.         case 32:
  784.         str += " ";
  785.     break;
  786.              
  787.         default:
  788.     str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));
  789.       }
  790.     } else
  791.       str += ".";
  792.   }  
  793.   return str;
  794. }
  795.  
  796.  
  797. function Format(texto, padding, separador, paddingSalto, spacing="") {
  798.   let str = "";
  799.   for(let j=1; j < texto.length+1; ++j) {
  800.     str += spacing + "" + texto[j-1];
  801.     if(j % padding == 0)
  802.       str+= separador;                                    
  803.  
  804.     if(j >= paddingSalto) {
  805.       if(j % paddingSalto  == 0)
  806.         str += "\n\n";  
  807.     }
  808.   }
  809.   bin.hex.formated = str;
  810.   return str;
  811. }
  812.  
  813.  
  814. function Compile(hexData) {
  815.   let byteArray = new Uint8Array(hexData.match(/.{2}/g)
  816.   .map(e => parseInt(e, 16)));
  817.   let blob = new Blob([byteArray], {type:"application/octet-stream"});
  818.   return blob;
  819. }
  820.  
  821. function SyncDivs(div1, div2, div3, div4) {
  822.   function selectScroll(e) {
  823.     $(div2).scrollTop = $(div1).scrollTop
  824.     $(div3).scrollTop = $(div2).scrollTop
  825.   }
  826.  
  827.   function selectScroll2(e) {
  828.     $(div1).scrollTop = $(div2).scrollTop
  829.     $(div4).scrollTop = $(div1).scrollTop
  830.   }
  831.  
  832.   ael($(div1), "scroll", selectScroll, 0);
  833.   ael($(div2), "scroll", selectScroll2, 0);
  834. }
  835. SyncDivs("#respuesta", "#respuesta2", "#addressRes", "#addressRes2");
  836.  
  837. function contarLineas(hex, caracteresPorLinea) {
  838.   return hex.length/caracteresPorLinea;
  839. }
  840.  
  841. function agregarDirecciones(lineas) {
  842.   let tmp = "", tmp2 = "";
  843.   for(let i = 0,m = 0; i < lineas; ++i) {
  844.     tmp2 = "0x00000000".split("");
  845.     if(i > 0) {
  846.       tmp3 = (i*16).toString(16).toUpperCase().split().reverse().join('');
  847.  
  848.     }
  849.     else
  850.       tmp3 = i.toString(16).toUpperCase().split().reverse().join('');  
  851.  
  852.     for (let k = 0; k < tmp3.length; ++k) {
  853.       tmp2.pop();
  854.     }
  855.    
  856.     for (let k = 0; k < tmp3.length; ++k) {
  857.       tmp2.push(tmp3[k]);
  858.     }
  859.     tmp2 = tmp2.join("");
  860.     tmp += tmp2 + "\n\n";
  861.   }
  862.   return tmp;
  863. }
  864.  
  865. </script>
  866. </body>
  867. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement