JYF's Blog ——部分文章转自互联网,如有侵权,请留言联系。
FRIDAY
2008-6-14随机生成合法MAC地址的Shell脚本
分类:Linux时间:2008-6-14 8:13:32作者:JYF's Blog
标签:shell    
最近进行一项变MAC地址攻击网桥的测试中,需要随机生成一个合法的MAC地址,故写了一个小shell脚本,完成了此目的:
# !/bin/bash

for i in {1..6}
do
    tmp=`expr $RANDOM / 256`
    MAC+=`printf %.2X $tmp`
    MAC+="-"
done
MAC=`echo $MAC | cut -c 1-17`
echo $MAC

此段脚本执行后,便会产生一个形如00-A1-B1-23-55-FA的MAC地址来。配合用tcpreplay回放修改源MAC后的tcpdump抓取的攻击包,如tcpreplay -i eth0 --enet-smac=$mac_rand ddos.cap,可通过脚本循环,达到不停修改MAC地址后发包的目的。
+查看评论 (0)+发表评论+Trackback地址+Trackbacks (0)
2008-6-6Linux脚本实现的多样性
分类:Linux时间:2008-6-6 0:26:01作者:JYF's Blog
标签:linux    shell    
在 linux/unix 下,熟练使用脚本可以大大减少工作量,提高工作效率。通常,一个功能的实现,通过脚本可能有很多种方法。我们需要的是,选择最简单易懂、容错性好、执行效率高的方法,即是所谓“优雅”的方法。
以下就是几种获取一个文本文件行数的方法(可用于统计源代码行数):
第一种:
# awk '{print NR}' main.c | tail -n1

第二种:
# awk 'END{print NR}' main.c

第三种:
# grep -n "" main.c | awk -F: '{print '} | tail -n1

第四种:
# sed -n '$=' main.c

第五种
# wc -l main.c | awk '{print }'

第六种
#cat main.c | wc -l
从以上例子可以看出,其它主要用的是awk,grep,sed 和 wc。个人认为,wc 作为专门的字统计(word count)工具,用最后一种还是最好的。
+查看评论 (1)+发表评论+Trackback地址+Trackbacks (0)
2008-5-17iptables 学习笔记
分类:Linux时间:2008-5-17 22:41:10作者:JYF's Blog
标签:linux    iptables    

作用

manglePREROUTING改变数据包内容,如TTL,TOL等。
natPREROUTING主要用来做DNAT,不要在这个链做过滤操作。
mangleFORWARD转发数据包时,改变包内容。
filterFORWARD转发数据包时,过滤数据包内容。
manglePOSTROUTING更改数据包目的地址后,改变数据包内容。
mangleINPUT路由之后,送往本地前,改变数据包内容。
filterINPUT路由之后,送往本地前,过滤、匹配数据包内容。
mangleOUTPUT改变本地发出的数据包的内容,不要在这个链上作过滤操作。
natOUTPUT主要用来对本地发出的包作DNAT。
filterOUTPUT过滤本地发出的数据包内容。
natPOSTROUTING主要用来做DNAT,不要在这个链做过滤操作。
+查看评论 (2)+发表评论+Trackback地址+Trackbacks (0)
2008-5-11OpenWrt上架设Web在线代理cgiproxy
分类:Linux时间:2008-5-11 22:44:47作者:JYF's Blog
标签:openwrt    proxy    linux    
这周末两天又把我的 rt390w 无线路由器折腾了两天。

星期六,不满足于tinyproxy代理服务器的简单功能,为体验 squid 代理服务器强大的功能,重新将openwrt的内核改为22.6.22编译了一下(交叉编译的squid目前只能在 2.6.X的内核上运行),结果squid是工作正常了,但无线路由器变有线路由器了(OpenWrt 2.6.X内核不支持Broadcom的无线网卡)。
这中间,编译内核时,重新编译之前移值的 ipt_IPID 模块(用于修改IP数据包 ID 编号特点,见http://linux.chinaunix.net/bbs/viewthread.php?tid=909127)。发现2.6.22内核的结构体sk_buff 定义都变了!只得将原来ipt_IPID.c 123行附近的iph = (*pskb)->nh.iph; 改为:
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22))
 iph = (*pskb)->network_header;
#else
 iph = (*pskb)->nh.iph;
#endif

这才编译通过,

星期天,又在路由器上装了个cgiproxy,为了运行cgiproxy,不得不装lighttp,装perl 5.10。最要命的是,perl5.10装好后,并不带什么模块,而我也不知道cgiproxy所需要的模块列表。所以只能根据cgiproxy运行的报错信息,一步一步将所缺模块装上。还好,在搜索引擎的帮助下,终于找齐了所需模块了,路由器存贮空间也耗得差不多了。有需要的网友,可以点击此处下载所需模块。
+查看评论 (0)+发表评论+Trackback地址+Trackbacks (0)
2008-5-10期望中的 Linux 路由板(Router Box)
分类:Linux时间:2008-5-10 20:15:52作者:JYF's Blog
最近逛软件路由论坛才发现这个板子相当的不错,正合我心意。(X86架构,多网卡,USB,内存,CPU)
之前我也有一个无线路由器,是可以使用开放源代码的OpenWRT的,配置还不错。但可惜的是,Flash ROM只有8M,而且也没USB接口,大大限制了它的扩展性。目前看到的这款PC Engines alix2c3配置如下:
alix2c3     System board
Status     In production
Part numbers     alix2c3 = 3 LAN / 1 miniPCI / LX800 / 256 MB / USB
Spec     CPU: 500 MHz AMD Geode LX800
DRAM: 256 MB DDR DRAM
Storage: CompactFlash socket
Power: DC jack or passive POE, min. 7V to max. 20V
Three front panel LEDs, pushbutton
Expansion: 1 miniPCI slot, LPC bus
Connectivity: 3 Ethernet channels (Via VT6105M 10/100)
I/O: DB9 serial port, dual USB port
Board size: 6 x 6" (152.4 x 152.4 mm) - same as WRAP.1E
Firmware: tinyBIOS
Customer options     44 pin IDE, I2C bus, buzzer, RTC battery
Manufacturer     PC Engines
Origin     Taiwan
alix2c3
+查看评论 (2)+发表评论+Trackback地址+Trackbacks (0)
2008-5-5Gmail 之伤,Ajax之痛
分类:随笔时间:2008-5-5 10:27:39作者:JYF's Blog
标签:Ajax    
最近在用 FireFox 登陆 Gmail 邮箱时,发现 Gmail 上有提示 FireFox 插件 firebug 可能造成在浏览 Gmail 时 CPU 占用率过高,建议在浏览 Gmail 时关闭掉 firebug 插件。

Gmail 新版大量采用了 Ajax 技术,特别是登陆到 Gmail 在线聊天后,firebug 不造成 CPU 占用率过高才怪。这个问题,在没有使用 firebug 的 IE7 浏览器上同样存在。这里就不分析究竟是浏览器的问题还是 Gmail 的问题,抑或是 Ajax 技术本身存在这样的缺陷了。单就 Gmail 而言,Ajax 技术已经用得非常好了。如浏览器的后退、前进。

在Web 2.0世界中,Javascript 则越来越多地被用来传输数据,这就为安全问题打开了一道门, 最典型的就是所谓的“Javascript劫持”。同时,滥用也会导致性能的问题,Gmail就是一个铁证。由于采用了大量的 Javascript 脚本,如果脚本本身体积过大或逻辑处理没优化,用户在第一次打开页面时,势必造成访问速度缓慢。因此,像Gmail样,除了采用 Gmail 的标准视图(Ajax),还提供一个基本视图,以应对因网络或浏览器不兼容而导致的问题。
+查看评论 (0)+发表评论+Trackback地址+Trackbacks (0)
2008-5-4开始研究Linux内核源码
分类:Linux时间:2008-5-4 20:32:05作者:JYF's Blog
标签:linux    kernel    

为今后工作的打算,我决定开始研究 Linux 内核源代码啦。
不过,Linux 内核源代码有几百万行,短期内要抓重点,对内核要个基本认识后,决定先从网络部分开始。主要研究 Linux 网络体系结构中的PPP、IP、防火墙、路由、TCP、NAT、UDP及套接字等核心问题。
这个五一看了下部分Linux 内核源码,看得头都大了。
有人问,学习有捷径吗?答曰:有。
站在前人的肩膀上,才可以看得更远。《深入分析Linux内核源码》这本书就写得相当的不错。

+查看评论 (0)+发表评论+Trackback地址+Trackbacks (0)
2008-4-28Linux 下复制文件到所有用户桌面的脚本
分类:Linux时间:2008-4-28 9:06:38作者:JYF's Blog
标签:linux    shell    
最近所做项目的 Linux 下的安装程序要求把为当前所有用户创建桌面启动器,但Linux下不管是GNOME还是KDE,好像都没找到类似Windows一样的所有用户桌面文件夹。另外,还碰到了一个Linux最新发行版本下才可能出现的问题,Ubuntu 7.10下的用户桌面文件夹可以使用本地化语言或自定义(如中文默认使用"桌面"),而安装程序默认是向$HOME/Desktop文件夹创建桌面启动器的。这样,碰到这种情况,使用本地化语言或自定义名称的用户桌面文件夹的用户,将不能够看到安装程序创建的桌面启动器。
Shell脚本在编写过程中,碰到了一点小麻烦,就是从用户$HOME/.config/user-dirs.dirs文件中读取得到用户自定义的桌面文件夹后,却是一个字符串,并没有当变量处理。如DESKTOPDIR=$HOME/桌面,但“$HOME/桌面”被当做普通字符串处理了。后来求助于ChinaUnix论坛,才搞定这个问题,原来还有eval这个用法!这里同时感谢在此问题上给予我帮助的杨兄,谭兄。脚本本身比较简单,用法及解释见其中注释:
# !/bin/sh

# 桌面启动器路径文件名,必选
LAUNCHER=$1
if [ ! -f $1  ] || [ -z $1 ]
then
    echo "Desktop launcher file $1 does not exist!"
    echo "Usage: $0 <desktop launcher file>"
    exit 1
fi

# 获取用户ID
UIDS=`cat   /etc/passwd | cut -f3 -d :`
LINE=0
for UUID in $UIDS
do
    LINE=`expr $LINE + 1`
# 用户ID 小于500的为系统内置用户
    if [ $UUID -ge 500 ]
    then
#        echo "UID=$UUID"
# 获取用户主目录
        HOMEDIR=`sed -n "${LINE}p" /etc/passwd | cut -f 6 -d :`
#        echo "HOME=$HOMEDIR"
# 如果用户主目录存在
        if [ -d $HOMEDIR ]
        then
# 获取用户本地化语言所用桌面目录
            DESKTOPDIR=`grep XDG_DESKTOP_DIR  $HOMEDIR/.config/user-dirs.dirs | cut -f 2 -d \"`
            DESKTOPDIR=`eval echo $DESKTOPDIR`
            echo "XDG_DESKTOP_DIR=$DESKTOPDIR"
# 如果获取不成功(桌面目录不存在),则使用默认桌面目录
            if [ ! -d $DESKTOPDIR ]
            then
                DESKTOPDIR=${HOMEDIR}/Desktop
                mkdir -p $DESKTOPDIR
            fi
            echo "DESKTOP=$DESKTOPDIR"
# 复制桌面启动器文件到用户桌面目录
            cp $LAUNCHER $DESKTOPDIR
        fi
    fi
done
+查看评论 (0)+发表评论+Trackback地址+Trackbacks (0)
2008-4-25SHELL保留字符及其含义
分类:Linux时间:2008-4-25 14:20:45作者:JYF's Blog
标签:shell    
保留字符及其含义
$ shell变量名的开始,如$var
| 管道,将标准输出转到下一个命令的标准输入
# 注释开始
& 在后台执行一个进程
? 匹配一个字符
* 匹配0到多个字符(与DOS不同,可在文件名中间使用,并且含.)
$- 使用set及执行时传递给shell的标志位
$! 最后一个子进程的进程号
$# 传递给shell script的参数个数
$* 传递给shell script的参数
$@ 所有参数,个别的用双引号括起来
$? 上一个命令的返回代码
$0 当前shell的名字
$n (n:1-) 位置参数
$$ 进程标识号(Process Identifier Number, PID)
+查看评论 (0)+发表评论+Trackback地址+Trackbacks (0)
日历
QQ 滔滔
Google Search
Google
发表留言
署名:记住我
主页:
标题:
类别:
内容:
验证码:  
最新留言
bugzilla_3.1.……
bugzilla邮件内容为英文
无法创建本地 XML 文件……
关于bugzilla汉化
老兄,好更新博客了
中文问题
老蒋啊,牛人啊
求L-Blog Wap P……
又来请教问题啦
Bugzilla3.1.2……
最新评论
hovejay:在中文win2003下,正确安装完bugzilla 3.1.4版本后,将网站上面的汉化包解压后,……
dreamiao:对啊,对啊,刚刚还想发消息问怎么显示出的图表也是乱码呢。不知道这样的问题到底啥时候才能解决呢?[……
JYF's Blog:Bugzilla 在系统参数设置里有设置代理服务器的选项,具体位置我忘记了。
另外,可选择关闭……
JYF's Blog:您好,目前这个汉化包不支持邮件的汉化,因为发现汉化后发送邮件会乱码。
类似的地方还有图表上的汉……
dreamiao:您好,我已经下载了3.1.3版本,问题已经解决,非常感谢,其他问题另外发帖了[s:14]
JYF's Blog:可以通过CVS check out出 3.1.3。
dreamiao:哪里能够下载3.1.3呢?官方网站上找不到了,已经是3.1.4了啊
[s:9]
kipi:谢谢你创造出了cmwapdown这样优秀的软件,我很喜欢,从几年前开发的1.0版到现在的1.2版……
JYF's Blog:这个,3.1.4没测试过,目前只试过3.1.2和3.1.3.
眼下没环境也没时间整这个,还请见谅。
dreamiao:具体的环境是中文win2003 sp2,我看浏览器的语言默认是中文的,但是怎么无法正确显示成中文……
友情链接
Bugzilla-cn
迎风独战
黄燕子的慧谷时空
展颜的BLOG
人生若只如初见
genius_linlei的BLOG
才子手记
小E的点滴
ArSui' World
微风家园
Mrzx's library
无限向往.cn
站点统计
文章总数:144
评论总数:155
引用总数:0
访问统计:54142
网站名称:JYF's Blog