根据网络上的攻击演示视频我们了解到,微信受害者接收并点击攻击者发给他的一条链接消息后,会在完全不知道的情况下被攻击者克隆账户,而你的聊天记录也会被悉数窃取,攻击者甚至还能同步接收克隆账户的新消息。如果你的微信放着大量资金也未能幸免,资金都会被克隆账号 *** 控并完成购物。
据阿里安全实验室方面表示,这次微信的漏洞是一个目录遍历型的漏洞,它的影响范围也非常广泛,除了微信刚刚紧急发布的663最新版本,之前所有的微信安卓版本都受影响。该漏洞理论上能做到任何事,除了克隆微信以外,攻击者还可以完全控制受害者的微信程序。
所以在此提醒大家,如果你是安卓手机,你的微信还没有升级到663版本,那么你快点升级。另外,如果你在微信收到陌生人的一些文件与小程序也不要轻易的打开,因为最近微信已经查处了许多违规小程序,请大家保护好自己的隐私与财产安全。
《皇室 战争 》喜欢玩克隆法术的朋友应该不少吧?这张卡确实非常有意思,各种套路还是非常多的。一起来看看大佬如何用这张卡来创造奇迹的吧。感兴趣的话不妨尝试一下。
卡组搭配
熔岩猎犬 + 克隆法术 + 亡灵法军 + 冰法 + 复仇滚木 + 骷髅墓碑 + 万箭齐发 + 大闪电
核心 卡牌 :熔岩猎犬、大闪电、克隆法术
卡牌替换思路:这套卡组有三张传奇卡,其中滚木和熔岩猎犬属于重要卡牌,冰法可以使用法师或者女巫来替换,因为女巫同样享受克隆法术的效果,在复制之后可以召唤小骷髅。
卡组思路
起手还是以观望为主,因为目前圣水采集器被削弱非常多,这套卡组费用又比较高,所以需要打后手比较保险,确保在赚到费用的情况进行反击,才能更有效的发挥卡牌的威力。
前期可以使用骷髅墓碑、冰法、滚木来进行防守,不推荐使用亡灵大军进行防守,很容易亏费,并且一波血崩。
中期在赚到费用的情况下可以尝试直接下天狗,如果对面直接攻击另外一路的话就直接选择换路,天狗+克隆法术能打出相当高的伤害,根本不虚对手换路。
后期就是将天狗后置放下,然后看对手的防御卡牌,如果是重甲亡灵+建筑这样的防御体系的话,直接使用大闪电去清除这些防御部队,然后在天狗靠近防御塔的时候使用克隆法术,这样克隆的天狗在死后也会生出小天狗,对面如果没有2次AOE或者是毒药,那么一定能磨掉防御塔非常多的血量。
ARP欺骗分为二种,一种是对路由器ARP表的欺骗;另一种是对内网PC的网关欺骗。第一种ARP欺骗的原理是——截获网关数据。它通知路由器一系列错误的内网MAC地址,并按照一定的频率不断进行,使真实的地址信息无法通过更新保存在路由器中,结果路由器的所有数据只能发送给错误的MAC地址,造成正常PC无法收到信息。
第二种ARP欺骗的原理是——伪造网关。它的原理是建立假网关,让被它欺骗的PC向假网关发数据,而不是通过正常的路由器途径上网。在PC看来,就是上不了网了,“网络掉线了”。
常用的解决办法就是一、在宽带路由器中把所有PC的IP-MAC输入到一个静态表中,这叫路由器IP-MAC绑定。二、在内网所有PC上设置网关的静态ARP信息,这叫PC机IP-MAC绑定。三是前两种办法的组合,称其为IP-MAC双向绑定。
方法是有效的,但工作很繁琐,管理很麻烦。每台PC绑定本来就费力,在路由器中添加、维护、管理那么长长的一串列表,更是苦不堪言。一旦将来扩容调整,或更换网卡,又很容易由于疏忽造成混乱。况且ARP出现了新变种,二代ARP攻击已经具有自动传播能力,已有的宏文件绑定方式已经被破,主要表现在病毒通过网络访问或是主机间的访问互相传播。由于病毒已经感染到电脑主机,可以轻而易举的清除掉客户机电脑上的ARP静态绑定,伴随着绑定的取消,错误的网关IP和MAC的对应并可以顺利的写到客户机电脑,错误的网关IP和MAC的对应并可以顺利的写到客户机电脑,ARP的攻击又畅通无阻了。
我也曾受过arp的毒害,辛辛苦苦做的双向绑定遇到二代arp攻击变的是无所遁形,我觉得要想真正的杜绝arp攻击还是要我们内网每台电脑都联动起来,共同防范,共同抑制,光装防arp攻击的防火墙是远远不够的,这只能保证你可能不被攻击,但是如果有人给你发送大量的arp包,虽然是能拦截住但是大量的arp包可能会堵住你的网卡出口,同样你的数据还是发不出去。同样你也不能保证不发arp攻击,这样是治标不治本的,因此要想真正杜绝arp最治本的方法还是能防能控,既能防止不受arp的攻击也能控制不发arp的攻击,最近市面上正流行一种叫免疫墙的效果不错,它可以把伪装的mac或ip的数据报拦截,也能让正确的数据包流出,对正确的arp探寻也有限制不会让一台PC发大量的arp数据包。在本文中,我们讨论了对付 13 种不同静态暴露的技巧。对于每种暴露,我们解释了不处理这些安全性问题所造成的影响。我们还为您推荐了一些准则,要开发不受这些静态安全性暴露威胁的、健壮且安全的 Java 应用程序,您应该遵循这些准则。一有合适的时机,我们就提供代码样本(既有暴露的代码也有无暴露的代码)。
对付高严重性暴露的技巧
请遵循下列建议以避免高严重性静态安全性暴露:
限制对变量的访问
让每个类和方法都成为 final,除非有足够的理由不这样做
不要依赖包作用域
使类不可克隆
使类不可序列化
使类不可逆序列化
避免硬编码敏感数据
查找恶意代码
限制对变量的访问
如果将变量声明为 public,那么外部代码就可以 *** 作该变量。这可能会导致安全性暴露。
影响
如果实例变量为 public,那么就可以在类实例上直接访问和 *** 作该实例变量。将实例变量声明为 protected 并不一定能解决这一问题:虽然不可能直接在类实例基础上访问这样的变量,但仍然可以从派生类访问这个变量。
清单 1 演示了带有 public 变量的代码,因为变量为 public 的,所以它暴露了。
清单 1 带有 public 变量的代码
class Test {
public int id;
protected String name;
Test(){
id = 1;
name = "hello world";
}
//code
}
public class MyClass extends Test{
public void methodIllegalSet(String name){
thisname = name; // this should not be allowed
}
public static void main(String[] args){
Test obj = new Test();
objid = 123; // this should not be allowed
MyClass mc = new MyClass();
mcmethodIllegalSet("Illegal Set Value");
}
}
建议
一般来说,应该使用取值方法而不是 public 变量。按照具体问题具体对待的原则,在确定哪些变量特别重要因而应该声明为 private 时,请将编码的方便程度及成本同安全性需要加以比较。清单 2 演示了以下列方式来使之安全的代码:
清单 2 不带有 public 变量的代码
class Test {
private int id;
private String name;
Test(){
id = 1;
name = "hello world";
}
public void setId(int id){
thisid = id;
}
public void setName(String name){
thisname = name;
}
public int getId(){
return id;
}
public String getName(){
return name;
}
}
让每个类和方法都为 final
不允许扩展的类和方法应该声明为 final。这样做防止了系统外的代码扩展类并修改类的行为。
影响
仅仅将类声明为非 public 并不能防止攻击者扩展类,因为仍然可以从它自己的包内访问该类。
建议
让每个类和方法都成为 final,除非有足够的理由不这样做。按此建议,我们要求您放弃可扩展性,虽然它是使用诸如 Java 语言之类的面向对象语言的主要优点之一。在试图提供安全性时,可扩展性却成了您的敌人;可扩展性只会为攻击者提供更多给您带来麻烦的方法。
不要依赖包作用域
没有显式地标注为 public、private 或 protected 的类、方法和变量在它们自己的包内是可访问的。
影响
如果 Java 包不是封闭的,那么攻击者就可以向包内引入新类并使用该新类来访问您想保护的内容。诸如 javalang 之类的一些包缺省是封闭的,一些 JVM 也让您封闭自己的包。然而,您最好假定包是不封闭的。
建议
从软件工程观点来看,包作用域具有重要意义,因为它可以阻止对您想隐藏的内容进行偶然的、无意中的访问。但不要依靠它来获取安全性。应该将类、方法和变量显式标注为 public、private 或 protected 中适合您特定需求的那种。
使类不可克隆
克隆允许绕过构造器而轻易地复制类实例。
影响
即使您没有有意使类可克隆,外部源仍然可以定义您的类的子类,并使该子类实现 javalangCloneable。这就让攻击者创建了您的类的新实例。拷贝现有对象的内存映象生成了新的实例;虽然这样做有时候是生成新对象的可接受方法,但是大多数时候是不可接受的。清单 3 说明了因为可克隆而暴露的代码:
清单 3 可克隆代码
class MyClass{
private int id;
private String name;
public MyClass(){
id=1;
name="HaryPorter";
}
public MyClass(int id,String name){
thisid=id;
thisname=name;
}
public void display(){
Systemoutprintln("Id ="+id+"
"+"Name="+name);
}
}
// hackers code to clone the user class
public class Hacker extends MyClass implements Cloneable {
public static void main(String[] args){
Hacker hack=new Hacker();
try{
MyClass o=(MyClass)hackclone();
odisplay();
}
catch(CloneNotSupportedException e){
eprintStackTrace();
}
}
}
建议
要防止类被克隆,可以将清单 4 中所示的方法添加到您的类中:
清单 4 使您的代码不可克隆
public final Object clone()
throws javalangCloneNotSupportedException{
throw new javalangCloneNotSupportedException();
}
如果想让您的类可克隆并且您已经考虑了这一选择的后果,那么您仍然可以保护您的类。要做到这一点,请在您的类中定义一个为 final 的克隆方法,并让它依赖于您的一个超类中的一个非 final 克隆方法,如清单 5 中所示:
清单 5 以安全的方式使您的代码可克隆
public final Object clone()
throws javalangCloneNotSupportedException {
superclone();
}
类中出现 clone() 方法防止攻击者重新定义您的 clone 方法。
使类不可序列化
序列化允许将类实例中的数据保存在外部文件中。闯入代码可以克隆或复制实例,然后对它进行序列化。
影响
序列化是令人担忧的,因为它允许外部源获取对您的对象的内部状态的控制。这一外部源可以将您的对象之一序列化成攻击者随后可以读取的字节数组,这使得攻击者可以完全审查您的对象的内部状态,包括您标记为 private 的任何字段。它也允许攻击者访问您引用的任何对象的内部状态。
建议
要防止类中的对象被序列化,请在类中定义清单 6 中的 writeObject() 方法:
清单 6 防止对象序列化
private final void writeObject(ObjectOutputStream out)
throws javaioNotSerializableException {
throw new javaioNotSerializableException("This object cannot
be serialized");
}
通过将 writeObject() 方法声明为 final,防止了攻击者覆盖该方法。
使类不可逆序列化
通过使用逆序列化,攻击者可以用外部数据或字节流来实例化类。
影响
不管类是否可以序列化,都可以对它进行逆序列化。外部源可以创建逆序列化成类实例的字节序列。这种可能为您带来了大量风险,因为您不能控制逆序列化对象的状态。请将逆序列化作为您的对象的另一种公共构造器 — 一种您无法控制的构造器。
建议
要防止对对象的逆序列化,应该在您的类中定义清单 7 中的 readObject() 方法:
清单 7 防止对象逆序列化
private final void readObject(ObjectInputStream in)
throws javaioNotSerializableException {
throw new javaioNotSerializableException("This object cannot
be deserialized");
}
通过将该方法声明为 final,防止了攻击者覆盖该方法。
避免硬编码敏感数据
您可能会尝试将诸如加密密钥之类的秘密存放在您的应用程序或库的代码。对于你们开发人员来说,这样做通常会把事情变得更简单。
影响
任何运行您的代码的人都可以完全访问以这种方法存储的秘密。没有什么东西可以防止心怀叵测的程序员或虚拟机窥探您的代码并了解其秘密。
建议
可以以一种只可被您解密的方式将秘密存储在您代码中。在这种情形下,秘密只在于您的代码所使用的算法。这样做没有多大坏处,但不要洋洋得意,认为这样做提供了牢固的保护。您可以遮掩您的源代码或字节码 — 也就是,以一种为了解密必须知道加密格式的方法对源代码或字节码进行加密 — 但攻击者极有可能能够推断出加密格式,对遮掩的代码进行逆向工程从而揭露其秘密。
这一问题的一种可能解决方案是:将敏感数据保存在属性文件中,无论什么时候需要这些数据,都可以从该文件读取。如果数据极其敏感,那么在访问属性文件时,您的应用程序应该使用一些加密/解密技术。
查找恶意代码
从事某个项目的某个心怀叵测的开发人员可能故意引入易受攻击的代码,打算日后利用它。这样的代码在初始化时可能会启动一个后台进程,该进程可以为闯入者开后门。它也可以更改一些敏感数据。
这样的恶意代码有三类:
类中的 main 方法
定义过且未使用的方法
注释中的死代码
影响
入口点程序可能很危险而且有恶意。通常,Java 开发人员往往在其类中编写 main() 方法,这有助于测试单个类的功能。当类从测试转移到生产环境时,带有 main() 方法的类就成为了对应用程序的潜在威胁,因为闯入者将它们用作入口点。
请检查代码中是否有未使用的方法出现。这些方法在测试期间将会通过所有的安全检查,因为在代码中不调用它们 — 但它们可能含有硬编码在它们内部的敏感数据(虽然是测试数据)。引入一小段代码的攻击者随后可能调用这样的方法。
避免最终应用程序中的死代码(注释内的代码)。如果闯入者去掉了对这样的代码的注释,那么代码可能会影响系统的功能性。
可以在清单 8 中看到所有三种类型的恶意代码的示例:
清单 8 潜在恶意的 Java 代码
public void unusedMethod(){
// code written to harm the system
}
public void usedMethod(){
//unusedMethod(); //code in comment put with bad intentions,
//might affect the system if uncommented
// int x = 100;
// x=x+10; //Code in comment, might affect the
//functionality of the system if uncommented
}
建议
应该将(除启动应用程序的 main() 方法之外的)main() 方法、未使用的方法以及死代码从应用程序代码中除去。在软件交付使用之前,主要开发人员应该对敏感应用程序进行一次全面的代码评审。应该使用“Stub”或“dummy”类代替 main() 方法以测试应用程序的功能。
对付中等严重性暴露的技巧
请遵循下列建议以避免中等严重性静态安全性暴露:
不要依赖初始化
不要通过名称来比较类
不要使用内部类
不要依赖初始化
您可以不运行构造器而分配对象。这些对象使用起来不安全,因为它们不是通过构造器初始化的。
影响
在初始化时验证对象确保了数据的完整性。
例如,请想象为客户创建新帐户的 Account 对象。只有在 Account 期初余额大于 0 时,才可以开设新帐户。可以在构造器里执行这样的验证。有些人未执行构造器而创建 Account 对象,他可能创建了一个具有一些负值的新帐户,这样会使系统不一致,容易受到进一步的干预。
建议
在使用对象之前,请检查对象的初始化过程。要做到这一点,每个类都应该有一个在构造器中设置的私有布尔标志,如清单 9 中的类所示。在每个非 static 方法中,代码在任何进一步执行之前都应该检查该标志的值。如果该标志的值为 true,那么控制应该进一步继续;否则,控制应该抛出一个例外并停止执行。那些从构造器调用的方法将不会检查初始化的变量,因为在调用方法时没有设置标志。因为这些方法并不检查标志,所以应该将它们声明为 private 以防止用户直接访问它们。
清单 9 使用布尔标志以检查初始化过程
public class MyClass{
private boolean initialized = false;
//Other variables
public MyClass (){
//variable initialization
method1();
initialized = true;
}
private void method1(){ //no need to check for initialization variable
//code
}
public void method2(){
try{
if(initialized==true){
//proceed with the business logic
}
else{
throw new Exception("Illegal State Of the object");
}
}catch(Exception e){
eprintStackTrace();
}
}
}
如果对象由逆序列化进行初始化,那么上面讨论的验证机制将难以奏效,因为在该过程中并不调用构造器。在这种情况下,类应该实现 ObjectInputValidation 接口:
清单 10 实现 ObjectInputValidation
interface javaioObjectInputValidation {
public void validateObject() throws InvalidObjectException;
}
所有验证都应该在 validateObject() 方法中执行。对象还必须调用 ObjectInputStreamRegisterValidation() 方法以为逆序列化对象之后的验证进行注册。 RegisterValidation() 的第一个参数是实现 validateObject() 的对象,通常是对对象自身的引用。注:任何实现 validateObject() 的对象都可能充当对象验证器,但对象通常验证它自己对其它对象的引用。RegisterValidation() 的第二个参数是一个确定回调顺序的整数优先级,优先级数字大的比优先级数字小的先回调。同一优先级内的回调顺序则不确定。
当对象已逆序列化时,ObjectInputStream 按照从高到低的优先级顺序调用每个已注册对象上的 validateObject()。
不要通过名称来比较类
有时候,您可能需要比较两个对象的类,以确定它们是否相同;或者,您可能想看看某个对象是否是某个特定类的实例。因为 JVM 可能包括多个具有相同名称的类(具有相同名称但却在不同包内的类),所以您不应该根据名称来比较类。
影响
如果根据名称来比较类,您可能无意中将您不希望授予别人的权利授予了闯入者的类,因为闯入者可以定义与您的类同名的类。
例如,请假设您想确定某个对象是否是类 combarFoo 的实例。清单 11 演示了完成这一任务的错误方法:
清单 11 比较类的错误方法
if(objgetClass()getName()equals("Foo")) // Wrong!
// objects class is named Foo
}else{
// object's class has some other name
}
建议
在那些非得根据名称来比较类的情况下,您必须格外小心,必须确保使用了当前类的 ClassLoader 的当前名称空间,如清单 12 中所示:
清单 12 比较类的更好方法
if(objgetClass() == thisgetClassLoader()loadClass("combarFoo")){
// object's class is equal to
//the class that this class calls "combarFoo"
}else{
// object's class is not equal to the class that
// this class calls "combarFoo"
}
然而,比较类的更好方法是直接比较类对象看它们是否相等。例如,如果您想确定两个对象 a 和 b 是否属同一个类,那么您就应该使用清单 13 中的代码:
清单 13 直接比较对象来看它们是否相等
if(agetClass() == bgetClass()){
// objects have the same class
}else{
// objects have different classes
}
尽可能少用直接名称比较。
不要使用内部类
Java 字节码没有内部类的概念,因为编译器将内部类转换成了普通类,而如果没有将内部类声明为 private,则同一个包内的任何代码恰好能访问该普通类。
影响
因为有这一特性,所以包内的恶意代码可以访问这些内部类。如果内部类能够访问括起外部类的字段,那么情况会变得更糟。可能已经将这些字段声明为 private,这样内部类就被转换成了独立类,但当内部类访问外部类的字段时,编译器就将这些字段从专用(private)的变为在包(package)的作用域内有效的。内部类暴露了已经够糟糕的了,但更糟糕的是编译器使您将某些字段成为 private 的举动成为徒劳。
建议 如果能够不使用内部类就不要使用内部类。
对付低严重性暴露的技巧
请遵循下列建议以避免低严重性静态安全性暴露:
避免返回可变对象
检查本机方法
避免返回可变对象
Java 方法返回对象引用的副本。如果实际对象是可改变的,那么使用这样一个引用调用程序可能会改变它的内容,通常这是我们所不希望见到的。
影响
请考虑这个示例:某个方法返回一个对敏感对象的内部数组的引用,假定该方法的调用程序不改变这些对象。即使数组对象本身是不可改变的,也可以在数组对象以外 *** 作数组的内容,这种 *** 作将反映在返回该数组的对象中。如果该方法返回可改变的对象,那么事情会变得更糟;外部实体可以改变在那个类中声明的 public 变量,这种改变将反映在实际对象中。
清单 14 演示了脆弱性。getExposedObj() 方法返回了 Exposed 对象的引用副本,该对象是可变的:
清单 14 返回可变对象的引用副本
class Exposed{
private int id;
private String name;
public Exposed(){
}
public Exposed(int id, String name){
thisid = id;
thisname = name;
}
public int getId(){
return id;
}
public String getName(){
return name;
}
public void setId(int id){
thisid=id;
}
public void setName(String name){
thisname = name;
}
public void display(){
Systemoutprintln("Id = "+ id + " Name = "+ name);
}
}
public class Exp12{
private Exposed exposedObj = new Exposed(1,"Harry Porter");
public Exposed getExposedObj(){
return exposedObj; //returns a reference to the object
}
public static void main(String[] args){
Exp12 exp12 = new Exp12();
exp12getExposedObj()display();
Exposed exposed = exp12getExposedObj();
exposedsetId(10);
exposedsetName("Hacker");
exp12getExposedObj()display();
}
}
建议
如果方法返回可改变的对象,但又不希望调用程序改变该对象,请修改该方法使之不返回实际对象而是返回它的副本或克隆。要改正清单 14 中的代码,请让它返回 Exposed 对象的副本,如清单 15 中所示:
清单 15 返回可变对象的副本
public Exposed getExposedObj(){
return new Exposed(exposedObjgetId(),exposedObjgetName());
}
或者,您的代码也可以返回 Exposed 对象的克隆。
检查本机方法
本机方法是一种 Java 方法,其实现是用另一种编程语言编写的,如 C 或 C++。有些开发人员实现本机方法,这是因为 Java 语言即使使用即时(just-in-time)编译器也比许多编译过的语言要慢。其它人需要使用本机代码是为了在 JVM 以外实现特定于平台的功能。
影响
使用本机代码时,请小心,因为对这些代码进行验证是不可能的,而且本机代码可能潜在地允许 applet 绕过通常的安全性管理器(Security Manager)和 Java 对设备访问的控制。
建议
如果非得使用本机方法,那么请检查这些方法以确定:
它们返回什么
它们获取什么作为参数
它们是否绕过安全性检查
它们是否是 public、private 等等
它们是否含有绕过包边界从而绕过包保护的方法调用
结束语
编写安全 Java 代码是十分困难的,但本文描述了一些可行的实践来帮您编写安全 Java 代码。这些建议并不能解决您的所有安全性问题,但它们将减少暴露数目。最佳软件安全性实践可以帮助确保软件正常运行。安全至关重要和高可靠系统设计者总是花费大量精力来分析和跟踪软件行为。只有通过将安全性作为至关紧要的系统特性来对待 — 并且从一开始就将它构建到应用程序中,我们才可以避免亡羊补牢似的、修修补补的安全性方法。
参考资料
请通过单击文章顶部或底部的讨论来参加本文的论坛。
了解关于 Java 安全性 API 的更多知识。
developerWorks 安全专题上通常含有有关计算机安全性的优秀资源。
Larry Koved、 Anthony J Nadalin、Don Neal 和 Tim Lawson 合作编写的 “The evolution of Java security”(developerWorks,1998 年)对 Java 语言的安全性模型早期开发进行了深入探讨。
Sing Li 在他的 Java 安全性系列文章(由两部分组成的)(developerWorks, 2001 年 2 月)中向开发人员显示:尽管社区可能不得不重新考虑 Java 2 中的安全性设计,还是出现了只对开发人员有帮助,可以满足他们的需求的一致的进展:
第一部分
第二部分
John Viega、Tom Mutdosch、 Gary McGraw 和 Ed Felten 合著的 “Statically scanning Java code for security vulnerabilities” (IEEE Software,2000 年 9 月)介绍了一种 Java 工具,可以使用该工具来检查您的 Java 代码中的安全性漏洞。
G McGraw 和 E Felten 合作编写的 Securing Java: Getting Down to Business with Mobile Code(John Wiley 和 Sons,1998 年)深入涵盖了 Java 安全性。(文档是 PDF 格式的。)
定期检查 IBM 研究 Java 安全页面以便 IBM 在安全性领域的创新有重要发展时能够跟踪这一创新。
如果您的 Java 代码运行在 S/390 系统上,那么您将需要查阅 S/390 Java 安全页面以获取额外的信息。
关于作者
Bijaya Nanda Sahu 是就职于印度 IBM Global Services 的软件工程师。他从事过各种因特网技术和框架(J2EE、WSBCC、JADE)、 WebSphere 相关技术、UML 和 OOAD 方面的工作。目前,他从事因特网银行安全性问题方面的工作,重点在 WebSphere Application Server 和 Portal Server 上。可以通过 bijayasahu@inibmcom 和他联系如果不是两个路由器的网关Ip相同的话,只有三家用户,一般可以确认是其中有人用了p2p终结者之类软件或者开了带病毒的外挂。一般来说路由器牌子相同网关IP容易相同。
如果是局域网有arp攻击,看你这样说攻击还不是太严重。可以先用电脑连A,然后设置网关IP和MAC绑定,电脑IP和电脑MAC 绑定,然后用A 连B,在路由器B克隆之前绑定的电脑MAC,再试试看网速能不能好一点。
如果不行,你们用户很少,只有三家,那就去放A路由那家沟通一下,在A路由那里设置每家的固定带宽或者打开A的防火墙。市面上的防拷贝软件很容易被破解,推荐您使用安全性能比较高且功能齐全的防拷贝复制加密U盘——“智权盾”防复制加密U盘,值得拥有。
“智权盾”防复制U盘的安全性建立在完善的,严谨的安全方案的基础上,可以确保受到防复制保护的文件无法以明文形式泄露到U盘之外。
“智权盾”的防复制方案可以有效的防止各种尝试将U盘中的信息复制离开U盘使用的攻击。对于“智权盾”防复制U盘来说,一个成功的攻击可能意味着:
1获得U盘中受保护的数据明文,并且能够在U盘之外正常打开使用;
2克隆一个一模一样的U盘,并且能够正常使用里面的数据。
从应用效果方面来看,智权盾防复制U盘可以达到下列安全效果:
1.防木马窃取;
2.防内存抓取;
3.防插件挂载;
4.防病毒注入;
5.防程序伪造;
6.防开发工具分析。
7.防黑客工具分析。
8.防专业磁盘分析工具。
我们最常见的手机号复制骗局就是仅凭手机号就能复制出原机主的SIM卡,插在另一部手机上之后能和原机主的SIM卡同时在线,还能偷听原机主的电话和短信,也可以冒充原机主来拨打电话那sim卡被复制了怎么办呢?更多相关信息请关注经验网相关栏目!
sim卡被复制怎么办
复制sim卡的原理 听起来很安全的样子,那么,为什么还会出现复制卡的情况呢?前面我们说的安全只是为了说明别人无法通过你的手机号码复制sim卡,但是如果别人得到了你的sim卡,就另当别论了。鉴权密钥ki在sim卡中是属于限制访问的数据,手机也无法读出ki。使用ki进行的数据加密都是在sim卡内部完成的。只有运用暴力演算破解了ki,再加上imsi和sim卡序列号,才可以复制出sim卡。
虽然破解起来很麻烦,不过还是有破解的可能性的,奸商利用ki制卡的流程就是以特殊工艺烧进sim卡的一个参数值,由32个十六进制的字符组成,如d17f20239eedbe1520f64a851f3c44。sim卡扫描软件的原理是利用comp128算法的冲撞漏洞来计算ki。ki由ki0~ki7,8个子ki组成,每个子ki是双字节,子ki的所有组合是256×256=65536个。以每小时14000个计算,65536/14000=4小时40分钟左右可以跑完一个ki对。也就是说,理论上在5小时内就有可能破解ki值,复制一张新卡。最多40小时就可以跑完所有ki组合并复制一张电话卡。
目前市面上有多种软件可以破解sim卡的ki值,在圈内比较出名的有大鹏、supersim、smartsim、悟空等软件。而复制卡的时间上,有的卡复制十几分钟就搞定了,有的要好几个小时,这取决于你的ki值排得靠前还是靠后,排得靠前,破解得就快。
如果sim卡被复制,怎么办?
通过上面的介绍,相信大家对复制sim卡有一定的了解了,仅凭手机号是无法复制他人sim卡的。如果sim卡长时间落入他人之手,是有被复制的可能性,对个人隐私和财产可能造成一定侵害,不过对方也无法监听你的通话。如果遇到sim卡被复制的情况,只要到运营商营业厅更换一张新的sim卡就可以了。最后说明一点,2009年后,各大运营商为了对付这些复制软件,推出的sim卡中已经带有防复制的程序了,二代防克隆sim卡具备依据鉴权随机数性质,判断攻击模式;能执行防攻击流程,输出错误结果抵抗攻击;对攻击次数进行记录,并累计一定攻击次数后锁定sim卡;锁定后sim卡不能执行正确鉴权,需解锁后才能正常使用。一旦连入读卡系统,手机卡就自动烧掉,用这种自杀式的`行为来防止卡被复制。虽然有些复制软件有“防爆破功能”,但也会大大减小复制sim卡的成功率,因为设备及时间成本的要求,目前已经很少有人复制sim卡了,大家不要过于担心。
手机无法识别SIM卡通用方法:
一:查看验证是不是sim卡坏了
换一个使用正常的手机,把sim卡放在别的能正常是别的手机上,看能否识别到sim卡,若是别人正常的手机也无法识别这个sim卡,那么说明这个sim卡坏了
二:验证是否手机坏了
去拿一张别人手机里面能正常使用的sim卡,放在不能识别sim卡的手机上面,若是正常的sim卡也不能识别到,那么说明手机某些部分坏了,可能是硬件问题,也可能是软件问题,这个就需要详细分析了
三:查看手机sim卡槽是否松动了,或者是不是剪卡没剪好,接触不好
小米手机检测不到SIM卡主要有两种情况:
一、手机SIM卡的问题
小米手机均是采用了大多数手机用户采用的标准的SIM大卡,如果发现小米手机检测不到SIM卡,我们首先想想是不是卡的问题,可以将SIM卡取出,安装到身边其他朋友手机上去试试,如果不能使用,那么说明SIM卡有问题,需要更换;如果可以识别到,那么说明不是SIM卡的问题,问题在于手机。
二、手机的问题
如果确认SIM卡没有问题,那么问题应该很可能在手机上,比如我们可以检查SIM卡是否插好,方向是否正确,重新插一次试试。依旧不行的话,先检查一下手机网络设置,比如我们买的是联通版小米3,但是您使用的是移动3G SIM卡,这个时候,连通版小米3是检测不到移动3G网络的,这个时候,我们可以关闭3G网络,使用通用的2G网络即可解决问题。
具体手机网络设置方法为:进入手机;设置;-->系统-->运营商-->网络类型选,这里我们选仅2G网络即可(因为2G GSM网络是通用的,什么版本手机都支持的)。
另外还有部分小米手机用户是由于刷机或者系统升级导致的小米手机检测不到SIM卡,这种情况属于系统问题,建议换一个ROM,重新刷机一般即可解决问题。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)