Python解码日志文件中的字符串

Python解码日志文件中的字符串,python,base64,pattern-matching,string-decoding,Python,Base64,Pattern Matching,String Decoding,我正在编写Python来处理日志文件。该程序解密两个模式之间的base64编码字符串。每当我运行代码时,都会出现不正确的填充错误 这是我的密码 import base64 import re def find_between_r( s, first, last ): try: start = s.rindex( first ) + len( first ) e

我正在编写Python来处理日志文件。该程序解密两个模式之间的base64编码字符串。每当我运行代码时,都会出现不正确的填充错误

这是我的密码

        import base64
        import re

        def find_between_r( s, first, last ):
            try:
                start = s.rindex( first ) + len( first )
                end = s.rindex( last, start )
                return s[start:end]
            except ValueError:
                return ""

        text='192.168.1.23 - - [18/Jun/2015:12:16:12 +0200] "GET /admin/?action=membres&order=QVNDLChzZWxlY3QgKGNhc2UgZmllbGQoY29uY2F0KHN1YnN0cmluZyhiaW4oYXNjaWkoc3Vic3RyaW5nKHBhc3N3b3JkLDE3LDEpKSksMSwxKSxzdWJzdHJpbmcoYmluKGFzY2lpKHN1YnN0cmluZyhwYXNzd29yZCwxNywxKSkpLDIsMSkpLGNvbmNhdChjaGFyKDQ4KSxjaGFyKDQ4KSksY29uY2F0KGNoYXIoNDgpLGNoYXIoNDkpKSxjb25jYXQoY2hhcig0OSksY2hhcig0OCkpLGNvbmNhdChjaGFyKDQ5KSxjaGFyKDQ5KSkpd2hlbiAxIHRoZW4gVFJVRSB3aGVuIDIgdGhlbiBzbGVlcCgyKSB3aGVuIDMgdGhlbiBzbGVlcCg0KSB3aGVuIDQgdGhlbiBzbGVlcCg2KSBlbmQpIGZyb20gbWVtYnJlcyB3aGVyZSBpZD0xKQ%3D%3D HTTP/1.1" 200 1007 "-" "-"'

        result = re.search('order=(.*) H', text)
        t=result.group(1)

        print(base64.b64decode(t))
        #with open("26828869_ch13.txt","rt") as in_file:
        #   for line in in_file:

因为这是85垒!不是基地64!试试这个:

import base64
import binascii
import re


def find_between_r(s, first, last):
    try:
        start = s.rindex(first) + len(first)
        end = s.rindex(last, start)
        return s[start:end]
    except ValueError:
        return ""


text = '192.168.1.23 - - [18/Jun/2015:12:16:12 +0200] "GET /admin/?action=membres&order=QVNDLChzZWxlY3QgKGNhc2UgZmllbGQoY29uY2F0KHN1YnN0cmluZyhiaW4oYXNjaWkoc3Vic3RyaW5nKHBhc3N3b3JkLDE3LDEpKSksMSwxKSxzdWJzdHJpbmcoYmluKGFzY2lpKHN1YnN0cmluZyhwYXNzd29yZCwxNywxKSkpLDIsMSkpLGNvbmNhdChjaGFyKDQ4KSxjaGFyKDQ4KSksY29uY2F0KGNoYXIoNDgpLGNoYXIoNDkpKSxjb25jYXQoY2hhcig0OSksY2hhcig0OCkpLGNvbmNhdChjaGFyKDQ5KSxjaGFyKDQ5KSkpd2hlbiAxIHRoZW4gVFJVRSB3aGVuIDIgdGhlbiBzbGVlcCgyKSB3aGVuIDMgdGhlbiBzbGVlcCg0KSB3aGVuIDQgdGhlbiBzbGVlcCg2KSBlbmQpIGZyb20gbWVtYnJlcyB3aGVyZSBpZD0xKQ%3D%3D HTTP/1.1" 200 1007 "-" "-"'

result = re.search('order=(.*) H', text)
t = result.group(1)
print(base64.b85decode(t))

你忘了先解码它的其他部分了吗?天哪,你为什么要把部分SQL放在GET参数中?!我不确定这个错误是什么意思,但我认为您可以通过将re.search'order=.*H',text更改为re.search'order=.*HTTP/1.1',text来修复它。我想你的版本有一个错误的断点。文本来自一个日志文件,我想解密'order='和'HTTP'之间的部分。这就是为什么我使用正则表达式将文本转换成tvariable@MegaIng尝试但仍然不正确填充错误当我在文本文件中附加两个==时,我将输出作为b'ASC,选择case fieldconcatsubstringbinasciisubstringpassword,17,1,1,substringbinasciisubstringpassword,17,1,2,1,concatchar48,char48,concatchar48,char49,concatchar49,char48,concatchar49,char49when 1,when 2,when 2,when sleep 2,when 3,when sleep 4,when 4,when sleep 6结束于membres where id=1’如果你有一个新问题,你应该在另一篇帖子上问它。它是同一问题的一部分,在文本中添加“==”可以使代码正常工作