Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中使用正则表达式提取值_Python_Json_Regex - Fatal编程技术网

在python中使用正则表达式提取值

在python中使用正则表达式提取值,python,json,regex,Python,Json,Regex,如何使用正则表达式从以下字符串中提取输入: {"eventid":"cowrie.command.input","input":"echo \"root:twrHxXE7YmIr\"|chpasswd|bash","message":"CMD: echo \"root:twrHxXE7YmIr\"|chpasswd|bash","

如何使用正则表达式从以下字符串中提取输入:

{"eventid":"cowrie.command.input","input":"echo \"root:twrHxXE7YmIr\"|chpasswd|bash","message":"CMD: echo \"root:twrHxXE7YmIr\"|chpasswd|bash","sensor":"cowrieHoneypot2","timestamp":"2021-05-06T10:35:25.171419Z","src_ip":"121.201.95.106","session":"1ce15808ec97"}
以下是我当前使用的正则表达式模式:

\"input\":\"[a-zA-z0-9\s=+~_\\$-|]*\"
但它返回一半的值,如:

"input":"echo \"

那么,我如何修改这个正则表达式来获得完整的值呢?

您需要在
}
{
之间添加逗号,用换行符分隔,这可以通过一个简单的
.replace(“}\n{,“},\n{”)
来完成

 \"input\":\"([^\,\}\"]|\\\")*\"[,\{]
然后可以使用
JSON
模块解析JSON:

导入json
filepath=r'PATH\u TO\u FILE'
将open(filepath,'r')作为f:
contents=f.read()
j=json.loads('[{}]'.format(contents.replace(“}\n{”,“}\n{”))
值=[n[“输入”]表示j中的n,如果n中的“输入”]
打印(值)
使用您的数据,输出是

['enable', 'system', 'system', 'shell', 'shell', 'sh', 'cat /proc/mounts; /bin/busybox KUHJY', 'cd /dev/shm; cat .s || cp /bin/echo .s; /bin/busybox KUHJY', 'tftp; wget; /bin/busybox KUHJY', 'dd bs=52 count=1 if=.s || cat .s || while read i; do echo $i; done < .s', 'while read i', '/bin/busybox KUHJY', 'rm .s; exit', 'cat /proc/cpuinfo | grep name | wc -l', 'echo "root:QEqRsCr9yFa5"|chpasswd|bash', "cat /proc/cpuinfo | grep name | head -n 1 | awk '{print $4,$5,$6,$7,$8,$9;}'", "free -m | grep Mem | awk '{print $2 ,$3, $4, $5, $6, $7}'", 'ls -lh $(which ls)', 'which ls', 'crontab -l', 'w', 'uname -m', 'cat /proc/cpuinfo | grep model | grep name | wc -l', 'top', 'uname', 'uname -a', 'lscpu | grep Model', 'cd ~ && rm -rf .ssh && mkdir .ssh && echo "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEArDp4cun2lhr4KUhBGE7VvAcwdli2a8dbnrTOrbMz1+5O73fcBOx8NVbUT0bUanUV9tJ2/9p7+vD0EpZ3Tz/+0kX34uAx1RV/75GVOmNx+9EuWOnvNoaJe0QXxziIg9eLBHpgLMuakb5+BgTFB+rKJAw9u9FSTDengvS8hX1kNFS4Mjux0hJOK8rvcEmPecjdySYMb66nylAKGwCEE6WEQHmd1mUPgHwGQ0hWCwsQk13yCGPK5w6hYp5zYkFnvlC8hGmd4Ww+u97k6pfTGTUbJk14ujvcD9iUKQTTWYYjIIu5PmUux5bsZ0R4WFwdIe6+i6rBLAsPKgAySVKPRK+oRw== mdrfckr">>.ssh/authorized_keys && chmod -R go= ~/.ssh && cd ~', 'enable', 'system', 'system', 'shell', 'shell', 'sh', 'cat /proc/mounts; /bin/busybox PYIHO', 'cd /dev/shm; cat .s || cp /bin/echo .s; /bin/busybox PYIHO', 'tftp; wget; /bin/busybox PYIHO', 'dd bs=52 count=1 if=.s || cat .s || while read i; do echo $i; done < .s', 'while read i', '/bin/busybox PYIHO', 'rm .s; exit', 'enable', 'system', 'system', 'shell', 'shell', 'sh', 'cat /proc/mounts; /bin/busybox GYYXE', 'cd /dev/shm; cat .s || cp /bin/echo .s; /bin/busybox GYYXE', 'tftp; wget; /bin/busybox GYYXE', 'dd bs=52 count=1 if=.s || cat .s || while read i; do echo $i; done < .s', 'while read i', '/bin/busybox GYYXE', 'rm .s; exit']
[enable'、system'、system'、shell'、shell'、sh'、cat/proc/mounts;/bin/busybox KUHJY'、cd/dev/shm;cat.s | | | cp/bin/echo.s;/bin/busybox KUHJY'、tftp;wget;/bin/busybox KUHJY'、dd bs=52 count=1如果在读i时=.s | | | | cat.s | | | | | | | | | | | | |做回显| | ||wc-l',echo“root:QEqRsCr9yFa5”| chpasswd | bash',cat/proc/cpuinfo | grep name | head-n1 | awk'{print$4,5,6,7,8,9;}',free-m | grep Mem awk'{print$2,3,4,5,6,7}',ls-lh$(其中ls)“,”哪个ls“,”crontab-l“,”w“,”uname-m“,”cat/proc/cpuinfo | grep model | grep name | wc-l“,”top“,”uname“,”uname-a“,”lscpu | grep model“,”cd~&&rm-rf.ssh&&mkdir.ssh&&echo"一个2+5个FCBox8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-7-8-8-8-8-8-8-8-6-7-7+7-9-7-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-YYJIIU5PMUX5BSZ0R4WFwdIe6+i6rBLAsPKgAySVKPRK+oRw==mdrfckr">>.ssh/authorized_keys&&chmod-R go=~/.ssh&&cd~,“enable”,“system”,“system”,“system”,“shell”,“shell”,“sh”,“cat/proc/mounts;/bin/busybox PYIHO”,“cd/dev/shm;cat.s | cp/bin/echo.s;/bin/busybox PYIHO”,“tftp;wget;/bin/busybox PYIHO”,“dd bs=52 count=1 if=.s | | | cat.s | | s | | | | |读i时回显$i;/busybox PYIHO、rm.s、exit、enable、system、system、shell、shell、sh、cat/proc/mounts;/bin/busybox-GYYXE、cd/dev/shm、cat.s | cp/bin/echo.s;/bin/busybox-gyxe、tftp;wget;/bin/busybox-gyxe、dd-bs=52 count=1 if=.s | cat.s | s | | | |读i时回显$i;完成<.s、'while读i'、/bin/busybox-GYYXE'

使用正确的工具解析JSON:这是一个不使用它的JSON。它仍然可以用
JSON
解析。请看我是否可以通过对这个正则表达式代码进行一些修改来使用它,以用于JSON:`import-re-import-JSON-hand=open('cowrie.log')outF=open(“Usernames and Passwords.txt”,“w”)表示行在手:res=re.search(r“登录\s尝试\s[[a-zA-Z0-9]'[a-zA-Z0-9]+'/[a-zA-Z0-9]+'[a-zA-Z0-9]+'],如果res:outF.write(res.group())outF.write(“\n”)outF.close()不要将正则表达式与JSON一起使用。永远不要。这不是故意的。不工作返回NothingHanks,它就像一个符咒一样工作。你能告诉我如何直接将值保存在文件中而不是数组中吗?现在我使用数组,并以以下方式将其写入文件:
hand=open('cowrie.JSON')outF=open(“input.txt”,“w”)filepath=r'cowrie.json',其中open(filepath,'r')作为f:contents=f.read()j=json.loads('[{}]').format(contents.replace(“}\n{,”,“}\n{”))value=[n[“input”]表示j中的n,如果n中的“input”表示n]表示值中的命令:outF.write(commands)outF.write(“\n”)
@zeeshanaliqueshi
表示open('data.json',w')作为f:forl-in-values:f.write(f“{l}\n”)