fake-macbook

过去的3年,我一直在用linux作为我的电脑主系统,我先装win7,再装的 kali,使用grub引导 Windows + linux双系统。

系统:kali 2017 rolling
桌面:默认的gnome3

然后,我在这基础上进行了一系列的美化,使之看起来就像一个macbook,就连同事都以为我是装了个黑苹果。 =。=

主题

Gnome shell 拓展

  • topicons plus : 可以将Debian8默认的左下角托盘移到屏幕最上的panel。
  • openweather : 在panel状态栏显示天气。
  • netspeed : 在panel状态栏显示实时网速。
  • lock keys : 因为我的电脑没有capslk指示灯 在panel显示 大小写 和 数字锁定指示器。
  • Media Player Indicator:在panel显示媒体播放器指示器。

甚至魔改了gnome shell 的css
将panel改为了透明
默认的shell主题,修改如下文件
/usr/share/gnome-shell/theme/gnome-shell.css

1
2
3
4
5
6
/* Panel */
#panel {
background-color: black;
font-weight: bold;
height: 1.86em;
}

background-color的值black改为transparent,重启gnome-shell就能看到效果了。

如果是其他的shell主题,需要修改对应目录的gnome-shell.css
比如我现在的shell主题是OSX-Arc-White,那么文件是:
/usr/share/themes/OSX-Arc-White/gnome-shell/gnome-shell.css

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/***********
* Top Bar *
***********/
#panel {
background-gradient-direction:none;
background-color: transparent;
/* background-color: rgba(255,255,255,0.75);*/
/* background-color: rgba(46,51,56,0.9);
border:1px solid rgba(200,200,200,.5);*/
box-shadow: 0px 3px 3px 1px rgba(0,0,0,0.5);
border: 0px solid rgba(90,105,111,0.5);
/* box-shadow: 0px 0px 0px 1px rgba(0,0,0,0.15);*/
border-top:0px;border-right:0px;border-left:0px;
font-weight: bold;
height: 26px;}
#panel:overview {
background-color: transparent;
border-color: transparent;
box-shadow: inset 0px rgba(0,0,0,0)}

然后把#panelbackground-colortransparent就行了

样子大概是这样:

2018-08-10 01-12-56 screenshot.png
2018-08-10 01-12-56 screenshot.png

触摸板

支持

  • 支持双指上下滚动
  • 轻按作为左键
  • 双指轻点作为右键

没法支持的

  • 三指及以上的手势操作(触摸板是支持的,但是没有相应软件,一直没找到)

指纹解锁

我的垃圾本子 昭阳E49 虽然也是有指纹解锁
但是在Linux下并不能用,也许是我没设置对
上次在凤凰聚聚的博客看到,他是如何让本子支持指纹解锁的,核心主要是修改Linux的pam认证。
这样,但是我添加了后,gnome3就是不解锁,看到auth.log里面有报错的日志,反正这个日后再折腾。
当时没折腾是因为是工作本,玩坏了就没了,stable才是坠厚的。

qq/钉钉/微信

这些国产软件,是Linux作为主力系统的一大痛点。
如果你用deppin linux,貌似这些还有解决方案。

qq

  • wine/crossover(之前我加入的appimage基于深度的crossover打包了个一键运行的版本)
  • windows 虚拟机

钉钉

  • 好像有网页版

微信

  • 网页版
  • wewechat(不稳定,UI有些问题,基于网页版,可能以后网页版会登陆不上)

总结

相比windows来说,如果没钱上macOS的话,把Linux主机作为开发/运维的主力系统,也能提升大量的工作效率。

real-macbook

看到18款MacBook,解决了上一代的叠式键盘的问题,硬件能力提升了不少,双核到四核,intel i5 CPU提升到了8代。
果断入手了,配置如下:

  • MacBook pro 13 with Touch Bar
  • CPU: Intel Core i5-8259U @ 2.30GHz
  • GPU: Intel Iris Plus Graphics 655 (13寸是没有独显的,集显也够了)
  • RAM:16G

拿到MacBook第一步,装ss和tg,像我这种人,感觉离了梯子和tg就会死吧。。

科学上网

致敬ss,ss的gui
https://github.com/shadowsocks/ShadowsocksX-NG/releases

telegram

建议到官网下载,macappstore的版本有些群/频道进不去(
下载名字不带 desktop 那个,支持mtproxy。

终端:iterm2 + zsh

iterms是一个必装的终端

zsh是一个强大的shell,程序员必备的工具,安装见zsh - 一个生产力+++的shell

MacBook默认是有zsh的

1
2
3
4
5
6
7
8
9
10
11
└─[$] <> cat /etc/shells
# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.

/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh

只需要在oh-my-zsh配置文件即可。
访问oh-my-zsh项目的主页,https://ohmyz.sh/
通过以下命令安装

1
$ sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

zsh_history 是要迁移的,需要一些历史命令补全

ps: iterm2默认命令记录行数有限,建议参考 https://www.douban.com/note/609493167/ ,将输出的回滚历史设置为无限制

保持shell连接

实际使用,觉得超时时间相比Linux下的shell短一些,经常是浏览下网页,回来shell就没反应了。

如何保持链接,参考https://www.v2ex.com/t/155773?p=1#r_1621565

Preferences - profiles -> sessions -> When idel, send ASCII code

brew

brew,全名叫homebrew,是macOS平台的包管理器, 以最简单,最灵活的方式来安装苹果公司在MacOS中不包含的UNIX工具。
类似于linux中redhat系列的yum,debian系列的apt
screenfetchhtop这样的命令都能安装。

安装brew:

1
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

卸载brew:

1
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"

常用的子命令

  • install/uninstall 安装/卸载
  • search 搜索
  • cask 图形化类的软件
    • install 安装图形化类的软件
  • tap 第三方仓库
  • doctor 检测是否出现了问题

无法创建软连接的官方解决方案

通常情况下brew安装的软件都会在brew --prefix返回的目录中,然后brew link创建一条软连接,这就会导致一个权限的问题。
在安装htop的时候报错了。
报错类似这样

1
2
3
4
The `brew link` step did not complete successfully 
The formula built, but is not symlinked into /usr/local/xxxxx

not writable.

运行brew doctor,它会告诉你,因为权限的问题,创建不了软链接(symbol link),需要执行以下命令

1
sudo chown -R $(whoami) /usr/local/share/man

然后还有四个软件包没有装好,需要手动一个一个brew link

1
2
3
4
brew link htop
brew link autoconf
brew link nmap
brew link libnfc

htop

top的美化版,可以形象生动的看出cpu、mem、swap和程序运行的状态
但是我运行后,显示cpu有8条,不可能啊,难道是说有8 线程。

马上看下cpu有几个核心

1
cat /proc/cpuinfo

结果显示没有/proc这个目录,果然是Linux用户
不过4核是没错的。

screenfetch

brew install screenfetch

运行screenfetch后,你会看到一个彩色的苹果,还有配置信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

-/+:. [email protected]
:++++. OS: 64bit Mac OS X 10.13.6 17G2208
/+++/. Kernel: x86_64 Darwin 17.7.0
.:-::- .+/:-``.::- Uptime: 20h 49m
.:/++++++/::::/++++++/:` Packages: 41
.:///////////////////////:` Shell: zsh 5.3
////////////////////////` Resolution: 2560x1600
-+++++++++++++++++++++++` DE: Aqua
/++++++++++++++++++++++/ WM: Quartz Compositor
/sssssssssssssssssssssss. WM Theme: Blue
:ssssssssssssssssssssssss- Font: Monaco 12
osssssssssssssssssssssssso/` CPU: Intel Core i5-8259U @ 2.30GHz
`syyyyyyyyyyyyyyyyyyyyyyyy+` GPU: Intel Iris Plus Graphics 655
`ossssssssssssssssssssss/ RAM: 8980MiB / 16384MiB
:ooooooooooooooooooo+.
`:+oo+/:-..-:/+o+/-

nmap

出名的端口扫描的软件

brew install nmap

终端代理 proxychains-ng

proxychains 我们之前在水文介绍过了,是一个代理工具,可以为那些自身不支持代理的命令/工具,提供代理。
在macOS的brew中,它叫proxychains-ng

安装

1
brew install proxychains-ng

注意,proxychains-ng的配置不像linux的位置/etc/proxychains.conf,在macOS上,配置文件的位置是/usr/local/etc/proxychains.conf
ShadowsocksX-NG默认监听的

  • socks5地址: 127.0.0.1 1086
  • http地址: 127.0.0.1 1087

在 brew 安装一些软件时发现,proxychains在macOS的代理效果不像在Linux环境那么好,这可能是macOS在10.11引入了一个新机制 SIP (System Integrity Protection) 带来的影响,如果不想去关闭SIP,
建议使用终端代理,参考MAC下终端走代理的几种方法设置
或者为curl设置代理,因为 brew 通常是用curl下载软件包的。

adb

添加第三方源:

1
brew tap homebrew/cask

安装安卓工具合集,其中就有adb

1
brew install android-platform-tools

apk逆向工具

apktool

1
brew install apktool

jd-gui

1
brew cask install jd-gui

pwgen

随机生成密码的终端工具

安装:

1
brew install pwgen

开发环境

我常用的是python、golang
因为本博客基于hexo,所以还需要node

开发工具

  • vscode

  • xcode

从苹果商店下载的xcode会附带 git这样的基础开发组件,这样就不用手动去装git

vscode可能会提示找不到git,需要手动设置git.path
git的路径

1
2
└─[$] <> which git
/usr/bin/git
  • goland

学习golang中。。

option + command + v 可以自动补全返回值

redis

brew install redis

1
2
3
4
To have launchd start redis now and restart at login:
brew services start redis
Or, if you don't want/need a background service you can just run:
redis-server /usr/local/etc/redis.conf

python

macOS默认安装了python2,但是没有装pip。
python的包管理工具

1
sudo easy_install pip

使用pip安装第三方包时,需要加sudo,但是用sudo,但总怕把系统搞坏,我们可以把sudo换为—user,在用户目录安装第三方包,这样python导入是没有问题的,但不会在系统的目录内安装,比如

1
2
pip install requests --user
pip install ipython --user

建议在mac上用--user安装python模块。
这样会将Python 程序包安装到 $HOME/.local 路径下, 而不需要root权限。
详细见:https://stackoverflow.com/questions/29310688/sudo-pip-install-vs-pip-install-user

ipython

brew install ipython
默认是python3

如果你要像通常那样
ipython -> python2
ipython3 -> python3

brew uninstall ipython

查看其他包的位置,得知macOS上软件包的路径规则
which pip
/usr/local/bin/pip
which wget
/usr/local/bin/wget

在安装了ipython的服务器上
which ipython
/usr/bin/ipython
ipython内容
cat /usr/bin/ipython

1
2
3
4
5
#! /usr/bin/python
# This script was automatically generated by setup.py
if __name__ == '__main__':
from IPython import start_ipython
start_ipython()

解决方案:

问题本质就是没有在环境变量创建名为ipython的可执行文件,那我们创建一个链接过去就可以了

  1. pip install ipython –user

  2. vim /usr/local/bin/ipython

    1
    2
    3
    4
    5
    #! /usr/bin/python
    # This script was automatically generated by setup.py
    if __name__ == '__main__':
    from IPython import start_ipython
    start_ipython()

当然你可以再开个终端,运行/usr/bin/python试试能不能进入python终端。
运行

1
2
from IPython import start_ipython
start_ipython()

你会发现,进入ipython的终端了

  1. chown -R $(whoami):admin /usr/local/bin/ipython
  2. chmod +x /usr/local/bin/ipython

golang

我在官网下载的安装包
https://golang.org/dl/
下载最新的macOS的go安装包

安装好后,在终端下输入go,没有提示命令未找到
which go

1
2
└─[$] <> which go
/usr/local/go/bin/go

node

我们使用之前说到的nvm,node version manager,如果没有说到,那就是我忘记更新了。。
安装nvm

1
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash

将以下两行加入你的shell的配置文件

1
2
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm

如果是bash,那就是~/.bashrc
如果是zsh,那就是~/.zshrc

安装node

1
nvm install node

安装hexo

1
npm install hexo -g

-g 意思是全局安装

ssh public key

换了电脑,要把新的public key添加到所有服务器上

还好aws是用pem,这样工作量就不是很大了。

ssh-keygen
会车三下,默认是rsa类型的

ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
复制mac的公钥到目标服务器

java

java用来运行burpsuite pro 1.7.32
java8即可,java10的参数有些变动,运行burpsuite破解版可能有点问题
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
同意后
下载”Mac OS X x64”即可

抓包软件/网络调试

  • charles
  • postman
  • burpsuite pro v1.7.32

虚拟机

免费方案

  • Virtualbox,开源,如果要装genymotion,virtualbox就必须要装的。
    收费方案
  • Parallels Desktop, 据说对Linux支持不太好,建议适用VMWare
  • VMWare Fusion 14 Pro,

笔记

  • wiznote

数据库客户端

播放器

  • 网易蚊香
  • ty写的bilimac

密码管理器

  • lastpass

至于time-based one time password
商店里有个otp manager

替代iTunes管理iOS设备

  • iMazing
    而且可以下载商店强制下架的app,我在国区购买了shadowrocket的,后来被下架,更新直接提示”此项目不再提供”,但是iMazing可以更新。

浏览器

  • tor浏览器
  • Firefox v55
    装好后,立即勾选停止检查更新,因为新版很多插件都不滋滋了

插件:

  • Firebug
  • 二维码扫描器
  • 惠惠购物助手
  • ipip 网站ip信息查询 /flagfox
  • adblock plus
  • cookies manager+
  • DownThemAll
  • FireGestures
  • FirePath
  • Greasemonkey
  • Hackbar
  • JSONView
  • lastpass
  • pan
  • SoundCloud MP3 Downloader
  • selenium IDE
  • Temp mail
  • UserAgent Swticher
  • v2ex plus 每天自动签到
  • WizNote Web Clipper
  • MetaMask
  • NoScript

其他

  • steam 游戏
  • eletrum 比特币钱包
  • besttrace 路由追踪可视化
  • istat menus 在状态栏查看 cpu/mem/network 数据