scanoss 0.4.8-beta → 0.4.10-beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/.idea/workspace.xml +100 -3
  2. package/build/main/cli/bin/cli-bin.js +2 -3
  3. package/build/main/cli/commands/scan.js +1 -16
  4. package/build/main/index.d.ts +1 -8
  5. package/build/main/index.js +2 -13
  6. package/build/main/sdk/filters/filtering.js +1 -1
  7. package/build/main/sdk/scanner/Dispatcher/Dispatcher.js +1 -1
  8. package/build/main/sdk/scanner/WfpProvider/WfpCalculator/WfpCalculator.d.ts +2 -2
  9. package/build/main/sdk/scanner/WfpProvider/WfpCalculator/WfpCalculator.js +2 -1
  10. package/build/main/sdk/scanner/WfpProvider/WfpProvider.d.ts +4 -1
  11. package/build/main/sdk/scanner/WfpProvider/WfpProvider.js +7 -1
  12. package/build/main/sdk/scanner/WfpProvider/WfpSplitter/WfpSplitter.d.ts +2 -1
  13. package/build/main/sdk/scanner/WfpProvider/WfpSplitter/WfpSplitter.js +54 -10
  14. package/build/main/sdk/tree/File.js +2 -2
  15. package/build/main/sdk/tree/Filters/DependencyFilter.js +2 -2
  16. package/build/main/sdk/tree/Filters/ScanFilter.js +2 -2
  17. package/build/main/sdk/tree/Folder.d.ts +0 -1
  18. package/build/main/sdk/tree/Folder.js +2 -5
  19. package/build/main/sdk/tree/Node.d.ts +0 -1
  20. package/build/main/sdk/tree/Node.js +1 -4
  21. package/build/main/sdk/tree/Tree.js +1 -2
  22. package/build/main/tsconfig.tsbuildinfo +63 -223
  23. package/build/module/cli/bin/cli-bin.js +2 -3
  24. package/build/module/cli/commands/scan.js +1 -16
  25. package/build/module/index.d.ts +1 -8
  26. package/build/module/index.js +2 -13
  27. package/build/module/sdk/filters/filtering.js +1 -1
  28. package/build/module/sdk/scanner/WfpProvider/WfpCalculator/WfpCalculator.d.ts +2 -2
  29. package/build/module/sdk/scanner/WfpProvider/WfpCalculator/WfpCalculator.js +2 -1
  30. package/build/module/sdk/scanner/WfpProvider/WfpProvider.d.ts +4 -1
  31. package/build/module/sdk/scanner/WfpProvider/WfpProvider.js +7 -1
  32. package/build/module/sdk/scanner/WfpProvider/WfpSplitter/WfpSplitter.d.ts +2 -1
  33. package/build/module/sdk/scanner/WfpProvider/WfpSplitter/WfpSplitter.js +53 -10
  34. package/build/module/sdk/tree/File.js +2 -2
  35. package/build/module/sdk/tree/Filters/DependencyFilter.js +2 -2
  36. package/build/module/sdk/tree/Filters/ScanFilter.js +2 -2
  37. package/build/module/sdk/tree/Folder.d.ts +0 -1
  38. package/build/module/sdk/tree/Folder.js +2 -5
  39. package/build/module/sdk/tree/Node.d.ts +0 -1
  40. package/build/module/sdk/tree/Node.js +1 -4
  41. package/build/module/sdk/tree/Tree.js +1 -2
  42. package/build/module/tsconfig.module.tsbuildinfo +63 -223
  43. package/package-lock.json +2 -2
  44. package/package.json +2 -9
  45. package/src/cli/bin/cli-bin.ts +2 -2
  46. package/src/cli/commands/scan.ts +0 -21
  47. package/src/index.ts +2 -14
  48. package/src/sdk/filters/filtering.ts +0 -1
  49. package/src/sdk/scanner/WfpProvider/WfpCalculator/WfpCalculator.ts +3 -1
  50. package/src/sdk/scanner/WfpProvider/WfpProvider.ts +15 -1
  51. package/src/sdk/scanner/WfpProvider/WfpSplitter/WfpSplitter.ts +70 -10
  52. package/src/sdk/tree/File.ts +1 -1
  53. package/src/sdk/tree/Filters/DependencyFilter.ts +1 -1
  54. package/src/sdk/tree/Filters/ScanFilter.ts +1 -1
  55. package/src/sdk/tree/Folder.ts +1 -4
  56. package/src/sdk/tree/Node.ts +0 -4
  57. package/src/sdk/tree/Tree.ts +0 -1
  58. package/tests/scanoss.sh +61 -0
  59. package/tests/sdk/Scanner/WfpProvider/WfpSplitter/WfpSplitter.spec.ts +37 -0
  60. package/tests/sdk/Scanner/WfpProvider/WfpSplitter/samples/wfp.wfp +68 -0
  61. package/tests/sdk/Scanner/WfpProvider/WfpSplitter/samples/wfp.wfp~ +68 -0
  62. package/yarn.lock +4736 -5067
  63. package/src/sdk/Decompress/DecompressionManager.ts +0 -80
  64. package/src/sdk/Decompress/Decompressor/DecompressTgz.ts +0 -20
  65. package/src/sdk/Decompress/Decompressor/DecompressZips.ts +0 -21
  66. package/src/sdk/Decompress/Decompressor/Decompressor.ts +0 -20
  67. package/src/sdk/tree/Filters/DecompressionFilter.ts +0 -22
  68. package/tests/sdk/DataLayer/DataProviderManager.spec.ts +0 -19
package/src/index.ts CHANGED
@@ -1,22 +1,10 @@
1
- // *** Code scanner exports *** //
2
- export * from './sdk/scanner/Scanner';
3
1
  export * from './sdk/scanner/ScannerTypes';
4
- export * from './sdk/scanner/ScannerCfg';
2
+ export * from './sdk/scanner/ScannerCfg'
3
+ export * from './sdk/scanner/Scanner'
5
4
  export * from './sdk/scanner/WfpProvider/WfpCalculator/WfpCalculator';
6
-
7
- // *** Dependency scanner exports *** //
8
5
  export * from './sdk/Dependencies/DependencyTypes';
9
6
  export * from './sdk/Dependencies/DependencyScannerCfg';
10
7
  export * from './sdk/Dependencies/DependencyScanner';
11
8
 
12
9
 
13
- // *** Data layers export *** //
14
- export * from './sdk/DataLayer/DataLayerTypes';
15
- export * from './sdk/DataLayer/DataProviderManager';
16
- export * from './sdk/DataLayer/DataProviders/LicenseDataProvider';
17
- export * from './sdk/DataLayer/DataProviders/SummaryDataProvider';
18
- export * from './sdk/DataLayer/DataProviders/DependencyDataProvider';
19
- export * from './sdk/DataLayer/DataProviders/ComponentDataProvider';
20
10
 
21
- // *** Unzip *** //
22
- export * from './sdk/Decompress/DecompressionManager';
@@ -35,7 +35,6 @@ class AbstractFilter {
35
35
  return true;
36
36
  }
37
37
  }
38
-
39
38
  class NameFilter extends AbstractFilter {
40
39
  constructor(condition: string, value: string, scope: string) {
41
40
  super(condition, value);
@@ -468,7 +468,7 @@ export class WfpCalculator extends WfpProvider {
468
468
  }
469
469
 
470
470
 
471
- public start(params: IWfpProviderInput): void {
471
+ public start(params: IWfpProviderInput): Promise<void> {
472
472
 
473
473
  if(!params.fileList) this.sendError('File list is required');
474
474
  this.sendLog('[ SCANNER ]: WFP Calculator starting...');
@@ -481,6 +481,8 @@ export class WfpCalculator extends WfpProvider {
481
481
  this.folderRoot = params.folderRoot;
482
482
  this.fileList = params.fileList;
483
483
  this.nextStepMachine();
484
+
485
+ return this.finishPromise;
484
486
  }
485
487
 
486
488
 
@@ -20,12 +20,23 @@ export abstract class WfpProvider extends EventEmitter {
20
20
  protected worker: Worker;
21
21
  protected pendingFiles: boolean;
22
22
  protected winnowingMode: WinnowingMode;
23
+ protected finishPromise: Promise<void>;
24
+
25
+ //Allow resolve or reject the promise returned in start call
26
+ protected finishPromiseResolve: (value?: void | PromiseLike<void>) => void;
27
+ protected finishPromiseReject: (value?: void | PromiseLike<void>) => void;
23
28
 
24
29
  protected init(): void {
25
30
  this.wfp = '';
26
31
  this.folderRoot = '';
27
32
  this.pendingFiles = false;
28
33
  this.winnowingMode = WinnowingMode.FULL_WINNOWING;
34
+
35
+ this.finishPromise = new Promise((resolve, reject) =>{
36
+ this.finishPromiseResolve = resolve;
37
+ this.finishPromiseReject = reject;
38
+ });
39
+
29
40
  }
30
41
 
31
42
  // returns true if the function emitted a new fingerprint packet
@@ -59,6 +70,7 @@ export abstract class WfpProvider extends EventEmitter {
59
70
  if (this.wfp.length !== 0) this.sendFingerprint(new FingerprintPackage(this.wfp, this.folderRoot));
60
71
  this.pendingFiles = false;
61
72
  this.emit(ScannerEvents.WINNOWING_FINISHED);
73
+ this.finishPromiseResolve();
62
74
  }
63
75
 
64
76
 
@@ -72,13 +84,15 @@ export abstract class WfpProvider extends EventEmitter {
72
84
 
73
85
  protected sendError(errorMsg: string): void {
74
86
  this.emit(ScannerEvents.ERROR, new Error(errorMsg));
87
+ this.finishPromiseReject();
75
88
  }
76
89
 
77
90
  protected setWinnowingMode(mode: WinnowingMode): void {
78
91
  this.winnowingMode = mode;
79
92
  }
80
93
 
81
- public abstract start(params: IWfpProviderInput): void;
94
+ public abstract start(params: IWfpProviderInput): Promise<void>;
95
+
82
96
  public abstract stop(): void;
83
97
  public abstract pause(): void;
84
98
  public abstract resume(): void;
@@ -3,6 +3,8 @@ import fs from "fs";
3
3
  import { ScannerCfg } from "../../ScannerCfg";
4
4
  import { Readable } from "stream";
5
5
 
6
+ //Regex find paths from wfp string
7
+
6
8
  export class WfpSplitter extends WfpProvider {
7
9
 
8
10
  private continue: boolean;
@@ -17,12 +19,15 @@ export class WfpSplitter extends WfpProvider {
17
19
 
18
20
  private timer: ReturnType<typeof setTimeout>;
19
21
 
22
+ private ignoreFiles: Set<string>;
23
+
20
24
  constructor(scannerCfg = new ScannerCfg()) {
21
25
  super();
22
26
  this.scannerCfg = scannerCfg;
23
27
  }
24
28
 
25
- public start(params: IWfpProviderInput): void {
29
+ public start(params: IWfpProviderInput): Promise<void> {
30
+
26
31
  this.sendLog('[ SCANNER ]: WFP Splitter starting...');
27
32
 
28
33
  this.init();
@@ -31,11 +36,16 @@ export class WfpSplitter extends WfpProvider {
31
36
  this.fingerprints = [];
32
37
  this.continue = true;
33
38
  this.fingerprintIndex = 0;
39
+ this.ignoreFiles = new Set(params.fileList);
40
+
34
41
  const wfpPath = params.wfpPath;
42
+
35
43
  if (!wfpPath) this.sendError('WFP path is not defined');
36
44
 
37
45
  this.wfpStream = fs.createReadStream(wfpPath, { encoding: 'utf8' });
38
46
  this.setStreamListeners();
47
+
48
+ return this.finishPromise;
39
49
  }
40
50
 
41
51
  public stop(): void {
@@ -56,6 +66,7 @@ export class WfpSplitter extends WfpProvider {
56
66
 
57
67
 
58
68
  private sendFingerprints() {
69
+ //The timer allows the main thread not to be blocked while sending wfps
59
70
  if(this.timer === undefined) {
60
71
  this.timer = setInterval(() => {
61
72
  if(this.fingerprintIndex < this.fingerprints.length && this.continue) {
@@ -80,18 +91,67 @@ export class WfpSplitter extends WfpProvider {
80
91
  }
81
92
 
82
93
  private streamBufferFlush(): void {
83
- // Use a loop to make sure we read all currently available data
84
- while (this.continue && null !== (this.chunkDataRead = this.wfpStream.read(1 * 1024 * 1024))) { // Read chunks of 1MB
85
94
 
95
+ let ignoreFirstChunkOfFingerprint = false;
96
+
97
+
98
+ //Use a loop to make sure we read all currently available data
99
+ while (this.continue && null !== (this.chunkDataRead = this.wfpStream.read(1 * 1024 * 1024))) { // Read chunks of 1MB 1*1024*1024
86
100
 
87
- // Extract the first portion of the chunk until the first file=
88
- // Then append the chunk to the last fingerprint.
89
- if (!this.chunkDataRead.startsWith('file=')) {
90
- const chunkOfData = this.chunkDataRead.substring(0, this.chunkDataRead.indexOf('file='));
91
- this.fingerprints[this.fingerprints.length-1] += chunkOfData;
101
+ // Removes fingerprints that are loose because the file=...... was removed in previous iteration
102
+ if (ignoreFirstChunkOfFingerprint) { //TODO: Test this scenario
103
+ //If there is no file= delete everything then
104
+ if (this.chunkDataRead.indexOf("file=") >= 0) {
105
+ this.chunkDataRead = this.chunkDataRead.substring(this.chunkDataRead.indexOf('file='));
106
+ ignoreFirstChunkOfFingerprint = false;
107
+ } else this.chunkDataRead = "";
92
108
  }
93
- this.fingerprints = [...this.fingerprints, ...this.splitFingerprints(this.chunkDataRead)];
94
- this.sendFingerprints();
109
+
110
+ /**** This part removes all the wfp that includes the paths inside this.ignoreFiles ****/
111
+ const rWfpPath = new RegExp(/^file=\w+,\d+,(?<path>.+)$/gm)
112
+ //Search for paths in the wfp and compares with the ignorefiles set
113
+ //When there is a match the matched fingerprint is deleted on the fly
114
+ let result;
115
+ while((result = rWfpPath.exec(this.chunkDataRead)) !== null) {
116
+ if (this.ignoreFiles.has(result?.groups?.path)) {
117
+ const indexDeleteFrom = result.index
118
+
119
+ //TODO: Verify this condition
120
+ //If there is no next file= in the string, remove until end.
121
+ let indexDeleteTo = this.chunkDataRead.indexOf('file=', indexDeleteFrom+1)
122
+ if (indexDeleteTo < 0) {
123
+ indexDeleteTo = this.chunkDataRead.length;
124
+
125
+ //After the deletion of a wfp there are no other file=, so then set ignoreFirstChunkOfFingerprint to true.
126
+ //In the next iteration, the next chunk of data will be fingerprints without a file=. So, this first part will be discarded.
127
+ ignoreFirstChunkOfFingerprint = true;
128
+ }
129
+
130
+ const first = this.chunkDataRead.substring(0,indexDeleteFrom);
131
+ const second = this.chunkDataRead.substring(indexDeleteTo, this.chunkDataRead.length);
132
+ this.chunkDataRead = first + second;
133
+ rWfpPath.lastIndex = 0; //Make sure we reset the state of the regex.
134
+ }
135
+ }
136
+ /**** This part removes all the wfp that includes the paths inside this.ignoreFiles ****/
137
+
138
+
139
+
140
+ /**** This part process a chunk of wfp and send the packages to the subscriber ****/
141
+ if(this.chunkDataRead.length){
142
+
143
+ // Extract the first portion of the chunk until the first file=
144
+ // Then append the chunk to the last fingerprint.
145
+ if (!this.chunkDataRead.startsWith('file=') ) {
146
+ const chunkOfData = this.chunkDataRead.substring(0, this.chunkDataRead.indexOf('file='));
147
+ this.fingerprints[this.fingerprints.length-1] += chunkOfData;
148
+ }
149
+
150
+ this.fingerprints = [...this.fingerprints, ...this.splitFingerprints(this.chunkDataRead)];
151
+ this.sendFingerprints();
152
+ }
153
+ /**** This part process a chunk of wfp and send the packages to the subscriber ****/
154
+
95
155
  }
96
156
  }
97
157
 
@@ -15,7 +15,7 @@ export default class File extends Node {
15
15
  }
16
16
 
17
17
  public getFiles(f: Filter): Array<string> {
18
- if (!f || !f.evaluate(this)) return [];
18
+ if (f && f.evaluate(this)) return [];
19
19
  return [this.getPath()];
20
20
  }
21
21
 
@@ -16,7 +16,7 @@ export class DependencyFilter extends Filter {
16
16
  }
17
17
 
18
18
  public evaluate(node: Node): boolean {
19
- return this.filter.include(node.getPath());
19
+ return !this.filter.include(node.getPath());
20
20
  }
21
21
 
22
22
  }
@@ -16,7 +16,7 @@ export class ScanFilter extends Filter {
16
16
  }
17
17
 
18
18
  public evaluate(node: Node): boolean {
19
- return this.filter.include(node.getPath());
19
+ return !this.filter.include(node.getPath());
20
20
  }
21
21
 
22
22
  }
@@ -42,16 +42,13 @@ export default class Folder extends Node {
42
42
  }
43
43
 
44
44
  public getFiles(f?: Filter): Array<string> {
45
- if (!f || !f.evaluate(this)) return [];
45
+ if (f && f.evaluate(this)) return []
46
46
 
47
47
  const files: Array<string> = [];
48
48
  this.children.forEach((child) => {
49
49
  files.push(...child.getFiles(f));
50
50
  });
51
51
  return files;
52
- }
53
52
 
54
- public removeChildren(){
55
- this.children = [];
56
53
  }
57
54
  }
@@ -27,10 +27,6 @@ export default abstract class Node {
27
27
  return this.path;
28
28
  }
29
29
 
30
- public getType(): NodeType {
31
- return this.type;
32
- }
33
-
34
30
  }
35
31
 
36
32
  export enum NodeType {
@@ -26,7 +26,6 @@ export class Tree {
26
26
  }
27
27
 
28
28
  public build(): Node {
29
- this.rootFolder.removeChildren();
30
29
  this.buildRec(this.rootPath, this.rootFolder);
31
30
  return this.rootFolder;
32
31
  }
@@ -0,0 +1,61 @@
1
+ #!/usr/bin/env bash
2
+
3
+ # filename: commandLine.sh
4
+ # author: @theBuzzyCoder
5
+
6
+
7
+
8
+ #
9
+ # Print help info
10
+ #
11
+ help() {
12
+ echo "Usage: $0 [-h]
13
+ [-r file to result.json]
14
+ [-w file to winnowing]"
15
+ exit 2
16
+ }
17
+
18
+ cmd_compare_wfp_result() {
19
+ result_json_path=$1
20
+ winnowing_path=$2
21
+ if [ ! -e "$result_json_path" ] || [ ! -e "$winnowing_path" ]; then
22
+ echo "Error: Please, specify a valid path"
23
+ exit 1
24
+ fi
25
+
26
+ diff <(sed -n -E 's/file=\w+,[[:digit:]]+,//p' "$winnowing_path" | sort) <(jq -r '.scanner | keys | .[]' "$result_json_path" | sort)
27
+
28
+ exit 1
29
+ }
30
+
31
+
32
+ #
33
+ # Parse command options and take action
34
+ #
35
+ force=false
36
+ while getopts ":r:w:,h" o; do
37
+ case "${o}" in
38
+ r)
39
+ r=${OPTARG}
40
+ ;;
41
+ w)
42
+ w=${OPTARG}
43
+ ;;
44
+ h)
45
+ help
46
+ ;;
47
+ *)
48
+ echo "Unknown option: $o"
49
+ help
50
+ ;;
51
+ esac
52
+ done
53
+ shift $((OPTIND - 1))
54
+
55
+ if [ -z "${r}" ] || [ -z "${w}" ]; then
56
+ echo "Please specify a result json and a winnowing file"
57
+ help
58
+ fi
59
+
60
+
61
+ cmd_compare_wfp_result "$r" "$w"
@@ -0,0 +1,37 @@
1
+ import { WfpSplitter } from '../../../../../src/sdk/scanner/WfpProvider/WfpSplitter/WfpSplitter'
2
+ import { ScannerEvents } from '../../../../../src/sdk/scanner/ScannerTypes'
3
+ import { ScannerCfg } from '../../../../../src/sdk/scanner/ScannerCfg'
4
+ import { FingerprintPackage } from '../../../../../src/sdk/scanner/WfpProvider/FingerprintPackage';
5
+ import fs from 'fs';
6
+ import path from 'path';
7
+
8
+
9
+
10
+ describe('Suit test for WfpSplitter Class', () => {
11
+
12
+ it('Test ignore file list', async function () {
13
+
14
+ const wfpSplitter = new WfpSplitter();
15
+ const filesToIgnore = ["/embedded/AIM6/xprt5.dll", "/embedded/Common Files/AOL/AOLDiag/aoldiag.dll"];
16
+
17
+ let wfp = ""
18
+ wfpSplitter.on(ScannerEvents.WINNOWING_NEW_CONTENT, (f: FingerprintPackage) => {
19
+ wfp += f.getContent();
20
+ });
21
+
22
+ await wfpSplitter.start({wfpPath: path.join(__dirname, '/samples/wfp.wfp'), fileList: filesToIgnore })
23
+
24
+ //Verify that the filesToIgnore does not been proceeded
25
+ for (const toIgnore of filesToIgnore) {
26
+ if (wfp.indexOf(toIgnore) >= 0) {
27
+ throw new Error(`File ${toIgnore} is in the generated wfp. Should be ignored`);
28
+ }
29
+ }
30
+
31
+ console.log(wfp)
32
+
33
+ });
34
+
35
+ });
36
+
37
+
@@ -0,0 +1,68 @@
1
+ file=bf9d64e0ecd591bc1b38bd335156b66f,249856,/embedded/AIM6/xprt5.dll
2
+ 8=479962ba
3
+ 10=64d5d78d,b01153a3,d8a338dd,8a81316d,ca73589f
4
+ 11=be49438c,08423e42,0d2c3010,7c8bc702,71e593ff,7665c60d,6677f85f
5
+ 13=27a6519f,fa025815,af41b930,a8f636a9,ab4a757f,8bd1859a,03669c44,29a7b9bd,19e09635
6
+ 14=a75ba044
7
+ 15=e4412a62,0a476f6b
8
+ 16=93571edb
9
+ 17=09e848b9,88b56a25,99c96bd0,7b810505,e5dbcb7b,f4ba57c0
10
+ 18=5f7ef89d
11
+ 19=9189d871,d2411eca,294c1585,feca5a0d,51dda3db,6b99eb56
12
+ 20=9c0e6525
13
+ 21=e4412a62,0a476f6b
14
+ 24=93571edb
15
+ 26=09e848b9,88b56a25,99c96bd0,7b810505,e5dbcb7b,f4ba57c0
16
+ 30=5f7ef89d
17
+ 33=9189d871,d2411eca,294c1585,feca5a0d,51dda3db,6b99eb56
18
+ 35=9c0e6525
19
+ file=c88752bd115f27169a710324c3212fcd,306176,/embedded/Common Files/AOL/AOLDiag/aoldiag.dll
20
+ 3=ac71d428
21
+ 4=91fd0942,d90a5a02,11fffad4,a7d3e9b8,fb80ddf3
22
+ file=e11ff49abe1319d9361c9b4a8bf01e61,4905472,/embedded/Common Files/Adobe/AdobeGraphicsManager/AGM.dll
23
+ 2=a3ca664f,f626e6ca,3c47a459,80927a63,5f84d06d,d2762759,37b25338,1156e5fd,367d100d,5f94e1de,f7de68c4,56338abf,6fefb6f3,3f4dc36f,85f01a3d,3e4d9256,9cd6cd96,78f28350,dfc12cfc,e2796229,cb2f3704
24
+ 3=444014a3,68a6d01e,5134dd5a
25
+ 4=38b1e226,cb9ca319,5ff4e6f8,6ffd74ec,78cd649f,ececc1e1,61ff0615,444c109f,e950dedf,f352c919,29bc4618,d5b143dc,06a4076b,602b5323,8b30c0bf,7a53184f,61377a03,ce6b8bef,b9fb7f04,7a1be21d,8c795393,22ac99de,dd893ca5
26
+ 5=ae409118,9a1ed89f,69324e6e,17426a03,437e603d,7e6a4be5,c4211d7e,0fe982ba,f9993842,163e044e,f3fa4add,0bc14f0d,cf5b7bc0,2836fe5a,7be7bd1a,d19d674b,55225d3a,ae730856,bf35a664,d15b8ca5,05980010,bcada21d,a2befd4b,dbf92c38,8217e118,24732909
27
+ 6=ac95a0bf,ec2eefe3,46e0fb74,4caa633c,0d49b5e5,c78a1a55
28
+ 7=e516bf2f,f3fcaef8
29
+ file=b84493ade283ce96d3219dbe93c9ee16,439872,/embedded/Common Files/Yahoo!/Tookit/yt.dll
30
+ 3=ac99db62,57b545ca,07af59ac,0f095e9d,52a317e9,c72e7ee1,a7faf12e,88168ef4
31
+ 4=ed49fb9c,7c8d9644,25b6d9e6,95768215,a4b87c74,1cc07fd0,1958f7a3,0558c86a,482c0edd,a50156fa,7600f6c3,4d09ea20,466ccc82,c807fce6
32
+ 5=8cc88029,8dd0a108
33
+ 6=3b118a9e
34
+ 7=c88ff8d6,fe08264c,0151500b,93405b4a,94fc0896,fa0d3b07,c43fa851,4b4996f1,55f5bed7
35
+ 9=cfd44e2f,76100ef3,b9695c03,b955a831,b7225822,c5b3a3c0,a96fc8fd,461ac60d,b1799f2f,8c71ecce,b6560893,3c0ea167,24447a1d,90ab0abd,acd19588,bdbe0289,cdc1836d,2154d523,204f2913,25eb9708,caef0b1b,005e1aaf,eaa1565e,a9b5ca79,4dd93991
36
+ 11=e9e1afe2,25d3f4c8,d45fe5b0,9f58df13,c5724ddf,bc81dfcf,bc489c33,676a28a6,0fa2b11f,8f998a38,4eb90916,7f21581e,73fee5d1,d0bf3311,837fb50a
37
+ file=7beeabc82f59ef465e55202ec7c67e43,2392064,/embedded/CoreFTP/coreftp.exe
38
+ 4=95cf6bd2,e039e851,92dbb54f
39
+ 5=96276c7f,6efd0470,ac61b2db
40
+ 7=fc41fcd3,35f31081
41
+ 8=5ed8101a
42
+ 12=886a7685,c3428cd0
43
+ 13=852ceb78
44
+ 16=e85bef28
45
+ 17=2608238d
46
+ 18=952d9c38,446a6fc2,6c7192ae,e0dcd624,00a8e158,adaa4de3,b84e4489,cf9d49cb,5eb4785e,61ee835d,a100d798
47
+ file=68ba7a523a630e3114d463cf3411862a,2172176,/embedded/InterVideo/Common/Bin/IVIUMA.dll
48
+ 2=1c72aa1f,c5670ffb,60286f48,b7c00749,ccda3c4e,b408aab1,cb8c6d30,a00673d4
49
+ 3=cf0c2fab,7a98273d,a0b8ee69,ee86f14b
50
+ 5=5ca2fac9
51
+ 9=6923d370,f2a373af,efa1d25c,b0aaed4b,7a2f5fef,be903873,2bee25d9,348ce717,337d6427,374833ea,3dbee621,f0733e9d,8f1b2068,2024635a,7e1cdc46,4a3af19e,13c0795a,6ece3055,dd01013f
52
+ 10=bed94972,af7a186b
53
+ 12=f31f226a
54
+ 13=e502aa52,8990e004
55
+ file=db0e461169599af137eb24478c5292ce,324238,/lib/cglib-nodep-2.1_3.jar
56
+ 3=3386277d,f7c22df5
57
+ 4=716c10c0,a8176aed,b5c7d92b,700a3854
58
+ 5=82e547c0,5e6ec3e5
59
+ 6=ac4fdd81,d0d17741,3493116a,7eca9f01,bf6c7b17
60
+ 8=cfc4846b,acbb7a31
61
+ 9=82f904ab,66d3d9fb
62
+ file=dcdcbb47176603907c9f79a1349193eb,245274,/lib/commons-lang-2.3.jar
63
+ 6=b5902fc4,29fab39e
64
+ 7=b3bcbe9c,df8c9594
65
+ 9=4e8f9375
66
+ 11=52ef1f95
67
+ 12=444a07ca,a46a7fa4
68
+ 14=7bb4fb48
@@ -0,0 +1,68 @@
1
+ file=bf9d64e0ecd591bc1b38bd335156b66f,249856,/embedded/AIM6/xprt5.dll
2
+ 8=479962ba
3
+ 10=64d5d78d,b01153a3,d8a338dd,8a81316d,ca73589f
4
+ 11=be49438c,08423e42,0d2c3010,7c8bc702,71e593ff,7665c60d,6677f85f
5
+ 13=27a6519f,fa025815,af41b930,a8f636a9,ab4a757f,8bd1859a,03669c44,29a7b9bd,19e09635
6
+ 14=a75ba044
7
+ 15=e4412a62,0a476f6b
8
+ 16=93571edb
9
+ 17=09e848b9,88b56a25,99c96bd0,7b810505,e5dbcb7b,f4ba57c0
10
+ 18=5f7ef89d
11
+ 19=9189d871,d2411eca,294c1585,feca5a0d,51dda3db,6b99eb56
12
+ 20=9c0e6525
13
+ 21=e4412a62,0a476f6b
14
+ 24=93571edb
15
+ 26=09e848b9,88b56a25,99c96bd0,7b810505,e5dbcb7b,f4ba57c0
16
+ 30=5f7ef89d
17
+ 33=9189d871,d2411eca,294c1585,feca5a0d,51dda3db,6b99eb56
18
+ 35=9c0e6525
19
+ file=c88752bd115f27169a710324c3212fcd,306176,/embedded/Common Files/AOL/AOLDiag/aoldiag.dll
20
+ 3=ac71d428
21
+ 4=91fd0942,d90a5a02,11fffad4,a7d3e9b8,fb80ddf3
22
+ file=e11ff49abe1319d9361c9b4a8bf01e61,4905472,/embedded/Common Files/Adobe/AdobeGraphicsManager/AGM.dll
23
+ 2=a3ca664f,f626e6ca,3c47a459,80927a63,5f84d06d,d2762759,37b25338,1156e5fd,367d100d,5f94e1de,f7de68c4,56338abf,6fefb6f3,3f4dc36f,85f01a3d,3e4d9256,9cd6cd96,78f28350,dfc12cfc,e2796229,cb2f3704
24
+ 3=444014a3,68a6d01e,5134dd5a
25
+ 4=38b1e226,cb9ca319,5ff4e6f8,6ffd74ec,78cd649f,ececc1e1,61ff0615,444c109f,e950dedf,f352c919,29bc4618,d5b143dc,06a4076b,602b5323,8b30c0bf,7a53184f,61377a03,ce6b8bef,b9fb7f04,7a1be21d,8c795393,22ac99de,dd893ca5
26
+ 5=ae409118,9a1ed89f,69324e6e,17426a03,437e603d,7e6a4be5,c4211d7e,0fe982ba,f9993842,163e044e,f3fa4add,0bc14f0d,cf5b7bc0,2836fe5a,7be7bd1a,d19d674b,55225d3a,ae730856,bf35a664,d15b8ca5,05980010,bcada21d,a2befd4b,dbf92c38,8217e118,24732909
27
+ 6=ac95a0bf,ec2eefe3,46e0fb74,4caa633c,0d49b5e5,c78a1a55
28
+ 7=e516bf2f,f3fcaef8
29
+ file=b84493ade283ce96d3219dbe93c9ee16,439872,/embedded/Common Files/Yahoo!/Tookit/yt.dll
30
+ 3=ac99db62,57b545ca,07af59ac,0f095e9d,52a317e9,c72e7ee1,a7faf12e,88168ef4
31
+ 4=ed49fb9c,7c8d9644,25b6d9e6,95768215,a4b87c74,1cc07fd0,1958f7a3,0558c86a,482c0edd,a50156fa,7600f6c3,4d09ea20,466ccc82,c807fce6
32
+ 5=8cc88029,8dd0a108
33
+ 6=3b118a9e
34
+ 7=c88ff8d6,fe08264c,0151500b,93405b4a,94fc0896,fa0d3b07,c43fa851,4b4996f1,55f5bed7
35
+ 9=cfd44e2f,76100ef3,b9695c03,b955a831,b7225822,c5b3a3c0,a96fc8fd,461ac60d,b1799f2f,8c71ecce,b6560893,3c0ea167,24447a1d,90ab0abd,acd19588,bdbe0289,cdc1836d,2154d523,204f2913,25eb9708,caef0b1b,005e1aaf,eaa1565e,a9b5ca79,4dd93991
36
+ 11=e9e1afe2,25d3f4c8,d45fe5b0,9f58df13,c5724ddf,bc81dfcf,bc489c33,676a28a6,0fa2b11f,8f998a38,4eb90916,7f21581e,73fee5d1,d0bf3311,837fb50a
37
+ file=7beeabc82f59ef465e55202ec7c67e43,2392064,/embedded/CoreFTP/coreftp.exe
38
+ 4=95cf6bd2,e039e851,92dbb54f
39
+ 5=96276c7f,6efd0470,ac61b2db
40
+ 7=fc41fcd3,35f31081
41
+ 8=5ed8101a
42
+ 12=886a7685,c3428cd0
43
+ 13=852ceb78
44
+ 16=e85bef28
45
+ 17=2608238d
46
+ 18=952d9c38,446a6fc2,6c7192ae,e0dcd624,00a8e158,adaa4de3,b84e4489,cf9d49cb,5eb4785e,61ee835d,a100d798
47
+ file=68ba7a523a630e3114d463cf3411862a,2172176,/embedded/InterVideo/Common/Bin/IVIUMA.dll
48
+ 2=1c72aa1f,c5670ffb,60286f48,b7c00749,ccda3c4e,b408aab1,cb8c6d30,a00673d4
49
+ 3=cf0c2fab,7a98273d,a0b8ee69,ee86f14b
50
+ 5=5ca2fac9
51
+ 9=6923d370,f2a373af,efa1d25c,b0aaed4b,7a2f5fef,be903873,2bee25d9,348ce717,337d6427,374833ea,3dbee621,f0733e9d,8f1b2068,2024635a,7e1cdc46,4a3af19e,13c0795a,6ece3055,dd01013f
52
+ 10=bed94972,af7a186b
53
+ 12=f31f226a
54
+ 13=e502aa52,8990e004
55
+ file=db0e461169599af137eb24478c5292ce,324238,/lib/cglib-nodep-2.1_3.jar
56
+ 3=3386277d,f7c22df5
57
+ 4=716c10c0,a8176aed,b5c7d92b,700a3854
58
+ 5=82e547c0,5e6ec3e5
59
+ 6=ac4fdd81,d0d17741,3493116a,7eca9f01,bf6c7b17
60
+ 8=cfc4846b,acbb7a31
61
+ 9=82f904ab,66d3d9fb
62
+ file=dcdcbb47176603907c9f79a1349193eb,245274,/lib/commons-lang-2.3.jar
63
+ 6=b5902fc4,29fab39e
64
+ 7=b3bcbe9c,df8c9594
65
+ 9=4e8f9375
66
+ 11=52ef1f95
67
+ 12=444a07ca,a46a7fa4
68
+ 14=7bb4fb48