├── README.md ├── 三体.txt ├── 提取.py ├── 隐藏.py └── 音乐.wav /README.md: -------------------------------------------------------------------------------- 1 | # HideFileInMusic 2 | 用wav格式的歌曲隐藏任意文件,小说、图片、种子等。 3 | 4 | 那个wav文件,有点大,你可以用自己机子上的任何.wav文件来代替(小白请选择大小在5M以上的文件,否则可能溢出) 5 | 6 | 7 | 关于这个程序的视频教程:https://www.bilibili.com/video/BV1NF411i7Zh/ 8 | 作者:B站@偶尔有点小迷糊 9 | 我的口号是:用不正经的风格 讲正经编程知识 10 | 11 | 12 | -------------------------------------------------------------------------------- /三体.txt: -------------------------------------------------------------------------------- 1 | 啊哈哈哈,你以为这里真有《三体》的txt小说?你在想PEACH(滑稽)。由于版权原因,不方便分享呀。 2 | 3 | 话说回来,我可是买了三体全套的,不仅有普通版,还有精装版,加起来一共6本。支持作者! 4 | -------------------------------------------------------------------------------- /提取.py: -------------------------------------------------------------------------------- 1 | # 关于这个程序的视频教程:https://www.bilibili.com/video/BV1NF411i7Zh/ 2 | # 作者:B站@偶尔有点小迷糊 3 | # 我的口号是:用不正经的风格 讲正经编程知识 4 | # 5 | # 使用本代码请保留以上信息 6 | 7 | import wave 8 | 9 | # 打开藏有其它文件的歌曲文件,读取数据 10 | with wave.open('隐藏后-音乐.wav', 'rb') as f: 11 | wav_data = f.readframes(-1) 12 | 13 | # 提取wav_data中的特殊位置数据 14 | extract_data = bytearray() 15 | for index in range(0, len(wav_data), 4): 16 | extract_data += (wav_data[index]).to_bytes(1, byteorder = 'little') 17 | 18 | # 得到被隐藏的文件的大小 19 | file_len = int.from_bytes(extract_data[0:3], 'little') 20 | 21 | # 重新生成被隐藏的文件 22 | with open('提取结果-三体.txt', 'wb') as f: 23 | f.write(extract_data[3 : file_len+3]) 24 | 25 | -------------------------------------------------------------------------------- /隐藏.py: -------------------------------------------------------------------------------- 1 | # 关于这个程序的视频教程:https://www.bilibili.com/video/BV1NF411i7Zh/ 2 | # 作者:B站@偶尔有点小迷糊 3 | # 我的口号是:用不正经的风格 讲正经编程知识 4 | # 5 | # 使用本代码请保留以上信息 6 | 7 | import wave 8 | 9 | # 打开要隐藏的文件,读取数据 10 | with open('三体.txt', 'rb') as f: 11 | txt_data = f.read() 12 | file_len = len(txt_data) 13 | txt_data = file_len.to_bytes(3, byteorder = 'little') + txt_data 14 | 15 | # 打开wav格式的歌曲文件,读取数据 16 | with wave.open("音乐.wav", "rb") as f: 17 | attrib = f.getparams() # 获取音频属性 18 | wav_data = bytearray( f.readframes(-1) ) 19 | 20 | # 隐藏txt_data中的数据到wav_data中 21 | for index in range(len(txt_data)): 22 | wav_data[index * 4] = txt_data[index] 23 | 24 | # 生成新的歌曲文件 25 | with wave.open("隐藏后-音乐.wav", "wb") as f: 26 | f.setparams(attrib) # 设置音频属性 27 | f.writeframes(wav_data) # 写入数据 28 | 29 | 30 | -------------------------------------------------------------------------------- /音乐.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/3150601355/HideFileInMusic/eb2e776052a842254f3cd6ec911ed0b539264ff4/音乐.wav --------------------------------------------------------------------------------