officecrypto-tool
Advanced tools
Comparing version 0.0.7 to 0.0.8
25
index.js
@@ -11,4 +11,4 @@ /* eslint-disable valid-jsdoc */ | ||
const doc97File = require('./src/util/doc97'); | ||
const ppt97File = require('./src/util/ppt97'); | ||
/** | ||
@@ -80,2 +80,8 @@ * | ||
const PowerPointBook = CFB.find(cfb, 'PowerPoint Document'); | ||
if (PowerPointBook) { | ||
output = ppt97File.decrypt(cfb, PowerPointBook.content, password, input); | ||
return output; | ||
} | ||
if (!encryptionInfo) return input; // Not encrypted returns directly to the original buffer | ||
@@ -159,2 +165,19 @@ | ||
const PowerPointBook = CFB.find(cfb, 'PowerPoint Document'); | ||
if (PowerPointBook) { | ||
let blob = PowerPointBook.content; | ||
if (!Buffer.isBuffer(blob)) blob = Buffer.from(blob); | ||
const CurrentUser = CFB.find(cfb, 'Current User'); | ||
let currentUserBlob = CurrentUser.content; | ||
if (!Buffer.isBuffer(currentUserBlob)) currentUserBlob = Buffer.from(currentUserBlob); | ||
const currentUser = ppt97File.parseCurrentUser(currentUserBlob); | ||
blob.l = currentUser.currentUserAtom.offsetToCurrentEdit; | ||
const userEditAtom = ppt97File.parseUserEditAtom(blob); | ||
if (userEditAtom.rh.recLen === 0x00000020) { | ||
return true; | ||
} | ||
} | ||
return false; | ||
@@ -161,0 +184,0 @@ } |
{ | ||
"name": "officecrypto-tool", | ||
"version": "0.0.7", | ||
"version": "0.0.8", | ||
"description": "officeCrypto is a library for node.js that can be used to decrypt and encrypt excel files.", | ||
@@ -5,0 +5,0 @@ "keywords": [ |
@@ -9,3 +9,3 @@ # officecrypto-tool | ||
Now it supports encryption and decryption of` MS office and WPS files`, Support doc docx xls xlsx pptx decryption, support docx xlsx pptx encryption. | ||
Now it supports encryption and decryption of` MS office and WPS files`, Support `doc docx xls xlsx ppt pptx` decryption, support `docx xlsx pptx` encryption. | ||
@@ -77,3 +77,3 @@ ## Contents | ||
* [x] MS-XLS (Excel 2002, 2003, 2004) (experimental) | ||
* [] MS-PPT (PowerPoint 2002, 2003, 2004) (partial, experimental) | ||
* [x] MS-PPT (PowerPoint 2002, 2003, 2004) (partial, experimental) | ||
* [x] Office Binary Document RC4 | ||
@@ -80,0 +80,0 @@ * [x] MS-DOC (Word 97, 98, 2000) |
@@ -42,6 +42,5 @@ /* eslint-disable valid-jsdoc */ | ||
*/ | ||
exports.decrypt = function decrypt(password, salt, KeySize, input, blocksize = 0x200) { | ||
exports.decrypt = function decrypt(password, salt, KeySize, input, blocksize = 0x200, block = 0) { | ||
let start = 0; | ||
let end = 0; | ||
let block = 0; | ||
let key = convertPasswordToKey(password, salt, KeySize, block); | ||
@@ -48,0 +47,0 @@ |
15
test.js
@@ -11,5 +11,14 @@ | ||
const input = await fs.readFile(`${filePath}/xor_pass_length_5_test.xls`); | ||
const output = await officeCrypto.decrypt(input, {password: 'xxxxx'}); | ||
await fs.writeFile(`${filePath}/xor_pass_length_5_out_success.xls`, output); | ||
// const input = await fs.readFile(`${filePath}/xor_pass_length_5_test.xls`); | ||
// const output = await officeCrypto.decrypt(input, {password: 'xxxxx'}); | ||
// await fs.writeFile(`${filePath}/xor_pass_length_5_out_success.xls`, output); | ||
// const input = await fs.readFile(`${filePath}/rc4_pass.ppt`); | ||
// const output = await officeCrypto.decrypt(input, {password: '123456'}); | ||
// await fs.writeFile(`${filePath}/rc4_out_success.ppt`, output); | ||
// const input = await fs.readFile(`${filePath}/rc4_pass.ppt`); | ||
const input = await fs.readFile(`${filePath}/rc4_out_success.ppt`); | ||
const isEncrypted = officeCrypto.isEncrypted(input); | ||
console.log('isEncrypted-->', isEncrypted); | ||
})(); |
@@ -25,2 +25,9 @@ | ||
it('decrypt ppt success', async () => { | ||
const input = await fs.readFile(`${filePath}/rc4_pass.ppt`); | ||
const output = await officeCrypto.decrypt(input, {password: '123456'}); | ||
await fs.writeFile(`${filePath}/rc4_out_success.ppt`, output); | ||
// expect(200).toEqual(200); | ||
}); | ||
it('decrypt unencrypted doc success', async () => { | ||
@@ -56,2 +63,13 @@ const input = await fs.readFile(`${encryptFilePath}/doc_wait_for_encrypt.doc`); | ||
}); | ||
it('decrypt rc4_crypto_api ppt, the password is incorrect', async () => { | ||
const test = function test() { | ||
return async function() { | ||
const input = await fs.readFile(`${filePath}/rc4_pass.ppt`); | ||
const output = await officeCrypto.decrypt(input, {password: 'xxxxx'}); | ||
}; | ||
}; | ||
await expect(test()).rejects.toThrowError(new Error( `The password is incorrect` )); | ||
}); | ||
}); |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
799040
59
3055
11