當前位置:首頁 » 操作系統 » 離線驗證演算法

離線驗證演算法

發布時間: 2023-12-11 16:06:02

⑴ 推薦演算法簡介

在這個時代,無論是信息消費者還是信息生產者都遇到了很大的挑戰:作為信息消費者,如何從大量信息中找到自己感興趣的信息是一件非常困難的事情;作為信息生產者, 如何讓自己生產的信息脫穎而出,受到廣大用戶的關注,也是一件非常困難的事情。推薦系統就是解決這一矛盾的重要工具。推薦系統的任務就是聯系用戶和信息,一方面幫助用戶發現對自己有價值的信息,另一方面讓信息能夠展現在對它感興趣的用戶面前,從而實現信息消費者和信息 生產者的雙贏。和搜索引擎不同的是,推薦系統不需要用戶提供明確的需求,而是通過分析用戶的歷史行為給用 戶的興趣建模,從而主動給用戶推薦能夠滿足他們興趣和需求的信息 個性化推薦的成功需要兩個條件。第一是存在 信息過載 ,因為如果用戶可以很容易地從所有物品中找到喜歡的物品,就不需要個性化推薦。第二用 戶大部分時候沒有特別明確的需求 ,因為用戶沒有明確的需求,可以直接通過搜索引擎找到感興趣的物品。

一個完整的推薦系統一般存在3個參與方:用戶、物品提供者和提供推薦系統的網站。以圖書推薦為例, 首先,推薦系統需要滿足用戶的需求,給用戶推薦那些令他們感興趣的圖書。其次,推薦系統要讓各出版社的書都能夠被推薦給對其感興趣的用戶,而不是只推薦幾個大型出版社的書。最後, 好的推薦系統設計,能夠讓推薦系統本身收集到高質量的用戶反饋,不斷完善推薦的質量,增加 用戶和網站的交互,提高網站的收入。因此在評測一個推薦演算法時,需要同時考慮三方的利益, 一個好的推薦系統是能夠令三方共贏的系統。

推薦系統中,主要有3種評測推薦效果的實驗方法,即離線實驗(offline experiment)、用戶調查(user study)和在線實驗(online experiment)。

2.1 離線實驗

離線實驗的方法一般由如下幾個步驟構成: (1) 通過日誌系統獲得用戶行為數據,並按照一定格式生成一個標準的數據集; (2) 將數據集按照一定的規則分成訓練集和測試集; (3) 在訓練集上訓練用戶興趣模型,在測試集上進行預測; (4) 通過事先定義的離線指標評測演算法在測試集上的預測結果。

從上面的步驟可以看到,推薦系統的離線實驗都是在數據集上完成的,也就是說它不需要一個實際的系統來供它實驗,而只要有一個從實際系統日誌中提取的數據集即可。這種實驗方法的 好處是不需要真實用戶參與,可以直接快速地計算出來,從而方便、快速地測試大量不同的演算法。它的主要缺點是無法獲得很多商業上關注的指標,如點擊率、轉化率等,而找到和商業指標非常相關的離線指標也是很困難的事情

2.2 用戶調查

3.3 在線實驗

在完成離線實驗和必要的用戶調查後,可以將推薦系統上線做 AB測試 ,將它和舊的演算法進行比較。 AB測試 是一種很常用的在線評測演算法的實驗方法。它通過一定的規則將用戶隨機分成幾組,並對不同組用戶採取不同的演算法,然後通過統計不同組用戶的各種不同的評測指標比較不同演算法的好壞。 AB測試的優點是可以公平獲得不同演算法實際在線時的性能指標,包括商業上關注的指標。 AB測試的缺點主要是周期比較長,必須進行長期的實驗才能得到可靠的結果。因此一般不會用 AB測試測試所有的演算法,而只是用它測試那些在離線實驗和用戶調查中表現很好的演算法。其次, 一個大型網站的AB測試系統的設計也是一項復雜的工程。

一般來說,一個新的推薦演算法最終上線,需要完成上面所說的3個實驗。 1)首先,需要通過離線實驗證明它在很多離線指標上優於現有的演算法。 2)然後,需要通過用戶調查確定它的用戶滿意度不低於現有的演算法。 3)最後,通過在線的AB測試確定它在我們關心的指標上。

本節將介紹各種推薦系統的評測指標。這些評測指標可用於評價推薦系統各方面的性能。這 些指標有些可以定量計算,有些只能定性描述,有些可以通過離線實驗計算,有些需要通過用戶 調查獲得,還有些只能在線評測。

(1) 用戶滿意度

用戶作為推薦系統的重要參與者,其滿意度是評測推薦系統的最重要指標。但是,用戶滿意度沒有辦法離線計算,只能通過用戶調查或者在線實驗獲得。

在在線系統中,用戶滿意度主要通過一些 對用戶行為的統計得到 。比如在電子商務網站中,用戶如果購買了推薦的商品,就表示他們在一定程度上滿意。因此,我們可以 利用購買率度量用 戶的滿意度 。此外,有些網站會通過設計一些用戶 反饋界面收集用戶滿意度 。比如在視頻網站中,都有對推薦結果滿意或者不滿意的 反饋按鈕 ,通過統計兩種按鈕的單擊情況就可以度量系統的用戶滿意度。更一般的情況下,我們可以用 點擊率、用戶停留時間和轉化率等指標度量 用戶的滿意度。

(2) 預測准確度

預測准確度度量一個推薦系統或者推薦演算法預測用戶行為的能力。這個指標是最重要的推薦系統離線評測指標

在計算該指標時需要有一個離線的數據集,該數據集包含用戶的歷史行為記錄。然後,將該數據集通過時間分成訓練集和測試集。最後,通過在訓練集上建立用戶的行為和興趣模型預測用戶在測試集上的行為,並計算預測行為和測試集上實際行為的重合度作為預測准確度。 預測准確度指標有分為以下幾種:

評分預測:

預測用戶對物品評分的行為成為評分預測,在評分預測中,預測准確度一般通過均方根誤差RMSE和平均絕對誤差MAE計算,對於測試集中的一個用戶u和物品i,令[圖片上傳失敗...(image-62a797-1560412790460)] 是用戶u對物品i的實際評分,而[圖片上傳失敗...(image-28cfbc-1560412790460)] 是推薦演算法給出的預測評分,那麼RMSE定義為:

其中T為樣本個數

MAE採用絕對值計算預測誤差,它的定義為:

TopN推薦

網站在提供推薦服務時,一般是給用戶一個個性化的推薦列表,這種推薦叫做TopN推薦。TopN推薦的預測准確率一般通過准確率(precision)/召回率(recall)度量。 令R(u)是根據用戶在訓練集上的行為給用戶作出的推薦列表,而T(u)是用戶在測試集上的行為列表。那麼,推薦結果的召回率定義為:

推薦結果准確率定義:

(3) 覆蓋率

覆蓋率(coverage)描述一個推薦系統對物品長尾的發掘能力。覆蓋率有不同的定義方法,最簡單的定義為推薦系統能夠推薦出來的物品占總物品集合的比例。假設系統的用戶集合U,推薦系統給每個用戶推薦一個長度為N的物品集合R(u)。那麼推薦系統的覆蓋率可以通過下面的公式計算:

I為總物品數

此外,從上面的定義也可以看到,熱門排行榜的推薦覆蓋率是很低的,它只會 推薦那些熱門的物品,這些物品在總物品中占的比例很小。一個好的推薦系統不僅需要有比較高的用戶滿意度,也要有較高的覆蓋率。

但是上面的定義過於粗略。覆蓋率為100%的系統可以有無數的物品流行度分布。為了更細致地描述推薦系統發掘長尾的能力,需要統計推薦列表中不同物品出現次數的分布。如果所有的 物品都出現在推薦列表中,且出現的次數差不多,那麼推薦系統發掘長尾的能力就很好。因此, 可以通過研究物品在推薦列表中出現次數的分布描述推薦系統挖掘長尾的能力。如果這個分布比 較平,那麼說明推薦系統的覆蓋率較高,而如果這個分布較陡峭,說明推薦系統的覆蓋率較低。 在資訊理論和經濟學中有兩個著名的指標可以用來定義覆蓋率。第一個是信息熵:

其中:n代表推薦列表中物品類別個數,p(i)代表每個類別的所佔的比率

第二個指標是基尼系數:

(4) 多樣性

為了滿足用戶廣泛的興趣,推薦列表需要能夠覆蓋用戶不同的興趣領域,即推薦結果需要具有多樣性。多樣性推薦列表的好處用一句俗話表示就是(不在一棵樹上弔死)。盡管用戶的興趣在較長的時間跨度中是一樣的。但具體到用戶訪問推薦系統的某一時刻,其興趣往往是單一的,那麼如果推薦列表只能覆蓋用戶的一個興趣點,而這個興趣點不是用戶這個時刻的興趣點,推薦結果就不會讓用戶滿意。反之如果推薦列表表較多樣,覆蓋用戶絕大多數的興趣點,那麼久會增加用戶找到感興趣物品的概率。因此給用戶的推薦列表也需要滿足用戶廣泛的興趣,即具有多樣性。

多樣性描述了推薦列表中物品兩兩之間的不相似性,因此,多樣性和相似性是對應的。假設s(i, j) ∈Î[0,1] 定義了物品i和j之間的相似度,那麼用戶u的推薦列表R(u)的多樣性定義如下:

而推薦系統的整體多樣性可以定義為所有用戶推薦列表多樣性的平均值:

(5) 新穎性

新穎的推薦是指給用戶推薦那些他們以前沒有聽說過的物品。在一個網站中 實現新穎性 的最簡單辦法是,把那些用戶之前在網站中對其有過行為的物品從推薦列表中過濾掉。比如在一個視 頻網站中,新穎的推薦不應該給用戶推薦那些他們已經看過、打過分或者瀏覽過的視頻。 評測新穎度的最簡單方法是利用推薦結果的平均流行度,因為越不熱門的物品越 可能讓用戶覺得新穎。因此,如果推薦結果中物品的平均熱門程度較低,那麼推薦結果就可能有比較高的新穎性。

(6) 驚喜度

驚喜度(serendipity)是最近這幾年推薦系統領域最熱門的話題。如果推薦結果和用戶的歷史興趣不相似,但卻讓用戶覺得滿意,那麼就可以說推薦結果的驚喜度很高,而推薦的新穎性僅僅取決於用戶是否聽說過這個推薦結果。提高推薦驚喜度需要提高推薦結果的用戶滿意度,同時降低推薦結果和用戶歷史興趣的相似度。

(7) 信任度

度量推薦系統的信任度只能通過問卷調查的方式,詢問用戶是否信任推薦系統的推薦結果。 提高推薦系統的信任度主要有兩種方法。首先需要增加推薦系統的透明度(transparency), 而增加推薦系統透明度的主要辦法是提供推薦解釋。只有讓用戶了解推薦系統的運行機制,讓用 戶認同推薦系統的運行機制,才會提高用戶對推薦系統的信任度。其次是考慮用戶的社交網路 信息,利用用戶的好友信息給用戶做推薦,並且用好友進行推薦解釋。這是因為用戶對他們的 好友一般都比較信任,因此如果推薦的商品是好友購買過的,那麼他們對推薦結果就會相對比較信任

(8) 實時性

在很多網站中,因為物品(新聞、微博等)具有很強的時效性,所以需要在物品還具有時效 性時就將它們推薦給用戶。 推薦系統的實時性包括兩個方面。首先,推薦系統需要實時地更新推薦列表來滿足用戶新的 行為變化。實時性的第二個方面是推薦系統需要能夠將新加入系統的物品推薦給用戶。這主要考驗了推 薦系統處理物品冷啟動的能力。

(9) 健壯性

健壯性(即robust,魯棒 性)指標衡量了一個推薦系統抗擊作弊的能力。演算法健壯性的評測主要利用模擬攻擊。首先,給定一個數據集和一個演算法,可以用這個演算法 給這個數據集中的用戶生成推薦列表。然後,用常用的攻擊方法向數據集中注入雜訊數據,然後 利用演算法在注入雜訊後的數據集上再次給用戶生成推薦列表。最後,通過比較攻擊前後推薦列表 的相似度評測演算法的健壯性。如果攻擊後的推薦列表相對於攻擊前沒有發生大的變化,就說明算 法比較健壯

(10) 商業目標

很多時候,網站評測推薦系統更加註重網站的商業目標是否達成,而商業目標和網站的盈利模式是息息相關的

(11) 總結

上一節介紹了很多評測指標,但是在評測系統中還需要考慮評測維度,比如一個推薦演算法, 雖然整體性能不好,但可能在某種情況下性能比較好,而增加評測維度的目的就是知道一個演算法 在什麼情況下性能最好。這樣可以為融合不同推薦演算法取得最好的整體性能帶來參考。

一般來說,評測維度分為如下3種。 1) 用戶維度 :主要包括用戶的人口統計學信息、活躍度以及是不是新用戶等。 2) 物品維度 :包括物品的屬性信息、流行度、平均分以及是不是新加入的物品等。 3) 時間維度 :包括季節,是工作日還是周末,是白天還是晚上等。 如果能夠在推薦系統評測報告中包含不同維度下的系統評測指標,就能幫我們全面地了解推 薦系統性能,找到一個看上去比較弱的演算法的優勢,發現一個看上去比較強的演算法的缺點。

⑵ 網路安全乾貨知識分享 - Kali Linux滲透測試 106 離線密碼破解

前言

最近整理了一些 奇安信&華為大佬 的課件資料+大廠面試課題,想要的可以私信自取, 無償贈送 給粉絲朋友~

1. 密碼破解簡介

1. 思路

目標系統實施了強安全措施

安裝了所有補丁

無任何已知漏洞

無應用層漏洞

攻擊面最小化

社會 工程學

獲取目標系統用戶身份

非授權用戶不受信,認證用戶可以訪問守信資源

已知用戶賬號許可權首先,需要提權

不會觸發系統報警

2. 身份認證方法

證明你是你聲稱你是的那個人

你知道什麼(賬號密碼、pin、passphrase)

你有什麼(令牌、token、key、證書、密寶、手機)

你是誰(指紋、視網膜、虹膜、掌紋、聲紋、面部識別)

以上方法結合使用

基於互聯網的身份驗證仍以賬號密碼為主要形式

3. 密碼破解方法

人工猜解

垃圾桶工具

被動信息收集

基於字典暴力破解(主流)

鍵盤空間字元爆破

字典

保存有用戶名和密碼的文本文件

/usr/share/wordlist

/usr/share/wfuzz/wordlist

/usr/share/seclists

4. 字典

1. 簡介

鍵盤空間字元爆破

全鍵盤空間字元

部分鍵盤空間字元(基於規則)

數字、小寫字母、大寫字元、符號、空格、瑞典字元、高位 ASCII 碼

2. crunch 創建密碼字典

無重復字元

crunch 1 1 -p 1234567890 | more

1

必須是最後一個參數

最大、最小字元長度失效,但必須存在

與 -s 參數不兼容(-s 指定起始字元串)

crunch 4 4 0123456789 -s 9990

讀取文件中每行內容作為基本字元生成字典

crunch 1 1 -q read.txt

1

字典組成規則

crunch 6 6 -t @,%%^^ | more

-t:按位進行生成密碼字典

@:小寫字母 lalpha

,:大寫字母 ualpha

%:數字 numeric

^:符號 symbols

輸出文件壓縮

root@kali:~# crunch 4 5 -p dog cat bird

1

-z:指定壓縮格式

其他壓縮格式:gzip、bzip2、lzma

7z壓縮比率最大

指定字元集

root@kali:~# crunch 4 4 -f /usr/share/crunch/charset.lst mixalpha-numeric-all-space -o w.txt -t @d@@ -s cdab

1

隨機組合

root@kali:~# crunch 4 5 -p dog cat bird

1

crunch 5 5 abc DEF + !@# -t ,@^%,

在小寫字元中使用abc范圍,大寫字元使用 DEF 范圍,數字使用佔位符,符號使用!@#

佔位符

轉義符(空格、符號)

佔位符

root@kali:~# crunch 5 5 -t ddd%% -p dog cat bird

1

任何不同於 -p 參數指定的值都是佔位符

指定特例

root@kali:~# crunch 5 5 -d 2@ -t @@@%%

1

2@:不超過兩個連續相同字元

組合應用

crunch 2 4 0123456789 | aircrack-ng a.cap -e MyESSID -w -

crunch 10 10 12345 –stdout | airolib-ng testdb -import passwd -

3. CUPP 按個人信息生成其專屬的密碼字典

CUPP:Common User Password Profiler

git clone https://github.com/Mebus/cupp.git

python cupp.py -i

4. cewl 通過收集網站信息生成字典

cewl 1.1.1.1 -m 3 -d 3 -e -c -v -w a.txt

-m:最小單詞長度

-d:爬網深度

-e:收集包含email地址信息

-c:每個單詞出現次數

支持基本、摘要 身份認證

支持代理

5. 用戶密碼變型

基於 cewl 的結果進行密碼變型

末尾增加數字串

字母大小寫變化

字母與符號互相轉換

字母與數字互相轉換

P@$w0rd

6. 使用 John the Ripper 配置文件實現密碼動態變型

2. 在線密碼破解

1. hydra

簡介

密碼破解

Windows 密碼破解

Linux 密碼破解

其他服務密碼破解

圖形化界面

xhydra

HTTP表單身份認證

密碼破解效率

密碼復雜度(字典命中率)

帶寬、協議、伺服器性能、客戶端性能

鎖定閾值

單位時間最大登陸請求次數

Hydra 的缺點

穩定性差,程序時常崩潰

速度控制不好,容易觸發服務屏蔽或鎖死機制

每主機新建進程,每服務新建實例

大量目標破解時性能差

2. pw-inspector

Hydra 小工具 pw-inspector

按長度和字元集篩選字典

pw-inspector -i /usr/share/wordlists/nmap.lst -o p1.lst -l

pw-inspector -i /usr/share/wordlists/nmap.lst -o P2.lst -u

pw-inspector -i /usr/share/wordlists/nmap.lst -o P2.lst -u -m 3 -M 5

3. mesa

Mesa 的特點

穩定性好

速度控製得當

基於線程

支持模塊少於hydra(不支持RDP)

WEB-Form 支持存在缺陷

查看支持的模塊

參數

-n:非默認埠

-s:使用SSL連接

-T:並發主機數

mesa -M ftp -q

3. 離線密碼破解

1. 簡介

身份認證

禁止明文傳輸密碼

每次認證使用HASH演算法加密密碼傳輸(HASH演算法加密容易、解密困難)

伺服器端用戶資料庫應加鹽加密保存

破解思路

嗅探獲取密碼HASH

利用漏洞登陸伺服器並從用戶資料庫獲取密碼HASH

識別HASH類型

長度、字元集

利用離線破解工具碰撞密碼HASH

優勢

離線不會觸發密碼鎖定機制

不會產生大量登陸失敗日誌引起管理員注意

2. HASH 識別工具

1. hash-identifier

進行 hash 計算

結果:

進行 hash 識別

2. hashid

可能識別錯誤或無法識別

3. HASH 密碼獲取

1. sammp2

Windows HASH 獲取工具

利用漏洞:Pwmp、fgmp、 mimikatz、wce

物理接觸:sammp2

將待攻擊主機關機

使用 Kali ISO 在線啟動此主機

發現此 windows 機器安裝有兩塊硬碟

mount /dev/sda1 /mnt

將硬碟掛載

cd /mnt/Windows/System32/config

切換目錄

sammp2 SYSTEM SAM -o sam.hash

導出密碼

利用 nc 傳輸 HASH

HASH 值:

2. syskey 工具進行密碼加密

使用 syskey 進行加密(會對 SAM 資料庫進行加密)

重啟需要輸入密碼才能進一步登錄

使用 kali iso live

獲取到 hash 值

hashcat 很難破解

使用 bkhive 破解

使用 Bootkey 利用RC4演算法加密 SAM 資料庫

Bootkey 保存於 SYSTEM 文件中

bkhive

從 SYSTEM 文件中提取 bootkey

Kali 2.0 拋棄了 bkhive

編譯安裝 :http://http.us.debian.org/debian/pool/main/b/bkhive/

在windows的 kali live 模式下,運行

sammp2 SAM key (版本已更新,不再支持此功能)

建議使用 Kali 1.x

1. Hashcat

簡介

開源多線程密碼破解工具

支持80多種加密演算法破解

基於CPU的計算能力破解

六種模式 (-a 0)

0 Straight:字典破解

1 Combination:將字典中密碼進行組合(1 2 > 11 22 12 21)

2 Toggle case:嘗試字典中所有密碼的大小寫字母組合

3 Brute force:指定字元集(或全部字元集)所有組合

4 Permutation:字典中密碼的全部字元置換組合(12 21)

5 Table-lookup:程序為字典中所有密碼自動生成掩碼

命令

hashcat -b

hashcat -m 100 hash.txt pass.lst

hashcat -m 0 hash.txt -a 3 ?l?l?l?l?l?l?l?l?d?d

結果:hashcat.pot

hashcat -m 100 -a 3 hash -i –increment-min 6 –increment-max 8 ?l?l?l?l?l?l?l?l

掩碼動態生成字典

使用

生成文件

計算 hash 類型

結果 MD5

查看 MD5 代表的值

進行破解

2. oclhashcat

簡介

號稱世界上最快、唯一的基於GPGPU的密碼破解軟體

免費開源、支持多平台、支持分布式、150+hash演算法

硬體支持

虛擬機中無法使用

支持 CUDA 技術的Nvidia顯卡

支持 OpenCL 技術的AMD顯卡

安裝相應的驅動

限制

最大密碼長度 55 字元

使用Unicode的最大密碼長度 27 字元

關於版本

oclHashcat-plus、oclHashcat-lite 已經合並為 oclhashcat

命令

3. RainbowCrack

簡介

基於時間記憶權衡技術生成彩虹表

提前計算密碼的HASH值,通過比對HASH值破解密碼

計算HASH的速度很慢,修改版支持CUDA GPU

https://www.freerainbowtables.com/en/download/

彩虹表

密碼明文、HASH值、HASH演算法、字元集、明文長度范圍

KALI 中包含的 RainbowCrack 工具

rtgen:預計算,生成彩虹表,時的階段

rtsort:對 rtgen 生成的彩虹錶行排序

rcrack:查找彩虹表破解密碼

以上命令必須順序使用

rtgen

LanMan、NTLM、MD2、MD4、MD5、SHA1、SHA256、RIPEMD160

rtgen md5 loweralpha 1 5 0 10000 10000 0

計算彩虹表時間可能很長

下載彩虹表

http://www.freerainbowtables.com/en/tables/

http://rainbowtables.shmoo.com/

彩虹表排序

/usr/share/rainbowcrack

rtsort /md5_loweralpha#1-5_0_1000x1000_0.rt

密碼破解

r crack *.rt -h

rcrack *.rt -l hash.txt

4. John

簡介

基於 CPU

支持眾多服務應用的加密破解

支持某些對稱加密演算法破解

模式

Wordlist:基於規則的字典破解

Single crack:默認被首先執行,使用Login/GECOS信息嘗試破解

Incremental:所有或指定字元集的暴力破解

External:需要在主配配文件中用C語言子集編程

默認破解模式

Single、wordlist、incremental

主配置文件中指定默認wordlist

破解Linux系統賬號密碼


破解windows密碼

Johnny 圖形化界面的john

5. ophcrack

簡介

基於彩虹表的LM、NTLM密碼破解軟體

彩虹表:http://ophcrack.sourceforge.net/tables.php

熱點內容
機加工的編程 發布:2024-11-30 00:31:19 瀏覽:726
坦克世界電腦什麼配置 發布:2024-11-30 00:30:41 瀏覽:316
如何在手機設置上找到網路的密碼 發布:2024-11-30 00:18:29 瀏覽:413
和鷹加密鎖 發布:2024-11-30 00:17:17 瀏覽:555
C語言舞會 發布:2024-11-30 00:15:44 瀏覽:376
java下載我的世界 發布:2024-11-30 00:11:08 瀏覽:11
華三配置器升級失敗怎麼回事 發布:2024-11-30 00:09:23 瀏覽:841
汽車空調壓縮機壽命 發布:2024-11-30 00:06:04 瀏覽:566
電腦網路波動異常與伺服器失去連接 發布:2024-11-29 23:43:19 瀏覽:246
個人電腦與伺服器架構類似 發布:2024-11-29 23:40:59 瀏覽:704