#!/usr/bin/env ruby base_line = "[*] Starting the Metasploit Framework console..." cycle = 0 loop do %q{/-\|}.each_char do |c| status = "#{base_line}#{c}\r" cycle += 1 off = cycle % base_line.length #格式化base_line,让off可以从0到48,再加上loop,这个0到48就可以一直循环 case status[off, 1] #检测base_line这串字符串,如果是小写就变大写,如果是大写就变回小写 when /[a-z]/ status[off, 1] = status[off, 1].upcase when /[A-Z]/ status[off, 1] = status[off, 1].downcase end $stderr.print status ::IO.select(nil, nil, nil, 0.10) end end下面就是实现的效果!
一定要笑
2016年5月26日
MSF启动时的视觉效果
在玩metasploit,执行msfconsole在启动过程中,发现它的等待字符串很有爱。虽然是字符界面,不过也能做到一些视觉效果,于是去找了下源码。这部分的源码是(#号部分是我自己理解后的注释):
2014年11月12日
sed
一直都是断断续续的学习Sed和Awk,现在想正式了解其中的原理。现在先来学习Sed。
1 sed 's/abc/def/5,10' file 和 sed -i '5,10s/abc/def/g' file的区别
sed 's/abc/def/5,10' file 将第5行到第10行的abc改成def
sed '5,10s/abc/def/g' file 将一行的第5字段到第10字段的abc改为def
2 sed a 命令( append )
sed "1 a test abc" file 在第一行下面插入test abc 一行
sed "$ a test abc" file 在最后一行插入test abc一行
sed "/my/a test" file 在匹配my一行的下一行插入test一行
3 sed i 命令( insert )
与sed a命令相反,它是在前面插入一行
sed "1i test abc" file 在第一行上面插入新行
sed "/my/i test abc" file 在匹配my的一行上面插入一行
4 sed c 命令( replace )
sed "2 c test" file 将第二行全部内容替换为test
sed "/abc/c test" file 将有abc的一行替换为test
5 sed d 命令( delete )
sed "2d" file 将第二行删除
sed "/test/d" file 将匹配test的一行删除
sed "2,5d" file 将第2行到第5行删除
6 更有趣的是,sed有一个命令打包的东西,挺有意思的。
sed "3,6{/test/d}" file 将3到6中含有test字符的行删除
sed "3,6{/test/{/field/d}}" file 将3到6行中含有test和field的行删除
sed "1,${/test/d; s/^ $//g}" file 将整个文件中含有test的行删除和将空行删除
在这里将多个命令使用大括号或分号来分开和执行了
7 保留空间
G: 将保留空间中的内容追加到匹配空间后面
h: 将匹配空间中的内容拷贝到保留空间中,原来的保留空间里的内容被清除
H: 将匹配空间中的内容追加到保留空间后面
x: 交换匹配空间和保留空间的内容
1!G —— 只有第一行不执行G命令,将hold space中的内容append回到pattern space
h —— 第一行都执行h命令,将pattern space中的内容拷贝到hold space中
$!d —— 除了最后一行不执行d命令,其它行都执行d命令,删除当前行
来自 http://coolshell.cn/articles/9104.html
1 sed 's/abc/def/5,10' file 和 sed -i '5,10s/abc/def/g' file的区别
sed 's/abc/def/5,10' file 将第5行到第10行的abc改成def
sed '5,10s/abc/def/g' file 将一行的第5字段到第10字段的abc改为def
2 sed a 命令( append )
sed "1 a test abc" file 在第一行下面插入test abc 一行
sed "$ a test abc" file 在最后一行插入test abc一行
sed "/my/a test" file 在匹配my一行的下一行插入test一行
3 sed i 命令( insert )
与sed a命令相反,它是在前面插入一行
sed "1i test abc" file 在第一行上面插入新行
sed "/my/i test abc" file 在匹配my的一行上面插入一行
4 sed c 命令( replace )
sed "2 c test" file 将第二行全部内容替换为test
sed "/abc/c test" file 将有abc的一行替换为test
5 sed d 命令( delete )
sed "2d" file 将第二行删除
sed "/test/d" file 将匹配test的一行删除
sed "2,5d" file 将第2行到第5行删除
6 更有趣的是,sed有一个命令打包的东西,挺有意思的。
它们可以用分号分开,可以用大括号括起来作为嵌套命令
sed "3,6{/test/d}" file 将3到6中含有test字符的行删除
sed "3,6{/test/{/field/d}}" file 将3到6行中含有test和field的行删除
sed "1,${/test/d; s/^ $//g}" file 将整个文件中含有test的行删除和将空行删除
在这里将多个命令使用大括号或分号来分开和执行了
7 保留空间
保留空间
g: 将保留空间中的内容拷贝到匹配空间中,原来匹配空间里的内容清除G: 将保留空间中的内容追加到匹配空间后面
h: 将匹配空间中的内容拷贝到保留空间中,原来的保留空间里的内容被清除
H: 将匹配空间中的内容追加到保留空间后面
x: 交换匹配空间和保留空间的内容
sed
'1!G;h;$!d'
file 倒序一个文件内容
1!G —— 只有第一行不执行G命令,将hold space中的内容append回到pattern space
h —— 第一行都执行h命令,将pattern space中的内容拷贝到hold space中
$!d —— 除了最后一行不执行d命令,其它行都执行d命令,删除当前行
来自 http://coolshell.cn/articles/9104.html
2014年5月13日
命令标准输入
一个目录里的内容
使用echo将输入的内容写入文件
下面完整输出命令的标准输出(这才是我要的效果)
IN[~]>>>ls -l
total 56732
-rw-rw-r-- 1 minix 1236 Apr 29 09:19
3g_total.sh
-rwxr-xr-x 1 minix 50963038 Mar 26 08:36
ap.log*
-rw-r--r-- 1 minix 7031684 Nov 27 11:51
VNC-Server-5.0.6-Linux-x86.deb
-rwxrwxr-x 1 minix 543 Jan 1 23:36
aa.sh*
drwxr-xr-x 4 minix 4096 Feb 28 20:34
aaa/
-rw-rw-r-- 1 minix 685 Dec 18 14:36
check_status.sh
-rw-rw-r-- 1 minix 246 Apr 25 16:31
db.rb
-rwxr-xr-x 1 minix 636 Oct 21 2013
execltocvs.rb*
-rw-rw-r-- 1 minix 731 Apr 23 10:00
gr.rb
-rw-rw-r-- 1 minix 61 Apr 30 10:12
ip.txt
drwxr-xr-x 3 minix 4096 Mar 5 22:23
kibana/
-rwxrwxr-x 1 minix 1150 May 4 14:51
log.rb*
drwxrwxr-x 16 nagios 4096 Mar 15 2013
nagios/
drwxrwxr-x 4 minix 4096 Mar 5 20:35
nagios_dir/
drwxrwxr-x 3 minix 4096 Aug 7 2013
operation/
-rw-rw-r-- 1 minix 0 Apr 30 10:12
ping.log
-rw-rw-r-- 1 minix 124 Apr 30 10:13
ping.rb
-rw-rw-r-- 1 minix 175 Sep 2 2013
red.rb
drwxr-xr-x 3 minix 4096 Sep 13 2013
setup123/
drwxrwxr-x 2 minix 4096 Sep 3 2013
sock/
-rw-rw-r-- 1 minix 1061 Aug 15 2013
t.sh
-rw-rw-r-- 1 minix 182 Apr 21 18:29
te.rb
-rw-rw-r-- 1 minix 259 Jul 18 2013
test.rb
-rw-rw-r-- 1 minix 319 Apr 17 10:09
ton.py
drwxrwxr-x 7 minix 4096 Apr 17 09:48 tornado-3.2.0/
使用echo将输入的内容写入文件
IN[~]>>>echo `\ls` > aa.txt
IN[~]>>>cat aa.txt
3g_total.sh ap.log aaa aa.sh aa.txt check_status.sh db.rb execltocvs.rb gr.rb ip.txt kibana log.rb nagios nagios_dir operation ping.log ping.rb red.rb setup123 sock te.rb test.rb ton.py tornado-3.2.0 t.sh VNC-Server-5.0.6-Linux-x86.deb
IN[~]>>>
下面完整输出命令的标准输出(这才是我要的效果)
IN[~]>>>cat << EOF > aa.txt
`\ls`
EOF
IN[~]>>>cat aa.txt
3g_total.sh
ap.log
aaa
aa.sh
aa.txt
check_status.sh
db.rb
execltocvs.rb
gr.rb
ip.txt
kibana
log.rb
nagios
nagios_dir
operation
ping.log
ping.rb
red.rb
setup123
sock
te.rb
test.rb
ton.py
tornado-3.2.0
t.sh
VNC-Server-5.0.6-Linux-x86.deb
IN[~]>>>
2014年3月25日
ruby正则
下面一行被我用正则匹配出来了,我还真佩服自己的耐心!
我要得到的结果是value的 [1,5,9,11] .这段代码还不是正确的。不过要拿出来已经很容易了。
应该有更好的办法的,只是我现在不知道而已!
2014-03-05T03:49:43+08:00 autelanmaster eag1_0[1421]: eag_radius.c:1002:RadiusAcctRequestUpdate___UserName:73570,UserIP:20.3.141.241,Sessiontime:7200,SSID:shanlink,authtype:Portal,ApMAC:00-1F-64-EB-7C-CC,UserMAC:F8-A4-5F-C8-E9-B3,NasID:1用ruby写的代码如下(其实我的编码水平就是个菜头):
1 #!/usr/bin/env ruby
2 #
3 str = '2014-03-05T03:49:43+08:00 autelanmaster eag1_0[1421]: eag_radius.c:1002:RadiusAcctRequestUpdate___UserName:73570,UserIP:20.3.141.241,Sessiontime:7200,SSID:shanlink,authtype:Portal,ApMAC:00-1F-64-EB-7C-CC,UserMAC:F8-A4-5F-C8-E9-B3,NasID:1'
4 value = str.match /(^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\+\d{2}:\d{2}) (\w+)\s(\w+\d_\d\[\d{4}\]:)\s(\w+_\w+\.\w:\d+:\w+__\w+:\d+\,\w+:)(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})(\,\w+:\d+,\w+:)(shanlink)(,\w+:\w+,\w+:)([0-9A-F]{2}-[0-9A-F]{2}-[0-9A-F]{2}-[0-9A-F]{2}-[0-9A- F]{2}-[0-9A-F]{2})(\,\w+:)([0-9A-F]{2}-[0-9A-F]{2}-[0-9A-F]{2}-[0-9A-F]{2}-[0-9A-F]{2}-[0-9A-F]{2})(\,\w+:\d)$/
5 puts value[1, 5, 9, 12]
我要得到的结果是value的 [1,5,9,11] .这段代码还不是正确的。不过要拿出来已经很容易了。
应该有更好的办法的,只是我现在不知道而已!
2014年3月16日
osx10.6.8无法安装homebrew
IN[/data/software]>>>ruby homebrew.rb
==> This script will install:
/usr/local/bin/brew
/usr/local/Library/...
/usr/local/share/man/man1/brew.1
Press ENTER to continue or any other key to abort
==> /usr/bin/sudo /bin/mkdir /usr/local
==> /usr/bin/sudo /bin/chmod g+rwx /usr/local
==> /usr/bin/sudo /usr/bin/chgrp admin /usr/local
==> Downloading and Installing Homebrew...
dyld: Library not loaded: /usr/lib/libcurl.4.dylib
Referenced from: /usr/libexec/git-core/git-remote-https
Reason: Incompatible library version: git-remote-https requires version 7.0.0 or later, but libcurl.4.dylib provides version 6.0.0
Failed during: git fetch origin master:refs/remotes/origin/master -n
安装了 Snow Leopard 10.6.7后, 要使用brew来安装一些软件。我的办法就是将homebrew.rb文件下载下来,然后运行。不过运行过程出现上面的错误信息。
出现这个错误信息是因为curl的版本太低,无法运行git来下载。我的办法就是在网上下载一个最新的curl下来,然后自己编译安装(一开始是没有编译器的,要安装XCODE才可以). 记得要使用--prefix将它指定到一个地方,这样方便查找。编译完成后执行下面的命令:
mv /usr/lib/libcurl.4.dylib /usr/lib/libcurl.4.dylib.old #将其改名字
ln -s /curl/install/diretcory/lib/libcurl.4.dylib /usr/lib/ #将编译好的curl下的lib/libcurl.4.dylib目录软链接到/usr/lib目录下
再一次运行 ruby homebrew.rb 就成功了!
git证书
昨天在安装ruby2.0的时候无法安装,再想下因为之前装了xcode3.2.1和xcode4,觉得是编译的版本问题,然后在/Developer/Library下运行那两个uninstall脚本将全部都删除。
然后再使用brew的时候就出现了下面的错误情况:
一开始觉得是git使用了curl来拉github.com上面的东西,因为没证书导致出现,因为curl可以使用参数--cacert来指定证书文件,所以拼命在找/usr/local/Library/Homebrew/目录下的所有文件,看下里面有没curl,有的话就加上这个参数。哪知道都没有!
搞了一会后再想下,因为github.com是使用https来传输,那git也有可以是缺少证书才不能连,然后根据这个线索上google搜索
"git SSL certificate problem: unable to get local issuer certificate"
然后得到了一个正确的结果:
git config --system http.sslcainfo /usr/share/ssl/cacert.pem
这样的意思是加上sslcainfo的信息,而/usr/share/ssl/cacert.pem文件是网上下载的。运行上面一行后再运行
brew update
就成功了!唉!
然后再使用brew的时候就出现了下面的错误情况:
minixs-MacBook-Pro% brew update
Initialized empty Git repository in /usr/local/.git/
fatal: unable to access 'https://github.com/Homebrew/homebrew.git/': SSL certificate problem: unable to get local issuer certificate
Error: Failure while executing: git fetch origin
一开始觉得是git使用了curl来拉github.com上面的东西,因为没证书导致出现,因为curl可以使用参数--cacert来指定证书文件,所以拼命在找/usr/local/Library/Homebrew/目录下的所有文件,看下里面有没curl,有的话就加上这个参数。哪知道都没有!
搞了一会后再想下,因为github.com是使用https来传输,那git也有可以是缺少证书才不能连,然后根据这个线索上google搜索
"git SSL certificate problem: unable to get local issuer certificate"
然后得到了一个正确的结果:
git config --system http.sslcainfo /usr/share/ssl/cacert.pem
这样的意思是加上sslcainfo的信息,而/usr/share/ssl/cacert.pem文件是网上下载的。运行上面一行后再运行
brew update
就成功了!唉!
订阅:
博文 (Atom)