Linux下用nc实现DuplexPipe

PX4飞控神经网络控制:从仿真到嵌入式部署实战 神经网络控制正逐步革新传统PID在无人机领域的统治地位。通过将深度学习模型部署到PX4飞控硬件,实现了从传感器数据直接生成电机指令的端到端控制。这种架构依赖TensorFlow Lite Micro等轻量级推理框架,在STM32等嵌入式处理器上可达到93μs级推理速度。关键技术突破包括:基于NVIDIA Isaac Gym的高效仿真训练、模型量化压缩技术(如8位整数量化)、以及与PX4原生安全架构的无缝集成。该方案在mRobotics Pixracer Pro等硬件上验证了可行性,为无人机姿态控制、视觉导航 阅读详情

nc 是一把网络的瑞士军刀,我以前在介绍 DuplexPipe 时也提到过,如果你没接触过它,可以先参看一下《DuplexPipe二三事(二)》。再来简单地介绍一下 DuplexPipe,顾名思义,它是一个“双向管道”。在 shell 中,我们通过“|”使用匿名管道,让前一条命令的输出作为后一条命令的输入;双向管道即在此基础上在加上“后一条命令的输入作为前一条命令的输入”。这是最初开发它的原因,但后来发现它更像是一个网络接口转换器,“DuplexPipe”这个名字反而不能体现它的功能。更多内容请参看DuplexPipe系列文章

留言

今天网友黄海给我留言,他通过用 nc 的 -e 选项来执行 nc 本身来实现 DuplexPipe。留言原文如下:

哥们,你写的那个DuplexPipe, 我很欣赏。不过近日于网上逛发现此工具的功能竟然完全可以用netcat做到,有两种方法,我的博客上载了一种。简单描述如下:
在windows下:
echo nc [ip] [port] > relay.bat
nc -l -p [port2] -e relay.bat
其余的类推
第二种方法是用命名管道:(linux下)
mknod backpipe p
nc -l -p [port] 0<backpipe | nc [ip] [port12] | tee backpipe

其中选项 -e 的作用是:

for NT:    -e prog        inbound program to exec [dangerous!!]
for Linux: -e filename    program to exec after connect [dangerous!!]

Windows下不行

在我开发 DuplexPipe 时确实考虑过功能会不会和 nc 重叠,当时只想着通过 shell 管道来连接,忘了 nc 自带了一个双向管道!我首先在 Vista 下做了测试,nc(win32) 是从 http://www.securityfocus.com/tools/139 下载。开启三个命令提示符,分别执行:

1) nc -l -p 1234
2) nc localhost 1234 -e "nc -l -p 1235"
3) nc localhost 1235

其中第二条和留言中使用批处理等价。理论上在提示符(3)中输入一行数据,提示符(1)三中马上显示。但我每次在提示符(3)中输入一堆数据后,提示符(1)要输入两个回车才会把数据显示出来。我又另外开启四个命令提示符,模拟 DuplexPipe:

1) nc -l -p 1234
2) nc -l -p 1235 -e "nc -l -p 1236"
3) nc localhost 1234 -e "nc localhost 1235"
4) nc localhost 1236

此时提示符(1)中的数据能发送到(4)中,而提示符(4)中的数据却倒不了(1)。调整(2)、(3)中端口的顺序会出现不同结果,但都达不到理想效果。后来又下了其他几个不同版本的 nc,并在 WinXP 下也进行了测试,但都不成功。

Linux下成功

Linux下有些不同,nc 不能脱离 shell 执行。可以像留言中一样先创建一个脚本文件,也可以使用另一个选项:

-c shell commands      as `-e'; use /bin/sh to exec [dangerous!!]

我的系统是 Debian Lenny+nc v1.10-38,经测试能实现 DuplexPipe 的全部功能!最新版的 DuplexPipe 能实现九种连接模式,对应的指令分别是:

  1. nc -l -p port1 -c 'nc -l -p port2'
  2. nc -l -p port1 -c 'nc host2 port2'
  3. nc -l -p port1 -c 'nc -u -l -p port2'
  4. nc -l -p port1 -c 'nc -u host2 port2'
  5. nc host1 port1 -c 'nc host2 port2'
  6. nc host1 port1 -c 'nc -u -l -p port2'
  7. nc host1 port1 -c 'nc -u host2 port2'
  8. nc -u -l -p port1 -c 'nc -u -l -p port2'
  9. nc -u -l -p port1 -c 'nc -u host2 port2'

在留言中还提到用命名管道来实现。

mknod pipe p
nc -l -p 1234 0< pipe | nc -l -p 1235 > pipe

shell 的匿名管道让前一条命令的标准输出作为后一条命令的标准输入,手工创建的命名管道则是让后一条命令的标准输出作为前一条命令的标准输入。你会发现这已经解决了文章开头的问题,而且不需要通过网络。

下一步任务

我想,DuplexPipe 已经没必要继续维护了。虽然 Windows 下测试不成功,但所幸它的源码开放,也许接下来我们应该考虑转向去完善 netcat for NT。


版权声明

请尊重原创作品。转载请保持文章完整性,并以超链接形式注明原始作者“redraiment”和主站点地址,方便其他朋友提问和指正。

联系方式

我的邮箱,欢迎来信(redraiment@gmail.com
我的Blogger(子清行):http://redraiment.blogspot.com/
我的Google Sites(子清行):https://sites.google.com/site/redraiment
我的CSDN博客(梦婷轩):http://blog.csdn.net/redraiment
我的百度空间(梦婷轩):http://hi.baidu.com/redraiment

CSR-DCF视频目标跟踪源码运行笔记 论文基本信息 论文标题:Discriminative Correlation Filter with Channel and Spatial Reliability 论文作者:Alan Lukezic等 论文出处:CVPR 2017 文章链接:https://arxiv.org/abs/1611.08461 补充材料:https://www.semanticscholar.org/paper/D... 阅读详情

相关推荐

过压保护电路(OVP)

作者:AirCity 2020.2.4 Aircity007@sina.com 本文所有权归作者Aircity所有 1 示例一 当VBUS=5V时,各点电压电流如图所示,Q1接近截止,输出信号是5V。 当VBUS=5.4V开始,输出信号开始下降,直到VBUS=6.1V,输出信号降低为0.6V。 下面是实测波形,这个电路,输出信号的电压不会超过5.4V,这个输出信号可用于电源的控制信号。 2 ...

AirCity123的博客 3万+

DuplexPipe

原创双管道 传输. Socket 编程. 可以使得通过外网 远程连接 内网.

供应链数字化转型顶层架构设计方案(37页 PPT).pptx

供应链数字化转型顶层架构设计方案(37页 PPT).pptx

DuplexPipe-0.1_0发布

项目主页:http://code.google.com/p/duplexpipe/DuplexPipe 是我开发的一个开源网络小工具——双向管道,目的是让网络上的两个程序能进行自动化交流。当初写这个小工具的原因是为了能在外网远程控制内网计算机。传统的管道只能从一端输入、一端输出。双向管道不仅可以让进程 A 的输出作为进程 B 的输入,也会让进程 B 的输出作为进程 A 的输入。这样就可以让

子清行 2964

DuplexPipe二三事(六)——没有第七

我的设想在着手编写 DuplexPipe 之前,我规划过我的需求:我想要一个最通用的通信工具,换言之就是能让所有具有输入/输出的程序都可以相互通信。DuplexPipe 本身远没达到这个设想,至少还得具备以下几中模式:-f file # 通过读写文件获得数据-s # 从 stdio 中获得数据-e exefile # 从本地程序的输入输出

子清行 2976

DuplexPipe二三事(三)——网络中转站:端口映射

端口映射在《DuplexPipe二三事(二)》中介绍了瑞士军刀 nc 的用法:nc 就像给程序一张飞机票,让原本只能在本地执行的程序也能运行在网络上!但网络和现实交通一样,很多地方需要中转才能到达(比如外网计算机无法直接访问公司内部 Web 服务器)。为实现公网对内部网络的访问,需要对数据进行转发(即端口映射)。比如内网“主机A”开启了 Web(port 80)服务,需要在“服务器的网关”

子清行 3934

使用 nc(netcat)命令实现端口流量转发

想要使用nc(netcat)命令来实现将本机8848端口的流量转发到另一台机器(10.0.0.2)上的8848端口。这可以通过在机器上创建一个简单的端口转发规则来实现nc-l-kncnc请注意,在实际应用中,可能需要考虑流量的加密和身份验证问题,以确保数据传输的安全性。此外,根据现场的网络配置和防火墙设置,可能还需要进行额外的配置来允许这种类型的流量转发。

十年运维开发经验的王义杰在此分享自己的知识和经验 4733

感谢榜

由于我的精力和水平都有限,写的文章中难免存在一些错误。所幸得到热心网友的指正,才能不断修改、完善。我无法像 Knuth 一样为每个错误的头一个发现者支付奖金,故在此罗列各位网友的贡献,让他们收获属于他们的荣誉!2010-01-25:网友黄海提供在 Linux 下通过 nc实现 DuplexPipe 的方法,详见《Linux下用nc实现DuplexPipe》。网友Kusk在评论中指出,在《戏说C

子清行 1935

DuplexPipe二三事(一)——有趣的起因:算24

DuplexPipe 是因为“无聊”!真的,那天很无聊,想起小时候用扑克牌和姐姐比赛算24,就随手写了一个 Shell 脚本重温一下:#!/bin/shfor ((i=0;i<4;i++))do ((n=$RANDOM%10+1)) echo -n "$n "doneechoi=0while read expdo ((i++))

子清行 3516

DuplexPipe二三事(四)——网络连接方式随心换

连接方式在《DuplexPipe二三事(一)》中提到建立连接有两种方式:监听本地端口,等待其他程序来连接(以下简称“监听方式”);或者主动连接其他程序(以下简称“连接方式”)。排列组合一下,会得到三种结果:监听-连接、监听-监听、连接-连接。其中只有“监听-连接”方式能正确地建立连接,《DuplexPipe二三事(三)》中介绍的 FPipe 只是在其中添加了一节“监听-连接-监听-连接”,其中

子清行 8662

nc具体用法

nc简介 1、nc nc全称netcat,又叫做瑞士军刀,是一款简单、可靠的网络工具 2、nc的作用 实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口 端口扫描,nc可以作为client发起TCP或UDP连接 机器之间传输文件 机器之间网络测速 3、常用参数 -l:用于指定nc将处于侦听模式。指定该参数,则意味着nc被当作s

嘻嘻哈哈 7787

DuplexPipe二三事(五)——来自内网的呼唤

穿越防火墙你是否曾经尝试过去连接一台远程计算机,却因为被防火墙拦截或路由器没有转发而造成无法通信?这是主动式连接的一个弊端:它依赖服务器的状态,而对服务器有生杀大权的只有管理员。如果能让服务器主动尝试连接我们的计算机,那就没问题了!因为防火墙、路由等一般不会过滤向外的连接(反弹式木马就是利用这一原理)。但以往的服务端程序都是采用监听本地端口的方式(比如 Windows 远程桌面程序监听本地

子清行 8076

nc+管道符的一种反弹shell姿势

一.什么叫反弹shell? 在计算机科学中,Shell俗称壳(用来区别于核),是指“提供使用者使用界面”的软件(命令解析器)。它类似于DOS下的command.com和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序,这是来自百度百科的解释,通俗点就是说shell是一个用来执行命令的软件,比如我们常见的windows系统下的cmd.exe、powershell,linu...

1088

安全之路 —— 双管道正向连接型后门解析

简述 后门程序有两个重要的过程,分别是socket与cmd通信的过程和cmd结果回传给socket的过程。而双管道正向连接型后门是后门中最古老的一种,采用两个匿名管道,分别负责上述两个重要过程。其中正向连接的意思是后门充当Server端,然后用户使用telnet或netcat(nc)充当客户端连接工具,主动连接后门,这种连接方式具有被防火墙拦截的危险,所以一般不用于现代后门,但却是后门编程...

雨者 1263

Linux Netcat 命令——网络工具中的瑞士军刀

netcat是网络工具中的瑞士军刀,它能通过TCP和UDP在网络中读写数据。通过与其他工具结合和重定向,你可以在脚本中以多种方式使用它。使用netcat命令所能完成的事情令人惊讶。 netcat所做的就是在两台电脑之间建立链接并返回两个数据流,在这之后所能做的事就看你的想像力了。你能建立一个服务器,传输文件,与朋友聊天,传输流媒体或者用它作为其它协议的独立客户端。 下面是一些使用netcat的

Leo Zhang 2823

linux 命令:scp (pscp)、rz/sz、nc (netcat)、ncat、socat、ssh、端口转发(rinetd)

NC 全名 Netcat (网络刀),作者是 Hobbit && ChrisWysopal。因其功能十分强大,体积小巧而出名,被誉为网络安全界的 "瑞士军刀"。Netcat 使用 TCP 或 UDP 协议的网络连接去读写数据。Netcat 也是稳定的后门工具、功能强大的网络调试和探测工具。能够直接由其它程序和脚本轻松驱动。能够建立几乎所有类型的网络连接。在中国NCWINDOWS版有两个版本,一个是原创者Chris Wysopal写的原版本,另一个是由 "红与黑" 编译后的新浓缩版。.........

freeking101的博客 3万+

nc隧道技术

使用场景: 客户端:嵌入式Linux网关 服务器:阿里云服务器 1、正向shell 客户端连接服务器,获取服务器的shell 服务器: [root@VM_0_14_centos ~]# mkfifo /tmp/fifo [root@VM_0_14_centos ~]# cat /tmp/fifo | /bin/bash -i 2&amp;gt;&amp;amp;1 | nc -l 10000 &amp;gt; /tmp/...

lyndon 1万+

Linux提权后获取敏感信息的方法与途径

在本文开始之前,我想指出我不是专家。据我所知,在这个庞大的区域,没有一个“神奇”的答案.分享,共享(我的出发点)。下面是一个混合的命令做同样的事情,在不同的地方,或只是一个不同的眼光来看待事物。我知道有更多的“东西”去寻找。这只是一个基本粗略的指南。并不是每一个命令,做好要注重细节. 文中的每行为一条命令,文中有的命令可能在你的主机上敲不出来,因为它可能是在其他版本的linux中所使用的命令。 ...

weixin_30815427的博客 510

Linux小技巧:使用NC实现文件传输

之前在服务器上拷贝文件时,要么使用scp, 要么就是上传到ftp服务器,然后再需要使用的服务器上重新下载,虽然这两种方式也没啥毛病,但是缺陷也比较明显 scp: 要求授权验证 ftp: 需要一个第三方的存储系统,用完之后如果不删除的话这个文件就一直在那 接下来介绍下使用ncat(即nc)来实现文件拷贝 nc知识点 1. 基本说明 & 安装 ncat/nc 是一个类似于cat的网络命令,常用语网络读、写、重定向;它提供的功能非常强大,本文介绍一下将介绍一下基本使用姿势与应用场景 首先判断系

Maisu的博客 5663

nc命令用法举例

什么是nc nc是netcat的简写,有着网络界的瑞士军刀美誉。因为它短小精悍、功能实用,被设计为一个简单、可靠的网络工具 nc的作用 (1)实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口 (2)端口的扫描,nc可以作为client发起TCP或UDP连接 (3)机器之间传输文件 (4)机器之间网络测速 ...

weixin_30783629的博客 2115

linux网卡速率和双工模式的配置

改变网络接口的速度和协商方式的工具miitool 和ethtool 通过mii-tool和ethtool工具来调整网卡的速度、双工等,这样能提高网卡的效率; mii-tool 配置网络设备协商方式的工具 mii-tool 介绍 mii-tool - view, manipulate media-independent interface status (mii-tool 是查看,管理介质的

花落花开,春去秋来! 1万+

科沃斯深度研究报告:从痛点到痒点,扫地机器人加速渗透,行业巨头归属哪家?.pdf

科沃斯深度研究报告:从痛点到痒点,扫地机器人加速渗透,行业巨头归属哪家?.pdf

上一篇: 编程村一日游
下一篇: 眼不见为净——过滤人人网分享的chrome扩展
redraiment
博客等级 码龄20年 1145粉丝 108原创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值