
Research
Security News
The Growing Risk of Malicious Browser Extensions
Socket researchers uncover how browser extensions in trusted stores are used to hijack sessions, redirect traffic, and manipulate user behavior.
Read text content from different endpoints with Node.js.
// Initiate the ReadFrom instance. Alternative:
// var ReadFrom = require('readfrom'),
// RF = new ReadFrom();
var ReadFrom = new (require('readfrom'))();
// Read from a file.
ReadFrom.file('file.txt').then((data) => {
console.log(data);
}).catch((error) => {
console.trace(error);
});
// Read from a file, line by line.
ReadFrom.file('file.txt', undefined, (line) => {
console.log('LINE: %s', line);
});
// Read from STDIN. (echo "This is an example." | node stdin-example.js)
ReadFrom.stdin().then((data) =>
console.log(data); // `This is an example.`
}).catch((error) => {
console.trace(error);
});
// Read from STDIN, line by line. (cat file.txt | node stdin-by-line.js)
ReadFrom.stdin(undefined, (line) => {
console.log('LINE: %s', line);
});
// Read from a URL.
ReadFrom.url('https://example.com/').then((data) => {
console.log(data); // Print the example.com HTML content.
}).catch((error) => {
console.trace(error);
});
// Read from a URL, line by line.
ReadFrom.url('https://example.com/', undefined, (line) => {
console.log('LINE: %s', line);
});
// Read from clipboard.
ReadFrom.clipboard().then((data) => {
console.log(data); // Print whatever is in your clipboard.
}).catch((error) => {
console.trace(error);
});
// Read from clipboard, line by line.
ReadFrom.clipboard(undefined, (line) => {
console.log('LINE: %s', line);
});
// Read STDOUT from child_process.spawn()
// https://nodejs.org/dist/latest/docs/api/child_process.html#child_process_child_process_spawn_command_args_options
ReadFrom.spawn('top', ['-n 1', '-b']).then((data) => {
console.log(data); // Print a single iteration of the linux `top` command.
}).catch((error) => {
console.trace(error);
});
// Read STDOUT from child_process.spawn(), line by line.
// https://nodejs.org/dist/latest/docs/api/child_process.html#child_process_child_process_spawn_command_args_options
ReadFrom.spawn('top', ['-n 1', '-b'], undefined, (line) => {
console.log('LINE: %s', line); // Print a single iteration of the linux `top` command.
});
// Create a readable stream number counter.
var Readable = require('stream').Readable,
Stream = new Readable;
Stream._read = ((c, m) => {
return () => { Stream.push((c <= m ? Buffer.from(String(c++)) : null)); }
})(0, 50);
ReadFrom.stream(Stream).then((data) => {
console.log(data); // Print the numbers, from the counter stream.
}).catch((error) => {
console.trace(error);
});
// Create a readable stream number counter, with new lines for lineParser.
var Readable = require('stream').Readable,
Stream = new Readable;
Stream._read = ((c, m) => {
return () => { Stream.push((c <= m ? Buffer.from(String([c++, "\n"].join(''))) : null)); };
})(0, 50);
ReadFrom.stream(Stream, undefined, (num) => {
console.log(num);
});
// Read from a TCP socket. (echo "This is an example!" | nc 127.0.0.1 8080)
// Address defaults to 0.0.0.0!
ReadFrom.port(8080, { address: '127.0.0.1' }).then((data) => {
console.log(data);
}).catch((error) => {
console.log(error);
});
// Read from a TCP socket, line by line. (cat file.txt | nc 127.0.0.1 8080)
// Address defaults to 0.0.0.0!
ReadFrom.port(8080, { address: '127.0.0.1' }, (line) => {
console.log('LINE: %s', line);
}).then(() => {
console.log('\nFinished!');
}).catch((error) => {
console.log(error);
});
// Read from a UNIX socket, line by line. (cat file.txt | nc -U /tmp/ReadFrom.sock)
//
// NOTE: This also works without line by line parsing, by returning with a Promise.
// ReadFrom.unixSocket('/tmp/my-socket.sock').then((data) => { }).catch(() => { })
ReadFrom.unixSocket(undefined, undefined, (line) => {
console.log('LINE: %s', line);
}).then(() => {
console.log('\nFinished!');
}).catch((error) => {
console.log(error);
});
// Read from an SSH server. If `trim` is true, run String.trim() on the results.
// If `empty` is true allow the return of empty data. 'Commands' can be a string or array.
// If `combine` is passed in SSH options, the commands Array will be joined by that string. (;, &&, etc.)
// {Instance}.ssh(<Commands>, <SSH Options>[, <Options>]).then(<FN>).catch(<FN>)
//
// NOTE: The Promise returns an Array with the following object(s):
// { stdout: <String>, stderr: <String>, code: <Int>, signal: <String|Undefined> }
// Supports all options for ssh2. https://github.com/mscdex/ssh2
var obj = {
host: 'server.domain.tld',
port: 22,
username: 'USERNAME',
password: 'PASSWORD',
// privateKey: require('fs').readFileSync('/path/to/key')
combine: ';'
};
ReadFrom.ssh(['uptime', 'notacommand', 'free -m', 'df -h', 'uname -a'], obj).then((results) => {
console.log(results);
}).catch((error) => {
console.trace(error);
});
// Read random X bytes from crypto.randomBytes() as a Buffer, which can be converted
// with toString(<encoding>).
// {Instance}.random(<Byte count>).then(<FN>).catch(<FN>)
ReadFrom.random(256).then((results) => {
console.log(results.toString('hex')); // Convert Buffer to hex of random bytes.
}).catch((error) => {
console.trace(error);
});
// Pass `encoding` in options for random() to convert with toString BEFORE returning.
ReadFrom.random(256, { encoding: 'base64' }).then((results) => {
console.log(results); // base64 of random bytes.
}).catch((error) => {
console.trace(error);
});
// Pass chunkSize to create an array of buffers. This example creates an array with 4
// indexes, each containing a buffer of 256 bytes. Can be combined with `encoding`.
ReadFrom.random(1024, { chunkSize: 256 }).then((bytes) => {
console.log(bytes, bytes.length);
}).catch((error) => {
console.log(error);
});
TODO:
ReadFrom.ssh
.FAQs
Read text content from different endpoints.
The npm package readfrom receives a total of 3 weekly downloads. As such, readfrom popularity was classified as not popular.
We found that readfrom demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket researchers uncover how browser extensions in trusted stores are used to hijack sessions, redirect traffic, and manipulate user behavior.
Research
Security News
An in-depth analysis of credential stealers, crypto drainers, cryptojackers, and clipboard hijackers abusing open source package registries to compromise Web3 development environments.
Security News
pnpm 10.12.1 introduces a global virtual store for faster installs and new options for managing dependencies with version catalogs.