Python脚本不打印字符串

Python脚本不打印字符串,python,ip-camera,Python,Ip Camera,我忘记了dlink DCS-930L IP摄像头的密码。在线搜索后,我发现了一个绕过身份验证的漏洞,详情如下 我能够获得编码的配置,同时(其中包含管理员密码) 但是,我在让python脚本(对配置文件进行解码)正常工作时遇到了问题。这就是我目前所拥有的 : #/usr/bin/python #“数据”保存模糊化配置文件的内容 数据1=打开('/root/Desktop/data','r') data=data1.readlines() def脱臭剂(数据): r=[] 对于数据中的c: c=作战

我忘记了dlink DCS-930L IP摄像头的密码。在线搜索后,我发现了一个绕过身份验证的漏洞,详情如下

我能够获得编码的配置,同时(其中包含管理员密码)

但是,我在让python脚本(对配置文件进行解码)正常工作时遇到了问题。这就是我目前所拥有的 :

#/usr/bin/python
#“数据”保存模糊化配置文件的内容
数据1=打开('/root/Desktop/data','r')
data=data1.readlines()
def脱臭剂(数据):
r=[]
对于数据中的c:
c=作战需求文件(c)
c=(c+ord('y'))和0xff
c=(c^ord('Z'))和0xff
c=(c-ord('e'))和0xff
r、 附加(c)
tmp=无
i=len(r)-1
当i>=0时:
如果i==len(r)-1:
x=r[i]
tmp=((x&7)>3)和0xff
x=(x+tmp)和0xff
r[0]=x
其他:
c1=r[i-1]
c2=r[i]
c1=c1&0x7
c2=(c2>>3)和0xff

c1=(c1问题在于
return
语句始终是方法中执行的最后一个语句。在
return
语句之后的任何事情都不会发生

开关:

return s
print s
致:

也可以打印方法的返回值:

print deobfuscate(data)

另一个问题:看起来您正在以字符串列表的形式读取文件(
data1.readlines()
),但deobfousate函数需要一个字符串

你的代码应该是

INPUT = '/root/Desktop/data'

def deobfuscate(data):
    r = []
    for c in data:
        c = ord(c)
        c = (c + ord('y')) & 0xff
        c = (c ^ ord('Z')) & 0xff
        c = (c - ord('e')) & 0xff
        r.append(c)
    tmp = None
    i = len(r) - 1
    while i >= 0:
        if i == len(r) - 1:
            x = r[i]
            tmp = ((x & 7) << 5) & 0xff

        if i == 0:
            assert tmp is not None
            x = r[0]
            x = (x >> 3) & 0xff
            x = (x + tmp) & 0xff
            r[0] = x
        else:
            c1 = r[i-1]
            c2 = r[i]
            c1 = c1 & 0x7
            c2 = (c2 >> 3) & 0xff
            c1 = (c1 << 5) & 0xff
            c2 = (c2 + c1) & 0xff
            r[i] = c2
        i = i - 1

    r = "".join([chr(x) for x in r])

    s = ""
    assert (len(r) % 2) == 0
    for i in range(len(r)/2):
        s += r[i+(len(r)/2)] + r[i]

    return s

def main():
    with open(INPUT) as inf:
        data = inf.read()

    print(deobfuscate(data))

if __name__=="__main__":
    main()
INPUT='/root/Desktop/data'
def脱臭剂(数据):
r=[]
对于数据中的c:
c=作战需求文件(c)
c=(c+ord('y'))和0xff
c=(c^ord('Z'))和0xff
c=(c-ord('e'))和0xff
r、 附加(c)
tmp=无
i=len(r)-1
当i>=0时:
如果i==len(r)-1:
x=r[i]
tmp=((x&7)>3)和0xff
x=(x+tmp)和0xff
r[0]=x
其他:
c1=r[i-1]
c2=r[i]
c1=c1&0x7
c2=(c2>>3)和0xff

c1=(c1非常感谢您的快速响应。您对代码的修改非常有效,我成功地恢复了管理员密码。现在修补摄像头并将新密码存储在我的密码库中;)
print deobfuscate(data)
INPUT = '/root/Desktop/data'

def deobfuscate(data):
    r = []
    for c in data:
        c = ord(c)
        c = (c + ord('y')) & 0xff
        c = (c ^ ord('Z')) & 0xff
        c = (c - ord('e')) & 0xff
        r.append(c)
    tmp = None
    i = len(r) - 1
    while i >= 0:
        if i == len(r) - 1:
            x = r[i]
            tmp = ((x & 7) << 5) & 0xff

        if i == 0:
            assert tmp is not None
            x = r[0]
            x = (x >> 3) & 0xff
            x = (x + tmp) & 0xff
            r[0] = x
        else:
            c1 = r[i-1]
            c2 = r[i]
            c1 = c1 & 0x7
            c2 = (c2 >> 3) & 0xff
            c1 = (c1 << 5) & 0xff
            c2 = (c2 + c1) & 0xff
            r[i] = c2
        i = i - 1

    r = "".join([chr(x) for x in r])

    s = ""
    assert (len(r) % 2) == 0
    for i in range(len(r)/2):
        s += r[i+(len(r)/2)] + r[i]

    return s

def main():
    with open(INPUT) as inf:
        data = inf.read()

    print(deobfuscate(data))

if __name__=="__main__":
    main()