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


相关推荐

  • mysql的sql语句优化5种方式_网络优化工程师是做什么的

    mysql的sql语句优化5种方式_网络优化工程师是做什么的1、建表语句+联合索引CREATETABLE`student`(`id`int(10)NOTNULL,`name`varchar(20)NOTNULL,`age`int(10)NOTNULL,`sex`int(11)DEFAULTNULL,`address`varchar(100)DEFAULTNULL,`phone`varchar(100)DEFAULTNULL,`create_time`timestamp.

    2022年8月20日
    6
  • java数组删除元素_java中删除 数组中的指定元素方法[通俗易懂]

    java数组删除元素_java中删除 数组中的指定元素方法[通俗易懂]java中删除数组中的指定元素要如何来实现呢,如果各位对于这个算法不是很清楚可以和小编一起来看一篇关于java中删除数组中的指定元素的例子。java的api中,并没有提供删除数组中元素的方法。虽然数组是一个对象,不过并没有提供add()、remove()或查找元素的方法。这就是为什么类似ArrayList和HashSet受欢迎的原因。不过,我们要感谢ApacheCommonsUtils,我…

    2022年8月11日
    9
  • 导出的Excel名字乱码_恢复的excel文件乱码

    导出的Excel名字乱码_恢复的excel文件乱码因为经常要用到导出功能,之前因为文件名乱码,所以都用英文或是拼音缩写来代替,今天特意要接觉下这个问题。顺便记录下。望对小白有用。/***导出结算详情列表*@return*/publicvoiddepositLogExport(){Stringtitle=”押金流水报表”;StringexcelName=”押金流水报表.xls”;OutputStreamos=null;t…

    2022年8月30日
    0
  • 面试 |这些PHP重点知识你都会吗[通俗易懂]

    面试 |这些PHP重点知识你都会吗

    2022年2月13日
    32
  • Tarjan 算法介绍及用法

    Tarjan 算法介绍及用法Tarjan 简介 这是一个有关图联通的算法 它基于 dfs 在解决有环的有向图或无向图的问题时 很多算法不好是操作 那么就先要将环进行缩点 将其转换为 DAG 有向无环图 或一棵树 然后问题应会迎刃而解常规操作 首先补几个概念 强连通 在一个 DAG 中 有 a b 两点 若 a 可以到达 b 且 b 可以到达 a 则 a b 即为强连通 强连通图 若在一个 DAG 中 任意两

    2025年6月18日
    0
  • JAVA和C++区别

    JAVA和C++区别 JAVA和C++都是面向对象语言。也就是说,它们都能够实现面向对象思想(封装,继乘,多态)。而由于c++为了照顾大量的C语言使用者,而兼容了C,使得自身仅仅成为了带类的C语言,多多少少影响了其面向对象的彻底性!JAVA则是完全的面向对象语言,它句法更清晰,规模更小,更易学。它是在对多种程序设计语言进行了深入细致研究的基础上,据弃了其他语言的不足之处,从根本上解决了c++的固有缺陷。Java和

    2022年7月7日
    16

发表回复

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

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