首页
归档
友情链接
推荐
网盘
图库
GIT
Search
1
关于Seafile破解
3,108 阅读
2
小米ai音箱系统简单分析
1,063 阅读
3
Seafile--linux专业版破解-6.2.9
1,015 阅读
4
GitHub Enterprise 逆向分析
325 阅读
5
声明
279 阅读
默认分类
经验分享
软件破解
杂七杂八
登录
Search
标签搜索
gitlab
gitlab汉化
seafile
seafile破解
frp
小米ai音箱
小爱同学
小米音箱
deny
累计撰写
10
篇文章
累计收到
264
条评论
首页
栏目
默认分类
经验分享
软件破解
杂七杂八
页面
归档
友情链接
推荐
网盘
图库
GIT
搜索到
4
篇与
的结果
2019-04-23
小米ai音箱系统简单分析
前言 这是一篇关于小米ai音箱(以下简称小爱音箱)的系统分析,为什么会涉及这一话题?这期间详细说的话难以说明白,总结来说就是为了将小爱同学接入homeassistant(有关详情请百度,以下简称hass)。如果你了解hass后并且也打算倒腾倒腾,或者说想看看大神们是怎么玩hass的话,这里也推荐一个网站 hassbian。 小爱音箱内部电路板是有两个版本的,黑色的电路板和绿色的电路板;而黑色是能够修改系统文件的,绿色则不能;(不幸的是我手里头的小爱音箱就是绿色的,也一直靠着一套“生命维持系统”才能实现开机自启和守护进程等功能;)所以为了达到修改系统文件的目的,对小爱音箱的系统进行了大致的分析。 正文 通过ssh连接上小爱音箱,用户名为root,无密码。(前提是开启了ssh,参考文章) 使用df命令查看分区挂载情况: root@mico:~# df -h Filesystem Size Used Available Use% Mounted on /dev/mtdblock4 31.9M 31.9M 0 100% / tmpfs 121.2M 1.1M 120.2M 1% /tmp tmpfs 512.0K 0 512.0K 0% /dev /dev/ubi0_0 136.5M 31.8M 100.0M 24% /data 根目录可用空间居然为0,遂查看/etc/fstab文件,可里面也啥都没有; 多番查找后发现了/proc/mounts文件: root@mico:~# cat /proc/mounts /dev/mtdblock4 / squashfs ro,noatime 0 0 proc /proc proc rw,nosuid,nodev,noexec,noatime 0 0 sysfs /sys sysfs rw,nosuid,nodev,noexec,noatime 0 0 tmpfs /tmp tmpfs rw,nosuid,nodev,noatime 0 0 tmpfs /dev tmpfs rw,nosuid,relatime,size=512k,mode=755 0 0 devpts /dev/pts devpts rw,nosuid,noexec,relatime,mode=600,ptmxmode=000 0 0 debugfs /sys/kernel/debug debugfs rw,noatime 0 0 pstore /sys/fs/pstore pstore rw,relatime 0 0 /dev/ubi0_0 /data ubifs rw,relatime 0 0 可以看出根目录是squashfs文件系统,挂载属性为只读。 因为文件系统是squashfs的缘故,所以就算挂载属性是读写也是无法对系统文件进行修改的。 直接修改是无法实现了,也只能想办法“曲线救国”了;于是乎想到了刷机。 下面就不再详述过程,只记录大概; 1.44.4刷机包官方版下载地址:https://bigota.miwifi.com/xiaoqiang/rom/s12a/mico_all_f86a5_1.44.4.bin 查看刷机包内文件:/bin/miso -c <刷机包文件> [-f 指定文件] root@mico:/data# /bin/miso -c mico_all_f86a5_1.44.4.bin model:3 file type:0 Segment 0: Offset 0x30 Filename mico_version Flash addr = 0xffffffff, length = 0x201, partition = 65535 Segment 1: Offset 0x280 Filename root.squashfs Flash addr = 0xffffffff, length = 0x1f53899, partition = 65535 Segment 2: Offset 0x1f53b60 Filename boot.img Flash addr = 0xffffffff, length = 0x4a6abe, partition = 65535 Segment 3: Offset 0x23fa660 Filename u-boot.bin.usb.bl2 Flash addr = 0xffffffff, length = 0xc000, partition = 65535 Segment 4: Offset 0x24066a0 Filename u-boot.bin.usb.tpl Flash addr = 0xffffffff, length = 0x81c00, partition = 65535 Segment 5: Offset 0x24882e0 Filename dtb.img Flash addr = 0xffffffff, length = 0x9c40, partition = 65535 刷机包解包命令:/bin/miso -r -x <刷机包文件> [-f 指定文件] root@mico:/data/rootfs# miso -r -x mico_all_f86a5_1.44.4.bin root@mico:/data/rootfs# ls boot.img dtb.img mico_all_f86a5_1.44.4.bin root.squashfs u-boot.bin.usb.tpl mico_version u-boot.bin.usb.bl2 nand闪存分区情况: root@mico:~# cat /proc/mtd dev: size erasesize name mtd0: 00200000 00020000 "bootloader" #uboot mtd1: 00800000 00020000 "tpl" mtd2: 00800000 00020000 "boot0" #系统0的kernel boot.img文件刷入分区 mtd3: 00800000 00020000 "boot1" #系统1的kernel boot.img文件刷入分区 mtd4: 02000000 00020000 "system0" #系统0的rootfs root.squashfs文件刷入分区 mtd5: 02000000 00020000 "system1" #系统1的rootfs root.squashfs文件刷入分区 mtd6: 0a000000 00020000 "data" 查看当前的启动系统: fw_env -g boot_part 切换系统: fw_env -s boot_part <boot0或boot1> root.squashfs里面就是根目录文件系统,可以通过unsquashfs命令将其解包,再用mksquashfs命令打包后便可以刷入到小爱音箱的system分区。(这俩命令小爱音箱里都没有,要另外的Linux系统安装后操作) 具体命令: unsquashfs root.squashfs #解包后会出现一个名为squashfs-root的文件夹,可以对里面的文件进行修改 mksquashfs squashfs-root <输出文件名> -comp xz -all-root #输出文件名自定义,如果是文件已经存在,请先删除! mtd write <打包后的文件> </dev/mtd4或者/dev/mtd5> #将打包后的文件通过该命令刷入系统,注意刷入的文件的版本号与被刷入的系统的版本号一致性; 其他发现&补充说明 /etc/ssl/certs 文件夹下存放这各个证书签发机构的证书,想要劫持https流量的可以从这里下手。 /usr/bin 目录下有很多有意思的命令,可以去分析分析 系统更新命令 : /bin/ota #这是一个shell脚本文件 对这个文件一路分析下去就能知道系统的刷机机制了。 结束 至此已经能够实现通过刷机的方式修改系统文件了,但是还有一些点我可能没有描述的那么详细,所以在你没有经过具体分析和详细了解其中刷机机制前,请谨慎刷机。 不过也是为了方便进行刷机,也打算开一个repo,将这些操作写成脚本方便大家。 github地址:https://github.com/denymz/mi_aispeaker
2019年04月23日
1,063 阅读
4 评论
0 点赞
2018-06-10
gitlab的搭建与数据迁移
前言 昨天晚上登陆gitlab时在后台控制面板看到”尽快更新“的提示,便去查看了更新的版本是否有汉化。然后就开始了入坑之旅。 虽然对gitlab更新过多次,对于更新的步骤也算是轻车熟路了;但还是得先按照操作前惯例:创建虚拟机快照备份一波。(也劝告大家:对服务器做任何重要的操作前一定要做好备份,切记!否则总有翻车的时候。说多了都是泪.) 没想到此次从10.7.3升级到10.8.4过程中还是出了问题,其实也好。本来gitlab服务器就积累了一些暗病,所以正好可以借这次重装解决一下。所幸的是做了备份,至少数据不会丢失。 这次的目的也有三个: 重装gitlab并迁移数据; 填去年11月留下的坑(”gitlab安装历程“至今还留在我的草稿箱) gitlab CE or EE ? gitlab官方提供了CE和EE版本可供选择;CE是指开源的社区版,而EE则是收费的商业版。但是EE版是具有CE版的所有功能的,官方也是推荐安装EE版。也就是说如果你安装的是EE版,就算是没有授权也可以使用,但也只具备CE版的功能,如果想使用EE版的功能呢直接需要购买授权就行,这就免去了要重新安装EE版的麻烦;所以如果没有购买授权,就算安装的是EE版也跟CE版没差。但个人觉得也没必要安装EE版,除非你是打算购买授权。不然的话安装的汉化补丁也会出现一些Bug。 总结:如果打算购买EE版授权,就请安装EE版,否则建议安装CE版本。 gitlab安装 * 由于源码安装的方式过于麻烦并且博主使用centos系统的缘故,这里只提供yum安装的方式** 首先安装并设置必要的依赖(CE和EE都需要) Centos 7执行: sudo yum install -y curl policycoreutils-python openssh-server openssh-clients sudo systemctl enable sshd sudo systemctl start sshd sudo firewall-cmd --permanent --add-service=http sudo systemctl reload firewalld Centos 6执行: sudo yum install -y curl policycoreutils-python openssh-server openssh-clients cronie sudo lokkit -s http -s ssh CE版本安装: *CE版本的安装使用了清华大学镜像源以提升安装速度; 新建 /etc/yum.repos.d/gitlab-ce.repo 文件并将以下内容写入该文件: [gitlab-ce] name=Gitlab CE Repository baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/ gpgcheck=0 enabled=1 执行安装: sudo yum makecache sudo yum -y install gitlab-ce EE版本安装: 添加GitLab软件包储存库 curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash 执行安装 yum -y install gitlab-ce 至此便已经安装完成并可以通过浏览器访问了。需要注意的是初次访问会将你重定向到重置密码的页面,设置好密码便可以使用账号:root,密码:(刚刚设置的密码)进行登陆。 安装汉化补丁 安装必要的软件: sudo yum -y install git patch 克隆或更新汉化版本库 git clone https://gitlab.com/xhang/gitlab.git #如果已存在本地仓库,请使用cd命令切换到本地仓库目录,并使用以下命令进行更新: git fetch 安装补丁 #请切换到本地仓库目录,并执行以下命令: gitlab_version=$(sudo cat /opt/gitlab/embedded/service/gitlab-rails/VERSION) sudo git diff v${gitlab_version} v${gitlab_version}-zh > ../${gitlab_version}-zh.diff # 停止 gitlab sudo gitlab-ctl stop cd .. patch -t -d /opt/gitlab/embedded/service/gitlab-rails -p1 < ${gitlab_version:=cat /opt/gitlab/embedded/service/gitlab-rails/VERSION}-zh.diff 重启gitlab,汉化补丁完成 sudo gitlab-ctl start sudo gitlab-ctl reconfigure gitlab配置与数据迁移 gitlab配置: 配置文件为/etc/gitlab/目录下的gitlab.rb文件。 以下列出我的一些配置示例: #gitlab服务的域名 external_url 'https://domain.com' #smtp邮件发送设置 gitlab_rails['smtp_enable'] = true #是否启用smtp发信 gitlab_rails['smtp_address'] = "smtp.163.com" #smtp发信地址 gitlab_rails['smtp_port'] = 25 #smtp发信端口 gitlab_rails['smtp_user_name'] = "user@163.com" #smtp发信邮箱 gitlab_rails['smtp_password'] = "password" #smtp发信邮箱密码 gitlab_rails['smtp_domain'] = "smtp.163.com" #与smtp发信地址保持一致即可 gitlab_rails['smtp_authentication'] = :login gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['gitlab_email_from'] = "user@163.com" #与smtp发信邮箱保持一致即可 user["git_user_email"] = "user@163.com" #与smtp发信邮箱保持一致即可 #https证书设置 nginx['ssl_certificate'] = "/etc/gitlab/ssl/crt.pem" #证书文件路径 nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/private.key" #证书私钥路径 nginx['redirect_http_to_https'] = true #是否启用http跳转至https *如有不需要的配置在句首使用#号注释即可 最后修改后保存并执行gitlab-ctl reconfigure 使配置生效。 数据迁移: 由于新服务器gitlab版本为10.8.4,旧服务器为10.7.3,所以并不能使用官方的备份与还原脚本进行数据迁移。不过所幸的是服务器上的仓库并不多,遂使用手工方式进行迁移。目前所有仓库数据均迁移完毕,配置文件/etc/gitlab/gitlab.rb 以及其他的一些服务也迁移完成。
2018年06月10日
106 阅读
0 评论
0 点赞
2018-02-01
编译frp程序
说明 上一次更新博客还是去年(2017)的事了,由于最近的一些经历让我感觉到博客的重要性,不过说不定突然的又不想更新博客了。 关于frp frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp, http, https 协议。使用GO语言编写,功能强大。并且作者也将其开源在github社区。(非常感谢作者的无私奉献!) 前言 说到底还是折腾的事,虽然上次折腾成功过了,但是由于没有记录,导致这次折腾的时候又得重头开始。固然浪费了很多时间,所以这次决定写博客以记录一些过程及细节避免自己或别人在同样的事情上浪费时间和精力。 正文 我只是粗略的学习过一点GO语言知识,所以一开始也是直接使用作者编译的程序。后来实在是觉得程序自带的404页面不太好看,就开始了自己编译的路子。这次的折腾是因为作者对程序进行了更新,于是打算把正在“服役”的程序跟进作者进行更新。顺便配置好持续集成,以便下一次更新时自动的进行持续编译。 我使用的是Linux操作系统,需要以下操作。(在此略过GO的安装过程) 将项目中的依赖移动到$GOROOT/src目录下: mv vendor/* /usr/local/go/src 将项目(frp文件夹)复制到/usr/local/go/src/github.com/fatedier: cp -r frp /usr/local/go/src/github.com/fatedier 执行项目下的sh脚本进行编译: ./package.sh 或使用以下方法: 在/usr/local/go/src目录下建立github.com/fatedier文件夹 : mkdir -p /usr/local/go/src/github.com/fatedier 将项目复制到刚才新建的文件夹下: cp -r frp /usr/local/go/src/github.com/fatedier 切换到该目录: cd /usr/local/go/src/github.com/fatedier 执行sh脚本进行编译: ./package.sh 等待编译完成,编译后的文件处于 packages 文件夹中。 问题及解决 Go程序编译时的依赖问题: 编译器会在$GOPATH/src或$GOROOT/src目录中查找项目引用的依赖,虽然Go语言可以在项目中的vendor文件夹下找寻依赖,但是仅限于项目处于$GOROOT/src目录下。
2018年02月01日
210 阅读
0 评论
0 点赞
2017-04-30
安装Google镜像的一次记录
安装Google镜像的一次记录 上一次的重装服务器系统,服务器上运行的一系列服务如Google镜像以及ss等随之一起被删除了。 在重装完成并且开启博客之后就马上恢复这些服务;但是天公不作美,在安装Google镜像中还是出了问题.而且是致命的--浏览器无限重定向。 在一番折腾之后仍然无果,不得已就搁置了。直到今天,因为五一假期,所以时间很多就想着今天解决掉这个问题。 搭建的Google镜像使用的是GitHub上某大神的一个nginx模块,所以我这个镜像利用的是nginx反向代理。不过网上也有一些镜像网站的PHP写的应用可以使用。在这里只是记录下本次的安装。 在上一次安装中我是直接按照作者的步骤进行安装的谷歌镜像nginx模块,并且竭尽全力的使用原来的模块版本进行编译安装;但是zlib这个模块却已经找不到原来的版本了,想着会不会就是这个原因导致的呢?于是今天就转变了方法--全部使用最新稳定版再编译安装; 下面使用了的模块扩展的版本及下载地址: nginx-1.12.0 pcre-8.40 zlib0-1.2.11 openssl-1.1.0e 当然还有两个需要用到的模块: # 直接使用这两条命令克隆到服务器; git clone https://github.com/cuber/ngx_http_google_filter_module git clone https://github.com/yaoweibin/ngx_http_substitutions_filter_module 配置 && 编译 使用tar解压下载的tar.gz文件; ./configure --prefix=/opt/nginx \ --with-openssl=../openssl-1.1.0e \ --with-zlib=../zlib-1.2.11 \ --with-pcre=../pcre-8.40 \ --with-http_ssl_module \ --add-module=../ngx_http_google_filter_module \ --add-module=../ngx_http_substitutions_filter_module 回车后make && make install 更改nginx配置 按照模块作者的说明进行修改配置文件并启动nginx就可以OK了。
2017年04月30日
75 阅读
0 评论
0 点赞