原文是这个,Spring的JavaDoc里随便找到
This interface is implemented by objects that hold a number of bean definitions, each uniquely identified by a String name.
声音文件在这里:
http://bbs.cfan.com.cn/attachment.php?aid=242995
The abuse of greatness is when it disjoins remorse from power.
This interface is implemented by objects that hold a number of bean definitions, each uniquely identified by a String name.
/*
* Copyrights (C) 2008 Bearice (Bearice@Gmail.com)
* Release under GNU/GPL Version 2.
*/
package jmxtest;
import java.rmi.registry.LocateRegistry;
import java.util.HashMap;
import javax.management.MBeanServer;
import javax.management.MBeanServerFactory;
import javax.management.ObjectInstance;
import javax.management.ObjectName;
import javax.management.remote.JMXAuthenticator;
import javax.management.remote.JMXConnectorServer;
import javax.management.remote.JMXConnectorServerFactory;
import javax.management.remote.JMXServiceURL;
import javax.security.auth.Subject;
/**
*
* @author Bearice
*/
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws Exception {
LocateRegistry.createRegistry(8877);
MBeanServer server = MBeanServerFactory.createMBeanServer();
ObjectName helloName = new ObjectName("hello:name=hello");
HelloWorld hello = new HelloWorld();
HashMap prop = new HashMap();
prop.put(JMXConnectorServer.AUTHENTICATOR, new JMXAuthenticator() {
public Subject authenticate(Object credentials) {
System.out.println(credentials);
if (credentials instanceof String) {
if (credentials.equals("hello")) {
return new Subject();
}
}
throw new SecurityException("not authicated");
}
});
JMXConnectorServer cserver =
JMXConnectorServerFactory.newJMXConnectorServer(
new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:8877/hello"), prop, server);
cserver.start();
server.registerMBean(hello, helloName);
for (ObjectInstance object : server.queryMBeans(null, null)) {
System.out.println(object.getObjectName());
}
System.out.println(hello);
System.out.println("start.....");
}
}
/*
* Copyrights (C) 2008 Bearice (Bearice@Gmail.com)
* Release under GNU/GPL Version 2.
*/
package jmxtest;
import java.util.HashMap;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.management.JMX;
import javax.management.ObjectName;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;
/**
*
* @author Bearice
*/
public class Client {
static HelloWorldMBean hello;
public static void main(String[] args) throws Exception {
final AtomicInteger count = new AtomicInteger();
HashMap prop = new HashMap();
prop.put(JMXConnector.CREDENTIALS, "hello");
final JMXConnector conn = JMXConnectorFactory.connect(new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:8877/hello"), prop);
conn.connect();
Runnable r = new Runnable() {
public void run() {
for (int i = 0; i < 10; i++) {
try {
final HelloWorldMBean hello = JMX.newMBeanProxy(conn.getMBeanServerConnection(), new ObjectName("hello:name=hello"), HelloWorldMBean.class);
hello.setName("bearice");
hello.sayHello();
hello.getHelloString();
System.out.println(count.incrementAndGet());
Client.hello = hello;
System.out.println(hello.equals(hello.getThis()));
} catch (Exception ex) {
Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
};
Thread[] ts = new Thread[5];
for (int i = 0; i < ts.length; i++) {
ts[i] = new Thread(r);
ts[i].start();
}
for (Thread t : ts) {
t.join();
}
System.out.println(hello.equals(hello.getThis()));
System.out.println(hello.getId());
System.out.println(hello);
}
}
/*
* Copyrights (C) 2008 Bearice (Bearice@Gmail.com)
* Release under GNU/GPL Version 2.
*/
package jmxtest;
import java.io.Serializable;
/**
*
* @author Bearice
*/
public interface HelloWorldMBean extends Serializable {
void setName(String name);
String getName();
void sayHello();
String getHelloString();
int getId();
@Override
String toString();
@Override
int hashCode();
@Override
boolean equals( Object obj);
HelloWorldMBean getThis();
}
class HelloWorld implements HelloWorldMBean, Serializable {
static AtomicInteger count = new AtomicInteger();
private static final long serialVersionUID = 1627976932729278650L;
int id = count.incrementAndGet();
String name;
public synchronized void setName(String name) {
this.name = name;
}
public synchronized String getName() {
return name;
}
public synchronized void sayHello() {
System.out.println(getHelloString());
}
public synchronized String getHelloString() {
return "Hello, " + name;
}
public synchronized int getId() {
return id;
}
public HelloWorldMBean getThis() {
return this;
}
}
本文从TCP/IP协议安全性的角度对中国防火墙系统的工作原理、工作特性和潜在的漏洞、造成的问题进行了详尽的调查和分析,并从多个角度提出了针对特别是防火长城这类利用TCP/IP协议进行攻击的反制措施。
Richard Clayton, Steven J. Murdoch, and Robert N. M. Watson*
University of Cambridge, Computer Laboratory, William Gates Building, 15 JJ Thomson Avenue, Cambridge CB3 0FD, United Kingdom
{richard.clayton, steven.murdoch, robert.watson}@cl.cam.ac.uk
* 致谢:我们感谢一位中国公民的帮助。(我们不会透露他的名字,他对我们实验的本质完全不知情,他的网页也不包含任何非法内容)他为我们理论思考提供了极为 可信的实践材料。Richard Clayton正为Intel Research资助的spamHINTS项目工作。Steven J. Murdoch由OpenNet Initiative资助。
摘要: 所谓“防火长城”之部分工作原理即是检测传输控制协议(TCP)报文中需要封锁的关键词。如果出现关键词,TCP复位报文(即RST标志置位的报文)即向 连接两端发送,连接随之关闭。而原报文完好通过防火墙,如果双方完全忽略防火墙的复位,那么连接仍可顺畅进行而防火墙失效。一旦连接被封锁,防火墙还会进 而尝试封锁双方的继发连接。后种特性可能被利用来对第三方进行拒绝服务攻击。
cam(53382) → china(http) [SYN] china(http) → cam(53382) [SYN, ACK] cam(53382) → china(http) [ACK] cam(53382) → china(http) GET / HTTP/1.0我们发出另一个请求,包含了一小段可能触发封禁的文字,当然这也很快发生了:china(http) → cam(53382) HTTP/1.1 200 OK (text/html) …… china(http) → cam(53382) ……其余页面内容 cam(53382) → china(http) [ACK] ……接下来这个页面就完整了。
cam(54190) → china(http) [SYN] china(http) → cam(54190) [SYN, ACK] TTL=39 cam(54190) → china(http) [ACK] cam(54190) → china(http) GET /?falun HTTP/1.0开头三个复位报文序列号对应了GET报文的序列号+1460和+4380(3 × 1460)。[23]我们认为防火墙发出三个不同的值是想确保发送者接受复位,即使发送者已经从目的地收到了“全长”(1460字节)ACK报文。复位报文的序列号需要“正确”设定,因为现在多数TCP/IP实现都会严格检查序列号是否落入预期窗口。[24](这个验证序列号的内在漏洞由Watson在2004年首先提出。[25])china(http) → cam(54190) [RST] TTL=47, seq=1, ack=1 china(http) → cam(54190) [RST] TTL=47, seq=1461, ack=1 china(http) → cam(54190) [RST] TTL=47, seq=4381, ack=1 china(http) → cam(54190) HTTP/1.1 200 OK (text/html) …… cam(54190) → china(http) [RST] TTL=64, seq=25, ack zeroed china(http) → cam(54190) ……其余页面内容 cam(54190) → china(http) [RST] TTL=64, seq=25, ack zeroed china(http) → cam(54190) [RST] TTL=47, seq=2921, ack=25
cam(54190) → china(http) [SYN] TTL=42 china(http) → cam(54190) [SYN, ACK] cam(54190) → china(http) [ACK] TTL=42 cam(54190) → china(http) GET /?falun HTTP/1.0我们可以看到,当检测到“坏”报文,防火墙也向中国机发送复位(“[RST]”)报文,但都在GET报文(以及其响应报文)后面。最后两个复位报文(零确认号)是剑桥机发送的。china(http) → cam(54190) HTTP/1.1 200 OK (text/html) …… china(http) → cam(54190) ……其余页面内容 cam(54190) → china(http) [RST] TTL=61, seq=25, ack=1 cam(54190) → china(http) [RST] TTL=61, seq=1485, ack=1 cam(54190) → china(http) [RST] TTL=61, seq=4405, ack=1 cam(54190) → china(http) [RST] TTL=61, seq=25, ack=1 cam(54190) → china(http) [RST] TTL=61, seq=25, ack=2921 cam(54190) → china(http) [RST] TTL=42, seq=25, ack zeroed cam(54190) → china(http) [RST] TTL=42, seq=25, ack zeroed
cam(54191) → china(http) [SYN] china(http) → cam(54191) [SYN, ACK] TTL=41 cam(54191) → china(http) [ACK] china(http) → cam(54191) [RST] TTL=49, seq=1复位报文从防火墙而 来(也往服务器而去)随之客户端便关闭了连接。如果客户端在复位到达前成功发送GET报文,便会接着收到多个防火墙发来的复位(即使GET报文是完全无毒 的)。接下来便是从服务端来的复位──服务器收到复位后便会立刻在GET到达前关闭连接。由于GET发来时不再存在打开的连接,服务端便按照协议返回一个 复位。值得注意的是,防火墙在SYN阶段(三次握手阶段一)没有试图重置连接,而是等到了SYN/ACK(阶段二)。虽然可以在客户端一发出SYN就给它 复位报文,但只有等到SYN/ACK才能构造出对服务端起作用的有效复位。[28]
iptables -A INPUT -p tcp --tcp-flags RST RST -j DROPipfw add 1000 drop tcp from any to me tcpflags rst incam(55817) → china(http) [SYN] china(http) → cam(55817) [SYN, ACK] TTL=41 cam(55817) → china(http) [ACK] cam(55817) → china(http) GET /?falun HTTP/1.0网页以正常方式传输,除了中间夹杂一些防火墙的TCP复位报文。由于被完全忽略(一共28个复位),它们对客户端的TCP/IP栈没有任何影响。客户端仍然继续接收网页,正常发送ACK。中国端也能看到类似的正常传输夹杂复位的情形。china(http) → cam(55817) [RST] TTL=49, seq=1 china(http) → cam(55817) [RST] TTL=49, seq=1 china(http) → cam(55817) [RST] TTL=49, seq=1 china(http) → cam(55817) HTTP/1.1 200 OK (text/html) …… china(http) → cam(55817) ……其余页面内容 cam(55817) → china(http) [ACK] seq=25, ack=2921 china(http) → cam(55817) ……其余页面内容 china(http) → cam(55817) [RST] TTL=49, seq=1461 china(http) → cam(55817) [RST] TTL=49, seq=2921 china(http) → cam(55817) [RST] TTL=49, seq=4381 cam(55817) → china(http) [ACK] seq=25, ack=4381 china(http) → cam(55817) [RST] TTL=49, seq=2921 china(http) → cam(55817) ……其余页面内容 china(http) → cam(55817) ……其余页面内容 cam(55817) → china(http) [ACK] seq=25, ack=7301 china(http) → cam(55817) [RST] TTL=49, seq=5841 china(http) → cam(55817) [RST] TTL=49, seq=7301 china(http) → cam(55817) [RST] TTL=49, seq=4381 china(http) → cam(55817) ……其余页面内容 china(http) → cam(55817) [RST] TTL=49, seq=8761 ……接下来这个页面就完整了。
cam(38104) → china(http) [SYN] china(http) → cam(38104) [SYN, ACK] TTL=105 cam(38104) → china(http) [ACK] cam(38104) → china(http) GET / HTTP/1.0对付这种防火墙的 新策略比处理伪复位报文麻烦许多。因为即使客户端忽略了服务端来的(完全真实的)复位,还是会继续错误理解服务端的序列号,导致不能与服务端同步以完成三 次握手打开连接。当然如果有时候防火墙的伪SYN/ACK跑在真报文后面,就会被客户端忽略不造成任何混淆,不过防火墙仍然会坚持不懈用复位报文来打断连 接但是由于复位报文都被忽略了所以也没有用,网页照样显示。china(http) → cam(38104) [RST] TTL=45, seq=1 china(http) → cam(38104) [RST] TTL=45, seq=1 china(http) → cam(38104) [SYN, ACK] TTL=37 cam(38104) → china(http) [RST] TTL=64, seq=1 china(http) → cam(38104) [RST] TTL=49, seq=1 china(http) → cam(38104) [RST] TTL=45, seq=3770952438 china(http) → cam(38104) [RST] TTL=45, seq=1 china(http) → cam(38104) [RST] TTL=45, seq=1 china(http) → cam(38104) [RST] TTL=37, seq=1 china(http) → cam(38104) [RST] TTL=37, seq=1
其次,并非所有IP地址的流量都被检测过。我们每小时进行一次突发连接,发送一组256个IP地址连续的含有“?falun”的报文。起初每组报文 只有约三分之二被封锁掉,封掉的地址每次不同。不过几天之后几乎所有报文被封锁。我们无法通过逆向工程确定地址选择的算法,不过IP地址选择确有鲜明的模 式[39],暗示背后的机制可能相当简单。最直接的解释是资源匮乏──流量的三分之二也许就是整个系统可以处理的极限。显然某些时候如果一部分机器没有进行报文检测的工作,DoS攻击也就不可能通过它们发起。![]()
图1:中国防火墙对“坏”字符串的封锁情况。2006年二月上旬我们进行了一次10天的试验,每小时一次从256个相邻IP地址进行连接。这里是前128的结果;其余部分模式也十分相似。黑点表明连接被封锁,白点表明没有封锁,灰点是结果不定(完全没有响应)。在110小时前后可见防火墙策略的显著变化(封锁更多的IP地址)。
if (getClass() != obj.getClass()) {
return false;
}
不过这样不能处理继承关系,所以改掉了。
您提到的 CAPTCHA 页是 Google 为应对在 Google.cn 上的点击量急速上升的情况而采取的措施。 CAPTCHA 图片可以帮助我们确定点击量是来自自动漫游器软件还是来自具体用户。 请注意,您的网络收到此页面的原因是我们的系统检测到来自您的网络 IP 地址的自动查询。好像是由于什么东西在不断的向google提交请求造成的,我让他更换了IP地址,清空Cookies都无效,我很奇怪Google是怎么做到的?为了测试,我用Java写了一个小东西不断提交请求,结果我还是可以继续搜索(我在几分钟内提交了500多次请求)。
向 Google 发送任何类型的自动查询均属违反服务条款的行为。 有关针对个人用途的 Google 服务条款的详情,请访问 http://www.google.com/terms_of_service.html 。 请注意,"发送自动查询"包括但不限于以下情况:
* 使用任何向 Google 发送查询的软件来确定网站或网页在 Google 各类查询中的排名。
* 对 Google 进行"元搜索"
* 在 Google 上执行"离线"搜索。
您网络中很有可能有用户因运行上述程序之一而导致违反服务条款。 在您找到此用户并且删除所涉及的程序后,系统会自动取消对您的 IP 地址的封锁。
对于您可能遇到的任何不便,我们深表歉意,并希望能够尽快恢复您在 Google.cn 上的搜索。
C:\Users\Bearice>tracert ipv6.google.cn
通过最多 30 个跃点跟踪
到 ipv6cn.l.google.com [2401:3800:c001::68] 的路由:
1 <1 毫秒 * <1 毫秒 bearice-ibm [2002:780c:419b:4:2e0:4cff:fe11:a1f3]
2 427 ms 449 ms 440 ms 2001:9b0:65::2
3 440 ms 430 ms 449 ms 2001:9b0:1:1::2
4 448 ms 449 ms 448 ms 1670-bahnhof.cr0-r84.kn1-sto.se.ip6.p80.net [2001:16d8:aaaa:1::1]
5 478 ms 449 ms 470 ms v1317-r84.cr0-r73.gbl-mlm.se.ip6.p80.net [2001:16d8:1:1317::73]
6 460 ms 450 ms 449 ms v1306-r73.cr0-r72.gbl-cph.dk.ip6.p80.net [2001:16d8:1:1306::72]
7 449 ms 449 ms 466 ms v1308-r72.cr0-r70.tc2-ams.nl.ip6.p80.net [2001:16d8:1:1308::70]
8 445 ms 469 ms 460 ms ams-ix.he.net [2001:7f8:1::a500:6939:1]
9 459 ms 489 ms 459 ms 10gigabitethernet1-4.core1.lon1.he.net [2001:470:0:3f::1]
10 449 ms 449 ms 429 ms 10gigabitethernet2-3.core1.nyc4.he.net [2001:470:0:3e::1]
11 429 ms 449 ms 450 ms 10gigabitethernet1-2.core1.nyc1.he.net [2001:470:0:37::2]
12 429 ms 449 ms 439 ms 2001:458:26:2::280
13 * 482 ms * v6-laIX01.kddnet.ad.jp [2001:268:ff00::8]
14 * * 619 ms v6-oteCORE02.kddnet.ad.jp [2001:268:ff00::2]
15 498 ms 499 ms 479 ms 2001:200:0:fe00::1dec:0
16 478 ms 499 ms 489 ms tpr5-ge0-0-0-7.jp.apan.net [2001:200:901:7::5]
17 620 ms 599 ms 610 ms 2001:200:901:5774::1
18 * 644 ms * 2001:200:901:5774::1
19 * 656 ms * 2001:468:ff:516::1
20 657 ms 680 ms 680 ms 2001:468:ff:516::1
21 588 ms 670 ms 670 ms kreonet-1-lo-jmb-706.sttlwa.pacificwave.net [2001:504:b:10::6]
22 569 ms 580 ms 560 ms 2001:320:1b00:1::1
23 689 ms 700 ms 700 ms 2001:252:0:2::301
24 699 ms 710 ms 690 ms 2401:3800::1:38
25 688 ms 740 ms 690 ms 2401:3800::1:43
26 699 ms 710 ms 690 ms 2401:3800::1:43
27 688 ms 709 ms 720 ms 2401:3800:c001::68
跟踪完成。
C:\Users\Bearice>
“人品既不能被创生,也不能被消灭。只能从一个人转移到另一个人,从一个层面转化到另一个层面,而在转移和转化的过程当中,人品的总和保持不变。至此引出人品学(Characterics)三定律:
第一定律:即人品守恒定律,在任何过程中,宇宙中人品总量保持为常数。(也就是说,做好事增加人品做坏事损人品,遇到好事是以前积攒的人品起了作用,而要使你连自己系开的必修课都没选上,那你真的要多扶扶老奶奶过马路了)
第二定律:不可能把人品从一个人品低的人传到一个人品高的人,而不引起其它变化。(也就是说,人品低的想获得人品需要付出一定的代价,而请客吃饭等就是其最简单易行的途径。)
第三定律:不能用有限的步骤使一个人的人品完全消耗。(也就是说,你再怎么霉,也还是会有点人品存量的,所以永远不要灰心丧气。)请大家看一个范例:「塞翁的马丢了,他说“没事,攒人品”,当他丢失的马带回来一群马,别人羡慕不已,他则暗叹“不妙,人品消耗的太多”,果然他的儿子因为骑马而摔断了腿后,他摇摇头说“继续攒人品”,等到战争时别人家的孩子被征兵战死沙场,只有他的儿子因为腿断了而幸免,这时他激动地说“人品爆发了啊”......」
而现在的人品学家们在人品学理论的微观研究上已取得了革命性突破,在量子力学、大一统论、超弦理论大旗号召下的今天,让我们一起走进量子人品学(Quantum Characterics)的新纪元!
又发现的另外一种表述:
1)RP第一定律------RP守恒定律
RP是不能用科学原理和自然规律解释的一种非物质存在形式,一切不能用上述机理解释的问题,全部归类于RP问题。RP不能凭空生成,也不会凭空消失。它在自然界的总和一定。在一定时期,某个静态有机体所含有的RP一定。消耗RP,RP值降低,积攒RP,RP值升高。
2)RP第二定律------RP传递定律
RP只能自发地从RP高的物体传到RP低的物体,反之不成立。如果要使上述情况成立,必须消耗好人卡,公式:
RP = Num.好人卡/ 客观条件 + 机遇。
3)RP第三定律------RP数值定律
RP最小值为零,最大值正无穷, 物理意义上不存在负RP.
[人品的定义]:
从广义上说,但凡科学无法确定的的,不在科学所能接受范畴之内的现象均可用人品来给出解释,即人品是涵盖宏观和微观世界的客观存在;从狭义上说,人品也称为运势,通过个体衍生至全部,从而影响整个宇宙的发展。
[人品的性质]:
人品是客观存在的,不以人的意志为转移;人品是无处不在,无所不能的;人品是绝对的,不受任何外力的影响。
[人品守恒定律]:
宇宙的总人品是恒定的,有些人人品值高了,另一些人的人品值便会相应降低;个人的总人品在某一时间段内是恒定的,今天人品值低了,改天便会相应增高,但没有固定的期限。
[人品转移定律]:
人品是可以相互转移的,但这种转移必须通过必要的手段,譬如烧香,祈祷,诅咒等,以及相应的媒介,譬如遭遇高僧或者超级霉人。
[人品统计定律]:
对于个体事件,人品是极不确定的,或不可量度的;然而对于大量的事件而言,人品会体现一定的统计规律。
人品与获得满足的关系:
导论:
人品作为一般等价物,为满足日常需要,需投入一定的人品,以投入人品与获得的效用的数据构建图像,可以得到基数人品论(cardinal characterics)的边际人品-效用图。后来,有学者提出人品不可测量,只可比较,由此发展了序数人品论(ordinal characterics),目前比较成熟完善的是基数人品论。
基数人品论的一些观点:
1.为提高享受,需不断追加人品消耗,而享受的提高因随追加人品的增加而递减,享受提高为零时,投入人品就应停止,如再增加,则成为负数。即“人品效率递减定律”。表达式:dU/dRP<0
2.人品等分配定律:当面临多种消耗人品的活动时,应使得花费在所有活动的最后一单位人品边际效用相等。这样能将给定的人品转化出最大效用。表达式:dUk/dRPk=dU(k+1)/dRP(k+1),k∈N。
3.在原有人品消费已满足的前提下,要想用人品换取更多的好处,只有发展新人品消费项目和扩充原有人品消费项目。
规模人品:
消费人品的活动,必须根据它的特点,确立一个起始人品投入规模/最小人品投入规模或称“最小有效规模”,投入低于这一规模,就会导致回报为零。超过这一规模,即进入一个“合理规模”区间,在这一区间内,追加人品投入都会得到回报。
人品爆发:
一定条件下,存在以单位最小人品投入量获得最大单位的收益的点,称为“人品爆发点”。
但这种事件的发生时间、场所等往往难以确定。
由人品等分配定律可得,单位最小人品投入量获得最大单位的收益的点就是起始点。“人品爆发点”与之矛盾,如何解释呢?后经科学家赵明毅(?-2007)研究,人品爆发原因是他的故土--锑星星球有重要关系。锑星特有物质磷化卤(R?P),理化特性由于赵明毅的离奇失踪(?)而流失。其独特的的反重力性(探佚专家自《大锑赵明毅》相关章节推出)使得部分游离态磷化卤会脱离锑星,被喷射出去,从而对人品分布产生干扰,导致部分时间与场人品运行机理扭曲。由于历史原因,人品爆发常被归结于行善,现在这个概念已由国际人品研究协会(International Characteric Research Association,ICRA)规范化,形成了目前的通用表述与解释。