又一次被linux的工具震惊了
前一篇博客还写了自己写的端口转发工具,今天偶然在网上看到讲命名管道和netcat配合的用法,被彻底雷倒了。
原来以为netcat做不到,原来是自己想不到,而不是netcat做不到……
方法如下:
$ mknod backpipe p
建立一个命名管道.
listener-to-client 转发:
$ nc -l -p [localport] 0< backpipe |
nc [target ip] [port] |
tee backpipe
漂亮吧?
继续:
listener-to-listener 转发:
$ nc -l -p [localport] 0< backpipe |
nc -l -p [localport2] |
tee backpipe
client-to-client 转发:
$ nc [ip1] [port1] 0< backpipe |
nc [ip2] [port2] |
tee backpipe
还有更雷的方法,用自身的 -e 参数:
$ echo nc [ip] [port] > relay.sh
$ chmod +x relay.sh
$ nc -l -p [port2] -e relay.sh
我晕菜了,原来那个程序是白写了。
强大的linux, 强大的netcat !
相关文档:
1. HCI层协议概述:
HCI提供一套统一的方法来访问Bluetooth底层。如图所示:
从图上可以看出,Host Controller Interface(HCI) 就是用来沟通Host和Module。Host通常就是PC, Module则是以各种物理连接形式(USB,serial,pc-card等)连接到PC上的bluetooth Dongle。
在Host这一端:application,SDP,L2cap等协议 ......
//获取本机MAC地址函数QString GetLocalMac()
{
int sock_mac;
struct ifreq ifr_mac;
char mac_addr[30];
sock_mac = socket( AF_INET, SOCK_STREAM, 0 );
if( sock_mac == -1)
{
perror("create socket falise...mac\n");
return "";
}
memset(&ifr_mac,0,sizeof(ifr_mac));
......
//获取子网掩码的函数QString GetLocalNetMask()
{
int sock_netmask;
char netmask_addr[50];
struct ifreq ifr_mask;
struct sockaddr_in *net_mask;
sock_netmask = socket( AF_INET, SOCK_STREAM, 0 );
if( sock_netmask == -1)
{
perror("create socket failture...GetLocalNetMask\n");
......
1、int 4字节
long 8字节
float 4字节
double 8字节
long double 16字节
2、一个字符变量只能存放一个字符、一个字节存放一个字节
char c;
c = 'a'; c = '\034' ......