1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- /**
- * @author n1474335 [n1474335@gmail.com]
- * @copyright Crown Copyright 2017
- * @license Apache-2.0
- */
- import Operation from "../Operation";
- /**
- * Decode NetBIOS Name operation
- */
- class DecodeNetBIOSName extends Operation {
- /**
- * DecodeNetBIOSName constructor
- */
- constructor() {
- super();
- this.name = "Decode NetBIOS Name";
- this.module = "Default";
- this.description = "NetBIOS names as seen across the client interface to NetBIOS are exactly 16 bytes long. Within the NetBIOS-over-TCP protocols, a longer representation is used.<br><br>There are two levels of encoding. The first level maps a NetBIOS name into a domain system name. The second level maps the domain system name into the 'compressed' representation required for interaction with the domain name system.<br><br>This operation decodes the first level of encoding. See RFC 1001 for full details.";
- this.inputType = "byteArray";
- this.outputType = "byteArray";
- this.args = [
- {
- "name": "Offset",
- "type": "number",
- "value": 65
- }
- ];
- }
- /**
- * @param {byteArray} input
- * @param {Object[]} args
- * @returns {byteArray}
- */
- run(input, args) {
- const output = [],
- offset = args[0];
- if (input.length <= 32 && (input.length % 2) === 0) {
- for (let i = 0; i < input.length; i += 2) {
- output.push((((input[i] & 0xff) - offset) << 4) |
- (((input[i + 1] & 0xff) - offset) & 0xf));
- }
- for (let i = output.length - 1; i > 0; i--) {
- if (output[i] === 32) output.splice(i, i);
- else break;
- }
- }
- return output;
- }
- }
- export default DecodeNetBIOSName;
|