javran javran
关注数: 4 粉丝数: 81 发帖数: 3,505 关注贴吧数: 46
GUID(From Wikipedia) Globally Unique Identifier A globally unique identifier or GUID (pronounced /ˈɡuːɪd/ or /ˈɡwɪd/) is a special type of identifier used in software applications in order to provide a reference number which is unique in any context (hence, "globally"), for example, in defining the internal reference for a type of access point in a software application, or for creating unique keys in a database. While each generated GUID is not guaranteed to be unique, the total number of unique keys (2128 or 3.4×1038) is so large that the probability of the same number being generated twice is infinitesimally small. For example, consider the observable universe, which contains about 5×1022 stars; every star could then have 6.8×1015 unique GUIDs. The term GUID usually refers to Microsoft's implementation of the Universally Unique Identifier (UUID) standard. However, the term is common in applications not written by Microsoft, or for their operating systems. The GUID is also the basis of the GUID Partition Table, Intel's replacement for Master Boot Records under EFI, and of Preboot Execution Environment, Intel's environment to boot computers using a network interface. Contents [hide] 1 Basic structure 2 Text encoding 3 Algorithm 4 Uses 5 Subtypes 6 XML syndication formats 7 See also 8 References 9 External links [edit]Basic structure The GUID is a 16-byte (128-bit) number. The most commonly used structure of the data type is: BitsOctetsDescriptionEndianness 324Data1Native 162Data2Native 162Data3Native 648Data4Big Data4 stores the bytes in the same order as displayed in the GUID text encoding (see below), but other three fields are reversed on little-endian systems (e.g. Intel CPUs). One to three of the most significant bits of the second byte in Data 4 define the type variant of the GUID:
[Javran][Music]时间若倒退 有些话很可笑给承诺又办不到有些梦很微妙醒来后却被洗掉有些爱常迟到来不及给拥抱总来不及让你知道有些事很荒谬爱恨总在原地绕有些人很无聊明明寂寞装骄傲有些爱在寻找分不清谁重要总分不清楚谁先为谁心跳看那水平的线绿色的边平静的水面有好多事浮现吹皱我的从前吹皱好多脸记忆在播放留言播放那年你说的再见到底谁不听谁劝到底那天你离开走多远多久疲倦多久不见时间若倒退想看见谁想找回什么感觉你听的音乐泡的咖啡我默背你的一切你晒的棉被特别好睡有阳光回忆淡淡香味当初为了小事争执谁对将感情拖累来不及给看那水平的线绿色的边平静的水面有好多事浮现吹皱我的从前吹皱好多脸记忆在播放留言播放那年你说的再见到底谁不听谁劝到底那天你离开走多远多久疲倦(多久疲倦)多久不见时间若倒退想看见谁(想看见谁)想找回什么感觉(什么感觉)你听的音乐泡的咖啡我默背你的一切(我默背你的一切)你晒的棉被特别好睡(特别好睡)有阳光回忆淡淡香味(淡淡香味)当初为了小事争执谁对将感情拖累时间若倒退想看见谁(想看见谁)想找回什么感觉(什么感觉)你买的宵夜送我的鞋我重温你的那些(我重温你的那些)陪我逛的街搭的地铁(搭的地铁)是最初俩人小小世界(小小世界)事后根本不重要的误会让爱情后悔来不及给
[Javran][原创][Work]关于流氓软件和病毒的一般解决方法 关于流氓软件和病毒的一般解决方法By Javran1.充分利用网络资源除非是未知病毒,一般的病毒都有名称,可以利用google或者baidu的搜索功能,查找此类病毒是否有通用的解决方法或者专杀工具,有的工具甚至能修复被病毒破坏的文件,所以,如果是破坏性病毒,专杀工具一般能达到最好的修复效果.另外,例如Trojan.Win32.Agent.vfw,最后的vfw可能是病毒的变种代号,如果这种病毒在网络上搜索不到,可以试着去掉最后一段文字再搜索,得到的信息一般有一定参考价值.2.自己动手,丰衣足食~以上的方法只能算治标不治本,能总结经验,举一反三才是王道^_^2.1自启动2.1.1 regedit开机自启动时会加载注册表中的某些启动项,这也是病毒常用的伎俩,利用windows自代的regedit可以编辑注册表中的信息,启动的方法是按win+r后输入regedit.以下是常见的自启动位置:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceExHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceExHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServicesHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServicesOnceHKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunHKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunonceHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\Notify键值:HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows\LoadHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor\AutoRun
[Javran][Work][转载]Net命令 许多 Windows NT 网络命令以 net 开始。这些 net 命令有一些公共属性:通过键入 net /? 可查阅所有可用的 net 命令。通过键入 net help 命令可在命令行中获得 net 命令的语法帮助。例如,要得到 net accounts 命令的帮助,请键入 net help accounts。所有 net 命令接受选项 / yes 和 /no(可缩写为 / y 和 /n )。/ y 对命令产生的任何交互提示自动回答“是”,/n 回答“否”。例如,net stop server 通常提示确认是否根据服务器服务结束所有服务,net stop server /y 自动回答“是”并关闭服务器服务。Net Accounts更新用户帐号数据库、更改密码及所有帐号的登录要求。必须要在更改帐号参数的计算机上运行网络登录服务。net accounts [/forcelogoff:{minutes | no}] [/minpwlen:length] [/maxpwage:{days |unlimited}] [/minpwage:days] [/uniquepw:number] [/domain]net accounts [/sync] [/domain]参数无键入不带参数的 net accounts,将显示当前密码设置、登录时限及域信息。/forcelogoff:{minutes | no}设置当用户帐号或有效登录时间过期时,结束用户和服务器会话前的等待时间。no 选项禁止强行注销。该参数的默认设置为 no。 指定 /forcelogoff:minutes 之后,Windows NT 在其强制用户退出网络 minutes 分钟之前,将给用户发出警报。如果还有打开的文件,Windows NT 将警告用户。如果 minutes 小于两分钟,Windows NT 警告用户立即从网络注销。/minpwlen:length设置用户帐号密码的最少字符数。允许范围是 0-14,默认值为 6。/maxpwage:{days | unlimited}设置用户帐号密码有效的最大天数。unlimited 不设置最大天数。/maxpwage 选项的天数必须大于 /minpwage。允许范围是 1-49,710 天 (unlimited)。默认值为 90 天。/minpwage:days设置用户必须保持原密码的最小天数。 0 值不设置最小时间。允许范围是 0-49,710 天,默认值为 0 天。/uniquepw:number要求用户更改密码时,必须在经过 number 次后,才能重复使用与之相同的密码。允许范围是 0-8。默认值为 5。/domain在当前域的主域控制器上执行该操作。否则只在本地计算机执行操作。该参数仅用于 Windows NT Server 域中的 Windows NT Workstation 计算机,Windows NT Server 计算机默认为在主域控制器执行操作。/sync当用于主域控制器时,该命令使域中所有备份域控制器同步;当用于备份域控制器时,该命令仅使该备份域控制器与主域控制器同步。该命令仅适用于 Windows NT Server 域成员的计算机。Net Computer从域数据库中添加或删除计算机。该命令仅在运行 Windows NT Server 的计算机上可用。net computer \computername {/add | /del}参数\computername指定要添加到域或从域中删除的计算机。/add将指定计算机添加到域。/del将指定计算机从域中删除。Net Config显示当前运行的可配置服务,或显示并更改某项服务的设置。net config [service [options]]参数无键入不带参数的 net config 将显示可配置服务的列表。service通过 net config 命令进行配置的服务(server 或 workstation)。options服务的特定选项。完整语法请参阅 net config server 或 net config workstation。Net Config Server运行服务时显示或更改服务器的服务设置。net config server [/autodisconnect:time] [/srvcomment:"text "] [/hidden:{yes | no}]参数无键入不带参数的 net config server,将显示服务器服务的当前配置。/autodisconnect:time设置断开前用户会话闲置的最大时间值。可以指定 -1,表示永不断开连接。允许范围是 -1-65535 分钟,默认值是 15 分钟。/srvcomment:"text "为服务器添加注释,可以通过 net view 命令在屏幕上显示所加注释。注释最多可达 48 个字符,文字要用引号引住。
[Javran][Work][转载]内核级Rootkit技术入门 Rootkit是一种奇特的程序,它具有隐身功能:无论静止时(作为文件存在),还是活动时,(作为进程存在),都不会被察觉。换句话说,这种程序可能一直存在于我们的计算机中,但我们却浑然不知,这一功能正是许多人梦寐以求的——不论是计算机黑客,还是计算机取证人员。黑客可以在入侵后置入 Rootkit,秘密地窥探敏感信息,或等待时机,伺机而动;取证人员也可以利用Rootkit实时监控嫌疑人员的不法行为,它不仅能搜集证据,还有利于及时采取行动。而本文的目的,就是同读者一起踏上Windows内核级Rootkit之旅!一、背景知识我们通常所说的智能机器,大至超级计算机,中到个人PC,小至智能手机,通常都有两部分组成:硬件和软件。并且,设备的智能是通过软件来实现的。所有软件中,有一种是必不可少的,那就是操作系统。操作系统可以简单理解为一组高度复用的核心程序,一方面,它要管理低层的硬件设备,另一方面,为上层其它程序提供一个良好的运行环境。真是同人不同命,同为软件,操作系统却享有至高无上的特权:它不仅管理硬件,而且其他所有软件也都受制于它。因为在应用程序和硬件之间隔着操作系统,所以应用程序不能直接访问硬件,而是通过调用操作系统提供的接口来使用硬件。也就是说,对应用程序而言,硬件是不可见的。当然,凡事是没有绝对的,应用程序绕过操作系统来直接访问硬件也不是不可能的,但这样做会付出高昂的代价。设想一个软件开发商在开发一款功能丰富的软件,功能本身就够他头痛得了,现在他还得操心某个数据在某个磁道的某个簇上,某个字符在某品牌显示器上的颜色的二进制代码等等繁琐的事情,不用说财力和物力,单说开发周期就是无法容忍的。所以,现在的应用程序都是使用操作系统提供的简单明了的服务来访问系统的,因为毕竟没有谁愿意自讨苦吃。二、内核的主要功能从上文中我们已经了解,内核在系统中处于核心枢纽的地位,下面我们具体介绍内核中与Rootkit紧密相关的几个主要功能,更重要的是这些功能对Rootkit的意义所在:进程管理。进程可以简单理解为运行中的程序,它需要占用内存、CPU时间等系统资源。现在的操作系统大多支持多用户多任务,也就是说系统要并行运行多个程序。为此,内核不仅要有专门代码来负责为进程或线程分配CPU时间,另一方面还要开辟一段内存区域存放用来记录这些进程详细情况的数据结构。内核是怎么知道系统中有多少进程、各进程的状态等信息的?就是通过这些数据结构,换句话说它们就是内核感知进程存在的依据。因此,只要修改这些数据结构,就能达到隐藏进程的目的。文件访问。文件系统是操作系统提供的最为重要的功能之一。内核中的驱动程序把设备的柱面、扇区等原始结构抽象成为更加易用的文件系统,并提供一个一致的接口供上层程序调用。也就是说,这部分代码完全控制着对硬盘的访问,通过修改内核的这部分代码,攻击者能够隐藏文件和目录。安全控制。对大部分操作系统来说,因为系统中同时存在多个进程,为了避免各进程之间发生冲突,内核必须对各进程实施有效的隔离措施。比如,在MS-Windows系统中,每个进程都被强制规定了具体的权限和单独的内存范围。因此,对攻击者而言,只要对内核中负责安全事务的代码稍事修改,整个安全机制就会全线崩溃。内存管理。现在的硬件平台(比如英特尔的奔腾系列处理器)的内存管理机制已经复杂到可以将一个内存地址转换成多个物理地址的地步。举例来说,进程A按照地址 0x0030030读取内存,它得到值的是“飞机”;然而,进程B也是按照同样的地址0x0030030来读取内存,但它取得的值却是“大炮”。像上面这样,同一个地址指向截然不同的两个物理内存位置,并且每个位置存放不同的数据这种现象并不足以为怪——只不过是两个进程对虚拟地址到物理地址进行了不同的映射而已。如果这一点利用好了,我们可以让Rootkit躲避调试程序和取证软件的追踪。上面介绍了内核的主要功能,以及它们对 Rootkit的重大意义。说到这里,我们就要切入正题了,即:只要我们颠覆(即修改)了操作系统的核心服务(即内核),那么整个系统包括各种应用就完全处于我们的掌控之下了。要想颠覆内核,前提条件是能把我们的代码导入内核。具体请见下文。
[Javran][转载]若干经典的字符串哈希函数 // RS Hash Functionunsigned int RSHash( char * str){ unsigned int b = 378551 ; unsigned int a = 63689 ; unsigned int hash = 0 ; while ( * str) { hash = hash * a + ( * str ++ ); a *= b; } return (hash & 0x7FFFFFFF );}// JS Hash Functionunsigned int JSHash( char * str){ unsigned int hash = 1315423911 ; while ( * str) { hash ^= ((hash << 5 ) + ( * str ++ ) + (hash >> 2 )); } return (hash & 0x7FFFFFFF );}// P. J. Weinberger Hash Functionunsigned int PJWHash( char * str){ unsigned int BitsInUnignedInt = (unsigned int )( sizeof (unsigned int ) *8 ); unsigned int ThreeQuarters = (unsigned int )((BitsInUnignedInt * 3 ) / 4 ); unsigned int OneEighth = (unsigned int )(BitsInUnignedInt / 8 ); unsigned int HighBits = (unsigned int )( 0xFFFFFFFF ) << (BitsInUnignedInt - OneEighth); unsigned int hash = 0 ; unsigned int test = 0 ; while ( * str) { hash = (hash << OneEighth) + ( * str ++ ); if ((test = hash & HighBits) != 0 ) { hash = ((hash ^ (test >> ThreeQuarters)) & ( ~ HighBits)); } } return (hash & 0x7FFFFFFF );}// ELF Hash Functionunsigned int ELFHash( char * str){ unsigned int hash = 0 ; unsigned int x = 0 ; while ( * str) { hash = (hash << 4 ) + ( * str ++ ); if ((x = hash & 0xF0000000L ) != 0 ) { hash ^= (x >> 24 ); hash &= ~ x; } } return (hash & 0x7FFFFFFF );}// BKDR Hash Functionunsigned int BKDRHash( char * str){ unsigned int seed = 131 ; // 31 131 1313 13131 131313 etc.. unsigned int hash = 0 ; while ( * str) { hash = hash * seed + ( * str ++ ); } return (hash & 0x7FFFFFFF );}// SDBM Hash Functionunsigned int SDBMHash( char * str){ unsigned int hash = 0 ; while ( * str) { hash = ( * str ++ ) + (hash << 6 ) + (hash << 16 ) - hash; } return (hash & 0x7FFFFFFF );}// DJB Hash Functionunsigned int DJBHash( char * str){ unsigned int hash = 5381 ; while ( * str) { hash += (hash << 5 ) + ( * str ++ ); } return (hash & 0x7FFFFFFF );}// AP Hash Functionunsigned int APHash( char * str){ unsigned int hash = 0 ; int i; for (i = 0 ; * str; i ++ ) { if ((i & 1 ) == 0 ) { hash ^= ((hash << 7 ) ^ ( * str ++ ) ^ (hash >> 3 )); } else { hash ^= ( ~ ((hash << 11 ) ^ ( * str ++ ) ^ (hash >> 5 ))); } } return (hash & 0x7FFFFFFF );}比较经典的字符串hash就这些了吧,"ELF Hash Function" <-这个比较常用.
一次一密乱码本(转) 不管你是否相信它,有一种理想的加密方案,叫做一次一密乱码本,由Major Joseph Mauborgne和AT&T公司的Gilbert Vernam在1917年发明的[794](实际上,一次一密乱码本是门限方案的特殊情况,见3.7节)。典型地,一次一密乱码本不外乎是一个大的不重复的真随机密钥字母集,这个密钥字母集被写在几张纸上,并一起粘成一个乱码本。它最初的形式是将一次一密乱码本用于电传打字机。发方用乱码本中的每一密钥字母准确地加密一个明文字符。加密是明文字符和一次一密乱码本密钥字符的模26加法。 每个密钥仅对一个消息使用一次。发方对所发的消息加密,然后销毁乱码本中用过的一页或用过的磁带部分。收方有一个同样的乱码本,并依次使用乱码本上的每个密钥去解密密文的每个字符。收方在解密消息后销毁乱码本中用过的一页或用过的磁带部分。新的消息则用乱码本的新的密钥加密。 例如,如果消息是: ONETIMEPAD , 而取自乱码本的密钥序列是 TBFRGFARFM , 那么密文就是 IPKLPSFHGQ , 因为 O + T mod26 = I N + B mod26 = P E + F mod26 = K 等等。 如果偷窃听者不能得到用来加密消息的一次一密乱码本,这个方案是完全保密的。给出的密文消息相当于同样长度的任何可能的明文消息。 由于每一密钥序列都是等概的(记住,密钥是以随机方式产生的),敌方没有任何信息用来对密文进行密码分析,密钥序列也可能是: POYYAEAAZX 解密出来是: SALMONEGGS 或密钥序列为: BXFGBMTMXM 解密出来的明文为: GREENFLUID 值得重申的是:由于明文消息是等概的,所以密码分析者没有办法确定哪一明文消息是正确的。随机密钥序列异或一非随机的明文消息产生一完全随机的密文消息。再大的计算能力也无能为力。 值得注意的是,密钥字母必须是随机产生的。对这种方案的攻击将是针对用来产生密钥序列的那种方法。使用伪随机数发生器是不值得考虑的,它们通常具有非随机性。如果你采用真随机源(这比第一次出现难得多,见17.14节。),它就是安全的。 另一个重要的事情是密钥序列不能重复使用,即使你用多兆字节的乱码本,如果密码分析家有多个密钥重叠的密文,他也能够重构明文。他把每排密文移来移去,并计算每个位置的适配量。如果他们排列正确,则适配的比例会突然升高(准确的百分比与明文的语种有关)。从这一点来说,密码分析是容易的,它类似于重合指数法,只不过用两个“周期”作比较[904]。所以千万别重复使用密钥序列。 一次一密乱码本的想法很容易推广到二进制数据的加密,只需由二进制数字组成的一次一密乱码本代替由字母组成的一次一密乱码,用异或代替一次一密乱码本的明文字符加法就成。为了解密,用同样的一次一密乱码本对密文异或,其他保持不变,保密性也很完善。 这听起来很好,但有几个问题。因为密钥比特必须是随机的,并且绝不能重复使用,密钥序列的长度要等于消息的长度。一次一密乱码本可能对短信息是可行的,但它决不可能在1.44Mbps的通信信道上工作。你能在一张CD-ROM中存储650兆字节的随机二进制数。但有一些问题:首先,你需要准确地复制两份随机数比特,但CD-ROM只是对大量的数据来说是经济的;其次,你需要能够销毁已经使用过的比特,而CD-ROM没有抹除设备,除非物理毁坏整张盘。数字磁带对这种东西来说是更好的媒体。 即使解决了密钥的分配和存储问题,还需确信发方和收方是完全同步的。如果收方有一比特的偏移(或者一些比特在传送过程中丢失了),消息就变成乱七八糟的东西了。另一方面,如果某些比特在传送中被改变了(没有增减任何比特,更像由于随机噪声引起的),那些改变了的比特就不能正确地解密。再者,一次一密乱码本不提供鉴别。 一次一密乱码本在今天仍有应用场合,主要用于高度机密的低带宽信道。美国和前苏联之间的热线电话(现在还在起作用吗?)据传就是用一次一密乱码本加密的。许多苏联间谍传递的消息也是用一次一密乱码本加密的。到今天这些消息仍是保密的,并将一直保密下去。不管超级计算机工作多久,也不管半个世纪中有多少人,用什么样的方法和技术,具有多大的计算能力,他们都不可能阅读苏联间谍用一次一密乱码本加密的消息(除非他们恰好回到那个年代,并得到加密消息的一次一密乱码本)。
1 下一页