Pivot Table

Pivot Table http://www.cnblogs.com/waitrabbit/archive/2010/06/29/1767702.html “数据透视表” 英文是 Pivot Table ,直接翻译是轴向旋转表 ,什么意思呢? 及把我们的数据分成多个维度来进行统计,可以理解为我们平时说的简单报表。 (透视表?当初是那个白痴汉化的?)。举个例子来说明。 假设我们有如下的Excel数据表: 图1 可以看到销售员和产品列有许多重复的字段,那么如果我们想得到两个统计信息: 每名销售员每种产品的销售额情况和每种产品的销售额,我们应该怎么使用"透视表"得到呢? 在当前表菜单上"插入"->“数据透视表”,英文版为 “Insert”-> “Pivot Table”。 图2 红色区域为要分析的数据所在区域,即我们上面的销售数据,蓝色区域为存放"透视表"及统计报表的区域。最好在一个新的SHEET中。 点击透视表区域,出现如下图,如果不小心关了,点击右键"Show filed list": 图3 把我们想要的字段托到图示位置,显然统一销售员每种产品的销售情况,我们希望的纵轴是"销售员",横轴为"产品",统计信息为求和"销售数量"。分别对应为Row Labels, Column Labels, Values. 设置完成后会出现如下透视表: 图4 这样就完成了我们的第一个报表。 那么每种产品的销售情况怎么做? 只要在图3 的界面中 把"产品名称"拖拽到 Row labels, “销售数量"拖拽到Values 即可。读者自行实践即可。 注意在图3的界面中,我们可以使用拖拽和勾选CheckBox实现对字段配置和删除等操作。只要我们心中有了报表的设计样子,按照我们的设想,配置字段就可以了。 注意一点,源数据更新后,透视表数据并不会自动更新,需要右键->Refresh 一下。还可以在每次打开数据透视表时自动更新其中的数据。右键单击任意单元格 “Pivot Table Option” > “Data” .选中 " Refersh the data when open file”. 另外,数据统计默认是求和,如果是求最大值等等,右键单击任意单元格->“Value Filed Setting” ,可以设置其他统计方式,如下图: 简单报表就生成好了,下一讲我们可能结合具体例子,讲讲明细表等的应用。

2014-03-21 · 1 min · 62 words · -

加壳与脱壳

加壳与脱壳 http://blog.csdn.net/lzyzuixin/article/details/4104334 加壳一般是指保护程序资源的方法. 脱壳一般是指除掉程序的保护,用来修改程序资源. 病毒加壳技术与脱壳杀毒方法 : 壳是什么?脱壳又是什么?这是很多经常感到迷惑和经常提出的问题,其实这个问题一点也不幼稚。当你想听说脱壳这个名词并试着去了解的时候,说明你已经在各个安全站点很有了一段日子了。下面,我们进入"壳"的世 界吧。 金蝉脱壳的故事 我先想讲个故事吧。那就是金蝉脱壳。金蝉脱壳属于三十六计中的混战计。金蝉脱壳的本意是: 寒蝉在蜕变时,本体脱离皮壳而走,只留下蝉蜕还挂在枝头。此计用于军事,是指通过伪装摆脱敌人,撤退或转移,以实现我方的战略目标的谋略。稳住对方,撤退或转移,决不是惊慌失措,消极逃跑,而是保留形式,抽走内容,稳住对方,使自己脱离险境达到己方战略目标,己方常常可用巧妙分兵转移的机会出击另一部分敌人。三国时期,诸葛亮六出祁山,北伐中原,但一直未能成功,终于在第六次北伐时,积劳成疾,在五丈原病死于军中。 维遵照诸葛亮的吩咐,在诸葛亮死后,秘不发丧,对外严密封锁消息。他带着灵柩,秘密率部撤退。司马懿派部队跟踪追击蜀军。姜维命工匠仿诸葛亮摸样,雕了一个木人,羽扇纶巾,稳坐车中。并派杨仪率领部分人马大张旗鼓,向魏军发动进攻。魏军远望蜀军,军容整齐,旗鼓大张,又见诸葛亮稳坐车中,指挥若定,不知蜀军又耍什么花招,不敢轻举妄动。司马懿一向知道诸葛亮"诡计多端",又怀疑此次退兵乃是诱敌之计,于是命令部队后撤,观察蜀军动向。姜维趁司马懿退兵的大好时机,马上指挥主力部队,迅速安全转移,撤回汉中。等司马懿得知诸葛亮已死,再进兵追击,为时已晚。相信这个故事,大家在大型连续剧《三国演义》里已经看过了。呵呵,只是没有理解得这么深入罢了!而在黑客入侵技术中,金蝉脱壳则是指: 删除系统运行日志 攻击者攻破系统后,常删除系统运行日志,隐藏自己的痕迹…呵呵 二、壳,脱壳,加壳 在自然界中,我想大家对壳这东西应该都不会陌生了,由上述故事,我们也可见一斑。自然界中植物用它来保护种子,动物用它来保护身体等等。同样,在一些计算机软件里也有一段专门负责保护软件不被非法修改或反编译的程序。它们一般都是先于程序运行,拿到控制权,然后完成它们保护软件的任务。就像动植物的壳一般都是在身体外面一样理所当然 (但后来也出现了所谓的"壳中带籽"的壳) 。由于这段程序和自然界的壳在功能上有很多相同的地方,基于命名的规则,大家就把这样的程序称为"壳"了。就像计算机病毒和自然界的病毒一样,其实都是命名上的方法罢了。 从功能上抽象,软件的壳和自然界中的壳相差无几。无非是保护、隐蔽壳内的东西。而从技术的角度出发,壳是一段执行于原始程序前的代码。原始程序的代码在加壳的过程中可能被压缩、加密……。当加壳后的文件执行时,壳-这段代码先于原始程序运行,他把压缩、加密后的代码还原成原始程序代码,然后再把执行权交还给原始代码。 软件的壳分为加密壳、压缩壳、伪装壳、多层壳等类,目的都是为了隐藏程序真正的OEP (入口点,防止被破解) 。关于"壳"以及相关软件的发展历史请参阅吴先生的《一切从"壳"开始》。 壳的概念 作者编好软件后,编译成exe可执行文件。 1.有一些版权信息需要保护起来,不想让别人随便改动,如作者的姓名,即为了保护软件不被破解,通常都是采用加壳来进行保护。 2.需要把程序搞的小一点,从而方便使用。于是,需要用到一些软件,它们能将exe可执行文件压缩, 3.在黑客界给木马等软件加壳脱壳以躲避杀毒软件。实现上述功能,这些软件称为加壳软件。 (二) 加壳软件最常见的加壳软件 ASPACK ,UPX,PEcompact 不常用的加壳软件WWPACK32;PE-PACK ;PETITE NEOLITE (三) 侦测壳和软件所用编写语言的软件 因为脱壳之前要查他的壳的类型。 1.侦测壳的软件fileinfo.exe 简称fi.exe (侦测壳的能力极强) 。 2.侦测壳和软件所用编写语言的软件language.exe (两个功能合为一体,很棒) ,推荐language2000中文版 (专门检测加壳类型) 。 3.软件常用编写语言Delphi,VisualBasic (VB) -最难破,VisualC (VC) 。 (四) 脱壳软件 软件加壳是作者写完软件后,为了保护自己的代码或维护软件产权等利益所常用到的手段。目前有很多加壳工具,当然有盾,自然就有矛,只要我们收集全常用脱壳工具,那就不怕他加壳了。软件脱壳有手动脱和自动脱壳之分,下面我们先介绍自动脱壳,因为手动脱壳需要运用汇编语言,要跟踪断点等,不适合初学者,但我们在后边将稍作介绍。 加壳一般属于软件加密,现在越来越多的软件经过压缩处理,给汉化带来许多不便,软件汉化爱好者也不得不学习掌握这种技能。现在脱壳一般分手动和自动两种,手动就是用TRW2000、TR、SOFTICE等调试工具对付,对脱壳者有一定水平要求,涉及到很多汇编语言和软件调试方面的知识。而自动就是用专门的脱壳工具来脱,最常用某种压缩软件都有他人写的反压缩工具对应,有些压缩工具自身能解压,如UPX;有些不提供这功能,如: ASPACK,就需要UNASPACK对付,好处是简单,缺点是版本更新了就没用了。另外脱壳就是用专门的脱壳工具来对付,最流行的是PROCDUMP v1.62 ,可对付目前各种压缩软件的压缩档。在这里介绍的是一些通用的方法和工具,希望对大家有帮助。我们知道文件的加密方式,就可以使用不同的工具、不同的方法进行脱壳。下面是我们常常会碰到的加壳方式及简单的脱壳措施,供大家参考: 脱壳的基本原则就是单步跟踪,只能往前,不能往后。脱壳的一般流程是: 查壳->寻找OEP->Dump->修复 找OEP的一般思路如下: 先看壳是加密壳还是压缩壳,压缩壳相对来说容易些,一般是没有异常,找到对应的popad后就能到入口,跳到入口的方式一般为。 我们知道文件被一些压缩加壳软件加密,下一步我们就要分析加密软件的名称、版本。因为不同软件甚至不同版本加的壳,脱壳处理的方法都不相同。 常用脱壳工具: 文件分析工具 (侦测壳的类型) : Fi,GetTyp,peid,pe-scan, OEP入口查找工具: SoftICE,TRW,ollydbg,loader,peid dump工具: IceDump,TRW,PEditor,ProcDump32,LordPE PE文件编辑工具PEditor,ProcDump32,LordPE ...

2014-03-20 · 1 min · 154 words · -

Android APK加壳技术方案

Android APK加壳技术方案 本文章由Jack_Jia编写,转载请注明出处。 文章链接: http://blog.csdn.net/jiazhijun/article/details/8678399 作者: Jack_Jia 邮箱: 309zhijun@163.com 一、什么是加壳? 加壳是在二进制的程序中植入一段代码,在运行的时候优先取得程序的控制权,做一些额外的工作。大多数病毒就是基于此原理。PC EXE文件加壳的过程如下: 二、加壳作用 加壳的程序可以有效阻止对程序的反汇编分析,以达到它不可告人的目的。这种技术也常用来保护软件版权,防止被软件破解。 三、Android Dex文件加壳原理 PC平台现在已存在大量的标准的加壳和解壳工具,但是Android作为新兴平台还未出现APK加壳工具。Android Dex文件大量使用引用给加壳带来了一定的难度,但是从理论上讲,Android APK加壳也是可行的。 在这个过程中,牵扯到三个角色: 加壳程序: 加密源程序为解壳数据、组装解壳程序和解壳数据 解壳程序: 解密解壳数据,并运行时通过DexClassLoader动态加载 源程序: 需要加壳处理的被保护代码 阅读该文章,需要您对DEX文件结构有所了解,您可以通过以下网址了解相关信息: http://blog.csdn.net/jiazhijun/article/details/8664778 根据解壳数据在解壳程序DEX文件中的不同分布,本文将提出两种Android Dex加壳的实现方案。 (一) 解壳数据位于解壳程序文件尾部 该种方式简单实用,合并后的DEX文件结构如下。 加壳程序工作流程: 加密源程序APK文件为解壳数据 把解壳数据写入解壳程序Dex文件末尾,并在文件尾部添加解壳数据的大小。 修改解壳程序DEX头中checksum、signature 和file_size头信息。 修改源程序AndroidMainfest.xml文件并覆盖解壳程序AndroidMainfest.xml文件。 解壳DEX程序工作流程: 读取DEX文件末尾数据获取借壳数据长度。 从DEX文件读取解壳数据,解密解壳数据。以文件形式保存解密数据到a.APK文件 通过DexClassLoader动态加载a.apk。 (二) 解壳数据位于解壳程序文件头 该种方式相对比较复杂, 合并后DEX文件结构如下: 加壳程序工作流程: 加密源程序APK文件为解壳数据 计算解壳数据长度,并添加该长度到解壳DEX文件头末尾,并继续解壳数据到文件头末尾。 (插入数据的位置为0x70处) 修改解壳程序DEX头中checksum、signature、file_size、header_size、string_ids_off、type_ids_off、proto_ids_off、field_ids_off、 method_ids_off、class_defs_off和data_off相关项。 分析map_off 数据,修改相关的数据偏移量。 修改源程序AndroidMainfest.xml文件并覆盖解壳程序AndroidMainfest.xml文件。 解壳DEX程序工作流程: 从0x70处读取解壳数据长度。 从DEX文件读取解壳数据,解密解壳数据。以文件形式保存解密数据到a.APK 通过DexClassLoader动态加载a.APK。 四、加壳及脱壳代码实现 http://blog.csdn.net/jiazhijun/article/details/8809542

2014-03-20 · 1 min · 62 words · -

Android程序的反破解技术

Android程序的反破解技术 http://blog.csdn.net/viviwen123/article/details/9117589 逆向Android软件的步骤: 首先是对其进行反编译,然后阅读反汇编代码,如果有必要还会对其进行动态调试,找到突破口后注入或直接修改反汇编代码,最后重新编译软件进行测试。整个过程可分为反编译、静态分析、动态调试、重编译等4个环节。反破解技术也是从这四个方面进行的。 一、对抗反编译工具 (如ApkTool、BackSmali、dex2jar) ,使其无法进行反编译,或者反编译后无法得到软件正确的反汇编代码。 思路是: 寻找反编译工具在处理apk或dex文件时的缺陷,然后在自己的软件中加以利用。主要方法有: 阅读反编译工具源码。 压力测试。测试大量apk文件,找到反编译工具反编译不了的,分析其特征。 此方法难度较大,而且反编译工具不断升级,方法容易过时,因此不太建议。 二、对抗静态分析。 代码混淆技术: Android2.3的SDK中正式加入了ProGuard代码混淆工具,开发人员可以使用该工具对自己的代码进行混淆。Android2.3以前的项目同样可以使用此工具。 NDK保护。 外壳保护。java由于其语言自身特殊性,没有外壳保护这个概念,只能通过混淆方式对其进行保护。外壳保护重点针对使用NDK编写的Native代码,逆向Native本身就已经够困难了,如果添加了外壳保护则更是难上加难,目前已知可用于ARM Linux内核程序的加壳工具只有upx。 三、对抗动态调试。 检测调试器: 动态调试使用调试器来挂钩软件,获取软件运行时的数据,我们可以在软件中加入检测调试器的代码,当检测到软件被调试器连接时,中止软件的运行。 首先,在AndroidManifest.xml文件的Application标签中加入android:debuggable=“false”,让程序不可调试,这样,如果别人想调试该程序,就必然会修改它的值,我们在代码中检查它的值来判断程序是否被修改过。代码如下: if (0!=(getApplicationInfo().flags&=ApplicationInfo.FLAG_DEBUGGABLE)) { Log.e("DEBUG", "程序被修改为可调试状态!!!"); android.os.Process.killProcess(android.os.Process.myPid()); } 另外,Android SDK中提供了一个方法方便程序员来检测调试器是否已经连接,代码如下: android.os.Debug.isDebuggerConnected() 如果方法返回真,说明了调试器已经连接。我们可以随机地在软件中插入这行代码来检测调试器,碰到有调试器连接就果断地结束程序运行。 检测模拟器。 软件发布后会安装到用户的手机中运行,如果有发现软件运行在模拟器中,很显然不合常理,可能是有人试图破解或分析它,这种情况我们必须予以阻止。 模拟器与真实的Android手机有许多差异,我们可以在命令提示符下执行"adb shell getprop"查看并对比它们的属性值,经过对比发现如下几个属性值可以用来判断软件是否运行在模拟器中: ro.product.model、ro.build.tag、ro.kernel.qemu。编写检测代码如下: boolean isRunningInEmualtor() { boolean qemuKernel = false; Process process = null; DataOutputStream os = null; try{ process = Runtime.getRuntime().exec("getprop ro.kernel.qemu"); os = new DataOutputStream(process.getOutputStream()); BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream(),"GBK")); os.writeBytes("exit\n"); os.flush(); process.waitFor(); qemuKernel = (Integer.valueOf(in.readLine()) == 1); Log.d("com.droider.checkqemu", "检测到模拟器:" + qemuKernel); } catch (Exception e){ qemuKernel = false; Log.d("com.droider.checkqemu", "run failed" + e.getMessage()); } finally { try{ if (os != null) { os.close(); } process.destroy(); } catch (Exception e) { } Log.d("com.droider.checkqemu", "run finally"); } return qemuKernel; } public static String getProp(Context context, String property) { try { ClassLoader cl = context.getClassLoader(); Class SystemProperties = cl.loadClass("android.os.SystemProperties"); Method method = SystemProperties.getMethod("get", String.class); Object[] params = new Object[1]; params[0] = new String(property); return (String)method.invoke(SystemProperties, params); } catch (Exception e) { return null; } } 四、防止重编译。 ...

2014-03-20 · 2 min · 260 words · -

APK保护技术

APK保护技术 http://my.eoe.cn/1177576/archive/10575.html 由于Java字节码的抽象级别较高,因此Android的APK较容易被反编译,而国内对于网络产品保护不力。如果一款应用APK被破解,那么可能会被他人植入广告或者病毒以供他人盈利或窃取用户信息;如果一款游戏APK被破解,那么这款游戏可能会从收费版变成免费版,游戏的支付系统也形同虚设。不管是哪种情况,对于开发者来说,APK被破解绝对是一场噩梦,而自己手动设置各种加密不但耗时耗力,而且不一定能收到很好的效果。本文介绍几种常用的方法,用于保护Java字节码不被反编译。通常,这些方法不能够绝对防止程序被反编译,而是加大反编译的难度而已,因为这些方法都有自己的使用环境和弱点。 1.隔离Java程序 最简单的方法就是让用户不能够访问到Java Class程序,这种方法是最根本的方法,具体实现有多种方式。例如,开发人员可以将关键的Java Class放在服务器端,客户端通过访问服务器的相关接口来获得服务,而不是直接访问Class文件。这样黑客就没有办法反编译Class文件。目前,通过接口提供服务的标准和协议也越来越多,例如 HTTP、Web Service、RPC等。但是有很多应用都不适合这种保护方式,例如对于单机运行的程序就无法隔离Java程序。 2.对Class文件进行加密 2 为了防止Class文件被直接反编译,许多开发人员将一些关键的Class文件进行加密,例如对注册码、序列号管理相关的类等。在使用这些被加密的类之前,程序首先需要对这些类进行解密,而后再将这些类装载到JVM当中。这些类的解密可以由硬件完成,也可以使用软件完成。 在实现时,开发人员往往通过自定义ClassLoader类来完成加密类的装载(注意由于安全性的原因,Applet不能够支持自定义的ClassLoader)。自定义的ClassLoader首先找到加密的类,而后进行解密,最后将解密后的类装载到JVM当中。在这种保护方式中,自定义的ClassLoader是非常关键的类。由于它本身不是被加密的,因此它可能成为黑客最先攻击的目标。如果相关的解密密钥和算法被攻克,那么被加密的类也很容易被解密。 3.转换成本地代码 将程序转换成本地代码也是一种防止反编译的有效方法。因为本地代码往往难以被反编译。开发人员可以选择将整个应用程序转换成本地代码,也可以选择关键模块转换。如果仅仅转换关键部分模块,Java程序在使用这些模块时,需要使用JNI技术进行调用。当然,在使用这种技术保护Java程序的同时,也牺牲了Java的跨平台特性。对于不同的平台,我们需要维护不同版本的本地代码,这将加重软件支持和维护的工作。不过对于一些关键的模块,有时这种方案往往是必要的。为了保证这些本地代码不被修改和替代,通常需要对这些代码进行数字签名。在使用这些本地代码之前,往往需要对这些本地代码进行认证,确保这些代码没有被黑客更改。如果签名检查通过,则调用相关JNI方法。 4.代码混淆 代码混淆是对Class文件进行重新组织和处理,使得处理后的代码与处理前代码完成相同的功能(语义)。但是混淆后的代码很难被反编译,即反编译后得出的代码是非常难懂、晦涩的,因此反编译人员很难得出程序的真正语义。从理论上来说,黑客如果有足够的时间,被混淆的代码仍然可能被破解,甚至目前有些人正在研制反混淆的工具。但是从实际情况来看,由于混淆技术的多元化发展,混淆理论的成熟,经过混淆的Java代码还是能够很好地防止反编译。下面我们会详细介绍混淆技术,因为混淆是一种保护Java程序的重要技术。 5.在线加密 APK Protect(http://www.apkprotect.com/)是一个在线对APK程序进行加密的网站,可以支持Java和C+ +语言的保护,能达到反调试、反编译的效果,操作过程简单易用: 仅需上传你的APK,选择加密项目,等待服务器加密 (通常一两个小时左右) 后即可下载加壳的APK,然后再签名上传到应用市场即可。经测试,通过APK Protect加密的APK变得非常难以破解,从而保护了APK。 from eoe.cn

2014-03-20 · 1 min · 27 words · -

favicon

favicon 获取网站favicon http://www.google.com/s2/favicons?domain=google.com home.html 代码如下: 下面两行代码就可以告诉浏览器使用wangyi.ico 作为home.html的图标了:

2014-03-19 · 1 min · 7 words · -

outlook2010邮件签名

outlook2010 邮件签名 outlook2010邮件签名并自动更新日期时间的方法: 菜单-文件->选项->邮件->创建或修改邮件的签名: 按钮 签名->新建 此 致 致礼! 深圳市xxx有限公司: 研发部: 牛凯 地址: 深圳市xxx 固定电话: 0755-xxxx 联系手机: 137xxx 邮箱地址: 时间: { TIME @ “yyyy年M月d日星期 W” }{ TIME @ “H时m分” } 如何得到时间格式写法的参考? 1.开始->新建电子邮件->新窗口中: 插入->日期和时间->选择语言和格式,确定->可得到签名中想要的格式。 签名中设置自动更新时间的步骤: 1 在要插入日期的签名编辑中,按Ctrl + F9 出现域 { } , 2 在此域中输入大括号内的内容 { TIME @ “yyyy年M月d日星期 W” } 然后点保存编辑,ok了。 3 新建邮件中看不到日期时间只看到格式,但是发送出去的是自动更新的时间。

2014-03-19 · 1 min · 53 words · -

Java获取客户端真实IP地址的两种方法

Java获取客户端真实IP地址的两种方法 http://dpn525.iteye.com/blog/1132318 在JSP里,获取客户端的IP地址的方法是: request.getRemoteAddr () ,这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。 在JSP里,获取客户端的IP地址的方法是: request.getRemoteAddr () ,这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。 如果使用了反向代理软件,将http://192.168.1.110: 2046/ 的URL反向代理为 http://www.javapeixun.com.cn / 的URL时,用request.getRemoteAddr () 方法获取的IP地址是: 127.0.0.1或192.168.1.110,而并不是客户端的真实IP。 经过代理以后,由于在客户端和服务之间增加了中间层,因此服务器无法直接拿到客户端的IP,服务器端应用也无法直接通过转发请求的地址返回给客户端。但是在转发请求的HTTP头信息中,增加了X-FORWARDED-FOR信息。用以跟踪原有的客户端IP地址和原来客户端请求的服务器地址。当我们访问http://www.javapeixun.com.cn/index.jsp/ 时,其实并不是我们浏览器真正访问到了服务器上的index.jsp文件,而是先由代理服务器去访问http://192.168.1.110: 2046/index.jsp ,代理服务器再将访问到的结果返回给我们的浏览器,因为是代理服务器去访问index.jsp的,所以index.jsp中通过request.getRemoteAddr () 的方法获取的IP实际上是代理服务器的地址,并不是客户端的IP地址。 于是可得出获得客户端真实IP地址的方法一: Java代码 收藏代码 public String getRemortIP(HttpServletRequest request) { if (request.getHeader(“x-forwarded-for”) == null) { return request.getRemoteAddr(); } return request.getHeader(“x-forwarded-for”); } 可是当我访问http://www.5a520.cn /index.jsp/ 时,返回的IP地址始终是unknown,也并不是如上所示的127.0.0.1或192.168.1.110了,而我访问http://192.168.1.110: 2046/index.jsp 时,则能返回客户端的真实IP地址,写了个方法去验证。原因出在了Squid上。squid.conf 的配制文件forwarded_for 项默认是为on,如果 forwarded_for 设成了 off 则: X-Forwarded-For: unknown 于是可得出获得客户端真实IP地址的方法二: Java代码 收藏代码 public String getIpAddr(HttpServletRequest request) { String ip = request.getHeader(“x-forwarded-for”); if(ip == null || ip.length() == 0 || “unknown”.equalsIgnoreCase(ip)) { ...

2014-03-13 · 2 min · 302 words · -

putty

putty ssh 超时 http://blog.fens.me/putty-timeout/ 用Putty进行SSH连接的时候,如果几分钟没动,就会出现断线的情况,然后Putty客户端就死了。 为了解决这个问题,我们需要让客户端与Server端,一直保持发包状态,就可以避免Putty断线的情况。 操作如下: putty –>Connection –> Seconds Between keepalives –>60 远程桌面 看不到 鼠标指针 https://support.huawei.com/enterprise/zh/knowledge/EKB1000027195 windows版本: windows server 2008 R2 Standard 在控制面板中搜索"鼠标",选择"更改鼠标指针的外观 在"指针"标签页中,在"自定义"栏目里,找到"文本选择"项; 选择"文本选择",然后"浏览"定义鼠标图形,在弹出的对话框中选择"beam_r.cur",确认即可。 根因 鼠标在putty (或者某些黑色编辑器) 中光标不能自动反白,可通过更改光标的样式来解决看不到光标的问题。 win10 控制面板中搜索"鼠标 " 点击 “更改指针大小 和颜色” 选择 黑色

2014-03-13 · 1 min · 39 words · -

js正则标志/g /i /m的用法

js正则标志/g /i /m的用法 正则的思想都是一样的,但是具体的写法会有所不同,在这里提到的/g,/i,/m在其他的地方也许就不能用了。 一,js正则标志/g,/i,/m说明 1,/g 表示该表达式将用来在输入字符串中查找所有可能的匹配,返回的结果可以是多个。如果不加/g最多只会匹配一个 2,/i 表示匹配的时候不区分大小写 3,/m 表示多行匹配,什么是多行匹配呢?就是匹配换行符两端的潜在匹配。影响正则中的^$符号 二,实例说明 1,/g的用法 查看复制打印? 2,/i的用法 查看复制打印? 3,/m的用法 查看复制打印? //从上例中可以看出/m影响的^$的分割方式 上面说的三个例子,/i,/g,/m分开来说的,可以排列组合使用的。个人觉得/m没有多大用处 http://blog.51yip.com/jsjquery/1076.html javascript 密码 正则 let testPassword = /^(?=.*?[a-z])(?=.*?[A-Z])(?=.*?\d)(?=.*?[!@#$%^&;*()_=+\-])[a-zA-Z\d!@#$%^&;*()_=+\-]*$/; //判断输入格式 if(testPassword.test(this.passwordText)){ ...密码匹配成功 }else { ...密码匹配失败 } ———————————————— 版权声明:本文为CSDN博主「weixin_42553179」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/weixin_42553179/article/details/103045970

2014-03-10 · 1 min · 40 words · -

Hammer.js 移动设备触摸手势js库

Hammer.js 移动设备触摸手势js库 hammer.js是一个多点触摸手势库,能够为网页加入Tap、Double Tap、Swipe、Hold、Pinch、Drag等多点触摸事件,免去自己监听底层touchstart、touchmove、touchend事件并且写一大堆判断逻辑的痛苦。hammer.js不但支持触摸屏设备的浏览器,在桌面浏览器上,也能将鼠标的点击当做触摸,方便开发人员在桌面浏览器上调试。这是一个专为触摸手势而生的js库 http://www.cnblogs.com/cydmk/archive/2013/05/12/3073570.html https://github.com/EightMedia http://eightmedia.github.io/hammer.js/

2014-03-10 · 1 min · 7 words · -

javaEE project

javaEE project mkdir javaEELab cd javaEELab mkdir source mkdir workspace cd source #create a project in os china git server and clone ... git clone git@git.oschina.net:wiloon/javaEELab.git cd javaEELab gradle init -typeb java-library

2014-03-09 · 1 min · 32 words · -

emacs diff

emacs diff diff 使用 Unix 的 diff 工具程序,你可以找到两个文件的不同之处。所比较的两个文件可能是: 原始文件与更改之后的文件 不同的两个人编辑的同一个文件(譬如,一个项目中协同工作的两个人编辑的文件) 不同机器上的两个文件(譬如,你的 .emacs 文件可能在家和工作场合各有一份拷贝) 对于后面两种文件,两个要比较的文件共有一个原始的文件。此种情况下, diff3 程序会轻松的帮你创建一个文件,文件内容是对原始文件所做的修改记录。 Ediff 除非两个文件的不同之处很少,否则 diff 的输出将会很难阅读。幸运的是, Emacs 提供了一个 diff 的接口,称为 Ediff ,将此工作变得简单。不仅将 diff 的输出变得可读之外, Emacs 还提供了合并文件函数以及其他的应用补丁,更多的细节信息,可以参考Ediff 的 info 文档。 Emacs 还能比较不同文件夹下的两个文件,若你在不同地方工作,这个功能可能会非常有用(如你的Lisp配置文件。 用 Ediff 来比较文件 Ediff 比较的项目有: ( 可用 M-x 来启动 ) <th> 比较项目 </th> <th> 说明 </th> ediff-regions-linewise, ediff-regions- 询问两个缓冲区的名字,然后比较相应的区域。不过你只能在每一个缓冲区中选定一个区域,而不能比较一个文件缓冲区的两个区域。( TODO: 第15个小时的内容 "了解文件" ,会提供一个比较同一个文件中的两个区域的方法。) ediff-buffers 询问两个缓冲区的名字,然后比较 ediff-files 询问两个文件的名字,加载之,然后比较 ediff-windows-linewise, ediff-windows-wordwise 让你选两个窗口,然后比较窗口的内容。 -linewise- 函数比 -wordwise- 函数要快,但另一方面, -wordwise- 工作方式更好,尤其是小区域作业时。 -linewise- 一行一行地比较, -wordwise- 一个单词一个单词地比较。 一些Ediff 控制命令 在 control buffer 中,按键。 ...

2014-03-08 · 2 min · 290 words · -

emacs command

emacs command M-x artist-mode M-x artist-mode-off 跳转到行 (define-key global-map “\C-c\C-g” ‘goto-line) C-x C-f 文件名' — 打开文件C-x C-s’ — 保存文件 C-x C-c' — 退出EmacsC-x u’ — 取消上一次操作 C-x C-w 按提示输入文件名,另存为 窗格 C-x 2 M-x split-window-vertically 分隔出两个垂直窗格,水平分隔线 C-x 3 M-x split-window-horizontally 分隔出两个水平窗格,垂直分隔线 C-x 1 M-x delete-other-window 只保留当前窗格 ESC ESC ESC M-x keyboard-escape-quit 只保留当前窗格 C-x 0 M-x delete-window 关闭当前窗格 C-x o M-x other-window 在下一个窗格中激活光标 C-M-v M-x scroll-other-window 向下卷动下一个窗格,使用负参数可以向上卷动 缓冲区 C-x C-b M-x list-buffers 查看缓冲区列表 ...

2014-03-08 · 1 min · 141 words · -

golang download file

golang download file http://www.open-open.com/code/view/1440512102513 package main import ( "fmt" "io" "net/http" "os" ) var ( url = "http://127.0.0.1:1789/src/qq.exe" ) func main() { res, err := http.Get(url) if err != nil { panic(err) } f, err := os.Create("qq.exe") if err != nil { panic(err) } io.Copy(f, res.Body) }

2014-03-07 · 1 min · 47 words · -

如何提问

如何提问 http://macshuo.com/?p=367 遇到问题不要急着问别人,在时间允许的情况下看是否自己能够解决,一方面锻炼自己分析问题和解决问题的能力,另一方面,一旦问题解决了,问题就不是问题,而是你的经验和知识库。况且现在互联网有那么多的技术资料和各类问答网站,想碰到一个别人没碰到的问题,已经非常困难了。 如果做了努力依然不能解决,或者客观条件不允许你自己解决了,那么首先要选择提问对象,不管是是现实中的大神,还是网络上的牛人,确保他是你所知道的最佳解决人选。 你需要一个好的标题,用清晰的短句描述你遇到的问题 至关重要的正文 (1) 用清晰的语言描述你遇到的问题 (2) 提供软件环境,包括操作系统、数据库等相关软件及其版本号 (3) 问题是否可以重现,采用什么方式重现 (4) 采用了什么措施解决问题,最终结果 (可提供日志、程序、截图等描述) (5) 尽可能提供问题相关的可分析文件,包括日志、截图和Core dump等 (6) 不要长篇大论,简明扼要,描述主要问题

2014-03-06 · 1 min · 20 words · -

JDBC URL

JDBC URL disable tls JDK8版本过高引起MySQL连接失败:javax.net.ssl.SSLHandshakeException: No appropriate protocol https://juejin.cn/post/6969142310718144520 jdbc:mysql://127.0.0.1/database0?useunicode=true&characterencoding=utf8&tinyInt1isBit=false&useSSL=false MySQL MySQL Connector/J Driver 驱动程序包: http://mvnrepository.com/artifact/MySQL/MySQL-connector-java 驱动程序类名: com.MySQL.jdbc.Driver JDBC URL Format The general format for a JDBC URL for connecting to a MySQL server is as follows, with items in square brackets ([ ]) being optional: jdbc:MySQL://[host1][:port1][,[host2][:port2]]…[/[database]] [?propertyName1=propertyValue1[&propertyName2=propertyValue2]…] Here is a simple example for a connection URL: jdbc:MySQL://localhost:3306/sakila?profileSQL=true JDBC URL: jdbc:MySQL://:/<database_name> 默认端口3306,如果服务器使用默认端口则port可以省略 ...

2014-03-05 · 2 min · 332 words · -

ASCII

ASCII Dec Hex Char 10 0A LF 13 0D CR 32 20 Space 35 30 # 48 30 0 57 39 9 58 3A : 65 41 A 66 42 B 67 43 C 70 46 F 73 49 I 90 5A Z 97 61 a 101 65 e 102 66 f 115 73 s 122 7A z 124 7C | ASCII字符集,最基本的包含了128个字符。其中前32个,0-31,即0×00-0x1F,都是不可见字符。这些字符,就叫做控制字符。 这些字符没法打印出来,但是每个字符,都对应着一个特殊的控制功能的字符,简称功能字符或功能码Function Code。 简言之: ASCII中前32个字符,统称为Function Code功能字符。 此外,由于ASCII中的127对应的是Delete,也是不可见的,所以,此处根据笔者的理解,也可以归为Function Code。 此类字符,对应不同的"功能",起到一定的"控制作用",所以,称为控制字符。 ...

2014-03-05 · 1 min · 79 words · -

MITM, ARP缓存中毒

‘MITM,ARP缓存中毒’ http://www.cnblogs.com/songhan/archive/2012/07/25/2607704.html ARP介绍 ARP是个地址解析协议。最直白的说法是: 在IP-以太网中,当一个上层协议要发包时,有了节点的IP地址,ARP就能提供该节点的MAC地址。 ARP缓存: ARP cache 是个用来储存(IP, MAC)地址的缓冲区。当ARP被询问一个已知IP地址节点的MAC地址时,先在ARP cache 查看,若存在,就直接返回MAC地址,若不存在,才发送ARP request向局域网查询。【在A不知道B的MAC地址的情况下,A就广播一个ARP请求包,请求包中填有B的IP(192.168.1.2),以太网中的所有计算机都会接收这个请求,而正常的情况下只有B会给出ARP应答包,包中就填充上了B的MAC地址,并回复给A。A得到ARP应答后,将B的MAC地址放入本机缓存,便于下次使用。本机MAC缓存是有生存期的,生存期结束后,将再次重复上面的过程。】【ARP请求和ARP回复。请求和回复的目的在于确定与特定IP地址相关的硬件MAC地址,这样流量才能够在网络上找到目的地。请求数据包被发送给网络段上的每台设备并发出信息"我的IP地址是XX.XX.XX.XX,我的MAC地址是 XX:XX:XX:XX:XX:XX,我需要将信息发送给这个IP地址XX.XX.XX.XX,但是我不知道它的硬件地址,请这个IP地址将其MAC地址回复给我?“回复会以ARP回复数据包的形式,并回复说"你好,传递设备,我就是你要找的IP地址XX.XX.XX.XX,我的MAC地址是 XX:XX:XX:XX:XX:XX”,收到回复后,传递设备会更新其ARP缓存表,然后设备就可以与另一台设备进行通信。】 ARP欺骗 任何机器都可以向另一台主机发送ARP回复数据包,并迫使主机更新其ARP缓存。假冒IP和MAC。 ARP协议并不只在发送了ARP请求才接收ARP应答。当计算机接收到ARP应答数据包的时候,就会对本地的ARP缓存进行更新,将应答中的IP和MAC地址存储在ARP缓存中。 因此,当局域网中的某台机器B向A发送一个自己伪造的ARP应答,而如果这个应答是B冒充C伪造来的,即IP地址为C的IP,而MAC地址是伪造的,则当A接收到B伪造的ARP应答后,就会更新本地的ARP缓存,这样在A看来C的IP地址没有变,而它的MAC地址已经不是原来那个了。由于局域网的网络流通不是根据IP地址进行,而是按照MAC地址进行传输。所以,那个伪造出来的MAC地址在A上被改变成一个不存在的MAC地址,这样就会造成网络不通,导致A不能Ping通C!这就是一个简单的ARP欺骗。 危害 拒绝服务 一个黑客可以只做简单的操作就将一个重要的IP地址和一个错误的MAC地址绑定。 例如,黑客可以发送一个ARP响应报文 (到你的计算机) 将你所在网络的路由器 (即我们常说的网关,译者注) IP地址和一个根本不存在的MAC地址绑定起来。你的计算机以为它知道默认网关在哪,但是事实上它的所有数据包,其目的地址都不在这个网络的网段上 (因为那个不存在的MAC不在此局域网的网段上,译者注) ,它们最后消逝在了无尽的比特流中 (即因数据包的生命周期到了而信号消失,译者注)。仅仅这一下,黑客就能阻止你连上因特网。 中间人攻击 黑客利用ARP缓存中毒来截获你的局域网中两台设备之间的网络信息。例如,我们假象黑客想要窃听你的计算机,192.168.0.12,和你的网络路由器 (即网关,译者注) ,192.168.0.1,之间的通信信息。 黑客先发送一个恶意的ARP “响应” ( 因为在此之前根本没有请求) 到你的路由器,将他的计算机的MAC地址和192.168.0.12绑定。 然后,黑客在发送一个恶意的ARP响应到你的计算机,将他的MAC地址和192.168.0.1绑定起来。 现在你的机器以为黑客的计算机是你的路由器了。 最后,黑客开启一个叫IP转发的系统功能。这个功能让黑客能将所有来自你的计算机的网络信息转发到路由器。 现在,只要你尝试上网,你的计算机就会将网络信息发送到黑客的机器上,然后黑客再将其转发到路由器。由于黑客仍然将你的信息转发到网络路由器,所以你并不会察觉到他已经截获了所有你的网络信息,或许还窃听了你的明文密码或者劫持了你曾经安全的网络会话。 MAC洪泛 MAC洪泛是一种旨在网络交换机的ARP缓存中毒技术。当这些交换机流量超载时它们常常进入到 “集线器” 模式。在 “集线器” 模式中,交换机由于太过繁忙而不能执行它的端口安全检测功能,而是仅仅向网络中的每一台计算机广播所有的网络数据。利用大量的假冒ARP响应数据包去洪泛一台交换机的ARP映射表,黑客能使大多数制造商的交换机超载,然后当交换机进入 “集线器” 模式时,就可以发送 (恶意的) 包去嗅探你的局域网。 防御 小型网络 静态IP地址和静态ARP映射表。 大型网络 “端口安全” 功能是允许你强制使你的交换机在每个端口只允许 (IP地址对应的) 一个MAC地址通过。这个功能会阻止黑客改变他机器的MAC地址或试图映射多个MAC地址到他的机器上。 一般网络 ARP监视工具,比如ARPwatch,当有不正常的ARP通信时它会提醒你。 http://www.xker.com/page/e2010/1122/99144_4.html http://net.anquan365.com/protocol/other/201112/166775.html

2014-03-04 · 1 min · 65 words · -

AppImage

AppImage AppImage 是一种在 Linux 系统中用于分发便携式软件而不需要超级用户权限来安装它们的格式。 它还试图允许 Linux 的上游开发者来分发他们的程序而不用考虑不同 Linux 发行版间的区别。 AppImage的核心思想是一个文件即一个应用程序 。 每个 AppImage 都包含应用程序以及应用程序运行所需的所有文件。换句话说,除了操作系统本身的基础组件,Appimage 无需依赖即可运行。 在 2004 年,它以 klik 的名字发布。自那时起,它就被不断地开发,并在 2011 年被重新命名为 PortableLinuxApps,在2013年被重新命名为 AppImage。 运行方法 添加可执行权限 chmod a+x .AppImage 执行它! ./.AppImage https://doc.appimage.cn/docs/appimage/

2014-03-04 · 1 min · 33 words · -