网站自动跳转到cjb.net的惊险之旅

网站自动跳转到cjb.net的惊险之旅

11个月前 (11-07) 浏览: 357 评论: 1

极客人昨天在访问王柏元的博客时发现,网站时不时地“抽风”地跳转向www.cjb.net这个网址,几乎刚一打开wangbaiyuan.cn就跳,访问其它的网址都没有遇到这等怪事。这种情况最开始只出现在360极速浏览器上,即使我下意识地清除缓存、cookie,依然没有奏效。最后我换了其它的浏览器,才发现就360极速浏览器才遇到这种情况,而且还是偶然出现的;在尝试网上的方法卸载浏览器插件等的方法解决未果的情况下我只得作罢。兴许360极速浏览器中毒了吧,呵呵,360还号称安全呢! 今天晚上,我发现自动跳转到cjb.net的恼火现象再次出现,而且这次不管什么浏览器都是如此,包括Edge、IE。这才让我觉得是不是网站被“入侵”了,而且”入侵“的方式很明显,植入了含有跳转代码的js。因为当我审查元素”禁用js“时跳转情况就不会出现。然后我看了看,王柏元的博客一个文章页就引用30个js,只要其中一个js文件植入了恶意跳转代码就会出现自动跳转,如此盲目地找谈何容易。 由于网址跳转得极为迅速,我相信这个js文件是在html的head 部分,最后发现我的头部引用一个新浪CDN的jquery.min.js,网址为: http://lib.sinaapp.com/js/jquery/1.7.2/jquery.min.js;这是我的wordpress主题提供的一个Jquery CDN源,当我把Jquery源由 CDN改成使用本地Jquery时,问题解决了,无疑是新浪的Jquery源被劫持了。打开这个js一看,难怪了: 而且lib.sinaapp.com域名下不管什么链接都是这个内容;最后发现网上推荐的Jquery CDN中,使用新浪的CDN还不少,估计这回中招的人应该不止我一个啊。最后我果断换成了百度的Jquery CDN:http://libs.baidu.com/jquery/1.9.1/jquery.min.js;当然,出现自动跳转到cjb.net的情况不一定和我是同一个原因,但是你可以按照我这个思路去找哪个js文件被污染了。    

C++活动主机扫描

C++活动主机扫描

2年前 (2015-11-20) 浏览: 185 评论: 0

  (1)以命令方式运行:DOS>scanHost  start_ip  end_ip (2)输出内容:活动主机IP地址。 实现原理: (1)通过某IP发送ICMP_ECHO请求报文,接收到ICMP_response 报文,表明该IP主机活动。 (2)利用原始套接字 (3)为了提高检测时间,利用多线程技术。    

C++扫描指定主机开放的端口

C++扫描指定主机开放的端口

2年前 (2015-11-19) 浏览: 249 评论: 0

C++扫描指定主机开放的端口,OS提供了connect()系统调用,用于与远程主机某端口建立连接,如果远程主机该端口处于帧听状态,则connect()连接成功;否则说明该端口关闭。    

C++解析ARP数据包(可选网卡)

C++解析ARP数据包(可选网卡)

2年前 (2015-11-17) 浏览: 568 评论: 0

在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址,而数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃。因此在通讯前必须获得目的主机的硬件地址。ARP协议就起到这个作用。源主机发出ARP请求,询问“IP地址是192.168.0.1的主机的硬件地址是多少”,并将这个请求广播到本地网段(以太网帧首部的硬件地址填FF:FF:FF:FF:FF:FF表示广播),目的主机接收到广播的ARP请求,发现其中的IP地址与本机相符,则发送一个ARP应答数据包给源主机,将自己的硬件地址填写在应答包中。 每台主机都维护一个ARP缓存表,可以用arp -a命令查看。缓存表中的表项有过期时间(一般为20分钟),如果20分钟内没有再次使用某个表项,则该表项失效,下次还要发ARP请求来获得目的主机的硬件地址。 本项目是基于win cap的,要想成功运行本代码,你需要下载安装win cap以及WpdPack并在visual studio中配置wincap的库。  

使用内存做虚拟磁盘与磁盘做虚拟内存

使用内存做虚拟磁盘与磁盘做虚拟内存

2年前 (2015-08-06) 浏览: 103 评论: 0

磁盘和内存 极客人在使用android Studio开发安卓时被内存不足深深困扰,为此买了一块4G的内存条,电脑的速度因此的确有所提升内存的占用率一般在30%,开了android studio和虚拟机也有大量内存。为了剩余的大量内存物尽所需,尽可能充裕的内存使电脑的性能得到提升。极客人决定调整自己的虚拟内存大小,同时开辟一部分内存当硬盘使用。当然这些方法仅仅适用于电脑内存大任性的机友们。 学过或者稍微懂得计算机的人都知道内存和硬盘是电脑的关键部分,当然现在智能手机普及,就算小学文化的大叔大姐都知道了内存,不过总是内存卡(存储卡)和内存(运行内存)傻傻分不清楚。电脑上的硬盘对应于手机的存储卡。稍微知道计算机的人问懂计算机的人的手机内存多大时,当听到回答"16G"时总是苦笑不得,其实计算机领域所说的内存就是指运行内存,并不是人们习惯所说的内存卡。现在主流的电脑内存是4G或者8G,手机内存有512M、1G、2G、3G等等,而电脑上的磁盘一般为500G、1T(1T=1024M),手机内存卡现在一般达到了16G、32G。所以你可以看到内存卡(或硬盘)与内存之间巨大的区别。相对于硬盘内存卡,内存昂贵得不止一点点。比如,我刚买的4G电脑内存价格为166元,而500G机械硬盘大约才售250元,以此为例相同的容量,内存与机械硬盘的价格比大约为80:1,而同时内存的读写速度达到了机械硬盘的100倍!     小内存电脑怎样配置虚拟内存 正因为内存的相对昂贵,低端配置的电脑常常内存不足导致不能运行很多软件,而硬盘容量相对充裕,为了使电脑尽可能运行更多的软件,发挥硬盘的“剩余价值”,windows操作系统有开辟一块硬盘空间作为内存来使用的功能,这个功能默认是开启的。而硬盘毕竟不是内存,所以称为“虚拟内存”;同时,内存的速度远远远非硬盘所能企及,所以把硬盘当内存使能运行多程序但会降低运行速度。 对于windows下的虚拟内存配置,读者可以自行百度。 大内存电脑怎样配置虚拟磁盘 与上面相对应的,现在许多电脑配置或升级了8G/16G内存,这么大的内存常常大部分都是冗余,为了充分发挥内存的“才能”——神速的读写,我们可以借助第三方软件实现将内存作为磁盘使用,同理此时的内存称为“虚拟磁盘”。 对于windows下的虚拟磁盘配置,读者可以自行百度,究竟虚拟磁盘速度有多大,你可以参考《使用内存做虚拟磁盘》

Windows10正式版一键激活

Windows10正式版一键激活

2年前 (2015-07-29) 浏览: 363 评论: 7

Windows 10终于正式发布了。正版的Windows 7/8.1用户可以坐等推送、免费升级,参与了Windows Insider内测项目的贡献者们也可以轻松“转正”,那么其他人呢?一定要购买吗? 如果我只是想尝尝鲜,该怎么激活Windows 10呢?虽然微软一代又一代地升级着反制技术,但是道高一尺魔高一丈,激活永远不会是个问题。就在刚刚,国外高手就放出了Windows 10的激活方法。 命令行 Windows 10安装完毕后,首先以管理员身份打开CMD命令行窗口。 专业版用户请依次输入: slmgr /ipk W269N-WFGWX-YVC9B-4J6C9-T83GX slmgr /skms kms.xspace.in slmgr /ato 企业版用户请依次输入: slmgr /ipk NPPR9-FWDCX-D2C8J-H872K-2YT43 slmgr /skms kms.xspace.in slmgr /ato windows10密钥 另外还有一批其他秘钥,大家可以自行体验,部分如下: 专业版:VK7JG-NPHTM-C97JM-9MPGT-3V66T 企业版:XGVPP-NMH47-7TTHJ-W3FW7-8HV2C 教育版:YNMGQ-8RYV3-4PGQ3-C8XTP-7CFBY 专业版N:2B87N-8KFHP-DKV6R-Y2C8J-PKCKT 企业版N:WGGHN-J84D6-QYCPR-T7PJ7-X766F 教育版N:84NGF-MHBT6-FXBX8-QWJK7-DRR8H 企业版S:FWN7H-PF93Q-4GGP8-M8RF3-MDWWW 单语言版:BT79Q-G7N6G-PGBYW-4YWX6-6F4BT 注意:本文仅为技术讨论之目的,不鼓励任何盗版行为,亦不对使用上述秘钥带来的任何后果负责,请支持正版!

[转]一篇文章概述网络层次

[转]一篇文章概述网络层次

2年前 (2015-07-04) 浏览: 221 评论: 0

 这篇文章主要介绍了网络协议概述:物理层、链路层、网络层、传输层、应用层详解,本文用生活中的邮差与邮局来帮助理解复杂的网络协议,通俗易懂,文风幽默,是少见的好文章,需要的朋友可以参考下 信号的传输总要符合一定的协议(protocol)。比如说长城上放狼烟,是因为人们已经预先设定好狼烟这个物理信号代表了“敌人入侵”这一抽象信号。这样一个“狼烟=敌人入侵”就是一个简单的协议。协议可以更复杂,比如摩尔斯码(Morse Code),使用短信号和长信号的组合,来代表不同的英文字母。比如SOS(***---***,  *代表短信号,-代表长信号)。这样"***= S, ---=O"就是摩尔斯码规定的协议。然而更进一层,人们会知道SOS是求助信息,原因是我们有“SOS=求救”这个协议存在在脑海里。所以"***---***=SOS=求救"是一个由两个协议组成的分层通信系统。 使用Morse Code的电报机 计算机之间的通信也要遵循不同层次的协议,来实现计算机的通信。 物理层(physical layer) 所谓的物理层,是指光纤、电缆或者电磁波等真实存在的物理媒介。这些媒介可以传送物理信号,比如亮度、电压或者振幅。对于数字应用来说,我们只需要两种物理信号来分别表示0和1,比如用高电压表示1,低电压表示0,就构成了简单的物理层协议。针对某种媒介,电脑可以有相应的接口,用来接收物理信号,并解读成为0/1序列。 链路层(link layer) 在链路层,信息以帧(frame)为单位传输。所谓的帧,是一段有限的0/1序列。链路层协议的功能就是识别0/1序列中所包含的帧。比如说,根据一定的0/1组合识别出帧的起始和结束。在帧中,有收信地址(Source, SRC)和送信地址(Destination, DST),还有能够探测错误的校验序列(Frame Check Sequence)。当然,帧中最重要的最重要是所要传输的数据 (payload)。这些数据往往符合更高层协议,供网络的上层使用。与数据相配套,帧中也有数据的类型(Type)信息。链路层协议不关心数据中到底包含什么。帧就像是一个信封,把数据包裹起来。 以太网(Ethernet)和WiFi是现在最常见的链路层协议。通过链路层协议,我们可以建立局域的以太网或者WiFi局域网,并让位于同一局域网络中的两台计算机通信。链路层就像是一个社区的邮差,他认识社区中的每一户人。社区中的每个人都可以将一封信(帧)交给他,让他送给同一社区的另一户人家。 链路层:社区小邮差 网络层(network layer) 不同的社区之间该如何通信呢? 换句话说,如何让WiFi上的一台计算机和以太网上的另一台计算机通信呢?我们需要一个“中间人”。这个“中间人”必须有以下功能: 1. 能从物理层上在两个网络的接收和发送0/1序列, 2. 能同时理解两种网络的帧格式。路由器(router)就是为此而产生的“翻译”。 一个路由器有多个网卡(NIC,Network Interface Controller),每个NIC可以接入多个网络,并理解相应的链路层协议。在帧经过路由到达另一个网络的时候,路由会读取帧的信息,并改写以发送到另一个网络。所以路由器就像是在两个社区都有分支的邮局。一个社区的邮差将信送到本社区的邮局分支,而邮局会通过自己在另一个地区的分支将信转交给另一个社区的邮差手中,并由另一个社区的邮差最终送到目的地。 通过路由连接的WiFi和以太网 整个通信过程如下: WiFi上的计算机1 -> 路由WiFi接口 ->  路由以太网接口 -> 以太网上的计算机2 (蓝色表示WiFi网络,绿色表示以太网络) 在链路层,我们的一个帧中只能记录SRC和DST两个地址。而上面的过程需要经过四个地址 (计算机1,WiFi接口,以太网接口,计算机2)。显然,仅仅靠链路层协议无法满足我们的需要。由于链路层协议开发在先,我们无法改动链路层协议,只能在链路层的数据(payload),也就是信纸内部下功夫了。IP协议应运而生。 计算机1,路由器和计算机2都要懂得IP协议。 当计算机1写信的时候,会在信纸的开头写上这封信的出发地址和最终到达地址 (而不是在信封上),而在信封上写上要送往邮局。WiFi网的邮差将信送往邮局。 在邮局,信被打开,邮局工作人员看到最终地址,于是将信包装在一个新的信封中,写上出发地为邮局,到达地为计算机2,并交给以太网的邮差,由以太网的邮差送往计算机2。 (IP协议还要求写如诸如校验等信息,交通状况等信息,以保护通信的稳定性。) 转交给邮局 在链路层,邮差只负责在本社区送信,所以信封上的地址总是“第一条街第三座房子”或者说“中心十字路口拐角的小房子”这样一些本地人才了解的地址描述,这给邮局的工作带来不便。所以邮局要求,信纸上写的地址必须是一个符合官方规定的“邮编”,也就是IP地址。这个地址为世界上的每一个房子编号(邮编)。当信件送到邮局的时候,邮局根据邮编,就能查到对应的地址描述,从而能顺利改写信封上的信息。 每个邮局一般连接多个社区,而一个社区也可以有多个邮局,分别通往不同的社区。有时候一封信要通过多个邮局转交,才能最终到达目的地,这个过程叫做route。邮局将分离的局域网络连接成了internet,并最终构成了覆盖全球的互联网。 传输层(transport layer) 上面的三层协议让不同的计算机之间可以通信。但计算机中实际上有许多个进程,每个进程都可能有通信的需求。这就好像一所房子里住了好几个人(进程),如何让信精确的送到某个人手里呢?遵照之前相同的逻辑,我们需要在信纸上写上新的信息,比如收信人的姓名,才可能让信送到。所以,传输层就是在信纸的空白上写上新的“收信人”信息。每一所房子会配备一个管理员(传输层协议)。管理员从邮差手中接过信,会根据“收信人”,将信送给房子中的某个人。 管理员 传输层协议,比如TCP和UDP,使用端口号(port number)来识别收信人(某个进程)。在写信的时候,我们写上目的地的端口。当信到达目的地的管理员手中,他会根据传输层协议,识别端口号,将信送给不同的人。 TCP和UDP协议是两种不同的传输层协议。UDP协议类似于我们的信件交流过程。TCP协议则好像两个情人间的频繁通信。一个小情人要表达的感情太多,以致于连续写了好几封信。而另一方必须将这些信按顺序排列起来,才能看明白全部的意思。TCP协议还有控制网络交通等功能。 应用层(application layer) 通过上面的几层协议,我们已经可以在任意两个人(进程)之间进行通信。然而每个人实际上从事的是不同的行业。有的人是律师,有的人外交官。比如说律师之间的通信,会用严格的律师术语,以免产生纠纷。再比如外交官之间的通信,必须符合一定的外交格式,以免发生外交误会。再比如间谍通过暗号来传递加密信息。应用层协议是对信件内容进一步的用语规范。应用层的协议包括用于Web浏览的HTTP协议,用于传输文件的FTP协议,用于Email的IMAP等等。   总结 总过网络分层,我们从原始的0/1序列抽象出 : 本地地址(邮差)、邮编(邮局)、收信人(管理员)、收信人行业(用语规范) 这些概念。这些概念最终允许互联网上的分布于两台计算机的两个进程相互通信。 写信人必须按照各层的协议,封装好整个信封 (encapsulation); 而收信人则按照相反的顺序,来拆开这个信封。整个过程是可读信息 -> 二进制 -> 可读信息。计算机只能理解和传输0/1序列,而计算机的用户则总是输入和输出可读信息。 网络协议保证了可读信息在整个转换和传输过程中的完整性。 计算机协议本身还有更多的细节需要深入。这篇文章只是从分层的角度描述各个层次所实现的功能。

谈谈网络API

谈谈网络API

2年前 (2015-06-27) 浏览: 187 评论: 0

尤其是微信公众平台的流行以来,网络API越来越流行。没有任何技术和资源的互联网爱好者,都可以借助网络上免费、开放的API搭建自己的公众号,而且功能也可以相当强大,比如查天气、查股票、查火车票、聊天讲笑话、查IP、手机归属地……当然,网络API的使用不仅仅局限于微信开发,还可以适用于安卓等移动端软件开发。 很多软件都有天气查询功能,但并不是所有的天气软件开发者“家”里都有天气卫星和地面观测站;很多软件都有根据用户所处位置提供有针对性的服务:比如你想用饿了么点一份快餐,它能根据你的位置找到你附近的餐厅;你用美团买附近电影院的观影票,现在的问题是:你觉得饿了么和美团会开发一套定位加地图的系统吗?现在国内比较知名的地图应用有高德地图和百度地图,两者提供了定位、导航的API和相关开发者SDK和文档。 个人认为,网络开放接口很大一部分程度推动软件应用尤其是移动应用的繁荣。借助天气API,我们可以很简单地实现制作一个查天气的APP,然后辅以百度地图API可以很简单地知道你当前所处地方的天气了。而这些,如果没有诸多的开放平台,没钱没技术的开发者是无法实现的,这也很大地降低了开发者的成本和门槛。 网络上API有免费的,比如地图定位、IP、手机归属地;也有收费的,比如你要为你的网站登录加入短信验证码认证,也有的是在一定使用次数内免费,在使用次数超出免费套餐外的需要收费。 就我所见的,目前互联网免费的网络API很多,大部分是JSON和webservice,还有一些其它编程语言的开发平台SDK。 你有没有想过为自己的数据搭建个API? 在之前的文章依托虚拟主机为自制APP提供软件更新服务中我介绍了怎样用PHP访问数据库返回JSON格式字符串,从而搭建自己的网络API;在文章我介绍了使用java+webservice连接数据库发布数据和实现查询、增删数据操作。 极客人最近就想到了学校教务系统就可以为学生查询成绩搭建一个API,一卡通中心可以提供一个查询账单的API,学校的跑操系统提供查询跑操次数,这些都是分分钟可以实现的问题,不知道学校不尝试一下呢,然后交由第三方实现相关APP。当然官方不开放API,并不代表第三方没有办法,办法是有的但是很暴力,那就是模拟用户登录、抓取页面然后解析数据提供给用户。但这样做实在是麻烦,也耗费程序猿的脑力。

java实现webservice+MySQl

java实现webservice+MySQl

2年前 (2015-06-26) 浏览: 1864 评论: 0

关于webservice 由于之前写过JAVA和PHP的JSON以及JMI的网络服务,这次在使用webservice完成管理待办事项自然就联想到它们。JAVA和PHP JSON、JMI、webservice三者共同之处是可以提供服务器的资源共享。 Web Service具有跨平台性,可以在不同设备、不同编程语言中进行调用,所以它的应用范围应该要比RMI更广 基于MySQl数据库查询的webservice实现管理待办事项列表 运行截图 添加用户: 添加事项: 查询事项: 删除事项: 清空事项: 服务器端代码是怎么实现的 下面介绍一下是怎样实现上述功能的服务端代码:。 我的服务端主要有四个类: 数据库连接及方法接口TodoListInterDbFace、数据库连接及方法实现类TodolistDb及方法实现类以及webservice接口TodoListServerInterface、Webservice实现类TodoListServer。   下面是示意图: 客户端代码是怎么实现的 wsimport -keep http://127.0.0.1:8002/webservice/TodoList?wsdl解析WSDL后: 创建TodoListClient类main方法为:   对于菜单的实现原理请参考我的博客文章:http://wangbaiyuan.cn/java-rmi-6-making-the-command-line-navigation-menu.html

用域名解析到IPV6连接远程桌面

用域名解析到IPV6连接远程桌面

2年前 (2015-06-19) 浏览: 427 评论: 2

一般来说,远程桌面一般应用于服务器管理和局域网内普通计算机的远程管理。其实远程桌面并不仅仅限于局域网内,只要IP可达,我们的计算机都可以在其它计算机上远程桌面连接。由于IPV4地址不够用的问题,通过NAT转换的IPv4并不能让我们找到互联网任何一台主机,但是无穷无尽的IPv6却完美解决这一问题。由于有些学校,比如极客人,连接校园网需要用锐捷进行账号认证才能访问局域网内的IPv4计算机。所以在学校机房远程桌面自己的计算机时,常常遇到锐捷没有登录而导致无法连接宿舍电脑的问题。但是,如果通过IPV6访问就不用考虑这一问题了,当然,你网线没插我也没办法。 IPV6连接远程桌面的方法和IPv4没有任何区别,怎样用远程桌面控制自己的电脑,在我的前一篇文章有介绍: 第一步,获取本机IPV6地址并域名解析 IPV6的好处是地址长(128位二进制),所以数量多到可以标记地球上任何一粒沙子,它的缺点也正是地址长——记不住。所以远程桌面管理你的计算机肯定不能使用IPv6地址了,用域名解析的方式是必然的选择。 IPv6域名解析和IPv4无异,你只需要在域名管理中添加一个AAAA记录即可。 具体怎么获取本机的IPv6地址进行IPv6域名解析请参照:http://wangbaiyuan.cn/setting-up-ipv6-ftp-and-web-server-implements-cross-school-access.html#title-0 比如极客人解析的域名就是:ipv6.wangbaiyuan.cn。 第二步,IPV6域名连接远程桌面 打开远程桌面输入你解析的IPV6域名即可: 问:锐捷没登或者断了,连不了远程怎么办? 1.学校机房支持IPV6就用IPV6登录你的计算机; 2.学校机房不支持IPV6就用别人已经登上锐捷的同学电脑连一下他的计算机,然后远程他的电脑、通过IPv6来远程连接你的计算机,然后登上你的锐捷,用学校计算机IPv4连接你的电脑。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

切换登录

注册