3.1 数据安全题
1 AS
解题步骤:
nc 连接ip port
查看示例以及题目,编写exp
def pell_recurrence(x1, y1, x, y, D): x_next = x1 * x + D * y1 * y y_next = x1 * y + y1 * x return x_next, y_next #计算 def generate_until_threshold(x1, y1, D, threshold): x, y = 1, 0 solutions = [(x, y)] iteration = 0 while True: x, y = pell_recurrence(x1, y1, x, y, D) iteration += 1 solutions.append((x, y)) if x > threshold and y > threshold: break return solutions, iteration, (x, y) ################################################################## def main(): D = 42232 x1, y1 = 10863430363390445672094671043496198963286006933268455141841942775234559999, 52862312812076818203801374519259164308207980652808243827880652144787200 threshold = 2 ** 0x149f solutions, iterations, last_solution = generate_until_threshold(x1, y1, D, threshold) print(f" x = {last_solution[0]}") print(f" y = {last_solution[1]}") n1 = (last_solution[0] - 1) // 2 n2 = last_solution[1] print(n1) print(n2) if __name__ == "__main__": main() |
跑出
n1=64844564643854949589851602335778398417357958046473541907965865471825503785272678822237542386514416517255501026894654737183875582496807783872409495107534341842017866051238478938990934065677173894545386342407659205001068135302729237100620243248709910469788678708717889604288162784417431423112537621495419154772986757675855167129919386700726005394167383331284254279498630255373138495682828010693186447810574792874994218289604499886574924855123770269452313096224431838804721642376354130042033741778222063044408922159644752291089361532487709307757583423463220655884510805941446159385501144869234562866066430683959981553165969134977445797440777424234638814716724587813493753683564137657751284194240030996768337897606497230343157092891975885036330981018529535961357191249517789661668822447175593069461889888769130598854771926155737315230514752046521202893304056240286346925487675988559705443898301236706180919342302429465894637859344643029018424523547396779994375190095466431959714922380071905524429743822991653088948274069335885888694577809107547976704340333831507724581758450120483610104589803338257974170815964222143136409208762793223834034506152030379364807697319399089566253484223911381851625271939650371513831661159295598370595261204299608982637315116533642003066692618743189177977975115990107686657670079356738239356620676543732171325509902247145583260228629102545738653747438528455898001193543993258829558589125426525550586695373047067726351358183887658916360966276066716968285230497455072503555764167568060675739545960438904928347842532194851125250305537530924233133264250758350828806805623873239302114836480000
n2=631077577837315807212150605001212011073700092115983086048740595191397762984508443612849134473582040026490305611506672815790733279455324389749038244192826523764101532018565743490392509759876096077887883254442318175689932630406378290843956256970846767354927615869369288800192989189174422345466133799853927778347597501992783349577759948389598413174615232673353340208973245358433732035960788360390003750780198394158840133454980434734440578601714456186288858206698999555657864335810426614970929557078975227401182253826825384609346528962344036388832502259046741321911200171426780637962405234474461120880834809003855463232063187607331663553796062046207210640552948434337370007381441733734803953072245096582393802864729330924382527356098137452931852934251401785618978991521206247075519888904264778862933717556843876611759454744828205597534256578148852799693013920359743897278354653848976322146722301616470055723006827166136303455670710003638464315811357227470395415655224937948450914818485837106928933473384856351356250618250282625719817648523075398057308035679181355320171871349626866791602751075678767523089354131906867914634157335225214304935483754244074330567251227993002161883809355444153164204811698090714762642324815609182517988506268150630360407065284699130560128074008357903247903494721281244031724949839433411188350035997807588936279816925317066899121998083847631776144099773876703164982929799928344353549122389259490732638723303504957174689978086401613054702247774451584115199235037185582727394255585715896600435834403902988987940547963269504370891849450258752419616559584122132413440460209140828641358681600
nc连接提交
得到username[ADMIN-JM],password[JM001x!]
答案:
b7133d84297c307a92e70d7727f55cbc
3.2 数据分析题
1-1
查看题目是镜像,用xwf打开,里面发现重要文件。docx,打开文件全选复制,粘贴到微信发送给自己可见
答案:
b1e9517338f261396511359bce56bf58
2-2,3
解题步骤:
根据泄露的网页信息中搜索张华强找到其手机号码,并且找到其公司名称为:江苏博林科技有限公司
|
答案:
手机号码:13891889377
公司名称:江苏博林科技有限公司
2-4
解题步骤:
根据其手机号码,再在泄露的网页中搜索,获取其身份证号
|
答案:
身份证号:61050119980416547X
2-5
解题步骤:
根据得到的手机号在泄露的车辆信息中查询到张华强的车
答案:
浙B QY318
3.2 模型安全题
1 数据预处理 任务1
解题步骤:
import hashlib import pandas as pd import requests import re from bs4 import BeautifulSoup from tqdm import tqdm # 配置参数 BASE_URL = "http://47.117.190.214:32906/index.php" HEADERS = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36" } def extract_value(text): """提取值,适用于格式 '前缀:值'""" return text.split(":", 1)[-1].strip() if ":" in text else text.strip() def parse_comments(html): """解析评论数据""" soup = BeautifulSoup(html, 'html.parser') reviews_container = soup.find('div', class_='reviews-container') if not reviews_container: return [] comments = [] for item in reviews_container.find_all('div', class_='review-item'): try: user_id = re.search(r'd+', item.find('span', class_='user-id').text).group() username = extract_value(item.find('span', class_='reviewer-name').text) phone = extract_value(item.find('span', class_='reviewer-phone').text) comment = item.find('div', class_='review-content').text.strip() comments.append((user_id, username, phone, comment)) except AttributeError: continue return comments def fetch_product_comments(product_id): """获取产品评论""" params = {"controller": "product", "action": "detail", "id": product_id} try: response = requests.get(BASE_URL, params=params, headers=HEADERS, timeout=10) response.raise_for_status() return parse_comments(response.text) except requests.RequestException: return [] def label_sentiment(comment): """情感分析""" negative_words = {'差', '不行', '失望', '破损', '漏', '贵', '不如不送', '就是没有看到发票,不知以后怎么保修,万一坏了呢?再有是否包安装?', '不方便'} positive_words = {'好', '满意', '推荐', '不错', '超值', '快', '给力', '很棒', '应该没问题', '很新鲜'} comment = comment.lower() if any(word in comment for word in negative_words): return 0 if any(word in comment for word in positive_words): return 1 return 0 def generate_signature(row): """生成MD5签名""" raw_str = f"{row['user_id']}{row['username']}{row['phone']}" return hashlib.md5(raw_str.encode()).hexdigest() def main(): all_data = [] for product_id in tqdm(range(1, 501), desc="爬取进度"): all_data.extend(fetch_product_comments(product_id)) if not all_data: print("未获取到任何数据,请检查网络和页面结构") return df = pd.DataFrame(all_data, columns=['user_id', 'username', 'phone', 'comment']).drop_duplicates(subset=['user_id']) df['label'] = df['comment'].apply(label_sentiment) df['signature'] = df.apply(generate_signature, axis=1) df[['user_id', 'label', 'signature']].sort_values('user_id').to_csv('submit_1.csv', index=False, encoding='utf-8') print(f"成功生成文件,包含 {len(df)} 条记录") if __name__ == "__main__": main() |
答案:
提交文件
1 数据预处理 任务2
解题步骤:
import hashlib import pandas as pd import requests import re from bs4 import BeautifulSoup from tqdm import tqdm # 配置参数 BASE_URL = "http://47.117.190.214:32906/index.php" HEADERS = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36" } # 扩展字典,增加多维关键词 category_dict = { 1: [['手机', '智能机', 'iPhone', '安卓手机', '智能手机', '折叠屏手机', '5G手机', '游戏手机', '拍照手机', '双卡手机', '防水手机', '曲面屏手机', '老人手机', '三防手机', '合约机', '翻盖手机', '卫星手机', '模块化手机', '商务手机', '学生手机'], ['手机壳', '屏幕保护膜', '移动电源', '自拍杆', '手机支架', '无线充电器', 'Type-C数据线', '蓝牙耳机', '手机镜头', '防窥膜', '手机指环', '散热背夹', 'OTG转接头', '手机云台', '手机挂绳', '车载手机架', '手机贴钻', '手机维修工具', '手机摄影套装', '手机消毒盒']], 2: [['母婴', '奶粉', '尿不湿', '宝宝', '婴儿推车', '奶瓶', '婴儿辅食', '儿童安全座椅', '孕妇装', '婴儿背带', '吸鼻器', '婴儿理发器', '温奶器', '婴儿睡袋', '哺乳枕', '婴儿护肤品', '防撞条', '辅食机', '婴儿指甲剪', '学饮杯'], ['婴儿床', '吸奶器', '学步车', '婴儿湿巾', '摇奶器', '婴儿监控器', '防吐奶垫', '儿童餐椅', '婴儿浴盆', '护臀膏', '婴儿洗衣液', '咬咬乐', '婴儿体温计', '辅食储存盒', '婴儿围兜', '奶瓶消毒柜', '婴儿游泳池', '防抓手套', '婴儿口水巾', '儿童安全门栏']], 3: [['家具', '家装', '沙发', '床垫', '茶几', '书柜', '电视柜', '餐桌椅', '衣柜', '鞋柜', '懒人沙发', '折叠桌', '吧台椅', '儿童家具', '阳台柜', '储物柜', '屏风隔断', '实木家具', '升降桌', '按摩椅'], ['窗帘', '地毯', '智能家居', '床品', '装饰画', '墙纸', '灯具', '绿植花架', '置物架', '收纳盒', '门帘', '飘窗垫', '抱枕', '墙贴', '香薰机', '家居摆件', '防撞角', '智能门锁', '新风系统', '扫地机器人']], 4: [['书籍', '图书', '小说', '文学', '杂志', '历史典籍', '哲学著作', '心理学书籍', '科普读物', '艺术画册', '工具书', '成功学', '旅行游记', '诗歌集', '科幻小说', '悬疑推理', '儿童绘本', '商业管理', '古籍善本', '外文词典'], ['教辅材料', '漫画书', '外文原版', '字帖', '读书笔记本', '书签', '阅读支架', '电子书阅读器', '书籍消毒柜', '藏书票', '盲文书', '立体书', '公文包书套', '书法用品', '古籍修复工具', '图书收纳箱', '有声书会员', '书架分隔器', '防潮书膜', '图书杀菌灯']], 5: [['蔬菜', '青菜', '有机蔬菜', '土豆', '西兰花', '番茄', '黄瓜', '茄子', '菠菜', '莲藕', '豆角', '秋葵', '彩椒', '紫甘蓝', '茼蒿', '苦瓜', '莴笋', '芦笋', '蒜薹', '荷兰豆'], ['胡萝卜', '芹菜', '南瓜', '芦笋', '蔬菜种子', '芽苗菜套装', '有机肥料', '种植盆', '蔬菜脱水机', '切菜器', '保鲜盒', '蔬菜清洗剂', '沙拉酱', '榨菜', '泡菜坛', '冻干蔬菜', '蔬菜雕刻工具', '阳台种菜架', '农用薄膜', '蔬菜分装筐']], 6: [['厨房', '厨具', '锅', '刀', '电饭煲', '炒锅', '砂锅', '蒸笼', '烘焙模具', '绞肉机', '厨房秤', '磨刀石', '调料架', '沥水篮', '防烫手套', '油壶', '保鲜膜切割器', '开罐器', '厨房计时器', '食物夹'], ['空气炸锅', '榨汁机', '微波炉', '洗碗机', '破壁机', '面包机', '厨师机', '冰淇淋机', '面条机', '咖啡机', '消毒柜', '集成灶', '垃圾处理器', '厨余粉碎机', '恒温水壶', '电饼铛', '煎药壶', '酸奶机', '蛋卷机', '三明治机']], 7: [['办公', '文具', '打印机', '文件夹', '订书机', '投影仪', '扫描仪', '复印纸', '记号笔', '荧光笔', '便签纸', '会议白板', '印章', '档案盒', '票据夹', '长尾夹', '打孔机', '胶带座', '笔筒', '桌面收纳架'], ['计算器', '激光笔', '碎纸机', '考勤机', '装订机', '标签打印机', '指纹锁柜', '电子签名板', '会议电话', '升降办公桌', '人体工学椅', '屏幕清洁套裝', '电源管理器', '电子白板', '文件扫描APP', '云打印服务', '电子墨水屏', '无线演示器', '语音记录仪', '智能会议系统']], 8: [['水果', '苹果', '香蕉', '橙', '葡萄', '火龙果', '山竹', '荔枝', '龙眼', '杨桃', '莲雾', '番石榴', '枇杷', '蓝莓', '车厘子', '椰子', '榴莲', '百香果', '人参果', '黄皮'], ['草莓', '芒果', '猕猴桃', '柚子', '水果礼盒', '水果干', '果酱', '水果酵素', '榨汁杯', '水果雕刻刀', '保鲜冰袋', '水果篮', '去皮器', '水果检测仪', '催熟剂', '水果网套', '分格保鲜盒', '水果订阅服务', '有机认证标贴', '水果酸嘢配料']], 9: [['宠物', '猫', '狗', '宠物食品', '猫砂盆', '仓鼠', '兔子', '宠物医院', '宠物疫苗', '宠物美容', '宠物寄养', '宠物殡葬', '宠物摄影', '宠物保险', '宠物托运', '宠物基因检测', '异宠饲养', '水族用品', '爬虫加热垫', '鸟类玩具'], ['宠物玩具', '宠物窝', '宠物衣服', '自动喂食器', '智能饮水机', '宠物定位器', '猫抓板', '狗咬胶', '宠物推车', '去毛梳', '宠物浴液', '驱虫药', '宠物尿垫', '宠物背包', '猫爬架', '宠物训练哨', '宠物纪念品', '宠物生日蛋糕', '宠物婚介服务', '宠物DNA鉴定']], 10: [ ['运动', '健身', '跑步', '球', '瑜伽垫', '动感单车', '椭圆机', '划船机', '战绳', '壶铃', '引体向上杆', '健身镜', '运动护具', '筋膜枪', '体脂秤', '运动营养品', '健身私教课', '运动康复', 'CrossFit装备', '户外拓展'], ['哑铃', '运动手环', '跳绳', '篮球', '跑步机', '登山包', '骑行头盔', '泳镜', '滑雪板', '高尔夫球杆', '拳击沙袋', '瑜伽球', '平衡板', '弹力带', '运动毛巾', '速干衣', '压缩裤', '运动袜', '计步器', '运动饮料']], 11: [['热水器', '燃气热水器', '电热水器', '即热式热水器', '储水式热水器', '壁挂炉', '空气能热水器', '中央热水系统', '恒温热水器', '节能热水器', '迷你热水器', '户外热水器', '酒店热水器', '热水器镁棒', '防漏电保护', '热水器安装架', '混水阀', '热水循环泵', '防冻型热水器', 'WiFi控温热水器'], ['太阳能热水器', '速热热水器', '热水器清洗剂', '增压泵', '热水器泄压阀', '防电墙', '热水器配件', '温度调节器', '水质过滤器', '热水器支架', '防垢装置', '热水器遥控器', '漏电保护插头', '保温管', '热水器维修工具', '节能模式配件', '防冻保护套', '热水器显示屏', '软水处理器', '热水器安全阀']], 12: [['彩妆', '口红', '眼影', '粉底', '睫毛膏', '遮瑕膏', '修容粉', '高光棒', '妆前乳', '定妆喷雾', '美妆蛋', '化妆刷套装', '假睫毛', '双眼皮贴', '唇线笔', '染眉膏', '腮红膏', '化妆镜', '卸妆油', '美甲贴片'], ['眉笔', '腮红', '护肤品', '化妆棉', '美容仪', '粉扑清洗剂', '彩妆收纳盒', '香水小样', '分装瓶', '化妆包', '旅行套装', '美妆冰箱', '假发片', '肤色修正液', '唇部磨砂膏', '化妆灯', '一次性唇刷', '彩妆教程书', '联名彩妆', '节日限定套装']], 13: [ ['保健品', '营养补充', '维生素', '钙', '蛋白粉', '鱼油', '益生菌', '胶原蛋白', '葡萄籽', '叶黄素', '氨基葡萄糖', '辅酶Q10', '褪黑素', '螺旋藻', '护肝片', '膳食纤维', '蜂胶', '玛卡', '酵素', '虫草'], ['膳食补充剂', '蜂蜜', '枸杞', '阿胶糕', '黑芝麻丸', '即食燕窝', '青汁', '奇亚籽', '代餐奶昔', '维生素软糖', '儿童钙片', '运动恢复剂', '睡眠喷雾', '姜黄素', '透明质酸', '电解质粉', '中药茶包', '健康检测仪', '保健枕', '磁疗护膝']], 14: [['酒水', '红酒', '白酒', '啤酒', '葡萄酒', '黄酒', '清酒', '起泡酒', '精酿啤酒', '单一麦芽威士忌', '伏特加', '朗姆酒', '龙舌兰', '利口酒', '梅酒', '预调鸡尾酒', '年份茅台', '冰酒', '有机葡萄酒', '手工酿造'], ['烈酒', '洋酒', '威士忌', '醒酒器', '酒柜', '酒具套装', '存酒服务', '定制酒标', '酒类书籍', '品鉴课程', '橡木桶', '酒石酸', '防伪检测器', '温酒器', '分酒器', '便携酒壶', '酒类订阅盒', '调酒工具', '酒架', '酒吧家具']], 15: [['玩具', '乐器', '积木', '遥控车', '乐高', '拼图', '变形金刚', '芭比娃娃', '电子琴', '小提琴', '尤克里里', '科学实验套装', '磁力片', '轨道火车', '考古挖掘玩具', '魔术套装', '无人机', '编程机器人', 'AR地球仪', '水弹枪'], ['芭比娃娃', '吉他', '钢琴', '玩具飞机', '电子鼓', '古筝', '口琴', '手风琴', '架子鼓', '魔方', '泡泡机', '儿童显微镜', '过家家套装', '沙滩玩具', '惯性小车', '水上玩具', '音乐贺卡', '发光陀螺', '玩具维修配件', '乐器调音器']], 16: [['汽车', '车载', '汽车用品', '车载充电器', '行车记录仪', '胎压监测', '汽车脚垫', '方向盘套', '车载冰箱', '遮阳挡', '应急电源', '补胎工具', '玻璃水', '防冻液', '机油', '空气滤芯', '洗车机', '车衣', '改装配件', '自动驾驶系统'], ['汽车座椅', '车载吸尘器', '车载冰箱', '车用香薰', '手机支架', '安全带护套', '头枕腰靠', '后备箱收纳', '车贴', '防雾剂', '雨刷精', '划痕修复蜡', '车载WIFI', '抬头显示器', 'OBD检测仪', '车用灭火器', '应急逃生锤', '车载充气泵', '车牌架', '轮胎光亮剂']], 17: [['床上用品', '床单', '被罩', '枕头', '床垫', '蚕丝被', '羽绒被', '电热毯', '凉席', '蚊帐', '靠垫', '床裙', '床笠', '榻榻米垫', '记忆棉枕', '乳胶枕', '决明子枕', '护颈枕', '婴儿床围', '床幔'], ['床头柜', '床品套件', '枕套', '夏凉被', '冬被', '床褥', '床罩', '法兰绒毯', '天丝四件套', '婚庆床品', '抗菌枕芯', '防螨喷雾', '床品收纳袋', '羽绒烘干球', '布艺清洁机', '除螨仪', '智能止鼾枕', '重力被', '可水洗床垫套']], 18: [['洗护用品', '洗发水', '护发素', '沐浴露', '洗手液', '洗衣液', '柔顺剂', '消毒液', '洁厕灵', '管道疏通剂', '玻璃清洁剂', '地板蜡', '皮革护理剂', '鞋类清洁剂', '厨房去油剂', '空气清新剂', '除湿盒', '防霉片', '汽车内饰清洁', '宠物除臭剂'], ['洗面奶', '牙膏', '卫生巾', '湿厕纸', '棉签', '化妆棉', '牙线', '漱口水', '内衣清洗剂', '羊毛洗涤剂', '羽绒服干洗剂', '布艺沙发清洁', '瓷砖美缝剂', '水垢清除剂', '洗衣机槽清洁', '空调清洗剂', '酒精湿巾', '纳米海绵', '擦窗机器人']], 19: [['五金', '工具', '电动工具', '螺丝刀', '电钻', '角磨机', '电锤', '扳手套装', '万用表', '水平仪', '切割机', '热熔胶枪', '激光测距仪', '工具箱', '砂轮机', '焊锡枪', '电缆剪', '管道疏通机', '发电机', '安全帽'], ['锤子', '扳手', '钳子', '卷尺', '美工刀', '锯条', '膨胀螺丝', '水泥钉', '绝缘胶带', '扎带', '砂纸', '防锈漆', '润滑油', '密封胶', '水管接头', '门锁配件', '合页', '滑轮组', '吊顶龙骨', '工业脚轮']], 20: [['户外', '帐篷', '登山杖', '野营', '背包', '睡袋', '冲锋衣', '徒步鞋', '头灯', '指南针', '求生哨', '户外炊具', '折叠椅', '天幕', '防潮垫', '攀岩绳', '冰爪', '滑雪镜', '钓鱼竿', '望远镜'], ['登山鞋', '野餐垫', '睡袋', '露营灯', '折叠桌', '户外净水器', '太阳能充电板', '充气枕头', '防熊喷雾', '户外急救包', '多功能军刀', '保温饭盒', '防水袋', '户外电源', '驱蚊手环', '运动摄像机', '漂流防水包', '滑雪服', '山地自行车', '户外APP会员']], 21: [['珠宝', '项链', '耳环', '戒指', '手镯', '胸针', '翡翠', '钻石', '珍珠', '黄金', '铂金', '琥珀', '珊瑚', '和田玉', '红宝石', '蓝宝石', '祖母绿', '银饰', '钛钢首饰', '莫桑石'], ['手链', '耳钉', '珠宝首饰', '珠宝盒', '首饰清洁剂', '鉴定证书', '珠宝秤', '串珠线', '宝石显微镜', '首饰展示架', '珠宝保险箱', '定制刻字', '情侣对戒', '转运珠', '生肖挂件', '珠宝设计书', '首饰收纳袋', '宝石原石', '珠宝拍卖', '复古首饰']], 22: [ ['医疗器械', '血压计', '体温计', '听诊器', '制氧机', '雾化器', '血糖仪', '轮椅', '助行器', '护理床', '医用纱布', '手术刀', '针灸针', '理疗仪', '血氧仪', '口腔镜', '缝合包', '急救箱', '紫外线消毒灯', '医用冷藏箱'], ['按摩器', '血糖仪', '呼吸机', '艾灸盒', '拔罐器', '足浴盆', '颈椎牵引器', '护腰带', '静脉曲张袜', '助听器', '胎心仪', '吸痰器', '防褥疮垫', '冷热敷袋', '身高体重秤', '视力表灯箱', '医用口罩', '防护服', '医用手套', '隔离面罩']], 23: [['花卉', '盆栽', '鲜花', '绿植', '多肉植物', '水培植物', '空气凤梨', '兰花', '玫瑰', '百合', '康乃馨', '绿萝', '发财树', '文竹', '仙人掌', '苔藓微景观', '永生花', '干花花束', '组合盆景', '爬藤植物'], ['花盆', '花艺', '花卉种子', '营养土', '园艺剪刀', '喷壶', '植物补光灯', '自动浇水器', '花肥', '防腐木花箱', '园艺手套', '插花教程', '花瓶', '保水管', '鲜花保鲜剂', '花架', '植物标签', '苔玉', '水培营养液', '组合盆栽工具']], 24: [['游戏', '主机', '游戏机', '游戏手柄', '游戏显卡', '电竞显示器', '游戏加速器', '游戏本', '体感设备', 'VR眼镜', '街机摇杆', '游戏攻略书', '游戏设定集', '游戏原声碟', '游戏会员', 'MOD工具', '游戏测试资格', '游戏直播设备', '电竞椅', '游戏主题酒店'], ['游戏键盘', '鼠标', '游戏耳机', '电竞鼠标垫', '散热器', '手柄充电座', '游戏背包', '外置声卡', '游戏截图卡', '游戏录像设备', '电竞手套', '键帽', '光效控制器', '游戏主题T恤', '战队周边', '游戏币', '皮肤兑换码', '赛事门票', '游戏美术集', '角色手办']], 25: [['园艺', '园艺工具', '修剪工具', '花园', '割草机', '绿篱机', '树枝粉碎机', '播种机', '松土机', '喷药机', '园艺推车', '防鸟网', '植物支架', '驱鸟器', '自动喷灌', '温湿度计', '堆肥桶', '嫁接刀', '播种器', '植物补光灯'], ['草坪', '园艺装饰', '水培', '花园雕塑', '太阳能地灯', '仿石步道', '防腐木栅栏', '庭院伞', '户外秋千', '园艺书籍', '花园设计图', '造景石', '仿真草坪', '雨水收集器', '驱蚊植物', '香草种子', '园艺课程', '景观水池', '垂直绿化墙', '园艺博览会门票']] } def extract_value(text): """提取值,适用于格式 '前缀:值'""" return text.split(":", 1)[-1].strip() if ":" in text else text.strip() def parse_comments(html): """解析评论数据""" soup = BeautifulSoup(html, 'html.parser') reviews_container = soup.find('div', class_='reviews-container') if not reviews_container: return [] comments = [] for item in reviews_container.find_all('div', class_='review-item'): try: user_id = re.search(r'd+', item.find('span', class_='user-id').text).group() username = extract_value(item.find('span', class_='reviewer-name').text) phone = extract_value(item.find('span', class_='reviewer-phone').text) comment = item.find('div', class_='review-content').text.strip() comments.append((user_id, username, phone, comment)) except AttributeError: continue return comments def fetch_product_details(product_id): """获取产品详情,包括销量和评论""" params = {"controller": "product", "action": "detail", "id": product_id} try: response = requests.get(BASE_URL, params=params, headers=HEADERS, timeout=10) response.raise_for_status() soup = BeautifulSoup(response.text, 'html.parser') # 获取销量 sales_text = soup.find('span', id='productSales').text sales = int(sales_text.strip()) if sales_text.isdigit() else 0 # 获取评论 comments = parse_comments(response.text) reviews_number = len(comments) return sales, reviews_number except requests.RequestException: return 0, 0 def get_category_id(product_name): """根据商品名称推断分类编号""" for category_id, sub_keywords_list in category_dict.items(): for sub_keywords in sub_keywords_list: if any(keyword.lower() in product_name.lower() for keyword in sub_keywords): return category_id return None # 如果无法识别,则返回None def main(): all_data = [] for product_id in tqdm(range(1, 501), desc="爬取进度"): # 获取产品详情 sales, reviews_number = fetch_product_details(product_id) # 获取商品名称 params = {"controller": "product", "action": "detail", "id": product_id} response = requests.get(BASE_URL, params=params, headers=HEADERS, timeout=10) soup = BeautifulSoup(response.text, 'html.parser') product_name = soup.find('h2').text.strip() # 清洗销量数据,负数或空值设置为0 sales = max(0, sales) # 获取分类编号 category_id = get_category_id(product_name) all_data.append([product_id, sales, category_id, reviews_number]) # 创建DataFrame并保存到CSV df = pd.DataFrame(all_data, columns=['product_id', 'sales', 'category_id', 'reviews_number']) df = df.sort_values(by='product_id') # 按product_id升序排列 df.to_csv('submit_2.csv', index=False, encoding='utf-8') print(f"成功生成文件,包含 {len(df)} 条记录") if __name__ == "__main__": main() |
答案:
提交文件
1 数据预处理 任务3
解题步骤:
import hashlib import pandas as pd import requests import re from bs4 import BeautifulSoup from tqdm import tqdm # 配置参数 BASE_URL = "http://47.117.190.214:32906/index.php" HEADERS = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36" } def extract_value(text): """提取值,适用于格式 '前缀:值'""" return text.split(":", 1)[-1].strip() if ":" in text else text.strip() def parse_comments(html): """解析评论数据""" soup = BeautifulSoup(html, 'html.parser') reviews_container = soup.find('div', class_='reviews-container') if not reviews_container: return [] comments = [] for item in reviews_container.find_all('div', class_='review-item'): try: user_id = re.search(r'd+', item.find('span', class_='user-id').text).group() username = extract_value(item.find('span', class_='reviewer-name').text) phone = extract_value(item.find('span', class_='reviewer-phone').text) comment = item.find('div', class_='review-content').text.strip() user_agent = extract_value(item.find('span', class_='user-agent').text) comments.append((user_id, username, phone, comment, user_agent)) except AttributeError: continue return comments def desensitize_phone(phone): """脱敏手机号""" return phone[:3] + '****' + phone[-4:] def detect_malicious_code(user_agent): """恶意代码检测:SQL注入/XSS/命令执行等""" malicious_keywords = ['union', 'select', 'drop', 'or 1=1', 'alert(', '<script>', 'cmd.exe', 'sh', 'system('] if any(keyword in user_agent.lower() for keyword in malicious_keywords): return False return True def main(): all_data = [] for product_id in tqdm(range(1, 501), desc="爬取进度"): all_data.extend(fetch_product_comments(product_id)) if not all_data: print("未获取到任何数据,请检查网络和页面结构") return # 脱敏处理与恶意代码检测 processed_data = [] for user_id, username, phone, comment, user_agent in all_data: desensitized_phone = desensitize_phone(phone) code_check = detect_malicious_code(user_agent) processed_data.append([user_id, desensitized_phone, code_check]) # 保存处理后的数据 df = pd.DataFrame(processed_data, columns=['user_id', 'desensitization', 'code_check']) df.sort_values('user_id').to_csv('submit_3.csv', index=False, encoding='utf-8') print(f"成功生成文件,包含 {len(df)} 条记录") def fetch_product_comments(product_id): """获取产品评论""" params = {"controller": "product", "action": "detail", "id": product_id} try: response = requests.get(BASE_URL, params=params, headers=HEADERS, timeout=10) response.raise_for_status() return parse_comments(response.text) except requests.RequestException: return [] if __name__ == "__main__": main() |
答案:
提交文件
原文始发于微信公众号(凌日网络与信息安全团队):2025数字中国创新大赛-数字安全赛道部分WP(LRT)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论