简单几步把树莓派做成离线下载器~

咱这里有个树莓派。。。放着也是放着,不如利用起来做个离线下载器玩玩~

准备:带整套装备的树莓派2B、32GU盘

0x00烧系统/配置树莓派:

烧系统什么的就不多说了:http://www.chenxublog.com/2015/09/21/树莓派如何安装系统?.html

然后连上网线(这里不推荐无线,非要用也不拦你23333:http://www.chenxublog.com/2015/09/26/piwithwlan.html

远程连接:用户名pi,密码raspberry

然后进行配置:

sudo raspi-config

选中“1 Expand Filesystem”一路按回车,将根分区扩展到整张 SD 卡

后面的大家看着办吧→_→ 设置好多

注意记得改密码,并且将语言改了,选择 en_US.UTF-8 和 zh_CN.UTF-8。在 Default locale for the -system environment:中,选择 zh_CN.UTF-8

然后装中文字体(没屏幕的不用管)

sudo apt-get update
sudo apt-get install ttf-wqy-zenhei ttf-wqy-microhei

0x01挂载U盘:

挂载 FAT32 格式的U盘:

#创建挂载点
sudo mkdir /mnt/myusbdrive
#编辑fstab让移动硬盘开机自动挂载
sudo nano /etc/fstab
#在最后一行添加如下内容
/dev/sda1 /mnt/myusbdrive auto defaults,noexec,umask=0000 0 0
#保存重启,即可生效

挂载 NTFS 格式的硬盘 (读写方式挂载):

#安装所需软件包
sudo apt-get install fuse-utils ntfs-3g
#加载内核模块
modprobe fuse
#编辑fstab让移动硬盘开机自动挂载
sudo nano /etc/fstab
#在最后一行添加如下内容
/dev/sda1 /mnt/myusbdrive ntfs-3g defaults,noexec,umask=0000 0 0
#保存重启,即可生效

挂载 exFAT 格式的硬盘:

sudo apt-get install exfat-fuse
/dev/sda1 /mnt/usbdisk vfat rw,defaults 0 0
#开机自动挂载

说明:

sda1 是取决于你的实际情况,a 表示第一个硬盘,1 表示第一个分区。

umask=0000 0 0

前面四个 0 就是对所有人, 可读可写可执行,

后面两个 0, 第一个代表 dump,0 是不备份

第二个代表 fsck 检查的顺序, 0 表示不检查

卸载:

sudo umount /mnt/myusbdrive

查看挂载情况可使用以下命令:

cd /mnt/myusbdrive
ls

0x02安装samba:

安装 samba:

sudo apt-get install samba samba-common-bin

安装完成后,配置 / etc/samba/smb.conf 文件:

sudo nano /etc/samba/smb.conf

在[global]里加上:

display charset = UTF-8
unix charset = UTF-8
dos charset = UTF-8

在其最后添加以下命令:

[raspi]                                   #共享文件的名称,将在网络上以此名称显示
        path = /mnt/myusbdrive                     #共享文件的路径
        valid users = pi             #允许访问的用户
        browseable = yes                  #允许浏览                                 
        public = yes                      #共享开放                                      
        writable = yes                    #可写

保存后,重启 samba 服务,输入:

/etc/init.d/samba restart

最后设置密码:

smbpasswd –a pi

然后加入开机自启:

sudo nano /etc/rc.loca

在exit 0前加上这句话:

/etc/init.d/samba start

0x03电脑连接远程共享:

右击网络(桌面上没有的可以去我的电脑左边那一列找到)

输入设置的ip、文件夹:

输入设置的用户名密码:

完成~

0x04安装aria2:

安装:

sudo apt-get install aria2

建立 aria2 设置文件:

cd /etc
sudo mkdir aria2
cd aria2
#创建空白的 aria2s session 文件
sudo touch /etc/aria2/aria2.session
#创建配置文件
sudo nano /etc/aria2/aria2.conf

编辑配置文件(下载目录按情况自己改):

dir=/mnt/myusbdrive
disable-ipv6=true
enable-rpc=true
rpc-allow-origin-all=true
rpc-listen-all=true
#rpc-listen-port=6800
continue=true
input-file=/etc/aria2/aria2.session
save-session=/etc/aria2/aria2.session
max-concurrent-downloads=3

启动:

sudo aria2c --conf-path=/etc/aria2/aria2.conf -D

然后把启动命令加到开机自启。

0x05安装yaaw:

安装apache:

sudo apt-get install apache2

给权限:

sudo chmod 777 /var/www/html
cd /var/www/html

然后安装yaaw:

sudo git clone https://git.oschina.net/chenxuuu/webui-aria2.git /var/www/html
#你也可以连GitHub,但是速度嘛~ https://github.com/ghostry/webui-aria2.git

然后就可以访问http://树莓派ip/来进行离线下载了

我们下载一个文件试试~

下载成功~

QQ反向字符/特殊昵称生成

反向字符什么的大家应该很常见了吧,但是今天又看到了一个玩法

看下图:

此效果仅能在安卓手机上才能体现

实现代码:

<script>
document.write("晨旭"+String.fromCharCode(8238)+"并扔了一只苦力怕".split('').reverse().join('')+String.fromCharCode(8237));
</script>

这种群备注的自助生成器:http://qq.papapoi.com

咱就是懒人们和小白们的救星23333

为ssh登录设置二次验证

之前阿里云的Google Authenticator二次验证觉得挺麻烦,后来发现在这社工库满天飞的时代。。。二次验证还是很有必要的。。

所以这里讲下如何给ssh设置Google Authenticator验证

0x01.安装Google Authenticator

debian/Ubuntu运行以下命令:

sudo apt-get install libpam-google-authenticator

Fedora/centos运行以下命令:

sudo yum install google-authenticator

0x02.生成&绑定密钥

运行命令:

google-authenticator

你会获取到一个secret key(建议直接打开那个网址扫二维码添加,这样比较方便)

Google Authenticator谷歌身份验证器下载:链接: http://pan.baidu.com/s/1gfPOIA3 密码: fret

然后下面几个问题可以查查意思,我都是y过去的

emergency scratch codes(应急码)建议妥善保存

安卓上添加的方法:

点右上角的“设置帐户”就能添加

0x03.启动谷歌身份验证器验证

首先修改/etc/pam.d/sshd

sudo vi /etc/pam.d/sshd

第一行添加如下内容(表示试了四次发现必须放第一行。。)

auth required pam_google_authenticator.so

修改ssh配置:

sudo vi /etc/ssh/sshd_config

把ChallengeResponseAuthentication项改成yes

然后重启ssh

debian/Ubuntu:

sudo service ssh restart

Fedora/centos7:

sudo systemctl restart sshd

centos6.x:

sudo service sshd restart

然后不要断开ssh,新建一个ssh试试能不能登陆,不能登录就重新搞,以免设置错误导致没法登陆

教程完毕

个人看过的动画评分

本单列的全部是我看过的,评分主观成分为100%

由于是从b站收藏记录里翻的,很多都漏掉了,等发现再补上

评分越高说明我觉得这个作品越好

拒绝撕逼233333

2016四月新番等看完再加

排序无任何规律(从今天的明日香开始就是后来补番的顺序了。。)

旧数据已清除,因为太乱

满分五分

某科学的超电磁炮(4/5)

魔法禁书目录(3/5)

我的妹妹不可能那么可爱(5/5)(2周目)

寒蝉鸣泣之时(4/5)(2周目)

天降之物(3/5)

凉宫春日的忧郁(5/5)(3周目)

缘之空(4/5)

萌少女的恋爱时光(5/5)(2周目)

丧女(5/5)

萝球社!(4/5)

悠哉日常大王(5/5)

变态王子与不笑猫(5/5)

妄想学生会(5/5)(3周目)

一周的朋友。(5/5)(2周目)

请问您今天要来点兔子吗?(5/5)

上课小动作(4/5)

潜行吧!奈亚子(4/5)

我的脑内恋碍选项(4/5)

生存游戏社!(5/5)

月刊少女野崎君(5/5)

搞姬日常(4/5)

元气囝仔(4/5)

轻音少女(5/5)

摇曳百合(5/5)(2周目)

爱杀宝贝(5/5)(2周目)

樱TRICK(4/5)

幸运☆星(5/5)(3周目)

日常(5/5)(3周目)

日常系的异能战斗(4/5)

秒速五厘米(4/5)

关于完全听不懂老公在说什么的事(3/5)

寄生兽(4/5)

一起一起这里那里(4/5)

电器街的漫画店(4/5)

狗与剪刀的正确用法(4/5)

野良神(4/5)

要听爸爸的话!(5/5)(2周目)

灼眼的夏娜(5/5)(2周目)

神薙(5/5)(2周目)

向山进发(4/5)

可塑性记忆(5/5)

ANGEL BEATS!(5/5)

迷途猫OVERRUN!(5/5)

加速世界(5/5)

黄金拼图(4/5)

笨蛋测验召唤兽(4/5)

邻座的怪同学(4/5)

我的朋友很少(4/5)

暗杀教室(4/5)

幸腹涂鸦(4/5)

路人女主的养成方法(4/5)

军方!(4/5)

姐姐来了(4/5)

未确认进行式(4/5)

亲吻姐姐(4/5)

没有黄段子存在的无聊世界(2/5)

洲崎西(4/5)

干物妹!小埋(4/5)

学园孤岛(5/5)

若叶女孩(4/5)

温泉幼精箱根酱(4/5)

四月是你的谎言(5/5)

就算是哥哥有爱就没问题了对吧(4/5)

好想告诉你(4/5)

命运石之门(5/5)

神的记事本(5/5)(2周目)

狼与香辛料(5/5)

小森同学拒绝不了!(4/5)

樱花庄的宠物女孩(4/5)

CLANNAD(3/5)

恋爱研究所(5/5)

学生会的一己之见(3/5)

爱神巧克力(4/5)

天体的秩序(5/5)

她与她的猫(4/5)

房东妹子青春期!(4/5)

恋爱随意链接(5/5)

全部成为F(4/5)

樱子小姐的脚下埋着尸体(4/5)

魔法少女小圆(5/5)

男子高中生的日常(5/5)

龙与虎(5/5)(2周目)

中二病也要谈恋爱(5/5)

玉子市场(4/5)

濑户花嫁(4/5)

未闻花名(5/5)

今天的明日香(4/5)

草莓棉花糖(5/5)

冰菓(5/5)

千岁Get You!!(3/5)

迷家(4/5)

代号D机关(5/5)

线上游戏的老婆不可能是女生?(2/5)

Anne Happy(3/5)

三者三叶(3/5)

在下坂本,有何贵干?(4/5)

魔法少女什么的已经够了啦(3/5)

萌菌物语(5/5)

HENTAI(3/5)

NEW GAME(5/5)

斯特拉的魔法(3/5)

甘城光辉游乐园(5/5)

粗点心战争(4/5)

问题儿童都来自异世界(5/5)

境界的彼方(5/5)

人类衰退之后(5/5)

NO GAME NO LIFE(5/5)

珈百璃的堕落(4/5)

群居姐妹(4/5)

吹响吧!上低音号(5/5)

宫河家的空腹(4/5)

蒲公英(4/5)

分形世界(5/5)

A Channel(5/5)

悠悠式(5/5)

小林家的龙女仆(4/5)

雏子的笔记(5/5)

妹妹是工口漫画老师(4/5)

樱花任务(5/5)

笨女孩(4/5)

电波女与青春男(5/5)

向阳素描(5/5)

banner上浮气泡效果

看网站顶上那堆往上飘的球就知道效果了→_→ 

或者看下面,就是酱紫:

添加方法:

先把下面的js代码引入网页(搞成js文件比较好哈):

(function() {
    var width, height, largeHeader, canvas, ctx, circles, target, animateHeader = true;
    // Main
    initHeader();
    addListeners();
    function initHeader() {
        width = window.innerWidth;
        height = document.getElementById('banner').offsetHeight;
        target = {x: 0, y: height};
        largeHeader = document.getElementById('banner');
        largeHeader.style.height = height+'px';
        canvas = document.getElementById('demo-canvas');
        canvas.width = width;
        canvas.height = height;
        ctx = canvas.getContext('2d');
        // create particles
        circles = [];
        for(var x = 0; x < width*0.8; x++) {
            var c = new Circle();
            circles.push(c);
        }
        animate();
    }
    // Event handling
    function addListeners() {
        window.addEventListener('scroll', scrollCheck);
        window.addEventListener('resize', resize);
    }
    function scrollCheck() {
        if(document.body.scrollTop > height) animateHeader = false;
        else animateHeader = true;
    }
    function resize() {
        width = window.innerWidth;
        height = document.getElementById('banner').offsetHeight;
        largeHeader.style.height = height+'px';
        canvas.width = width;
        canvas.height = height;
    }
    function animate() {
        if(animateHeader) {
            ctx.clearRect(0,0,width,height);
            for(var i in circles) {
                circles[i].draw();
            }
        }
        requestAnimationFrame(animate);
    }
    // Canvas manipulation
    function Circle() {
        var _this = this;
        // constructor
        (function() {
            _this.pos = {};
            init();
            console.log(_this);
        })();
        function init() {
            _this.pos.x = Math.random()*width;
            _this.pos.y = height+Math.random()*100;
            _this.alpha = 0.3+Math.random()*0.3;
            _this.scale = 0.3+Math.random()*0.3;
            _this.velocity = Math.random();
        }
        this.draw = function() {
            if(_this.alpha <= 0) {
                init();
            }
            _this.pos.y -= _this.velocity;
            _this.alpha -= 0.0005;
            ctx.beginPath();
            ctx.arc(_this.pos.x, _this.pos.y, _this.scale*10, 0, 2 * Math.PI, false);
            ctx.fillStyle = 'rgba(255,200,255,'+ _this.alpha+')';
            ctx.fill();
        };
    }
})();

然后,在banner的div结束前加入以下遮罩代码:

<canvas class="demo-canvas" id="demo-canvas"></canvas>

(不要吐槽id名23333)

然后就全部搞定啦~