題幹:兩岸數據傳輸洩露分析
某單位在進行兩岸數據傳輸時洩露了大量的臺灣省公民信息。請你根據給定的三個數據檔案進行分析,分別是:
- 公民信息:
user.csv
- 黑產網站清單:
evilwebsite.txt
- 臺灣郵件網站訪問記錄:
history.json
一、數據文件說明
1. user.csv
(臺灣公民信息,CSV 格式)
欄位順序:姓名, 住宅電話, 身份證, 年齡, 家庭住址, 郵政編碼, 性別
範例(CSV 行):
1 | 蔡一堅,033374123,K107802128,24,桃園縣桃園市桃二街,33063,男 |
2. evilwebsite.txt
(黑產網站清單)
- 每行一個黑產網站或黑產域名或 URL,例如:
1 | www.badsite-example.com |
3. history.json
(網站訪問記錄,JSON 格式)
每條記錄包含:id
(uuid 唯一識別碼)、time
(訪問時間)、cookie
、url
(網站 URL)、ip
(訪問 IP)、userid
(身份證或包含身份證的字串)
示例(注意:示例中的 userid
欄可能混雜年齡等其它內容,需從中抽取合法的身分證格式):
1 | { |
二、臺灣身分證結構與規則說明
臺灣省身份證結構可分為三部分:地區編碼(首字母)、數字編碼(後 9 碼)、身份證驗證(最後一位數字)
下列為題幹提供的對應關係與驗證說明。
1. 首字母(地區字母)對應(示例)
- A 臺北市 → 10
- B 臺中市 → 11
- C 基隆市 → 12
- D 臺南市 → 13
- E 高雄市 → 14
- F 臺北縣 → 15
- G 宜蘭縣 → 16
- H 桃園縣 → 17
- I 嘉義市 → 34
- J 新竹縣 → 18
- K 苗栗縣 → 19
- L 臺中縣 → 20
- M 南投縣 → 21
- N 彰化縣 → 22
- O 新竹市 → 35
- P 雲林縣 → 23
- Q 嘉義縣 → 24
- R 臺南縣 → 25
- S 高雄縣 → 26
- T 屏東縣 → 27
- U 花蓮縣 → 28
- V 臺東縣 → 29
- W 金門縣 → 32
- X 澎湖縣 → 30
- Y 陽明山管理局 → 31
- Z 連江縣 → 33
注意:題幹同時提供了「縣市名稱與區域號碼」之對應(例如 03/033/034 表示桃園等數字區碼),可用於電話區號驗證
2. 數字編碼(含性別碼)
- 身分證第二位(數字)代表性別:1 = 男,2 = 女
- 身分證最後一位為驗證碼(需按下述公式計算檢驗)
3. 身份證驗證公式(檢查碼計算)
通算值計算方式:
1 | 通算值 = (首字母對應之第一位驗證碼) |
(此處以題幹所述公式為準,實作時需對 首字母
做數字拆分並帶入計算。)
4. 電話區號與縣市對應(題幹提供)
題幹提供的主要區域號碼對應,例如:
02
→ 臺北03
/033
/034
→ 桃園035
/036
→ 新竹038
→ 花蓮039
→ 宜蘭037
→ 苗栗042
/043
/045
/046
→ 臺中047
/048
→ 彰化049
→ 南投052
/053
→ 嘉義055
/056
/057
→ 雲林062
/065
/066
/067
→ 臺南069
→ 澎湖07
→ 高雄087
/088
→ 屏東089
→ 臺東082
/0823
→ 金門0826
→ 烏坵0836
→ 馬祖
在驗證住宅電話時,需抽取號碼開頭的區碼(題幹示例
033374123
可視為03x
類型屬於桃園對應範圍),並與家庭住址所示縣市進行匹配。
三、驗證規則(需同時滿足三項)
對 user.csv
每一條記錄,驗證下列三條規則:
規則一(地區對應)
- 家庭住址必須符合身分證的地區(首字母對應之縣市)。
例:身分證D160549675
對應為「臺南市」,則家庭住址
必須為臺南市。
規則二(性別對應)
性別
欄位必須與身分證內的性別碼一致(身分證第二位1/2
→男/女
)。
規則三(電話區碼對應)
- 住宅電話的區號必須符合家庭住址所屬縣市(例如電話以
03
或033
開頭表示桃園,則家庭住址必須也位於桃園)。
四、任務(輸出要求)
- 編寫腳本(或手動計算)驗證
user.csv
中有多少條公民同時滿足上述三條規則(即符合規則一、二、三的條目數)。 - 使用
history.json
與evilwebsite.txt
,找出訪問黑產網站次數最多的臺灣公民的身份證(以userid
欄位中抽取的合法身分證字串為準)。- 若
userid
欄位含有其他字串(例如年齡),請從中抽取形如[A-Z][0-9]{9}
的合法身分證格式來統計。 - 若有多位並列最多,請列出任一位或全部(視題目評分需求而定)。
- 若
五、附加說明與範例
正確範例(題幹提供):
1 | 蔡一堅,033374123,K107802128,24,桃園縣桃園市桃二街,33063,男 |
- 身分證
K107802128
:首字母 K → 對應地區(題幹為「苗栗縣」對應 19,實際判定時請依題幹的字母→地區表比對),數字第二位1
→ 男;電話033374123
的區碼屬於桃園(03x 類),家庭住址包含「桃園縣」——若字母與住址一致、性別一致且電話區碼與住址一致,則該條視為符合三規則。
錯誤範例(題幹提供):
1 | 陳火焰,0795568398,C292399182,34,臺中縣嘉義市嘉義街,33063,男 |
- 錯誤理由:該身分證首字母
C
對應為基隆市,但家庭住址
為臺中縣/嘉義市(不一致);身分證第二位為2
(女性)但性別
欄為男;電話區碼07
為高雄,與家庭住址不符;等等。
六、輸出範例格式(提交格式)
最終提交格式範例(請按題目要求填寫):
1 | {661322_X264772748} |
思路声明
目前我公開了本題的出題思路,如果您想要引用這道題目,可以直接拿過去,但前提是需要保留作者版權,:D