Howie's Notes

Machine Learning and Cyber Security

照片

根据目标朋友圈、微博等社交网络所发的照片,查看Exif信息,可得到目标当时的位置、相机规格等信息。

WiFi

根据目标所连接的WiFi名称可大致判断目标所在的位置,多数情况下,WiFi的名称一般为所在旅馆、餐馆、机构等名称的缩写。

Docker 是一种基于 Linux 的容器化技术,类似于轻量的虚拟机。它采用 C/S 架构,使用 Go 语言开发。

版本

Docker 分为 2 个版本:社区版(Community Edition, CE)和企业版(Enterprise Edition, EE),顾名思义,企业版是收费的。

针对 macOS 10.10.3 和 Windows 10,Docker 还推出了 Docker Desktop,Docker Desktop 又分为 2 个渠道(channel),稳定渠道(Stable)和抢先渠道(Edge),需要注意的是,Docker Desktop 对系统是有要求的,例如,针对 Win10 的 Docker for Windows 因为要用到 Hyper-V 虚拟机,所以要求系统是 64 位专业版或企业版并开启 Hyper-V 功能。

针对老版本的 Windows 或 macOS,可以使用 Docker Toolbox,它会附带安装一个 VirtualBox 虚拟机。

使用 docker version 可以查看 docker 版本号,使用 docker info 可以查看 docker 详细信息,直接输入 docker 可以查看 docker 相关命令。

Read more »

Git 是目前最流行的分布式版本控制系统(Distributed Version Control System, DVCS),类似的工具还有 Mercurial(由 hg 命令操作)等;在早期,人们常使用集中式版本控制系统(Centralized Version Control System,CVCS),其典型有 CVS、Subversion(SVN)等;现在,越来越多的人开始使用更为优秀的分布式版本控制系统,所谓版本控制,即可以随时记录并切换文件的不同版本。

安装

配置

Git 共有 3 个配置文件,分别是:

  • /etc/gitconfig 文件用于配置所有用户的配置信息,使用 git config --system 命令配置
  • 某个用户家目录下的 .gitconfig 文件只适用于该用户,使用 git config --global 命令配置
  • 当前 Git 仓库的 .git/config 仅针对当前项目,直接使用 git config 命令进行配置

注意:每一个级别会覆盖上一级别的配置,所以 .git/config 的配置变量会覆盖 /etc/gitconfig 中的配置变量。
按照个人偏好,针对新安装的 Git 环境,会配置如下信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 配置提交时使用的用户名和邮箱,必须配置
git config --global user.email "you@example.com"
git config --global user.name "Your Name"

# 开启颜色显示
git config --global color.ui true

# 配置别名
git config --global alias.lg1 "log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all"
git config --global alias.lg2 "log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n'' %C(white)%s%C(reset) %C(dim white)- %an%C(reset)' --all"
git config --global alias.lg '!"git lg1"'
git config --global alias.adog "log --all --decorate --oneline --graph"

# 配置 difftool 为 Meld(Windows)
git config --global diff.tool meld
git config --global difftool.meld.path "C:\Program Files (x86)\Meld\Meld.exe"
git config --global difftool.prompt false

# 配置 mergetool 为 Meld(Windows)
git config --global merge.tool meld
git config --global mergetool.meld.path "C:\Program Files (x86)\Meld\Meld.exe"
git config --global mergetool.prompt false

另外,Git 默认使用的编辑器是 Vim,若要配置成自己喜欢的编辑器(如 Emacs),可使用命令:git config --global core.editor emacs。
最后,你可以使用 git config --list 来查看所有配置信息。

Read more »

SSH(Secure Shell)即安全外壳协议,是一种位于应用层的加密的网络传输协议,虽然任何网络服务都可以通过 SSH 实现安全传输,但其最常见的用途还是远程登录,是 Telnet 等非安全 Shell 的替代品。

OpenSSH 的运行机制

SSH 是一种协议,其实现多种多样,目前使用最广泛的实现是 OpenSSH 项目。当使用 ssh user@host 命令进行登录时,所完成的整个过程如下:

  1. 远程主机收到用户的登录请求,把自己的公钥发给用户
  2. 用户使用这个公钥,将登录密码加密后,发送给远程主机
  3. 远程主机用自己的私钥,解密登录密码,若密码正确,则同意用户登录
  4. 后续过程中,用户发送的信息都采用此方式进行加密发送
Read more »

随着时间的发展,WSL 变化了很多,本文所描述的主体为 WSL 1,有关 WSL 2 的相关内容请参考 升级到 WSL 2。

名称问题

最早这个项目命名为 Bash on Ubuntu on Windows,随后改名为 Windows Subsystem for Linux(适用于 Linux 的 Windows 子系统),即 WSL,值得肯定的是,随着 Windows 10 逐渐更新,慢慢统一了命名。

Read more »

全屏问题

由于 Hyper-V 最初是为服务器设计的,所以到目前为止,Hyper-V 对于全屏的支持没有 VMware 做得好,同样,Hyper-V 也不能像 VMware 那样随意更改窗口大小,这多少显得很不方便。

对于 Windows 虚拟机的全屏操作,目前较为理想的解决方案是使用远程桌面连接,记得要在虚拟机中开启远程桌面连接功能;而对于 Linux 虚拟机的全屏操作,可以通过修改 /etc/default/grub 文件,更改其中 GRUB_CMDLINE_LINUX_DEFAULT="quiet splash video=hyperv_fb:1920x1080"(注意是 x 不是 *),接着执行 update-grub 并重启即可。

Read more »

Base64

Base64,顾名思义是一种基于 64 个可打印字符来表示二进制数据的表示方法,这 64 个字符分别为 A-Z、a-z、0-9 以及 + 与 /。64 个字符可用 6 个比特位表示,3 个字节有 24 个比特位,对应于 4 个 Base64 单元,所以编码后的数据要比原始数据略长,为原来的 4/3。Base64 索引表如下所示:

数值 字符 数值 字符 数值 字符 数值 字符
0 A 16 Q 32 g 48 w
1 B 17 R 33 h 49 x
2 C 18 S 34 i 50 y
3 D 19 T 35 j 51 z
4 E 20 U 36 k 52 0
5 F 21 V 37 l 53 1
6 G 22 W 38 m 54 2
7 H 23 X 39 n 55 3
8 I 24 Y 40 o 56 4
9 J 25 Z 41 p 57 5
10 K 26 a 42 q 58 6
11 L 27 b 43 r 59 7
12 M 28 c 44 s 60 8
13 N 29 d 45 t 61 9
14 O 30 e 46 u 62 +
15 P 31 f 47 v 63 /
Read more »
0%