
Security News
Risky Biz Podcast: Making Reachability Analysis Work in Real-World Codebases
This episode explores the hard problem of reachability analysis, from static analysis limits to handling dynamic languages and massive dependency trees.
_
\. _(9>
\==_)
-\'=
It carries messages over long distances and it will generally return to its nest.
_
<6)_ ,/
(_==/
=\'-
Tcpigeon is a simple transparent TCP proxy implementation you can use for debugging purposes. It acts as a mitm entity which intercepts, logs and delivers TCP messages from client(s) to server in both directions.
This is the scenario:
<===> client 1
remote server <===> TCPIGEON <===> client 2
...
<===> client n
npm:
$ npm install tcpigeon [-g]
or clone the repository:
git clone https://github.com/skanna/tcpigeon.git
var Tcpigeon = require('tcpigeon');
See examples.
If you don't have mocha
installed you need to install devDependecies:
$ cd tcpigeon
$ npm install
Run tests:
$ npm test
options = {
proxy_port : 30080, // proxy port
proxy_addr : '127.0.0.1', // proxy address
remote_port : null, // remote server port - mandatory
remote_host : null, // remote server host - mandatory
encoding : 'utf8', // character encoding
logging : 'file', // log type
max_conn : 100 // max allowed connections
}
remote_port
and remote_host
are mandatory, the other parameters have default values as shown.encoding
can assume the same values as in the Buffer module.logging
possible values are: "file" (default), "console" or "nolog".max_conn
value should be equal to the remote server capacity, at least.// Run proxy
Tcpigeon#fly(Object tcpigeon_options) : net.Server
// Stop proxy
Tcpigeon#land() : undefined
// Drop the connection to the specified client
Tcpigeon#kill(ip_address) : undefined
// Returns the list of the open sockets in the form 'ip_address:port'
Tcpigeon#flock() : Array
The fly
method returns null
in case of configuration error, (ie an option in a bad format). In case there are many open sockets shared with the same client the kill
method will destroy the first one it finds.
Custom events:
// new connection - a pigeon can fly
// source format is ip_address:port
'carrier' : function(String source)
// a pigeon has a new message for you
'post' : function(String message)
// a pigeon was killed :(
'killed' : function(Number clients)
// error - no more flying pigeons
'falling' : function(Object Error)
Each line is preceded by a datetime value and a symbol that categorizes it. Use these symbols to spot:
The length of every message is printed too.
example:
9/28/2017, 3:48:43 PM - (II) Tcpigeon Server listening to {"address":"127.0.0.1","family":"IPv4","port":30080}
9/28/2017, 3:48:51 PM - (++) connection from 127.0.0.1:51313
9/28/2017, 3:48:51 PM - (II) 1 clients currently connected
9/28/2017, 3:48:51 PM - (<<) from 127.0.0.1:51313: client ONE - length: 10 bytes
9/28/2017, 3:48:51 PM - (<<) client ONE - length: 10 bytes
9/28/2017, 3:48:51 PM - (>>) client ONE - length: 10 bytes
9/28/2017, 3:48:51 PM - (>>) to 127.0.0.1:51313: client ONE - length: 10 bytes
Coding style is inpired to the modules written by @rootslab :+1: (have a look!!)
Thank you for giving me a lot of precious suggestions!
FAQs
A simple transparent TCP proxy implementation for debugging purposes.
We found that tcpigeon 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.
Security News
This episode explores the hard problem of reachability analysis, from static analysis limits to handling dynamic languages and massive dependency trees.
Security News
/Research
Malicious Nx npm versions stole secrets and wallet info using AI CLI tools; Socket’s AI scanner detected the supply chain attack and flagged the malware.
Security News
CISA’s 2025 draft SBOM guidance adds new fields like hashes, licenses, and tool metadata to make software inventories more actionable.