Timmoc 的技术小屋

Timmoc 的技术小屋

这里记录技术笔记与日常思考,欢迎常来逛逛 👋

博客字典爆破尝试

起因 碎碎念 这已经是我第二次遇到加密的博客了,有了经验,那就是这玩意是不上传服务器的。 既然是在前端,那怎么确保安全性呢? 翻阅源代码可知,作者也是挺聪明的。 已经知道放在前端的东西会被各种手段操作,但是如果是用的AES-CBC加密,并且密码完全不放在前端,又当如何? 只剩下一条路了 爆破,或者用字典,这其实是同一条路。 摆在面前的是类似于压缩包的东西,那就爆破一下,博文应该不会设置太难的密码。。。。吧? 把代码丢给ai喂一下,让ai把python版本的代码吐出来,顺便加一下多线程什么的。 就变成了下面这样: 点击查看代码 import threading from Crypto.Cipher import AES from Crypto.Hash import SHA256 from Crypto.Protocol.KDF import PBKDF2 from Crypto.Util.Padding import unpad def hex_to_array(s): data = [] for i in range(0, len(s), 2): num = int(s[i:i + 2], 16) data.append(num) return bytes(data) def get_hmac_key(key_material, key_salt): return PBKDF2(key_material, key_salt, dkLen=32, count=1024, hmac_hash_module=SHA256) def get_iv(key_material, iv_salt): return PBKDF2(key_material, iv_salt, dkLen=16, count=512, hmac_hash_module=SHA256) def get_key_material(password): return password.encode() known_prefix = "<hbe-prefix></hbe-prefix>" def decrypt(ciphertext, password): key_salt = "hexo-blog-encrypt的作者们都是大帅比!".encode() iv_salt = "hexo-blog-encrypt是地表最强Hexo加密插件!".encode() try: key_material = get_key_material(password) hmac_key = get_hmac_key(key_material, key_salt) iv = get_iv(key_material, iv_salt) ciphertext_bytes = hex_to_array(ciphertext) cipher = AES.new(hmac_key, AES.MODE_CBC, iv) decrypted_data = cipher.decrypt(ciphertext_bytes) unpadded_data = unpad(decrypted_data, AES.block_size) if not unpadded_data.decode().startswith(known_prefix): return None except ValueError as e: return None return unpadded_data.decode() def worker(ciphertext, password_chunk, event): for password in password_chunk: password = password.strip() if event.is_set(): return result = decrypt(ciphertext, password) if result: print(f"Decrypted successfully with password: {password.strip()}") event.set() return def brute_force(ciphertext, passwords, max_threads=5): results = [] threads = [] password_chunks = [[] for _ in range(max_threads)] for index, password in enumerate(passwords): chunk_index = index % max_threads password_chunks[chunk_index].append(password) stop_event = threading.Event() for password_chunk in password_chunks: if password_chunk: t = threading.Thread(target=lambda chunk=password_chunk: worker(ciphertext, chunk, stop_event)) threads.append(t) t.start() for t in threads: t.join() if not stop_event.is_set(): print("No valid password found.") try: with open('enData.txt', 'r') as f: ciphertext = f.read().strip() with open(r"你应该有自己的字典8", 'r', encoding="utf-8") as f: passwords = f.readlines() brute_force(ciphertext, passwords, max_threads=200) except FileNotFoundError as e: print(f"Error: {e}") 爆破 也许你不相信,但是真的有人会用超长的密码去加密一篇博客,有鬼吧。 我没有加进度条,但是200个进程跑那么久跑不出来已经很说明问题了。 ...

December 25, 2024 · 2 min

博客园cnblog美化

起因 博客园这个丑丑的默认样式实在看不下去,换了一个主题,但是发现这个主题用的人还是太多了 说实话要是给主页的样子其实也还不错啊(广告就不要了谢谢) 改变现状 想来想去,还是得美化一下,但是自己没有这个精力去美化,怎么办呢 自然还是去找别人的模板,先好看起来再说,以后再去想要不要修改,要不要变得更好看。 感谢 https://www.cnblogs.com/lingyunvoid/p/beautify.html 感谢 https://www.cnblogs.com/cyy22321-blog/p/16048788.html 下载下来的内容进行对应的修改即可,要修改的东西还是挺多的。 图片随机? 居然能随机主图,那我就上传点图片玩玩。 标题?不要 乐了,有没有和我一样每次都被焦点标题烦到。 奇妙问题 弄完了,但是这个hearts[i].y–;一直显示报错 非常奇妙 太奇妙了。 我以为剪贴板有奇怪的东西,手动输入了一遍,还是报错。 算了,这行我本来也不想要,注释了,那就留着注释好了。 ...

December 24, 2024 · 1 min

国产AI使用尝试

豆包AI使用体验 不得不说现在AI的能力也是越来越离谱了。 完全可以以假乱真了,但是具体的细节、上下文链接、逻辑问题,还有待检查。 我只修改了可能侵犯版权的部分,具体的文章可以直接跳转上一篇博客。 两全其美的解决方法 对于希望拿到代码的人,可以直接拿到代码;对于希望看到解析的人,ai可以给出非常详细的解析,而并非如我现在码字一样的慢慢敲,并不如ai高效,也不如ai清晰。 因此我竟感觉我写代码,然后让AI码字上传倒是一件好事。 待我让ai替我润色点存货。

December 24, 2024 · 1 min

图片上传

图片上传贴 由于博客园的文件上传只有100M,而图片上传单张图片最大2M 那就上传到随笔好了,图片本身是网络图片,因此并不担心公开问题。 但是图片的链接需要保证我还在使用博客园的期间有效,所以不想引用外链。 以下图片将成为初始的随机图列表,刚好挺适合的。 图片 四张ai图,有时间替换掉才行,嫌弃水印 2024-12-29

December 24, 2024 · 1 min