OLD | NEW |
(Empty) | |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 function Unzip(file, path, verbose) { |
| 6 if (verbose) { |
| 7 WScript.StdOut.Write(" * UNZIP " + file); |
| 8 } |
| 9 var shell_app; |
| 10 var fso; |
| 11 try { |
| 12 shell_app = new ActiveXObject("Shell.Application"); |
| 13 fso = new ActiveXObject("Scripting.FileSystemObject"); |
| 14 } catch (e) { |
| 15 WScript.StdOut.WriteLine("[-] OBJECTS " + new Number(e.number).toHex() + |
| 16 ": Cannot create Active-X object (" + e.description) + ")."; |
| 17 WScript.Quit(1); |
| 18 } |
| 19 // shell_app.Namespace() doesn't work with relative paths. |
| 20 //current_dir = fso.GetFolder('.').Path + '\\' |
| 21 //path = current_dir + path |
| 22 //file = current_dir + file |
| 23 var out; |
| 24 var zip; |
| 25 try { |
| 26 if (!fso.FolderExists(path)) { |
| 27 fso.CreateFolder(path); |
| 28 } |
| 29 out = shell_app.Namespace(path); |
| 30 } catch (e) { |
| 31 WScript.StdOut.WriteLine("[-] SHELL.APPLICATION " + |
| 32 new Number(e.number).toHex() + |
| 33 ": Failed to open output directory."); |
| 34 WScript.Quit(1); |
| 35 } |
| 36 if (!out) { |
| 37 WScript.StdOut.WriteLine("[-] SHELL.APPLICATION : Failed to open output dire
ctory."); |
| 38 WScript.Quit(1); |
| 39 } |
| 40 |
| 41 try { |
| 42 zip = shell_app.Namespace(file); |
| 43 } catch (e) { |
| 44 WScript.StdOut.WriteLine("[-] SHELL.APPLICATION " + |
| 45 new Number(e.number).toHex() + |
| 46 ": Failed to open zip file."); |
| 47 WScript.Quit(1); |
| 48 } |
| 49 if (!zip) { |
| 50 WScript.StdOut.WriteLine("[-] SHELL.APPLICATION " + |
| 51 ": Failed to open zip file."); |
| 52 WScript.Quit(1); |
| 53 } |
| 54 |
| 55 try { |
| 56 out.CopyHere(zip.Items()); |
| 57 } catch (e) { |
| 58 WScript.StdOut.WriteLine("[-] SHELL.APPLICATION " + |
| 59 new Number(e.number).toHex() + |
| 60 ": Failed to extract."); |
| 61 WScript.Quit(1); |
| 62 } |
| 63 if (verbose) { |
| 64 WScript.StdOut.WriteLine("ok."); |
| 65 } |
| 66 } |
| 67 |
| 68 // Utilities |
| 69 Number.prototype.isInt = function NumberIsInt() { |
| 70 return this % 1 == 0; |
| 71 }; |
| 72 Number.prototype.toHex = function NumberToHex(length) { |
| 73 if (arguments.length == 0) length = 1; |
| 74 if (typeof(length) != "number" && !(length instanceof Number)) { |
| 75 throw Exception("Length must be a positive integer larger than 0.", |
| 76 TypeError, 0); |
| 77 } |
| 78 if (length < 1 || !length.isInt()) { |
| 79 throw Exception("Length must be a positive integer larger than 0.", |
| 80 "RangeError", 0); |
| 81 } |
| 82 var result = (this + (this < 0 ? 0x100000000 : 0)).toString(16); |
| 83 while (result.length < length) result = "0" + result; |
| 84 return result; |
| 85 }; |
| 86 |
| 87 if (WScript.Arguments.length != 2) { |
| 88 WScript.StdOut.Write("Incorrect arguments to unzip.js") |
| 89 } else { |
| 90 Unzip(WScript.Arguments(0), WScript.Arguments(1), false); |
| 91 } |
OLD | NEW |