瑞士军刀:netcat(nc)、socat

2024-03-09 17:30
文章标签 nc 瑞士军刀 socat netcat

本文主要是介绍瑞士军刀:netcat(nc)、socat,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 1 老版瑞士军刀:netcat(nc)
      • 部分参数:
      • 示例:
    • 2 新版瑞士军刀:socat
      • 基本命令:
      • 示例:
    • 3 最后

1 老版瑞士军刀:netcat(nc)

参考:https://zhuanlan.zhihu.com/p/83959309

netcat 主要有 GNU版 和 OpenBSD版,一般软连接为nc
查看方法:readlink -f $(which nc)
/bin/nc.traditional: 默认 GNU 基础版本,一般系统自带。
/bin/nc.openbsd: openbsd 版本,强大很多。
nmap 自带的一个更好的 netcat 分支,比 openbsd 版本还强

  • 部分参数:

-N 传输完就退出
-n 不进行dns解析
-l 侦听
-p 端口号
-u 代表udp协议
-z 代表不发送数据,仅连接
-vv 显示更多信息 -v、-vv、-vvv

  • 示例:

# http端口测试(tcp 80):
$ nc -vz 192.168.32.13 80     # 类别telnet 192.168.32.13 80# tcp端口测试:
$ nc -l -p 8080         # 服务器端侦听8080端口,默认tcp协议
$ nc 192.168.1.2 8080   # 连接服务器(192.168.1.2)的8080端口# udp端口测试:
$ nc -u -l -p 8080        # 服务器端侦听8080端口
$ nc -u 192.168.1.2 8080# 传输目录:
$ nc -l -p 3333 | tar -x ./                  # 服务器端侦听3333端口。收到tar包数据流,并解包到当前目录
$ tar -cO ./2018 | nc -N 192.168.32.13 3333  # 创建tar包,并输出到标准输出,再通过管道传输到服务器(192.168.32.13)的3333端口。  说明:-O 输出到标准输出。
## 或压缩后传输:
$ nc -l -p 3333 | tar -zx ./                 # 服务器端侦听3333端口。收到tar.gz包数据流,并解压解包到当前目录
$ tar -zcO ./2018 | nc -N 192.168.32.13 3333 # 创建tar.gz包,并输出到标准输出,再通过管道传输到服务器(192.168.32.13)的3333端口。# 传输目录为tar文件:
$ nc -l -p 3333 > xx.tar.gz                  # 服务器端侦听3333端口。收到tar.gz包数据流保存到xx.tar.gz
$ tar -zcO ./2018 | nc -N 192.168.32.13 3333 # 创建tar.gz包,并输出到标准输出,再通过管道传输到服务器3333端口# 传输文件:
$ nc -l -p 3333 > xx.tar.gz                  # 服务器端侦听3333端口。收到tar.gz包数据流保存到xx.tar.gz
$ nc -N 192.168.32.13 3333  < xx.tar.gz      # 将文件xx.tar.gz输出到服务器3333端口# 网速吞吐量测试:
$ nc -vv -n -l -p 3333 > /dev/null                               # 服务器端侦听3333端口。将收到的数据丢弃
$ dd if=/dev/zero bs=1MB count=100 | nc -N -n 192.168.32.13 3333 # 通过dd输入 100x1MB 数据到服务器3333端口
## 或方法二即时显示网速
$ nc -l -p 3333 | pv         # 需要安装:sudo apt install pv
$ nc 192.168.32.13 3333 < /dev/zero# 连接bash shell:
$ mkfifo /tmp/f                                               # 新建管道文件
$ cat /tmp/f | /bin/bash 2>&1 | nc -v -n -l -p 3333 > /tmp/f  # 这个命令要从nc命令处开始理解,首先nc收到远程传来的内容(命令),将其输出到管道,然后将管道里的内容cat到bash,然后bash执行完成后又输出到stdout,stdout又会被输出到远程的屏幕进行回显
$ nc 192.168.32.13 3333
## 用完注意将 /tmp/f 这个 fifo 管道文件删除。

2 新版瑞士军刀:socat

参考:https://zhuanlan.zhihu.com/p/347722248

  • 基本命令:

socat [参数] <地址1> <地址2>

[参数]请参考help

使用 socat 需要提供两个地址,然后 socat 做的事情就是把这两个地址的数据流串起来,把第左边地址的输出数据传给右边,同时又把右边输出的数据传到左边。最简单的地址就是一个减号“-”,代表标准输入输出,例如:

$ socat - -          # 把标准输入和标准输出对接,输入什么显示什么
  • 示例:

# 网络测试:
$ socat - TCP-LISTEN:8080          # 启动 server 监听 TCP
$ socat - TCP:192.168.32.13:8080   # 连接server 8080
## 或:
$ socat TCP-LISTEN:8080 -
$ socat TCP:192.168.32.13:8080 -
## 说明:上面两种方法效果一样,因为就是把左右两个地址的输入输出接在一起,除非前面指明 -u 或者 -U 显示指明数据“从左到右”还是“从右到左”。# 也可以用udp协议:
$ socat - UDP-LISTEN:8080               # 终端1 上启动 server 监听 UDP
$ socat - UDP:192.168.32.13:8080        # 终端2 上启动 client 链接 UDP# 一般如果客户端结束结束会话,服务端也会结束,但加额外参数可以避免:
$ socat - TCP-LISTEN:8080,fork,reuseaddr      # 终端1 上启动 server
$ socat - TCP:192.168.32.13:8080              # 终端2 上启动 client
## 注释:
## fork      能同时应答多个链接过来的客户端,每个客户端会 fork 一个进程出来进行通信
## reuseaddr 地址重用,防止链接没断开玩无法监听的问题# 端口转发1:
$ socat TCP-LISTEN:8080,fork,reuseaddr  TCP:www.baidu.com:443  # 转发本地端口的数据到远程www.baidu.com:443# 端口转发2:
$ socat TCP-LISTEN:8080,fork,reuseaddr  EXEC:/usr/bin/bash    # 服务端提供 shell
$ socat - TCP:192.168.32.13:8080                              # 客户端登录

3 最后

img

爱你!

这篇关于瑞士军刀:netcat(nc)、socat的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/791397

相关文章

matlab读取NC文件(含group)

matlab读取NC文件(含group): NC文件数据结构: 代码: % 打开 NetCDF 文件filename = 'your_file.nc'; % 替换为你的文件名% 使用 netcdf.open 函数打开文件ncid = netcdf.open(filename, 'NC_NOWRITE');% 查看文件中的组% 假设我们想读取名为 "group1" 的组groupName

NC 把数字翻译成字符串

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 描述 有一种将字母编码成数字的方式:‘a’->1, ‘b->2’, … , ‘z->26’。 现在给一串数字,返回有多少种可能的译码结果 import java.u

探索Invoke:Python自动化任务的瑞士军刀

文章目录 探索Invoke:Python自动化任务的瑞士军刀背景:为何选择Invoke?`invoke`是什么?如何安装`invoke`?简单的`invoke`库函数使用方法场景应用:`invoke`在实际项目中的使用场景一:自动化测试场景二:代码格式化场景三:部署应用 常见问题与解决方案问题一:命令执行失败问题二:权限不足问题三:并发执行问题 总结 探索Invoke:P

用友UFIDA NC portal/pt/file/upload接口存在任意文件上传漏洞 附POC

@[toc] 用友UFIDA NC portal/pt/file/upload接口存在任意文件上传漏洞 附POC 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。 1. 用友UFIDA NC 简介 微信公众号搜索:南风漏洞复现文库 该文

nc -s网络连通性测试

例如: nc -s 192.168.82.67 192.168.82.66 22 在这个命令中,您使用了nc(Netcat)工具来进行网络连接。下面是命令的详细说明: nc: 表示使用Netcat工具进行操作。-s 192.168.82.67: 指定源IP地址为192.168.82.67。这个参数让Netcat使用指定的IP地址进行网络连接,而不是默认的地址。192.168.82.66:

【Linux实用工具一】sshpass+netcat+lrzsz

1. sshpass-非交互式ssh工具 Sshpass 是一种使用 SSH 所谓的“交互式键盘密码身份验证”非交互式执行密码身份验证的工具。换句话说,允许在命令行中指定密码进行ssh相关操作,而不需要在执行ssh后再次手动输入密码,非常实用! 1.1 源码 Non-interactive ssh password auth download | SourceForge.netDownloa

连载:面向对象葵花宝典:思想、技巧与实践(4) - 面向对象是瑞士军刀还是一把锤子?

为什么要面向对象? 可以说,面向过程和计算机是如影随形的。从计算机诞生之日起,面向过程就是占据着主导地位的思想,即使到了现在,面向过程也是无处不在的,C语言、操作系统、协议栈、驱动系统,都是面向过程的代表。  那为什么还会有面向对象的诞生并流行呢?当然是面向过程存在某些不足,如果面向过程足够好,谁还费心费力的去搞另外一套呢?  前面我们提到,面向过程是一种机器的思想,

NC 寻找峰值

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 描述 给定一个长度为n的数组nums,请你找到峰值并返回其索引。数组可能包含多个峰值,在这种情况下,返回任何一个所在位置即可。 1.峰值元素是指其值严格大于左右相邻值的元素

NC 三个数的最大乘积

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 描述 给定一个长度为 n 的无序数组 A ,包含正数、负数和 0 ,请从中找出 3 个数,使得乘积最大,返回这个乘积。 import java.util.*;publi

NC 二分查找-II

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 描述 请实现有重复数字的升序数组的二分查找 给定一个 元素有序的(升序)长度为n的整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的第一个出现