Ouroborus Program - quine-relay 分析

Quine Relay

今天上網時看到有人分享了這個項目:quine-relay,點進去看是這樣一個程序:一開始是一段Ruby代碼,運行後生成Scala代碼,後者運行後生成Scheme代碼,如此執行,依次生成了Bash、Smalltalk、Tcl等代碼,最後又回到最初的Ruby代碼。這類程序有個名字,叫ouroborus programs。Ouroborus即銜尾蛇,是一條正在吞食自己尾巴的蛇,在這裏剛好表示循環的概念。

Read More

String index structure: suffix automaton

Suffix automaton

Deterministic acyclic finite state automaton,也叫directed acyclic word graph(DAWG),是一個識別若幹字串的無環DFA。識別若干字串的所有DAWG中,存在唯一一個狀態數最少的DAWG,稱作minimal DAWG,即識別這個字串集的DFA。

DAWG在有些文獻中也指識別一個字串的所有後綴的自動機,這種用法有個更常見的名稱:suffix automaton,此時該自動機可以看做是字串所有後綴的DAWG。

Read More

使用Burkhard-Keller tree優化近似串匹配

Approximate string matching

近似字符串匹配問題。

Levenshtein edit distance

在metric space中衡量兩個字符串差異程度的一個指標,即通過一系列單字符的編輯操作把字符串A變成字符串B所需的最小編輯次數,其中的編輯操作可以是插入字符、刪除字符以及修改字符。

計算編輯距離有個經典的Wagner-Fischer算法,使用了動態規劃,用d(i,j)表示把字符串A的前i個字符變成字符串B的前j個字符所需的最小編輯次數(即子串的編輯距離)。

Read More

RuCTFE 2012參賽記

海底撈火鍋

RuCTFE 是一個面向全世界的信息安全比賽,每個隊伍保護自己的機器,攻擊其他隊伍的機器,長達8個小時緊張激烈的對抗和賽前犒賞隊員的火鍋標誌着它是這一年我參與的最有意義的事之一,因而在這裏簡要記錄下來。有幸收到《Metasploit滲透測試指南》的譯者孫松柏的邀請,成爲 blue-lotus 隊的一員,和網絡安全實驗室的同學一起出發,晚上一羣人去吃牡丹園的海底撈火鍋壯行。

Read More