作者归档:superaj

东芝WT8平板电脑重装系统不识别U盘的解决方案

东芝的小平板吃灰已经一年多了,最近正巧赶上WIN10也稳定了,就想着换一下10的系统,用自带的维护工具格式化后发现平板不能识别硬盘也不能识别U盘,找遍网络也没有找到一个合适的解决方案,最后还是自己解决了问题,以下是步骤

1.准备一个 USB键盘鼠标、USB hub、otg线、U盘(8G以上,因为要制作一个镜像包)
2.把WT8充满电,一定要充满,安装系统还是很耗电的,当然有一个供电线带OTG的最好
3.下载win10预览版的官方镜像包 http://windows.microsoft.com/zh-cn/windows/preview-iso
3.制作U盘镜像包,这里我直接用UltraISO_DWJ 刻录下载好的镜像包
1>文件->打开->选择镜像包
2>启动->写入硬盘映像
3>写入方式选择”USB-HDD” -> 格式化 ->写入
4.连接键盘鼠标U盘,按着 “开机键” + “音量+键”启动wt8 ,进入BIOS,关闭Secure Boot ->save保存
5.按着 “开机键” + “音量+键”启动wt8选择第二项,如果这里没有显示你的U盘,反复开机多次就会出现
6.正常格式化/安装系统

 

复仇者联盟2:奥创世纪 强剧透

影片开始
复仇者联盟强势集结,去捣毁九头蛇的一个基地,那里有洛基的权杖
(九头蛇里 有最新的神盾局特工 出现的 李斯特博士)
各位超级英雄各显神通
这一段很精彩 而且互相之间有配合
美国队长整体调度
钢铁侠天上飞直捣基地
鹰眼和黑寡妇 专门负责清场
绿巨人一个人灭掉一片
雷神和美国队长还有神一样的配合 用锤子锤盾牌 造成强大的声波 震晕一片
九头蛇走投无语 不得不放出秘密武器
绯红女巫(控制人的思维) 和 快银(速度超快)
快银重创鹰眼
钢铁侠潜入九头蛇总部基地地下的时候
发现了九头蛇的秘密
原来他们一直在利用洛基的权杖来制造武器
并且 囤积了上一部 纽约之战 遗留下来的很多外星武器
包括那个巨大的空中机械怪物
这时候,绯红女巫来到钢铁侠身后 控制了他的思维
让他产生了幻觉
钢铁侠的眼前,是一副地球毁灭的景象
他的朋友们全部都倒下了 美国队长临终前责备他
为什么不努力救他们

绯红女巫看出了钢铁侠的恐惧 准备利用这种恐惧
就暂停了对他心灵的控制
离开了他们
复仇者攻克九头蛇的基地 取到了洛基的神杖 下载了九头蛇基地的资料
回到了纽约
告一段落

英雄们回到纽约开庆功会

鹰眼在养伤 斯塔克手下一个韩国妹子科学家 研发了一个摇篮项目
可以孵化人体组织 让组织再生 鹰眼很快恢复

钢铁侠和绿巨人提到了他一直的想法
由于心底对外星科技的恐惧 准备制造他的钢铁军团 给他的机器人意识
让他们能守卫地球 之前一直有瓶颈 就是没有足够的能量
现在有了洛基的神杖,有了能量 希望能够有绿巨人的知识技能帮忙
绿巨人答应了
这个项目就是 奥创

在超级英雄们庆功时,奥创觉醒了
它有了自己的意识 看管他的是钢铁侠的人工智能系统 贾维斯

贾维斯告诉了奥创他的使命是守卫地球的和平
奥创拒绝了 所它要给地球带来新的和平 永久的和平 一个新的世界
必须让人类灭绝
它杀死了贾维斯 控制了钢铁侠仓库里的各个机器人

然后直接去庆功现场和超级英雄们打了一架 让超级英雄们知道他的理想是消灭复仇者联盟这个绊脚石
由于目前比较虚弱 没什么装备 所以很快被灭掉了 不过由于是人工智能 而且已经全球联网 存在于网络世界 所以可以很快再生 (云硬盘么)
之后超级英雄对奥创项目有了分歧
美国队长 和 雷神不同意这么做

这里有一个有趣的情节
大家在喝酒 雷神把他的大锤放在桌子上 问你们谁可以举起来……
大家各种试 这是属于神的 当然举不起来
钢铁侠 绿巨人 黑寡妇 鹰眼 各种失败 钢铁侠用他的机械手臂都没有用
这个时候 美国队长来了 美国队长居然举起了一丝……. 雷神脸都绿了…….
还有 黑寡妇和绿巨人在调情
黑寡妇说喜欢一个 平时正常 但内心是真正超强英雄的男人
美国队长劝绿巨人珍惜黑寡妇

继续
奥创来到了九头蛇破败的基地
拉拢 绯红女巫 和 快银入伙
快银说了他们和钢铁侠公司斯塔克的仇恨 同意入伙
绯红女巫说她读不到奥创的思想
奥创需要寻找新的材料打造自己的躯体 想到了当时制造美国队长的盾牌的那个金属
准备去找私人军火商

在找军火商寻求金属的时候 遇到了复仇者联盟的阻击
不过 绯红女巫登场 利用自己的超能力 让超级英雄们都陷入了幻觉
雷神第一个中 他还提醒别人说绯红女巫准备控制他们的思想
要他们小心
他自己是神 不会中心灵控制 结果第一个中
在幻觉里 他看到了自己神域的毁灭 他的忠心耿耿的部下
在责备他
美国队长也中了 他看到了他深爱的特工卡特 说战争已经结束 邀请他跳最后一支舞
黑寡妇中了 她看到了小时候在前苏联当克格勃特工训练的场景
为了更好的执行任务 她被绝育 不能生育
准备控制鹰眼时 鹰眼说他曾被控制过 打伤了绯红女巫
绯红女巫接着去控制绿巨人

绿巨人彻底发狂了 给所在城市造成了巨大的破坏
钢铁侠不得不出动

钢铁侠对绿巨人 一场超级精彩的大战

钢铁侠专门研发一个反浩克装甲来对付绿巨人

有点像小时候的动画片 圣斗士和六神合体 可以不断的召唤各种盔甲进行更新和修复 盔甲储存于太空的卫星中
钢铁侠盔甲被绿巨人不断的撕毁 又不断的补充
这一幕很精彩

绿巨人终于被控制了下来
经过这一战
复仇者联盟要么精神 要么身体 都受到重创
大家去了鹰眼的安全屋 疗伤

其实就是鹰眼的家
像个世外桃源般静谧
原来鹰眼一直有妻子 儿女 老婆还又怀了一个
他们在鹰眼家安顿
雷神一直在思考自己在幻觉中看到的东西 想要自己去寻找答案 离开了
钢铁侠和美国队长发生了争执
黑寡妇再次向绿巨人表白
经过和钢铁侠的大战 基本摧毁了大半个城市 引起了太多的恐慌 绿巨人深深的自责
觉得自己不适合黑寡妇 不适合任何人

神盾局前局长 弗瑞这个时候出场了
劝大家要团结 研究怎么对付奥创
这个时候 绿巨人意识到 奥创需要的是不断进化
就想起了 斯塔克旗下 那个韩国科学家的摇篮项目 可以让人再生 给予奥创人类的思维和体格

果然 此时奥创控制了韩国科学家 让他把自己和一个重金属的躯体还有洛基的神杖结合到一起 形成新的进化
超级英雄么再次出马去争夺那个摇篮
如果摇篮里的躯体和奥创合体 就天下无敌了

在奥创和摇篮合体的过程中 慢慢的有了人类的意识 绯红女巫读出了他的思维
原来 他不是要世界和平 他想要的是毁灭全人类
他才是新地球的主宰
绯红女巫和快银意识到自己犯了很大的错误 决定帮助复仇者联盟

这里又是一场大战
美国队长 鹰眼 黑寡妇配合默契
抢回了摇篮里的躯体 让奥创没有得逞
不过黑寡妇被奥创夺走
摇篮里的躯体被送回了斯塔克总部

钢铁侠看到摇篮里的躯体再次犹豫
再次劝说绿巨人帮他完成他的项目 他们要再找一个人工智能打击奥创
目前有了躯体 躯体里有洛基神杖里的心灵宝石 (宇宙六大宝石之一)
钢铁侠修复了管家系统贾维斯的人工智能
只要结合起来就可以
快要成功的时候 美国队长 绯红女巫 快银回来阻止了他们
快银超速切断了所有的电力供应
这时候雷神出马
一大锤的电力让项目重新启动
新的人物诞生
叫做幻视
钢铁侠创造的 奥创 创造的 幻视(尼玛)
可以空中飞行 像神一样 头顶有一颗宇宙六大宝石之一的心灵宝石
甚至可以举起雷神的锤子
他说他站在生命一边 决定毁掉奥创
大家再次集结 出发去东欧 之前九头蛇的总部消灭奥创

又是一场大战

场面恢弘 新加坡上映的是IMAX 3D 比较震撼
奥创的目的是把整个东欧小镇升起来 像一个大型陨石一样 砸向地球 毁灭地球

小镇上升的过程中 上面的居民没办法逃离
关键时候 神盾局的超级航空母舰出马
前任局长弗瑞带着 特工希尔 (现在在斯塔克任职)
拯救了不断上升的小城镇中的居民

幻世摧毁了奥创的人工智能网络 让他不能在无限复制
绯红女巫和快银 加上复仇者联盟们摧毁了奥创的军团
快银死了 绯红女巫崩溃
钢铁侠再次干最重的活 和雷神联手击毁了升到空中的小镇

大结局
最后一个奥创被幻世毁灭
复仇者联盟带领大家安全撤离
绿巨人坐在了一家昆式隐形飞机上 拒绝了黑寡妇 选择了消失
雷神回到了神域 相信幻世会守护好心灵宝石
复仇者联盟有了新的基地 在纽约
钢铁侠也去休假了
鹰眼和家人团聚
留下了对绿巨人无限思念的黑寡妇和美国队长训练新的复仇者联盟队员
他们是 钢铁侠系列出现的詹姆斯·罗迪上校
美国队长2出现的猎鹰 山姆 威尔逊
人造人造人 幻视
绯红女巫

结束

总结:
精彩的场面
1.开头复仇者联盟摧毁九头蛇
2.钢铁侠大战绿巨人
3.美国队长 黑寡妇 鹰眼大战奥创
4.复仇者联盟对抗奥创军团
5. 神盾局出面营救

开场的九头蛇任务出现在了最新的神盾局特工里 李斯特博士
绿巨人离开黑寡妇
复仇者联盟有了新成员
结尾的彩蛋是灭霸
灭霸戴上了无限手套开口道:看来我要亲自出马了
灭霸在复仇者联盟1 银河特工队里都有出现

好了 谢谢大家
希望大家观影愉快!

NIKE running 这些依赖谷歌服务的无法安装解决方案

一、    ROOT(详细各位都已经很熟悉,其实网上也很多,此次不表)

二、    拷贝以下4个文件到指定位置并设置相应的权限

1、      GoogleServicesFramework.apk (用于添加谷歌账户)

拷贝路径:/system/app

2、       NetworkLocation.apk (用于谷歌地图AGPS定位)

拷贝路径:/system/app

3、      com.google.android.maps.jar

拷贝路径:/system/framework/com.google.android.maps.jar

4、      com.google.android.maps.xml

拷贝路径: /system/etc/permissi**/com.google.android.maps.xml

以上4个文件放到相应位置,没有文件夹的,请自己建立、全部文件权限都改为644,就是竖着3趟,左边全选,中间最上面选上,右边全空

完成后,退出,重启 。

点此下载 谷歌服务

易语言 取SEO信息

.版本 2
.支持库 RegEx
.支持库 internet
.支持库 iext
.子程序 _按钮1_被单击
.局部变量 网页文本, 文本型
.局部变量 表达式, 正则表达式
.局部变量 搜索结果, 搜索结果, , "0"
.局部变量 计次变量, 整数型
.局部变量 文本, 文本型
网页文本 = 到文本 (HTTP读文件 (编辑框1.内容))
网页文本 = 子文本替换 (网页文本, #引号, “'”, 0, , 真)
网页文本 = 到小写 (网页文本)
透明标签1.标题 = 取中间文 (网页文本, “<title>”, “</title>”)
表达式.创建 (“meta (.*?)>”, 假)
搜索结果 = 表达式.搜索全部 (网页文本)
.计次循环首 (取数组成员数 (搜索结果), 计次变量)
    文本 = 搜索结果 [计次变量].取子匹配文本 (网页文本, 1, )
    .判断开始 (寻找文本 (文本, “name='keywords'”, 1, 假) > 0)
        透明标签2.标题 = 取中间文 (文本, “content='”, “'”)
    .判断 (寻找文本 (文本, “name='description'”, 1, 假) > 0)
        透明标签3.标题 = 取中间文 (文本, “content='”, “'”)
    .默认
    .判断结束
.计次循环尾 ()
.子程序 取中间文, 文本型
.参数 全文, 文本型
.参数 左文, 文本型
.参数 右文, 文本型
.局部变量 位置, 整数型
.局部变量 总长度, 整数型
.局部变量 文本, 文本型
总长度 = 取文本长度 (全文)
位置 = 寻找文本 (全文, 左文, , 假)
.如果真 (位置 < 0)
    返回 (“”)
.如果真结束
位置 = 位置 + 取文本长度 (左文)
文本 = 取文本中间 (全文, 位置, 总长度)
总长度 = 取文本长度 (文本)
位置 = 寻找文本 (文本, 右文, , 假) - 1
.如果真 (位置 < 0)
    返回 (“”)
.如果真结束
文本 = 取文本中间 (文本, 1, 位置)
返回 (文本)

 

PHP循环数组

//转换数组
function jiexiArr2($array) 
{ 
    static $result_array=array(); 
    foreach($array as $value) 
    { 
        if(is_array($value)) 
        { 
			if(isset($value['url'])){
				$result_array[]=$value; 
			}else{
				jiexiArr2($value); 
			}
        }
    } 
    return $result_array; 
}

 

function array_multi2array($array) 
{ 
    static $result_array=array(); 
    foreach($array as $value) 
    { 
        if(is_array($value)) 
        { 
            array_multi2array($value); 
        } 
        else  
            $result_array[]=$value; 
    } 
    return $result_array; 
}

 

VBS脚本实现自动按键盘的某个键

Set objShell = CreateObject(“Wscript.Shell”)
do
WScript.Sleep 3000
objShell.SendKeys “{F5}”
WScript.Sleep 3000
objShell.SendKeys “{F5}”
loop

使用 SendKeys 方法可以将键击发送到无自动化界面的应用程序中。多数键盘字符都可用一个键击表示。某些键盘字符由多个键击组合而成(例如,CTRL+SHIFT+HOME)。要发送单个键盘字符,请将字符本身作为 string 参数发送。例如,要发送字母 x,则请发送 string 参数 “x”。

可使用 SendKeys 同时发送多个键击。为此,可将每个键击按顺序排列在一起,以此来创建表示一系列键击的复合字符串参数。例如,要发送键击 a、b 和 c,则需要发送字符串参数 “abc” 。SendKeys 方法将某些字符用作字符的修饰符(而不使用其本身的含义)。这组特殊的字符可包括圆括号、中括号、大括号,以及:

加号 “+”
插入记号 “^”
百分号 “%”
和“非”符号 “~”

用大括号 “{}” 括起这些字符可以发送它们。例如,要发送加号,请使用字符串参数 “{+}”。SendKeys中使用的中括号 “[ ]” 无任何特殊含义,但是必须把它们括在大括号中,以便容纳确实要赋予其特殊含义的应用程序(例如,对于动态数据交换 (DDE) 就是这样)。

要发送左中括号字符,请发送字符串参数 “{[}”;要发送右中括号字符,请发送字符串参数 “{]}”。
要发送左大括号字符,请发送字符串参数 “{{}”;要发送右大括号字符,请发送字符串参数 “{}}”。

某些键击不生成字符(如 ENTER 和 TAB)。某些键击表示操作(如 BACKSPACE 和 BREAK)。要发送这些类型的键击,请发送下表中列出的参数:

空格键 ” ”
退格键 {BACKSPACE} 或 {BS} 或 {BKSP}
BREAK {BREAK}
DELETE {DELETE} 或 {DEL}
向下键 {DOWN}
向上键 {UP}
向左键 {LEFT}
向右键 {RIGHT}
END {END}
ENTER {ENTER} 或 ~
ESC {ESC}
TAB {TAB}
CAPS LOCK {CAPSLOCK}
HELP {HELP}
HOME {HOME}
INSERT {INSERT} 或 {INS}
NUM LOCK {NUMLOCK}
PAGE DOWN {PGDN}
PAGE UP {PGUP}
PRINT SCREEN {PRTSC}
SCROLL LOCK {SCROLLLOCK}

F1 {F1}
F2 {F2}
F3 {F3}
F4 {F4}
F5 {F5}
F6 {F6}
F7 {F7}
F8 {F8}
F9 {F9}
F10 {F10}
F11 {F11}
F12 {F12}

要发送由常规键击和 SHIFT、CTRL 或 ALT 组合而成的键盘字符,请创建表示该键击组合的复合字符串参数。可通过在常规键击之前添加一个或多个以下特殊字符来完成上述操作:

SHIFT +
CTRL ^
ALT %

注意:这样使用时,不用大括号括起这些特殊字符。
要指定在按下多个其他键时,按下 SHIFT、CTRL 和 ALT 的组合,请创建复合字符串参数,用括号括起其中的组合键。例如,要发送的组合键指定:

如果在按 e 和 c 的同时按 SHIFT 键,则发送字符串参数 “+(ec)”。
如果在按 e 时只按 c(而不按 SHIFT),则发送字符串参数 “+ec”。
可使用 SendKeys 方法发送一种在一行内重复按键的键击。为此,要创建复合字符串参数,以指定要重复的键击,并在其后指定重复次数。可使用 {键击 数字} 形式的复合字符串参数来完成上述操作。例如,如果要发送 10 次 “x”,则需要发送字符串参数 “{x 10}”。请确保在键击和数字之间有一个空格。

注意:只可以发送重复按一个键的键击。例如,可以发送 10 次 “x”,但不可发送 10 次 “Ctrl+x”。
注意:不能向应用程序发送 PRINT SCREEN 键 {PRTSC}。

例子1:关机脚本 (模拟按键为:Ctrl + Esc、u、u )

把以下代码复制至记事本,另存为 off.vbs

set WshShell = CreateObject(“WScript.Shell”)
WshShell.SendKeys “^{ESC}uu”

例子2:重启脚本 (模拟按键为:Ctrl + Esc、u、r )

把以下代码复制至记事本,另存为 reboot.vbs

set WshShell = CreateObject(“WScript.Shell”)
WshShell.SendKeys “^{ESC}ur”

例子3:切换输入法 (模拟同时按下:Shift Ctrl )

set WshShell = CreateObject(“WScript.Shell”)
WshShell.SendKeys “+(^)”

例子4:输入 cn-dos.net! 至记事本并保存为 CnDos.txt

Dim WshShell
Set WshShell=WScript.CreateObject(“WScript.Shell”)
WshShell.Run “notepad”
WScript.Sleep 1500
WshShell.AppActivate “无标题 – 记事本”
WshShell.SendKeys “c”
WScript.Sleep 200
WshShell.SendKeys “n”
WScript.Sleep 200
WshShell.SendKeys “-”
WScript.Sleep 200
WshShell.SendKeys “d”
WScript.Sleep 200
WshShell.SendKeys “o”
WScript.Sleep 200
WshShell.SendKeys “s”
WScript.Sleep 200
WshShell.SendKeys “.”
WScript.Sleep 200
WshShell.SendKeys “n”
WScript.Sleep 200
WshShell.SendKeys “e”
WScript.Sleep 200
WshShell.SendKeys “t”
WScript.Sleep 200
WshShell.SendKeys “!”
WScript.Sleep 200
WshShell.SendKeys “%FS”
WScript.Sleep 500
WshShell.SendKeys “C”
WScript.Sleep 200
WshShell.SendKeys “n”
WScript.Sleep 200
WshShell.SendKeys “D”
WScript.Sleep 200
WshShell.SendKeys “o”
WScript.Sleep 200
WshShell.SendKeys “s”
WScript.Sleep 200
WshShell.SendKeys “%S”
WScript.Sleep 500
WshShell.SendKeys “%FX”

例子5:自动定时存盘的记事本(此脚本来自网上)

‘第一部分:定义变量和对象
Dim WshShell, AutoSaveTime, TXTFileName
AutoSaveTime=(1000*60*1) ‘自动存盘时间为1分钟
Set WshShell=WScript.CreateObject(“WScript.Shell”)
TXTFileName=InputBox(“给文本起名(不能用中文和纯数字):”)

‘第二部分:打开并激活记事本
WshShell.Run “notepad”
WScript.Sleep 200
WshShell.AppActivate “无标题 – 记事本”

‘第三部分:用输入的文件名存盘
WshShell.SendKeys “^s”
WScript.Sleep 300
WshShell.SendKeys TXTFileName
WScript.Sleep 300
WshShell.SendKeys “%s”
WScript.Sleep AutoSaveTime

‘第四部分:自动定时存盘
While WshShell.AppActivate (TXTFileName)=True
WshShell.SendKeys “^s”
WScript.Sleep AutoSaveTime
Wend
WScript.Quit

例子:

set objShell = CreateObject(“Wscript.Shell”)
strCommandLine = “psetup755281.exe” ‘启动安装程序
objShell.Run(strCommandLine)
set WshShell = CreateObject(“WScript.Shell”)
WScript.Sleep 2000 ‘延时3秒
WshShell.SendKeys “{ENTER}” ‘模拟按下回车键执行下一步
WScript.Sleep 300 ‘延时3秒
WshShell.SendKeys “{ENTER}” ‘模拟按下回车键执行下一步
WScript.Sleep 300 ‘延时3秒
WshShell.SendKeys “{ENTER}” ‘模拟按下回车键执行下一步
WScript.Sleep 5200 ‘延时3秒
WshShell.SendKeys “{ENTER}” ‘模拟按下回车键执行下一步
WScript.Sleep 300 ‘延时3秒
WshShell.SendKeys “{ENTER}” ‘模拟按下回车键执行下一步
WScript.Sleep 300 ‘延时3秒
WshShell.SendKeys “{ENTER}” ‘模拟按下回车键执行下一步
WScript.Sleep 200
WshShell.SendKeys ” ” ‘模拟按下空格键去除安装百度超级搜霸一行前的√号
WScript.Sleep 100
WshShell.SendKeys “{TAB}” ‘模拟按下 Tab 键选择安装项目
WScript.Sleep 200
WshShell.SendKeys ” ” ‘模拟按下空格键去除安装百度超级搜霸一行前的√号
WScript.Sleep 200 ‘延时0.3秒
WshShell.SendKeys “f” ‘模拟按下 F键同意协议

curl使用详解/curl手册

curl 是使用URL语法的传送文件工具,支持FTP、FTPS、HTTP HTPPS SCP SFTP TFTP TELNET DICT FILE和LDAP。curl 支持SSL证书、HTTP POST、HTTP PUT 、FTP 上传,kerberos、基于HTT格式的上传、代理、cookie、用户+口令证明、文件传送恢复、http代理通道和大量其他有用的技巧。详见参考手册

阅读全文 ……

PHP使用curl伪造IP地址和header信息

curl虽然功能强大,但是只能伪造$_SERVER[“HTTP_X_FORWARDED_FOR”],对于大多数IP地址检测程序来说,$_SERVER[“REMOTE_ADDR”]很难被伪造:

首先是client.php的代码

$headers['CLIENT-IP'] = '202.103.229.40';  
$headers['X-FORWARDED-FOR'] = '202.103.229.40'; 

$headerArr = array();  
foreach( $headers as $n => $v ) {  
    $headerArr[] = $n .':' . $v;   
}

ob_start();
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, "http://localhost/curl/server.php");
curl_setopt ($ch, CURLOPT_HTTPHEADER , $headerArr );  //构造IP
curl_setopt ($ch, CURLOPT_REFERER, "http://www.163.com/ ");   //构造来路
curl_setopt( $ch, CURLOPT_HEADER, 1);

curl_exec($ch);
curl_close ($ch);
$out = ob_get_contents();
ob_clean();

echo $out;

然后是server.php

function GetIP(){
    if(!emptyempty($_SERVER["HTTP_CLIENT_IP"]))
        $cip = $_SERVER["HTTP_CLIENT_IP"];
    else if(!emptyempty($_SERVER["HTTP_X_FORWARDED_FOR"]))
        $cip = $_SERVER["HTTP_X_FORWARDED_FOR"];
    else if(!emptyempty($_SERVER["REMOTE_ADDR"]))
        $cip = $_SERVER["REMOTE_ADDR"];
    else
    $cip = "无法获取!";
    return $cip;
}
echo "<br>访问IP: ".GetIP()."<br>";
echo "<br>访问来路: ".$_SERVER["HTTP_REFERER"];

 

php模拟post提交数据

<?php

//以程序登陆一个论坛登录为例
function bbslogin($user_login, $password, $host, $port = "80") {
	//需要提交的post数据
	$argv = array('cookie' => array('user_login' => $user_login, 'password' => $password, '_wp_http_referer' => '/bbpress/', 're' => '', 'remember' => true));
	foreach ($argv['cookie'] as $key => $value) {
		$params[] = $key . '=' . $value;
	}
	$params = implode('&', $params);
	$header = "POST /bbpress/bb-login.php HTTP/1.1\r\n";
	$header .= "Host:$host:$port\r\n";
	$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
	$header .= "Content-Length: " . strlen($params) . "\r\n";
	$header .= "Connection: Close\r\n\r\n";
	$header .= $params;
	$fp = fsockopen($host, $port);
	fputs($fp, $header);
	while (!feof($fp)) {
		$str = fgets($fp);
		//以下是自己的逻辑代码,这里主要是模拟cookie,可用来同步登陆
		if (!(strpos($str, "Set-Cookie:") === false)) {
			$tmparray = explode(" ", $str);
			$cookiearray = explode("=", $tmparray[1]);
			$cookiepaths = explode("=", $tmparray[6]);
			$cookiename = urldecode($cookiearray[0]);
			$cookievalue = urldecode(substr($cookiearray[1], 0, strlen($cookiearray[1]) - 1));
			$cookietime = time() + 3600 * 24 * 7;
			$cookiepath = urldecode(substr($cookiepaths[1], 0, strlen($cookiepaths[1]) - 1));
			setcookie($cookiename, $cookievalue, $cookietime, $cookiepath);
		}
	}
	fclose($fp);
}
?>

 

<?php 
// PHP POST数据的三种方法
// php有三种方法可以post数据,分别为Curl、socket、file_get_contents:

/**
 * Socket版本
 * 使用方法:
 * $post_string = "app=socket&version=beta";
 * request_by_socket('facebook.cn','/restServer.php',$post_string);
 */
function request_by_socket($remote_server, $remote_path, $post_string, $port = 80, $timeout = 30)
{
	$socket = fsockopen($remote_server, $port, $errno, $errstr, $timeout);
	if (!$socket) die("$errstr($errno)");

	fwrite($socket, "POST $remote_path HTTP/1.0\r\n");
	fwrite($socket, "User-Agent: Socket Example\r\n");
	fwrite($socket, "HOST: $remote_server\r\n");
	fwrite($socket, "Content-type: application/x-www-form-urlencoded\r\n");
	fwrite($socket, "Content-length: " . (strlen($post_string) + 8) . '\r\n');
	fwrite($socket, "Accept:*/*\r\n");
	fwrite($socket, "\r\n");
	fwrite($socket, "mypost=$post_string\r\n");
	fwrite($socket, "\r\n");
	$header = "";
	while ($str = trim(fgets($socket, 4096))) {
		$header .= $str;
	} 
	$data = "";
	while (!feof($socket)) {
		$data .= fgets($socket, 4096);
	} 
	return $data;
} 

/**
 * Curl版本
 * 使用方法:
 * $post_string = "app=request&version=beta";
 * request_by_curl('http://facebook.cn/restServer.php',$post_string);
 */
function request_by_curl($remote_server, $post_string)
{
	$ch = curl_init();
	curl_setopt($ch, CURLOPT_URL, $remote_server);
	curl_setopt($ch, CURLOPT_POSTFIELDS, 'mypost=' . $post_string);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
	curl_setopt($ch, CURLOPT_USERAGENT, "Jimmy's CURL Example beta");
	$data = curl_exec($ch);
	curl_close($ch);
	return $data;
} 

/**
 * 其它版本
 * 使用方法:
 * $post_string = "app=request&version=beta";
 * request_by_other('http://facebook.cn/restServer.php',$post_string);
 */
function request_by_other($remote_server, $post_string)
{
	$context = array(
		'http' => array(
			'method' => 'POST',
			'header' => 'Content-type: application/x-www-form-urlencoded' .
						'\r\n'.'User-Agent : Jimmy\'s POST Example beta' .
						'\r\n'.'Content-length:' . strlen($post_string) + 8,
			'content' => 'mypost=' . $post_string)
		);
	$stream_context = stream_context_create($context);
	$data = file_get_contents($remote_server, false, $stream_context);
	return $data;
} 

?>

 

隐藏nginx apache和php的版本信息不显示

web server避免一些不必要的麻烦,可以把apache和php的版本信息不显示

隐藏 Apache 版本信息

/etc/apache2/apache2.conf 或 /etc/httpd/conf/httpd.conf

ServerTokens ProductOnly
ServerSignature Off

重启 apache
现在 http 头里面只看到:
Server: Apache

=====================

nginx

#vi nginx.conf
在http 加上 server_tokens off;

如下:

http {
……省略配置
sendfile on;
tcp_nopush on;
keepalive_timeout 65;
tcp_nodelay on;
server_tokens off;
…….省略配置
}

=======================

隐藏 PHP 版本
php.ini

expose_php On
改成
expose_php Off

重启apache后,php版本在http头中隐藏了。

详解 :

为了防止某些别有用心的家伙窥视我们的服务器,应该做些什么.
我们来看一下相关的2个参数,分别为ServerTokens和ServerSignature,通过控制这2个阀门应该就能起到一些作用,比如我们可以在配置文件中这么写:
ServerTokens Prod
ServerSignature Off

ServerTokens
用 于控制服务器是否相应来自客户端的请求,向客户端输出服务器系统类型或内置模块等重要的系统信息。在主配置文件中提供全局控制默认阀值为”Full” (ServerTokens Full),所以,如果你的Linux发行版本没有更改过这个阀值的话,所有与你的系统有关的敏感信息都会向全世界公开。比如RHEL会将该阀值更改 为”ServerTokens OS”,而Debian依然使用默认的”Full”阀值
以apache-2.0.55为例,阀值可以设定为以下某项(后面为相对应的Banner Header):
Prod >>> Server: Apache
Major >>> Server: Apache/2
Minor >>> Server: Apache/2.0
Minimal >>> Server: Apache/2.0.55
OS >>> Server: Apache/2.0.55 (Debian)
Full (or not specified) default >>> Server: Apache/2.0.55 (Debian) PHP/5.1.2-1+b1 mod_ssl/2.0.55 OpenSSL/0.9.8b

ServerSignature
控制由系统生成的页面(错误信息,mod_proxy ftp directory listing等等)的页脚中如何显示信息。

可在全局设置文件中控制,或是通过.htaccess文件控制
默认为”off”(ServerSignature Off),有些Linux发行版本可能会打开这个阀门,比如Debian在默认的虚拟主机上默认将这个阀门设置为开放
全局阀门的阀值会被虚拟主机或目录单位的配置文件中的阀值所覆盖,所以,必须确保这样的事情不应该发生
可用的阀值为下面所示:
Off (default): 不输出任何页脚信息 (如同Apache1.2以及更旧版本,用于迷惑)
On:输出一行关于版本号以及处于运行中的虚拟主机的ServerName (2.0.44之后的版本,由ServerTokens负责是否输出版本号)
EMail: 创建一个发送给ServerAdmin的”mailto”

注意*上述关于如何设置2个阀门从而尽量减少敏感信息泄露的方法,并不会使你的服务器真的更安全,如果你现在使用的版本比较旧,请务必尽快将系统升级,降低被蠕虫攻击的风险。

 

隐藏server信息

cd /usr/local/src/nginx-0.5.35/src/core/
[root@zyatt core]# cat nginx.h
/*
* Copyright (C) Igor Sysoev
*/
#ifndef _NGINX_H_INCLUDED_
#define _NGINX_H_INCLUDED_
#define NGINX_VERSION      “1.0”
#define NGINX_VER          “LPKWS/” NGINX_VERSION
#define NGINX_VAR          “LPKWS”
#define NGX_OLDPID_EXT     “.oldbin”
#endif /* _NGINX_H_INCLUDED_ */
测试效果
C:\curl-7.18.0>curl.exe -I 211.100.11.122/info.php

HTTP/1.1 200 OK
Server: LPKWS/1.0
Date: Tue, 11 Mar 2008 04:53:02 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
Keep-Alive: timeout=20
X-Powered-By: PHP/5.2.4

 

还有更彻底的编译安装

修改src/core/nginx.h

#define NGINX_VERSION “1.0.5”

#define NGINX_VER “nginx/” NGINX_VERSION

#define NGINX_VAR “NGINX”

 

修改src/http/ngx_http_header_filter_module.c48-49
static char ngx_http_server_string[] = “Server: nginx” CRLF;
static char ngx_http_server_full_string[] = “Server: nginx” CRLF;

 

修改src/http/ngx_http_special_response.c

staticu_char ngx_http_error_tail[]=”<hr><center>nginx</center>”CRLF

“</body>”CRLF

“</html>”CRLF

;

 

嘿嘿,接下来就编译安装吧!不过修改源码后还有1个地方要修改哦,Nginx的FastCGI配置文件fastcgi.conf

fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;

常用Web Server版本名称:

Microsoft-IIS
GWS或GFE
Apache

Lighttpd

 

 

 

1. Lighttpd 1.4.20
src/response.c:108 改为:
buffer_append_string_len(b, CONST_STR_LEN(“Server: jufukeji”));
输出 Header:
HTTP/1.1 404 Not Found
Content-Type: text/html
Content-Length: 345
Date: Mon, 12 Jan 2009 13:54:02 GMT
Server: jufukeji

2. Nginx 0.7.30
src/http/ngx_http_header_filter_module.c:48-49 改为:
static char ngx_http_server_string[] = “Server: jufukeji” CRLF;
static char ngx_http_server_full_string[] = “Server: jufukeji” CRLF;
输出 Header:
HTTP/1.1 200 OK
Server: jufukeji
Date: Mon, 12 Jan 2009 14:01:10 GMT
Content-Type: text/html
Content-Length: 151
Last-Modified: Mon, 12 Jan 2009 14:00:56 GMT
Connection: keep-alive
Accept-Ranges: bytes

3. Cherokee 0.11.6
cherokee/version.c:93 添加:
ret = cherokee_buffer_add_str (buf, “jufukeji”);
return ret;
输出 Header:
HTTP/1.1 200 OK
Connection: Keep-Alive
Keep-Alive: timeout=15
Date: Mon, 12 Jan 2009 14:54:39 GMT
Server: jufukeji
ETag: 496b54af=703
Last-Modified: Mon, 12 Jan 2009 14:33:19 GMT
Content-Type: text/html
Content-Length: 1795

4. Apache 2.2.11
server/core.c:2784 添加:
ap_add_version_component(pconf, “jufukeji”);
return;
输出 Header:
HTTP/1.1 200 OK
Date: Mon, 12 Jan 2009 14:28:10 GMT
Server: jufukeji
Last-Modified: Sat, 20 Nov 2004 20:16:24 GMT
ETag: “1920edd-2c-3e9564c23b600”
Accept-Ranges: bytes
Content-Length: 44
Content-Type: text/html

5. Squid 3.0 STABLE 11
src/globals.cc:58 改为:
const char *const full_appname_string = “jufukeji”;
输出 Header:
HTTP/1.0 400 Bad Request
Server: jufukeji
Mime-Version: 1.0
Date: Mon, 12 Jan 2009 15:25:15 GMT
Content-Type: text/html
Content-Length: 1553
Expires: Mon, 12 Jan 2009 15:25:15 GMT
X-Squid-Error: ERR_INVALID_URL 0
X-Cache: MISS from ‘cache.hutuworm.org’
Via: 1.0 ‘cache.hutuworm.org’ (jufukeji)
Proxy-Connection: close

6. Tomcat 6.0.18
java/org/apache/coyote/http11/Constants.java:56 和 java/org/apache/coyote/ajp/Constants.java:236 均改为:
ByteChunk.convertToBytes(“Server: jufukeji” + CRLF);
输出 Header:
HTTP/1.1 200 OK
Server: jufukeji
ETag: W/”7857-1216684872000″
Last-Modified: Tue, 22 Jul 2008 00:01:12 GMT
Content-Type: text/html
Content-Length: 7857
Date: Mon, 12 Jan 2009 16:30:44 GMT

7. JBoss 5.0.0 GA
a. tomcat/src/resources/web.xml:40 改为
jufukeji
b. 下载 JBoss Web Server 2.1.1.GA srctar (http://www.jboss.org/jbossweb/downloads/jboss-web/)
java/org/apache/coyote/http11/Constants.java:56 和 java/org/apache/coyote/ajp/Constants.java:236 均改为:
ByteChunk.convertToBytes(“Server: jufukeji” + CRLF);
将编译所得 jbossweb.jar 覆盖 JBoss 编译输出文件:
JBOSS_SRC/build/output/jboss-5.0.0.GA/server/all/deploy/jbossweb.sar/jbossweb.jar
JBOSS_SRC/build/output/jboss-5.0.0.GA/server/standard/deploy/jbossweb.sar/jbossweb.jar
JBOSS_SRC/build/output/jboss-5.0.0.GA/server/default/deploy/jbossweb.sar/jbossweb.jar
JBOSS_SRC/build/output/jboss-5.0.0.GA/server/web/deploy/jbossweb.sar/jbossweb.jar
输出 Header:
HTTP/1.1 200 OK
Server: jufukeji
X-Powered-By: jufukeji
Accept-Ranges: bytes
ETag: W/”1581-1231842222000″
Last-Modified: Tue, 13 Jan 2009 10:23:42 GMT
Content-Type: text/html
Content-Length: 1581
Date: Tue, 13 Jan 2009 10:30:42 GM