2019寒假訓練營第二次作業

2022-05-28 15:03:13 字數 1911 閱讀 5250

以上兩門課程二選一即可。

當務之急,是先恢復伺服器,把攻擊你的黑客都拉進黑名單,讓伺服器不要理會這些請求。第一步,就是要把黑客檢測出來。你需要對請求進行審查,找出其中有問題的請求,然後把傳送方拉黑。這些請求長這個樣子:傳送方的名字由4個小寫英文本母組成,後面跟著接收方和請求資訊的大小,你可以通過請求資訊的大小推測請求的內容。

你的伺服器就是那個可憐的bob,而傳送方有很多,有的是普通使用者,而有的就是黑客了。很明顯,黑客在短時間給你發了大量的資訊,傳送方中的 abcd 就很有可能是黑客,因為他在短時間內給你發了很多資訊量很小的請求(64,很可能只有hello),而且這些請求值總值已經超過了1500。本著寧錯殺一千,不放過乙個的原則,只要總的請求資訊的大小超過t=1500,就把它拉黑。

程式語言不限

學習基本的檔案讀寫

讀提供的檔案request.txt

把裡面的內容寫到output.txt

根據提供請求的輸入request.txt,把所有請求和對應的資訊大小都存下來。

統計每個傳送方的總請求大小s,s超過t的就認定為黑客,把他們的名字存進你的黑名單裡。

輸出黑客的個數,和這些黑客的名字。

例如:示例中有28個請求,其中abcd發了25個請求,這些請求的總和s是1600>1500=t,所以abcd被認為是黑客,就把abcd加到你的黑名單裡去。

現在你已經暫時恢復了服務。但你發現,1的方法很笨,例如:把所有請求都存下來,再統計總值,花費了你大量的儲存空間。這裡面包含了很多不必要的操作,有很多缺點。

吐槽1方法,找到這個方法的問題。給出你的方法,不一定是完美的,說出方法的優缺點,只要能自圓其說。(可以從速度、占用的空間、準確率等方面思考)

選做:實現你的方法。

輸入:

名字和資訊大小用乙個空格隔開,每條資訊用乙個換行隔開

lhyy bob 100

hzrr bob 700

cyxx bob 364

lhyy bob 700

lhyy bob 800

zzyy bob 300

zzyy bob 800

zzyy bob 600

輸出:

第一行輸出黑客的總個數,第二行輸出黑客名,每個黑客名用乙個換行隔開

2

lhyy

zzyy

第二個問題是,有的雖然只提交了一兩次請求但資料量大於t的傳送方會被「誤殺」,「錯殺一千」可能就錯過了重要的訂單。

改進策略:新建maprequest_max記錄每個傳送方向伺服器提交的最大單次請求大小。

當記錄總值大於t且最大單次大小小於m時,忽略該傳送請求。減少誤殺提高準確度。

缺點:黑客傳送一次資料量大等於m的請求,即可繞開後續檢測。

#includeusing namespace std;

const int t=1500;

int main()

} }map::iterator it;

printf("%d\n",blacklist_size);

for (it=request_sum.begin(); it!=request_sum.end(); it++) }

fclose(stdin);

fclose(stdout);

return 0;

}

github:

2019寒假訓練營第二次作業

部落格鏈結 熱身題 20 學習基本的檔案讀寫 讀提供的檔案request.txt 把裡面的內容寫到output.txt 基本題 60 根據提供請求的輸入request.txt,把所有請求和對應的資訊大小都存下來。統計每個傳送方的總請求大小s,s超過t的就認定為黑客,把他們的名字存進你的黑名單裡。輸出...

2019寒假訓練營第二次作業

作業鏈結 網路空間安全框架 網路空間安全需求 網路空間安全框架中的安全問題 網路空間安全模型 windows中物理路徑用的是單斜槓 但在c語言中單斜槓與轉義字元衝突,所以用雙斜槓表示 按行讀取檔案時,需要讀到檔案結尾,則讀取每行之前需要使用feof檢測是否到達結尾。讀取資料時候因為資料行數較多,在控...

2019雛鷹訓練營第二次作業

作業題目 我是乙個不喜歡寫注釋的人,這是乙個很不好的習慣。發布完404,返回舊版後台修改後發布終於可以了。太難了。最開始看到題目以為是網路的題。網路學的其實不是很紮實,內心就有點換張。尤其是那個ddos,一周好像學不到特別深的東西。頁面往下劃,看到熟悉的輸入輸出。嗯這是一道程式設計題。本著程式設計題...