How to use the binary.parse function in binary

To help you get started, we’ve selected a few binary examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github adobe / node-smb-server / lib / smb / cmd / write_andx.js View on Github external
function handle(msg, commandId, commandParams, commandData, commandParamsOffset, commandDataOffset, connection, server, cb) {

  // decode params
  var parser = binary.parse(commandParams);
  var paramsObj = parser.skip(4) // skip andX header
    .word16le('fid')
    .word32le('offset')
    .word32le('timeout')
    .word16le('writeMode')
    .word16le('remaining')
    .word16le('dataLengthHigh')
    .word16le('dataLength')
    .word16le('dataOffset')
    .vars;
  _.assign(msg, paramsObj);
  if (commandParams.length === 28) {
    // the last 4 bytes are offsetHigh
    msg.offset = Long.fromBits(msg.offset, commandParams.readUInt32LE(24), true).toNumber();
  }
github adobe / node-smb-server / lib / smb / cmd / locking_andx.js View on Github external
function handle(msg, commandId, commandParams, commandData, commandParamsOffset, commandDataOffset, connection, server, cb) {
  // decode params
  var parser = binary.parse(commandParams);
  var paramsObj = parser.skip(4) // skip andX header
    .word16le('fid')
    .word8('typeOfLock')
    .word8('newOpLockLevel')
    .word32le('timeout')
    .word16le('numberOfRequestedUnlocks')
    .word16le('numberOfRequestedLocks')
    .vars;
  _.assign(msg, paramsObj);

  // decode data
  parser = binary.parse(commandData);
  msg.unlocks = parseRanges(parser, msg.numberOfRequestedUnlocks, msg.typeOfLock & SMB.LARGE_FILES);
  msg.locks = parseRanges(parser, msg.numberOfRequestedLocks, msg.typeOfLock & SMB.LARGE_FILES);

  var tree = server.getTree(msg.header.tid);
github adobe / node-smb-server / lib / smb / cmd / transaction.js View on Github external
function handle(msg, commandId, commandParams, commandData, commandParamsOffset, commandDataOffset, connection, server, cb) {
  // decode params
  var parser = binary.parse(commandParams);
  var paramsObj = parser.word16le('totalParameterCount')  // bytes (not words)
    .word16le('totalDataCount')
    .word16le('maxParameterCount')  // bytes (not words)
    .word16le('maxDataCount')
    .word8le('maxSetupCount')
    .skip(1)  // reserved1
    .word16le('flags')
    .word32le('timeout')
    .skip(2)  // reserved2
    .word16le('parameterCount')  // bytes (not words)
    .word16le('parameterOffset')
    .word16le('dataCount')
    .word16le('dataOffset')
    .word8le('setupCount')
    .skip(1)  // reserved3
    .buffer('setup', 2 * parser.vars['setupCount'])
github albertinad / brackets-bower / node / node_modules / bower / node_modules / unzip / lib / parse.js View on Github external
this._pullStream.pull(42, function (err, data) {
    if (err) {
      return self.emit('error', err);
    }

    var vars = binary.parse(data)
      .word16lu('versionMadeBy')
      .word16lu('versionsNeededToExtract')
      .word16lu('flags')
      .word16lu('compressionMethod')
      .word16lu('lastModifiedTime')
      .word16lu('lastModifiedDate')
      .word32lu('crc32')
      .word32lu('compressedSize')
      .word32lu('uncompressedSize')
      .word16lu('fileNameLength')
      .word16lu('extraFieldLength')
      .word16lu('fileCommentLength')
      .word16lu('diskNumber')
      .word16lu('internalFileAttributes')
      .word32lu('externalFileAttributes')
      .word32lu('offsetToLocalFileHeader')
github NuSkooler / enigma-bbs / core / servers / telnet.js View on Github external
if(event.commandCode !== COMMANDS.SB) {
		OPTION_IMPLS.NO_ARGS(bufs, i, event);
	} else {
		//	We need 4 bytes header + data + IAC SE
		if(bufs.length < 7) {
			return MORE_DATA_REQUIRED;
		}

		let end = bufs.indexOf(IAC_SE_BUF, 5);	//	look past header bytes
		if(-1 === end) {
			return MORE_DATA_REQUIRED;
		}

		//	eat up and process the header
		let buf = bufs.splice(0, 4).toBuffer();
		binary.parse(buf)
			.word8('iac1')
			.word8('sb')
			.word8('ttype')
			.word8('is')
			.tap(function(vars) {
				assert(vars.iac1 === COMMANDS.IAC);
				assert(vars.sb === COMMANDS.SB);
				assert(vars.ttype === OPTIONS.TERMINAL_TYPE);
				assert(vars.is === SB_COMMANDS.IS);
			});

		//	eat up the rest
		end -= 4;
		buf = bufs.splice(0, end).toBuffer();

		//
github pablot / GuitarProParser / lib / GuitarProParser.js View on Github external
return function() {
    var v = binary.parse(data);
    var header = Header( v );
    var lyrics = Lyrics( v );
    var techInfo = TechInfo ( v );

    return v.vars;
  };
};
github SOHU-Co / kafka-node / lib / protocol / protocol.js View on Github external
function _decodeDescribeConfigsResponse (resp, apiVersion) {
  let resources = [];
  let error;
  Binary.parse(resp)
    .word32bs('size')
    .word32bs('correlationId')
    .word32bs('throttleTime')
    .word32bs('resourceNum')
    .loop(decodeResources);

  function decodeResources (end, vars) {
    if (vars.resourceNum-- === 0) return end();
    let resource = { configEntries: [] };

    this.word16bs('errorCode')
      .word16bs('errorMessage')
      .tap(function (vars) {
        if (vars.errorCode !== 0) {
          if (vars.errorMessage === -1) {
            vars.errorMessage = '';
github ioBroker / ioBroker.vis / ccu.io / binrpc.js View on Github external
var vars = binary.parse(data)
                .buffer("head", 3)
                .word8("msgType")
                .word32bu("msgSize")
                .buffer("body", data.length)
                .vars
            ;

        if (vars.head.toString() != "Bin") {
            logger.error("malformed request header received");
            return false;
        }

        vars.head = vars.head.toString();

        var req = binary.parse(vars.body)
            .word32bu("strSize")
            .buffer("method", "strSize")
            .word32bu("elementcount")
            .buffer("body", data.length)
            .vars

        switch (vars.msgType) {
            case 0:
                var res = this.parseStrangeRequest(req.body);
                var method = req.method.toString();
                switch (method) {
                    case "system.multicall":
                        data = res[0];
                        logger.verbose("binrpc <-- "+name+" request system.multicall " + data.length);
                        response = [];
                        for (var i = 0; i < data.length; i++) {