越狱苹果手机导出网易云歌曲

  • 1. 对苹果手机进行越狱
  • 2. 在手机端使用Cydia安装openssh
  • 3. 在电脑端使用putty和winscp连接手机
  • 4. 定位网易云音乐文件
  • 5. 使用winscp下载文件
  • 6. 将uc!文件解码为MP3文件

撰写时间:20200424

1. 对苹果手机进行越狱

博主的机器是iPhoneSE,系统为iOS12.2。使用爱思助手进行越狱,遵循爱思助手的说明即可。

2. 在手机端使用Cydia安装openssh

手机越狱后会多出一个cydia应用,在cydia中添加源https://apt.binger.com/
添加完毕后,在屏幕底下的“search”选项卡中查找openssh。找到并选择OpenSSH,点击右上角“Modify”,选择“Install”。
安装完成后,一定要修改ssh密码!

3. 在电脑端使用putty和winscp连接手机

putty用于通过ssh访问手机控制台,winscp用于手机与电脑的文件互传。安装和使用的教程在这里。(关于putty中控制台字符的复制粘贴看这里)

putty

winscp

4. 定位网易云音乐文件

iOS文件系统中,应用程序数据会保存在该目录下

/var/mobile/Containers/Data/Application

在手机控制台使用cd命令切换到该目录下

cd /var/mobile/Containers/Data/Application

观察一下目录下应用程序文件夹的结构,无法看出什么信息。

不过,只要在网易云音乐听过歌,就一定会留下缓存文件,缓存文件后缀名一般为uc!因此只需要对子目录中*.uc!文件进行搜索即可。在控制台使用find指令进行搜索

find -name *uc!

搜索结果如下

最终发现网易云音乐歌曲存放的绝对路径如下

/var/mobile/Containers/Data/Application/0255F52E-C661-45D2-9EA8-4626A4E13205/Documents/UserData/Download/

其中最长的一串16进制代码“0255F52E-C661-45D2-9EA8-4626A4E13205”是网易云音乐的程序数据所在的文件夹名称,不同手机上是不一样的,这里根据find指令返回的结果来确定。其余部分应当和我贴出来的一致。

5. 使用winscp下载文件

使用ls命令查看一下存放数据的目录

其中以"done"开头的文件夹中,都存放有已下载的音乐或视频。而“cache”文件夹中存放有平时听歌(却没下载)的缓存文件。其它文件夹里应当有一些别的资料,有兴趣的话可以打开来看看。

使用winscp连接手机(我这里文件传输协议使用sftp协议)

双击iphone端的目录,输入刚才的网易云音乐数据路径


以“done”文件夹为例,打开“done”文件夹

可以看见里面有很多MP3文件,可以直接框选,ctrl + C复制,在本地粘贴即可。(有时候直接拖动文件会报错,不知为何)
传输完成后可能会遗留一个名称为“scp-xxxxx”的文件夹,删除即可(一定在传输完成后才删除)。

此外,缓存的音乐文件存放在“cache”文件夹,打开之,用filter功能找出其中所有后缀为uc!的文件,将这些文件下载到电脑本地。

6. 将uc!文件解码为MP3文件

根据这位大佬的发现,uc!文件只是对源MP3文件的二进制数据,按字节与十六进制数字0xA3进行按位异或了而已,因此我们只要再将uc!文件中的每个字节,同0xA3按位异或一次,就能还原出原来的MP3文件。
我写这篇博客时,网易云音乐7.1.41版本仍然可以使用该方法对文件进行解码。

为了应对300多个缓存文件,我编写了python3脚本如下,在windows10下测试正常。

#!/usr/bin/env python
# -*- coding:utf-8 -*-import os# key number
KEY = 0xA3# set file path
path_uc = __file__ + '/../ucfile/'
path_mp3 = __file__ + '/../mp3file/'# get uc file list
ucfiles = os.listdir(path_uc)
file_num = ucfiles.__len__()
print('find %d ucfile(s)' % file_num)# decode each file
count = 0
for uf in ucfiles:# read ucfiles by bytef1 = open(path_uc + uf, 'rb')rawcode = f1.read()f1.close()# decode each bytedecode = bytes([r ^ KEY for r in rawcode])# write decoded bytes into mp3filef2 = open(path_mp3 + uf + '.mp3', 'wb')f2.write(decode)f2.close()count += 1print('%d of all %d files' % (count, file_num))print('done')

脚本所在的目录布置如下,除了脚本文件外,还需要有“mp3file”和“ucfile”这两个文件夹。后者用来存放待处理的uc!文件,前者用来存放处理完的mp3文件。

将uc!文件放入ucfile文件夹后,直接双击py脚本即可运行(建议使用python3.x解释器,python2我没有测试)

ucfile文件夹

mp3file文件夹

越狱苹果手机导出网易云音乐歌曲(以及缓存文件转换)相关推荐

  1. 用python爬取网易云评论最多的歌_巧用Python爬取网易云音乐歌曲全部评论

    一.首先分析数据的请求方式 网易云音乐歌曲页面的URL形式为https://music.163.com/#/song?id=歌曲id号,这里我用Delacey的Dream it possible 为例 ...

  2. 抓取网易云音乐歌曲热门评论生成词云(转)

    非原创作品,转载自:http://blog.csdn.net/marksinoberg/article/details/70809830 前言 网易云音乐一直是我向往的"神坛",听 ...

  3. Android初级,实现网易云音乐歌曲列表界面效果,播放界面效果,ListView,ViewPager方法详解

    初学Android初级,第一篇博客文章,如有错误,还望批评指正! 本文主要内容以网易云音乐歌曲列表界面效果代码,播放音乐界面效果代码为主,并将ListView和ViewPager作为实现界面滑动功能的 ...

  4. 获得网易云音乐歌曲播放的url

    获得网易云音乐歌曲播放的url 首先打开F12开发者工具,点击NetWork,Media过滤一些不必要的请求 搜索你要的歌曲,这里例举阿司匹林 点击播放 这边会显示请求 点击Size最大的请求,复制其 ...

  5. Android获取网易云音乐歌曲详细信息

    Android获取网易云音乐歌曲详细信息 一.目标 二.实现方案 三.最终方案 四.遗留问题 五.接下来 六.Finally 在<Android获取歌曲详细信息>一文中,介绍了几种获取网易 ...

  6. 网易云音乐——歌曲播放器页面

    网易云音乐--歌曲播放器页面 git地址 https://gitee.com/chen-haibin799/netease-cloud-music.git 实现步骤 效果图 1.实现顶部导航栏 这个写 ...

  7. python爬音乐-用python爬取网易云音乐歌曲的歌词

    今天我来分享一下如何用python爬取网易云音乐歌曲的歌词,网易云音乐的歌词的爬取思路同前面介绍过的爬取网易云音乐的歌曲评论的爬取思路一致.由于两者的加密思路都是一致的,因此我们只需分析出被加密了的参 ...

  8. 网易云音乐歌曲评论爬虫(附python源码)

    ♚转载: 作者:志颖 ,一个狂热的python爬虫热爱者 GitHub:github.com/zyingzhou 用过网易云音乐听歌的朋友都知道,网易云音乐每首歌曲后面都有很多评论,热门歌曲的评论更是 ...

  9. 网易云音乐歌曲评论爬虫(附源码)

    数据科学俱乐部 中国数据科学家社区 ♚ 作者:志颖 ,一个狂热的python爬虫热爱者 GitHub:github.com/zyingzhou 用过网易云音乐听歌的朋友都知道,网易云音乐每首歌曲后面都 ...

最新文章

  1. 为什么每个函数都要测试
  2. 解決 IE10 浏览器无法使用 ASP.NET From 验证登录的问题
  3. Shell(8)——for、while、until
  4. 让数字保持在整数范围内
  5. Robotium编写测试用例如何模拟Junit4的BeforeClass和AfterClass方法1 - 条件判断法
  6. 在 SELECT 查询中使用开窗函数
  7. hadoop上传文件报错
  8. 标准为先、产业当道,这次大会“探云”深刻……
  9. blender 常用快捷键
  10. 七夕情人节表白网页代码大全(浪漫的html表白源代码)
  11. RJ45-线序 586B 白橙 橙 白绿 蓝 白蓝 绿 白棕 棕
  12. PageAdmin网站建设教程:仿58同城站群实现不同地区Ip跳转不同分站
  13. linux 安装 blas,Linux下Linpack安装过程
  14. 算法-动态规划-RNA最大碱基对匹配问题C语言求解
  15. 苹果Mac OS X 系统下屏幕截图快捷键
  16. vue实现横向或竖向滑动轮播
  17. 后端开发——Java
  18. 基于超星网页阅读的在线阅读的书籍下载软件,java实现。
  19. 【Android工具】群晖安卓客户端基础套件:Drive、video、Photos和DS video安卓TV客户端...
  20. 凌科芯安公司推出32位高端加密IC

热门文章

  1. MySQL调优篇:单机数据库如何在高并发场景下健步如飞?
  2. 【karle 笔记】无法通过Windows功能控制面板自动安装或卸载Windows Server 角色和功能。
  3. Adobe2022更新,打开photoshop总是提示需要访问钥匙串秘钥怎么解决?
  4. matlab棋盘格标定角点,相机标定(Camera calibration)Matlab——棋盘格标定原理,流程...
  5. 猫眼电影Top100爬取
  6. java 只有try 不catch_Java异常处理只有Try-Catch吗?
  7. 豆瓣电影TOP250爬虫及可视化分析笔记
  8. 如何在VC领域脱颖而出,Tiger DAO VC给出答案
  9. 脚本编写一个10秒的倒计时和1分10秒的倒计时
  10. selenium+cookie自动登录新浪微博(二)