imglist = [ img_dir+"/"+f for f in os.listdir(img_dir) if os.path.isfile(os.path.join(img_dir, f)) ] # for i in imglist: print(i) # withopen("./output.txt","a") as f: for i in imglist: result = ocr.ocr(i)[0]['rec_texts'] f.write(",".join(result)+"\n")
import re import ipaddress import pickle import hashlib
all_data= []
withopen("./output.txt","r") as f: all_data = [line.strip().split(",") for line in f.readlines()]
defparse(info): format_data = {"id":"","text":"","level":"","date":"","time":"","ip":"","good":"","resp":""} id = re.compile(r'([0-9a-z]+)') level = re.compile(r'(LV\d{1,2})') text = re.compile(r'([\u4e00-\u9fff]+)2025') time = re.compile(r'(202\d.\d{2}.\d{2})\s?(\d{2}:\d{2})') ip = re.compile(r'(\d{0,3}\.\d{0,3}\.\d{0,3}\.\d{0,3})') resp = re.compile(r'共(\d+)')
_id = id.search(info[0]) if _id : format_data["id"] = _id[1]
_text = text.search("".join(info[1::])) if _text: format_data["text"] = _text[1]
for i in info[0:2]: _level = level.search(i) if _level: format_data["level"] = _level[1]
for i in info[3::]: _time = time.search(i) if _time: format_data["date"] = _time.group(1).strip().replace('\u2013','-') format_data["time"] = _time.group(2).strip()
_ip = ip.search("".join(info[-3:-1])) if _ip: format_data["ip"] = _ip[1]
_good = re.search(rf'{re.escape(format_data["ip"])}(\d+)共',"".join(info[-3::])) if _good: format_data["good"] = _good[1]
_resp = resp.search(info[-1]) if _resp: format_data["resp"] = _resp[1] # print(format_data)
return format_data
defmalicious_ip(user_info): withopen("./IP数据库.pkl", "rb") as f: ipdata = pickle.load(f) # print(ipdata) iplist = [ipaddress.ip_network(cdir, strict=False) for cdir in ipdata] for user in user_info: ip = ipaddress.ip_address(user["ip"]) ifany(ip in net for net in iplist): # print(user["ip"]) user["m_ip"] = 1;
deftext_replace(user_info): list1 = [i.replace("\n", "") for i inopen("./1.txt", "r").readlines()] list2 = [i.replace("\n", "") for i inopen("./2.txt", "r").readlines()] list3 = [i.replace("\n", "") for i inopen("./3.txt", "r").readlines()] # print(user_info) # new_list = list1+list2+list3 new_list = [*list1, *list2, *list3]
for i in user_info: for j in new_list: rep_text = j if rep_text in i["text"]: # print(i["text"]) num = new_list.index(rep_text) i["text"] = i["text"].replace(rep_text, new_list[num + len(list1)]) i["m_text"] = 1; break
deflike_rate(num): if num >= 61: return1 if51<= num <=60: return0.8 if21<= num <=50: return0.5 if11<= num <=20: return0.2 if1<= num <=10 : return0.05 return0
user_info = []
malic_list = []
for info in all_data: user_info.append(parse(info))
result = sorted(user_info,key=lambda x:x["date"]+x["time"])
text_replace(result)
malicious_ip(result)
for i in result: if i.get("m_text"): resp_like = round( len(i["text"])*(int(i["resp"])+like_rate(int(i["good"])))) malic_list.append((md5(i["text"])+"_"+str(resp_like)))
for i in result: if i.get("m_ip"): malic_list.append(i["id"])