Perfil de mazhaA New AgeFotosBlogListasMás Herramientas Ayuda

Blog


    16/02/2006

    [PC_13] call him

    做 PC 以来最艰苦的一关~
    学校里边玩 PC 的人绝大多数止步于 12 关,这下算是个突破了~ \o/~~~
     
    描述一下:一个电话拨号盘的图片,中间 '5' 数字上有链接,点过去连到 /phonebook.php,页面显示出 XML 错误  faultCode: 103   faultString: XML error: no element found at line 1
    电话图片下面一行字:'phone that evil',这是在页面上看到的,实际源文件里面写的是 phone that <remote /> evil
     
    不明就里,不过 title 是 'call him',加上图片电话再加上这个 phonebook,基本想到是要找到那个 'evil' 或他的电话号码。
     
    想起上关结尾时留下的小尾巴线索: Bert is the evil ! 试着把 bert 敲入 URL,果然出现 'Yes! Bert is evil!'
    于是,解题的关键锁定在如何 call 到 bert,显然他的电话要从 phonebook.php 中得到……
     
    尝试着在 phonebook.php 后边加上参数翻来覆去的试 phonebook.php?evil=bert, phonebook.php?remote=bert, phonebook.php?bert .... 出错信息始终没有变过 :(
     
    而且我对 http 协议并不熟悉,实在没办法了,去下了个 ethereal,专门监控 http 包,察看包的内容,与此同时,用 python 的 httplib 模块写了些代码做连接测试
     

    [code 1]

     
     import httplib
     
     headers = {'Accept': '*/*',
                 'Accept-Language': 'zh-cn',
                 'Accept-Encoding': 'gzip, deflate',
                 'Host': 'www.pythonchallenge.com',
                 'Connection': 'Keep-Alive',
                 'Authorization': 'Basic aHVnZTpmaWxl'}
     
     body = '<?xml version="1.0" encoding="UTF-8" ?>\
             <remote><evil>bert</evil></remote>'
     
     hc = httplib.HTTPConnection('www.pythonchallenge.com')

     #hc.request('GET', '/pc/phonebook.php', '', headers)
     #hc.request('GET', '/pc/phonebook.php', body, headers)
     hc.request('POST', '/pc/phonebook.php', body, headers)
     
     r = hc.getresponse()
     data = r.read()
     
     print data
     

     
    刚开始使用的是 HTTP GET 方法,得到的结果与开始时一样,后来改为 POST,还是说第一行没有找到 element,于是又加了 http body 作为 element,结果不同了!显示的错误信息变成了 faultCode: 1  faultString: Unknown method
    虽然还是出错信息,但是至少不再是我看了不下一百遍的那条了。
    unknown method? 难道页面一直想要的是一个 method? 突然我脑中想起了另一个模块,xmlrpclib,这个模块前两天为了实现编程连接 space 写 blog 刚好研究过的,是专门用来通过 xml 调用远程方法的,不妨一试
     

    [code 2]

     
     import xmlrpclib
     
     sp = xmlrpclib.ServerProxy('http://www.pythonchallenge.com/pc/phonebook.php',
                                allow_none = True )
     
     print sp.system.listMethods()
     

     
    当结果输出 ['phone', 'system.listMethods', 'system.methodHelp', 'system.methodSignature', 'system.multicall'] 的时候,我这个激动啊,'phone' !看到这个方法我知道这关我就要过了!
    接着查看 phone 方法的说明和参数列表

    [code 3]

     
     print sp.system.methodHelp('phone') 
     print sp.system.methodSignature('phone') 
     

     
    得到输出: 
    Returns the phone of a person
    [['string', 'string']]
     
    哇哈哈,最后

    [code 4]

     
     print sp.phone('Bert') 
     

     
    得到电话: 555-ITALY
    输入 url,找不到页面,去掉 555- 显示: SMALL letters. -_-!
    最后一次 italy, 耶!看到了朝思暮想的第 14 关!
     

    Comentarios

    Espera...
    El comentario que has escrito es demasiado largo. Acórtalo.
    No has escrito nada. Vuelve a intentarlo.
    No se puede agregar tu comentario en este momento. Vuelve a intentarlo más tarde.
    Para agregar un comentario, necesitas permiso de tus padres. Pedir permiso
    Tus padres han desactivado los comentarios.
    No se puede eliminar tu comentario en este momento. Vuelve a intentarlo más tarde.
    Has superado el número máximo de comentarios que se puede dejar en un día. Vuelve a intentarlo en 24 horas.
    Se ha deshabilitado la capacidad de tu cuenta de dejar comentarios porque nuestros sistemas indican que podrías estar enviando correo no solicitado a otros usuarios. Si crees que tu cuenta se ha deshabilitado por error, ponte en contacto con el servicio de soporte técnico de Windows Live.
    Para terminar de dejar tu comentario, realiza la siguiente comprobación de seguridad.
    Los caracteres que escribas en la comprobación de seguridad deben coincidir con los de la imagen o el audio.

    Para agregar un comentario, inicia sesión con tu cuenta de Windows Live ID (si utilizas Hotmail, Messenger o Xbox LIVE, ya tienes una cuenta de Windows Live ID). Iniciar sesión


    ¿No tienes una cuenta de Windows Live ID? Regístrate

    Vínculos de referencia

    La dirección URL del vínculo de referencia de esta entrada es:
    http://bg5hfc.spaces.live.com/blog/cns!E67CCF4FFB0BE86!1156.trak
    Weblogs que hacen referencia a esta entrada
    • Ninguno