Emacs Notes

December 16, 2017 发布在 wiki

基本概念

.vimrc对应的,Emacs一般是.emacs,也有其他的。

基本键位

  • C-x C-s 保存
  • C-x C-c 退出
  • C-x C-f 打开文件
  • C-s向下查找
  • C-r向前查找
  • C-g取消查找

Evil

在Emacs中使用vim的键位,这也是我能够开始使用Emacs的原因

NeoTree

仿Vim的NerdTree的插件,官方有中文wiki

(add-to-list 'load-path "/some/path/neotree")
(require 'neotree)
(global-set-key [f8] 'neotree-toggle)

需要添加下面的代码才能解决键位的冲突:

(add-hook 'neotree-mode-hook
	(lambda ()
		(define-key evil-normal-state-local-map (kbd "TAB") 'neotree-enter)
		(define-key evil-normal-state-local-map (kbd "SPC") 'neotree-enter)
		(define-key evil-normal-state-local-map (kbd "q") 'neotree-hide)
		(define-key evil-normal-state-local-map (kbd "RET") 'neotree-enter)))

使用

  • g刷新树
  • H切换显示隐藏文件
  • C-c C-c切换根目录
  • C-c C-n创建文件或者目录
  • C-c C-r重命名文件或者目录
  • C-c C-d删除文件或者目录

设置主题

这个网站选择喜欢的主题,比如molokai,首先下载这个扩展包

(require 'package)
(add-to-list 'package-archives
             '("melpa" . "http://melpa.org/packages/"))
(package-initialize)

然后通过M-x package-refresh-content下载包索引

接着通过M-x package-list-packages获取当前可用插件的列表,搜索到相关的Theme之后通过鼠标就能完成下载

M-x load-theme使用Tab键获取列表选择一个,暂时使用这个Theme

在配置文件中写入下面的代码可以自动启动加载这个Theme:

(load-theme 'molokai t)

Org-mode

Flycheck

http://www.flycheck.org/en/latest/

Helm

ycmd

http://blog.csdn.net/chris_linchen/article/details/46896495 http://blog.csdn.net/csfreebird/article/details/48898801 http://blog.csdn.net/victo2012/article/details/50570099

Markdown

设置字体

直接在.emacs添加下面的配置

(set-default-font "Monaco-13")

缓冲和窗口

C-x 4 b在另一个window中打开或新建一个缓冲 C-x 5 b在另一个frame中打开或新建一个缓冲 C-x C-b显示所有缓冲 C-x 4 f filename在另一个窗口打开文件 C-x ^ (enlarge-window)增高当前窗口 C-x } (enlarge-window-horizontally)将当前窗口变宽 C-x + (balance-windows)所有窗口一样高 C-x - (shrink-window-if-larger-than-buffer)如果窗口比缓冲大就缩小

设置行号

(global-linum-mode 1) ; always show line numbers
(setq linum-format "%d| ")  ;set format

company-mode 修改补全的键位

原生的补全是M-n,和之前的TAB的习惯不是很适应,google到一个issue,但是他给的方法不好用,可以直接修改源代码/company/company.el,搜索到原来的地方:

(define-key keymap (kbd "M-n") 'company-select-next)

(define-key keymap [tab] 'company-complete-common)
(define-key keymap (kbd "TAB") 'company-complete-common)

把后两行注释掉,前一行修改成TAB即可,需要注意的是还得M-x byte-compile-file来编译成*.elc文件才能生效。

Scheme

参考资料

olsrd Packet

December 13, 2017 发布在 olsrd

分类

分为Hello MessageMID MessageTC MessageHNA Message

Packet

使用UDP协议和698端口。

Packet格式

0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Packet Length         |    Packet Sequence Number     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Message Type |     Vtime     |         Message Size          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      Originator Address                       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Time To Live |   Hop Count   |    Message Sequence Number    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
:                            MESSAGE                            :
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Message Type |     Vtime     |         Message Size          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      Originator Address                       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Time To Live |   Hop Count   |    Message Sequence Number    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
:                            MESSAGE                            :
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
:                                                               :
        (etc.)

Packet Header

Packet Length

packet的字节数

Packet Sequence Number

每个新的packet发送PSN就加一

Message Header

Message Type

范围在0-127

HELLO_MESSAGE   =   1
TC_MESSAGE      =   2
MID_MESSAGE     =   3
HNA_MESSAGE     =   4

Vtime

从接受到这个Packet之后的有效时间

$a$和$b$是Vtime的高低4位。

Message Size

一个Message段的大小字节数

Originator Address

在传输中不可更改,是Message的生成者的Address,要和UDP头部的Address区分开来。

Time To Live

一个Message传播的最大跳数,这个Message被再次传播前,TTL必须先减一;如果接收到TTL是0或者1,就不能再传播了,一般而言不会收到0的情况。

用来规定这个flooding的传播半径。

Hop Count

Originator初始化为0,后面接收到的节点每次传播前加一。

Message Sequence Number

Originator每次产生新的就加一,初始不一定是0,用来确保这个Message不会被任何的节点重复传播两次。

Generate Packet

src/generate_msg.c

void
generate_hello(void *p)
{
  struct hello_message hellopacket;
  struct interface *ifn = (struct interface *)p;

  olsr_build_hello_packet(&hellopacket, ifn);

  if (queue_hello(&hellopacket, ifn))
    net_output(ifn);

  olsr_free_hello_packet(&hellopacket);

}

void
generate_tc(void *p)
{
  struct tc_message tcpacket;
  struct interface *ifn = (struct interface *)p;

  olsr_build_tc_packet(&tcpacket);

  if (queue_tc(&tcpacket, ifn) && TIMED_OUT(ifn->fwdtimer)) {
    set_buffer_timer(ifn);
  }

  olsr_free_tc_packet(&tcpacket);
}

void
generate_mid(void *p)
{
  struct interface *ifn = (struct interface *)p;

  if (queue_mid(ifn) && TIMED_OUT(ifn->fwdtimer)) {
    set_buffer_timer(ifn);
  }

}

void
generate_hna(void *p)
{
  struct interface *ifn = (struct interface *)p;

  if (queue_hna(ifn) && TIMED_OUT(ifn->fwdtimer)) {
    set_buffer_timer(ifn);
  }
}

void
generate_stdout_pulse(void *foo __attribute__ ((unused)))
{
  if (olsr_cnf->debug_level == 0)
    return;

  pulse_state = pulse_state == 3 ? 0 : pulse_state + 1;

  printf("%c\r", pulsedata[pulse_state]);

}

Hello Message

0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          Reserved             |     Htime     |  Willingness  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   Link Code   |   Reserved    |       Link Message Size       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                  Neighbor Interface Address                   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                  Neighbor Interface Address                   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
:                             .  .  .                           :
:                                                               :
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   Link Code   |   Reserved    |       Link Message Size       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                  Neighbor Interface Address                   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                  Neighbor Interface Address                   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
:                                                               :
:                                       :
(etc.)

Pygments

December 10, 2017 发布在

FreeBSD虚拟机使用VIM构建unpv环境

November 17, 2017 发布在 wiki

安装完整VIM

pkg install vim asdasdqweqweqweqweqweqweqweqweqwqweqwjrqwkjlrjqwlrqljlqweuqwioeoqwjrljqwlrjqwujrjquwijoqurwioqwriorqwijoqwrijoqwrijqwrjasajklsajkldsajksdlaejklseqwkjljkl

其中同时安装了不少和桌面系统相关的文件,内容比较大。

下载unpv12e代码

安装wget

pkg install wget

下载源码

wget http://unpbook.com/unpv13e.tar.gz

解压

tar -xzvf unpv13e.tar.gz

安装Git

需要通过Git获取vimrc和相关的插件

pkg install git

下载vimrc

下载我的vimrc,并复制到用户目录

git clone https://github.com/knowncold/vim.git
cd vim
cp .vimrc ~/.vimrc
cp -r colors ~/.vim/colors

安装Vundle

可以参考之前的文章Windows安装Vundle

git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim

vim插件

打开vim,使用PluginInstall命令

自动补全

自动补全通过YouCompleteMe插件来实现,相关的更详细的步骤可以看这个文章或者官方文档

pkg install llvm38 boost-all boost-python-libs clang38
pkg install python
cd ~/.vim/bundle/YouCompleteMe
./install.py --clang-completer --system-libclang --system-boost

编译完成之后,需要一个配置文件才能完全使用YCM

可以使用YCM自己的配置文件ycmd/cpp/ycm/.ycm_extra_conf.py,放在用户根目录,然后打开c或者C++时,按照提示载入配置文件,YCM就会开始提供语义级的自动补全而不是简单的ctags

补全配置

为了更好的使用YCM,.ycm_extra_conf.py对于每个项目每个文件都应该单独配置,这个配置文件主要定义的是当前项目需要的头文件,定义正确的配置文件之后,YCM才能到相应路径的头文件去寻找定义来补全。

可以手写.ycm_extra_conf.py,也可以使用工具自动配置,需要用到YCM Generater,按上面的步骤,在PluginInstall中,已经安装好了,使用时需要项目文件中有Makefile

./config_gen.py PROJECT_DIRECTORY

安装xfce

pkg install xorg
pkg install slim
pkg install xfce

/etc/rc.conf 写入

moused_enable="YES"
dbus_enable="YES"
hald_enable="YES"
slim_enable="YES"

~/.xinitrc写入

exec xfce4-session

init 6重启之后就能进入桌面了

常用VIM命令

CodeFest CTF 2017

September 23, 2017 发布在 tutorial

这次开学打的第一个CTF,网站巨卡无比,挂了VPN也没用
甚至傍晚的时候整个学院教育网炸了

cr4ck

拿到一个文件,用binwalk看一下文件的结构

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             ELF, 64-bit LSB executable, AMD x86-64, version 1 (SYSV)
1536          0x600           PNG image, 640 x 400, 8-bit/color RGBA, non-interlaced
1659          0x67B           Zlib compressed data, best compression
122104        0x1DCF8         LZMA compressed data, properties: 0x89, dictionary size: 16777216 bytes, uncompressed size: 100663296 bytes
122296        0x1DDB8         LZMA compressed data, properties: 0xA3, dictionary size: 16777216 bytes, uncompressed size: 100663296 bytes
122488        0x1DE78         LZMA compressed data, properties: 0xBF, dictionary size: 16777216 bytes, uncompressed size: 33554432 bytes

明显能看到的是里面有个图片,就用dd直接分离出来

dd if=cr4ck of=test.png bs=1 skip=1536 count=120568

打开图片就能看到flag

flag{didin’tknowflagscouldbeinimages}

受这个意思印象,提交的时候还忘记加flag{}格式,以至于花了一节数据库的课来查后面的LZMA

malicious

zip压缩文件,直接解压的话,只会解压出一个README.txt
内容是

WE NEED TO GO DEEPER!!

用binwalk又能看到后面还藏着一个zip文件

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             Zip archive data, at least v2.0 to extract, compressed size: 25, uncompressed size: 23, name: README.txt
121           0x79            End of Zip archive
143           0x8F            Zip archive data, at least v2.0 to extract, compressed size: 44, uncompressed size: 52, name: flag.txt
279           0x117           End of Zip archive

还是用dd分离出来

dd if=malicious_0a5aca19667459c2b75c384d7a6af48f.zip of=flag.zip bs=1 skip=143

得到这个zip文件,然后解压出来是flag.txt
内容是

666c61677b6b3333705f75705f793075725f7a6970703372357d

十六进制的ascii转成字母就得到了flag

flag{k33p_up_y0ur_zipp3r5}

SimplyBlack

对于一张全黑的图片

直接用Stegsolve看就能看出flag

flag{LETHAL}

JS Security

在这个网站 https://grab-the-fwag.herokuapp.com
看一下网页源代码

<!doctype html>
<html>
    <head>
        <title>CodeFest '17 CTF</title>
        <script type="text/javascript" src="md5.js"></script>
        <script type="text/javascript" src="kernel.js"></script>
    </head>
    <body>
        <h3>Provide the granted username</h3>
        <form method="POST" onSubmit="return validateLogin(this)" action="secure_login.php">
            <table border=0 align="center">
                <tr>
                    <td><label for="user"><b>User:</b></label></td>
                    <td><input type="text" name="user" id="user"></td>
                </tr>
                <tr>
                    <td colspan="2" align="center"><p><input type="submit" value="Get Access"></p></td>
                </tr>
            </table>
        </form>
    </body>
</head>

可以看到主要是两个js,md5.jskernel.js,前者只是一个md5的加密的库,后者一开始没仔细看以为是没内容,结果学长提醒才发现前面全是空行,最下面是

// JS too insecure, re-implementing in PHP
function validateLogin(formToBeValidated) {
    if (formToBeValidated.user.value == null || formToBeValidated.user.value == "") {
        alert("Username must be filled out!");
    } else {
        if (md5(formToBeValidated.user.value) == "da61a45edbd65ef661a6108b39fc04b6")
            return true;
        else
            alert("User not granted!");
    }
    return false;
}

//function keyRetrieved() {
//    window.location = "secure_login.php";
//}

很显然就是一个md5的加密,这一串拿去解密就能得到表单应该填的14075064,提交表单之后就会得到

Congratulations! The key is flag{17_w45_hidd3n_in_p14in_5igh7}.

flag{17_w45_hidd3n_in_p14in_5igh7}

anonymous

对于一个网站/askauth
只有一个按钮,直接单击按钮没什么用会一直被重定向

看网站的源代码和其他的HTTP头都没什么信息,然后发现有个cookie是flag:True,尝试改成False,重定向到了一个新的页面/ask_username

需要一个新的Username,又想到题目描述是需要用root登录,又重定向到了一个新的页面/ask_password

发现又多了一个cookie,pass:7af32ff30622da6d6dafc8f5bd202ae6,用md5解码,得到aunty,尝试登录,就得到了flag

Congtraulations, You have entered the restricted section.

The flag is the password.

flag{aunty}

最近更新
归档
标签

Theme from Tipo