python编写nc的思考

0x00前言发现自己学习python已经有半个月了,也开发了自己的一些渗透的小脚本,但觉得还是不够,我个人觉得工具和脚本还有框架是个本质上的区别。脚本的话,不会考虑到其他的一些因素,例如报错和交互

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

0x00 前言

发现自己学习python已经有半个月了,也开发了自己的一些渗透的小脚本,但觉得还是不够,我个人觉得工具和脚本还有框架是个本质上的区别。脚本的话,不会考虑到其他的一些因素,例如报错和交互性。要是有的话可能还要在工具里面修改到一些参数,然后才能进行使用。简单点来过脚本给我的概念就是编写出来能用就行。而工具具有的是一些交互性让对方输入自己想要的命令或者说参数,然后执行不需要频繁改代码再使用。还有的就是容错率,对应工具来说一些因为参数输入不正确,直接爆出一片红的,这个对用户来说并不是很友好,并且报错的话程序也会立即停止。这里再来说到框架,框架这个容错率和交互性肯定不用说了,这个是必备的,框架还必须具备的功能的齐全性和可移植性。

 

0x01 工具开发

在年初就一直计划着用python来编写个nc,但一直没有去实现,当时也买了本python黑帽子回来看,但由于python黑帽子是基于2.7版本的。python2.7和python3.7有很大的差异,后面也没有找到几个编写nc的书籍来做参考,所以当时的想法就破灭了。近几天来奇怪的想法又产生了,就使用了python3来编写这个nc,其实nc的编写非常简单也就是socket通讯,然后接受执行命令,执行的结果返回给我们的服务端。说白了也就是socket的通讯模型,只不过加了个执行命令的模块把执行结果给返回了。在后期想把这个nc再进行优化,例如可以完善成一个渗透框架,接受多个会话并且自由切换会话,设置心跳,上传下载功能,并且多个通讯隧道,打造成一个python版cs,python写的工具编译成exe程序的免杀效果 除了文件大了点外,还是很可观的。

使用kali进行nc监听

nc -lvp 4444

然后来到python 版本nc这边使用python_nc去连接

nc.py -i 192.168.3.39 -p 4444

 

python编写nc的思考

 

 

 命令执行成功,但是由于这里是因为编码的问题会乱码,kali里面改成gbk的编码就ok了。

 

这里再来测试他的服务端。

python_nc 改成监听模式

nc.py -l 4444

这里直接把python编译成exe,然后去我的win7进行操作,这里的demo的,只有客户端去连接的功能,用的是sys去接收,命令参数还没写,这里为了方便,用他来做个演示。

demo.exe 192.168.3.13 4444

这时候我们就可以在服务端来输入命令了

python编写nc的思考

 

因为在昨天去调试的时候python提示编码错误,在 打印的地方加多个encoding=’GBK’,使用gbk编码就好了。能成功输出中文。

这里是没问题的,但是如果输入不正确的命令的话,就会直接报错并且停止。在后来去找了一些原因是因为使用了 subprocess.check_output这个函数来执行命令,所以才会出现这种问题。这个函数

执行命令,如果状态码是0,则返回执行结果,否则抛出异常。再后面也会逐步去完善功能。

 

在下面给各位师傅们贴出github地址,有什么问题或者说建议的话也可以和我探讨。

github:https://github.com/nice0e3/python_nc/

0x02 结尾

在末尾,给大家贴张表情包。

python编写nc的思考

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119965.html原文链接:https://javaforall.net

(0)
上一篇 2021年12月11日 上午10:00
下一篇 2021年12月11日 上午11:00


相关推荐

  • 通常C面试题

    通常C面试题C 面试题 1 在 C 中 stringstr null 与 stringstr 请尽量使用文字或图象说明其中的区别 回答要点 说明详细的空间分配 10 分 答 stringstr null 是不给他分配内存空间 而 stringstr 给它分配长度为空字符串的内存空间 请详述在 dotnet 中类 class 与结构 struct 的异同 10 分 答

    2026年3月27日
    1
  • 【原创】C++ 动态数组 vector 详解

    【原创】C++ 动态数组 vector 详解一 引入引入 略 vector 收录在 STL 里 是一种特殊的数据结构 它的中文名字叫做 动态数组 或者 不定长数组 有时也被翻译成 容器 说白了 vector 就是一个功能强大的数组 下面让我们来体验它强大的功能吧 二 vector 的头文件 vector 收录在 std 库里 所以调用 vector 需要 include vector usi vector

    2026年3月17日
    2
  • ossim mysql密码_OSSIM 4.1安装详解

    ossim mysql密码_OSSIM 4.1安装详解OSSIM4 1 安装详解在今年出版的畅销书 Unix Linux 网络日志分析与流量监控 一书中主要为大家介绍了开源安全运维利器 OSSIM 很多同行对 Ossim 表示了极大关注 纷纷来信咨询如何部署和使用这套系统 下面就 4 1 版的安装方法进行详细说明 具体 ossim 的组成原理大家可参看教程 在安装之前首先确保网络环境能够连接互联 系统会向 debian pool ntp org 站点同步时钟 注意要选

    2026年3月18日
    1
  • photoshop之合并图层

    photoshop之合并图层photoshop 之合并图层在右侧图层窗口按住 ctry 按键选中要合并的图层 右键单击 合并图层

    2026年3月19日
    1
  • spring aop实例讲解_Spring Framework

    spring aop实例讲解_Spring Framework在上篇博文中,我向大家介绍了Aop重要概念和教程,这回给出代码示例。一、XML方式1.TestAspect:切面类packagecom.spring.aop;importorg.aspectj.lang.JoinPoint;importorg.aspectj.lang.ProceedingJoinPoint;publicclassTestAspect{ pu

    2022年8月11日
    13
  • php基础知识(七)

    php基础知识(七)

    2021年6月14日
    116

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号