Skip to content

onomondo/tcp-packet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

tcp-packet

Encode/decode raw tcp packets. Currently very incomplete.

$ npm install tcp-packet

Usage

const tcp = require('tcp-packet')

const packet = tcp.decode(Buffer.from('c3560050ee7d2560b5e66669801801c90a5900000101080a000276e95dd3f7a668656c6c6f0a', 'hex'))
console.log(packet)
/*
  {
    sourcePort: 50006,
    destinationPort: 80,
    sequenceNumber: 4001178976,
    acknowledgmentNumber: 3051775593,
    dataOffset: 8,
    flags: 24,
    reserved: 0,
    ns: 0,
    cwr: 0,
    ece: 0,
    urg: 0,
    ack: 1,
    psh: 1,
    rst: 0,
    syn: 0,
    fin: 0,
    windowSize: 457,
    checksum: 2649,
    urgentPointer: 0,
    data: <Buffer 68 65 6c 6c 6f 0a>
  }
*/
console.log(packet.data.toString())
// hello\n

API

ip.encode({ data, sourcePort, destinationPort, sequenceNumber, acknowledgmentNumber })

Encodes a packet. Returns a buffer. The packet should look like this:

{
  data: <Buffer>,
  sourcePort: 12345,
  destinationPort: 80,
  sequenceNumbe: 1234567,
  acknowledgmentNumber: 7654321
}

ip.decode(buffer)

Decodes a packet from a buffer. A buffer could look like Buffer.from('c3560050ee7d2560b5e66669801801c90a5900000101080a000276e95dd3f7a668656c6c6f0a', 'hex')) and return something like this:

{
  sourcePort: 50006,
  destinationPort: 80,
  sequenceNumber: 4001178976,
  acknowledgmentNumber: 3051775593,
  dataOffset: 8,
  flags: 24,
  reserved: 0,
  ns: 0,
  cwr: 0,
  ece: 0,
  urg: 0,
  ack: 1,
  psh: 1,
  rst: 0,
  syn: 0,
  fin: 0,
  windowSize: 457,
  checksum: 2649,
  urgentPointer: 0,
  data: <Buffer 68 65 6c 6c 6f 0a>
}