博文

软路由折腾大全

划重点!入手软路由前你必须要了解的事情!!! https://www.youtube.com/watch?v=NwJtD_JBfeI 家用软路由有必要吗?科学上网必须要软路由?软路由科学上网是智商税?! https://www.youtube.com/watch?v=ilcXa6D6Kjw 入门软路由?一篇就够了!真正给小白看的软路由入门指南 https://www.youtube.com/watch?v=iuvTfaid_zc

angr使用指南(持续更新)

安装 推荐使用Ubuntu 18.04系统而不是Ubuntu 16.04来作为angr的系统环境,因为Ubuntu 18.04的python是3.6版本的,能避免一些奇怪的问题。 (1)更换系统的软件源为清华源/科大源。 (2)sudo apt-get install python3-dev libffi-dev build-essential virtualenvwrapper (3)mkvirtualenv --python=$(which python3) angr && pip install -i https://pypi.tuna.tsinghua.edu.cn/simple angr (4)pip install -i https://pypi.tuna.tsinghua.edu.cn/simple monkeyhex   关闭窗口后重新进入virtualenv环境 (1)source .virtualenvs/angr/bin/activate 阅读文档 (1)https://docs.angr.io/ (2)https://docs.angr.io/core-concepts/toplevel (3)https://docs.angr.io/core-concepts/loading (4)https://docs.angr.io/core-concepts/solver (5)https://docs.angr.io/core-concepts/states (6)https://docs.angr.io/core-concepts/pathgroups (7)https://docs.angr.io/core-concepts/simulation   TODO (1)尝试用angr做一些CTF题目,提高对angr的理解。

用Ubuntu 20.04编译Linux内核

1. 将Linux源码tar包拷贝到合适的目录,然后用“ tar xvf <文件名> ”解压。 2. 安装编译内核所需依赖。 sudo apt install bison flex libssl-dev libelf-dev 3. 生成内核配置文件,或拷贝一份当前系统所用的配置文件。 由编译内核的目的决定。 如果你想研究Ubuntu的某一个版本的内核,那就拷贝一份该版本所用的内核配置文件到Linux源码根目录下。当前运行的Ubuntu的配置文件在 /boot 文件夹下,以 config 开头,如 /boot/config-5.4.0-26-generic 。将其拷贝到Linux源码根目录下,改名为 .config (注意前面的点)。 或者,也可以用 make menuconfig 来生成一份默认的内核配置文件。 或者,为了研究syzkaller发现的漏洞,可以用syzkaller的内核配置文件。 你也可以在一个内核配置文件的基础上进行微调,比如将“=m”改成“=y”,或“=y”改成“=n”。 本步骤结束时,Linux源码根目录下应该已经存在合适的 .config 文件。 4. 编译 输入“ make -j4 ”开始编译。 j后面的数字不一定越大越好,还是要根据虚拟机的核心数量来决定。 如果编译时依旧出现要选择 y/n ,可以 按Ctrl+C 退出编译,运行“ make olddefconfig ”,这样就能为那些未决定的配置选项生成默认配置。 5. 编译完成 编译完成后,会提示 bzImage 存放在何处。另外,Linux源码根目录下会出现 vmlinux文件,可以用来gdb调试。

NDK中找不到arm-linux-androideabi-gcc的解决办法

最近在研究Android上的Hook和Inject。在研究 这篇文章 的时候,提到了交叉编译,使用了 arm-linux-androideabi-gcc ,但是文章中没有提到这个工具在NDK中的位置。 Google一下,发现大多数页面中提到了 $NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin 这个位置。但是我居然没有在这个位置发现 arm-linux-androideabi-gcc。 所以我们需要亲自重新安装一个工具链。 官方页面 中已经告诉我们该怎么做。主要代码如下: $NDK/build/tools/make_standalone_toolchain.py --arch arm --api 21 --install-dir /tmp/my-android-toolchain 其中 /tmp/my-android-toolchain 目录可以自定义,比如我的是 ~/Downloads/my-android-toolchain 。 $NDK 需要替换成自己的NDK目录。 运行该命令后过一会就会在 /tmp/my-android-toolchain 下生成 bin 目录,其中就有了 arm-linux-androideabi-gcc ,还有在NDK中缺失的 arm-linux-androideabi-clang 、arm- linux-androideabi-clang++ 、 arm-linux-androideabi-g++ 也都有了。

macOS 10.15系统上用VMWare Fusion 11.5虚拟机安装Ubuntu 20.04系统步骤

图片
1. 从 VMWare Fusion官方下载地址 下载VMware Fusion 11.5 Pro ,这里推荐下载 Pro 版本。然后请自行获取激活码并安装激活 VMware Fusion 11.5 Pro 。 2. 从 中国科学技术大学开源镜像站 下载Ubuntu 20.04桌面版。也可以右击 这里 ,将链接复制到下载工具下载。 3. 打开VMware Fusion 11.5 Pro (以下简称为VMWare),点击“从光盘或映像中安装”,点击“继续”,然后选中第2步下载好的iso文件,点击“继续”,然后对“显示名称”和“账户名”进行自定义,这将成为Ubuntu系统的用户名,然后输入密码,点击“继续”。 4. 将会出现“虚拟机摘要”。不要点击“完成”,因为这个虚拟机配置是远远不完美的,我们还需要进行自定义配置。点击“自定设置”,选择自己想要的虚拟机存储位置,点击“存储”。然后将弹出设置窗口。点击“硬盘”,将“磁盘大小”调整为80G及以上。(因为笔者需要编译Linux内核,所以大一点总是好的。)别忘了点击“应用”。然后回到主界面,再点击“处理器和内存”,选择“4个处理器内核”和“8192MB的内存”,具体选多大可以根据自己机器的配置来考虑,大一点总是好的。然后点击“高级选项”,选中“在此虚拟机中启用虚拟化管理程序”,这样就可以用kvm了,可以极大地加速Ubuntu中运行的QEMU。 5. 为了防止Ubuntu在安装的时候从网络下载更新,降低安装速度,我们需要暂时禁用网络。点击“网络适配器”,取消勾选“连接网络适配器”。然后就可以关闭设置窗口,然后点击虚拟机上的启动按钮。虚拟机将会自动开始安装。 6. 等待片刻后,可以发现已经安装好了,点击屏幕中间的用户名,输入密码,就可以进入桌面啦。 7. 第一次进桌面会弹出Livepatch设置,直接点击“Next”。为“Help improve Ubuntu”选择“No”,然后为Privacy选择“Next”,然后点“Done”。 8. 第一件事最好是更换软件源。网上有很多方法是通过手动修改系统配置文件来实现的,所以这里我来介绍一个简单一点的方法。点击屏幕右上角三角按钮,选择“Settings”,弹出来的窗口左边选择“About

一篇文章读懂Tor原理

图片
注:本文在2019年1月7日首发于“看雪学院”微信公众号,存档于 看雪论坛 。本人所有博文将逐渐迁移到 本人的Blogger 。 我们都知道,在大多数情况下,当我们与一台远程服务器建立连接的时候,会将自己的IP地址泄漏给这台服务器。这似乎是不可避免的,否则,服务器怎么知道我们在哪儿,从而返回数据包给我们呢?泄漏IP地址会造成隐私泄漏,比如用户的地理位置信息会因为IP地址的泄漏而被服务器知道。 但是今天我们要介绍大名鼎鼎的Tor网络,用它可以做到一定程度上的匿名:服务器不能知道我们的真实IP地址。说到这里,或许你会产生一个疑问:这不就是代理吗?没错,Tor从某种角度来看也是一种代理。但Tor比一般的一重代理要高明得多,它是一种多重代理。用一重代理有一个坏处:如果一重代理本身是恶意的(想象一下你的VPN提供商是恶意的),那么它就可以知道你访问过什么网站。显然,这不能满足我们的“谁都不能知道是我访问了网站”的隐私需求。 事实上,Tor是一种“代理节点快速动态变化的加密三重代理”。如下图所示,Alice为了匿名访问Bob服务器,将会随机选择Tor网络中的三个节点(分别称为节点A、节点B、节点C),将自己的网络流量通过这条随机路径送达Bob服务器。 这么做有如下好处:Bob只能知道数据包来自节点C(在术语中称为出口节点,exit node),节点C只能知道有数据从节点B发送到了Bob,节点B只能知道有数据从节点A发送到了节点C,节点A只能知道Alice访问了节点B。而且,这条路径会定时拆除并重新选择节点建立新路径。这使得攻击者(如政府)难以通过拿下单个或少数节点来获取用户的完整访问记录。 那么Tor是如何确保数据在不同节点之间传送时是加密的呢?如果不加密,那么恶意节点就可以知道它传送的内容是什么,从而就有可能知道是Alice访问了Bob。为了避免这种情况的发生,Tor采用了多重加密。事实上,这也正是Tor(The Onion Network)为什么叫洋葱路由的原因,因为真实数据被一层层加密,就好像洋葱一层一层的肉一样(见下图)。 Bob为了访问Alice,先访问Tor的目录服务器,获取一部分Tor节点的IP地址,并从中随机选择三个节点的IP地址A、B、C。然后,Bob和节点A通过Curve25519椭圆曲线(历史上曾经用Diffie-He