strings命令

strings命令

strings命令可以从一个文件(不仅仅是二进制文件,文本文件也可以的)中提取出文本内容(仅限于ASCII码内容),不仅仅适用于ELF格式的文件,
比如 一个简单的celery配置的Python文件:

1
2
3
4
5
6
7
8
9
10
11
#coding=utf-8
# 使用rabbitmq
BROKER_URL = 'amqp://guest:guest@localhost:5672//'
CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/13'
CELERY_TIMEZONE='Asia/Shanghai'
CELERY_IMPORTS = (
'configspider.download', # 下载任务
'configspider.parse' # 解析任务
)

使用more命令查看它的pyc文件(二进制文件):
1
2
3
^C<F3>
<99><E3>`Xc^@^@^@^@^@^@^@^@^B^@^@^@@^@^@^@s^\^@^@^@d^@^@Z^@^@d^A^@Z^A^@d^B^@Z^B^@d^F^@Z^C^@d^E^@S(^G^@^@^@s#^@^@^@amqp://guest:guest@localhost:5672//s^Y^@^@^@redis://127.0.0.1:6379/13s^M^@^@^@Asia/Shanghais^U^@^@^@configspider.downloads^R^@^@^@configspider.parseN(^B^@^@^@s^U^@^@^@configspider.downloads^R^@^@^@configspider.parse(^D^@^@^@t
^@^@^@BROKER_URLt^U^@^@^@CELERY_RESULT_BACKENDt^O^@^@^@CELERY_TIMEZONEt^N^@^@^@CELERY_IMPORTS(^@^@^@^@(^@^@^@^@(^@^@^@^@sA^@^@^@/Users/leeyang/tianzhao_spider/time_spider/configspider/config.py^@^@^@<module>^D^@^@^@^@^@^@^F^A^F^A^F^C^@^A

可以看出都是乱码,可以使用strings命令得到一些信息(可以不完全一致):

strings ./config.pyc

1
2
3
4
5
6
7
8
9
10
11
12
13
amqp://guest:guest@localhost:5672//s
redis://127.0.0.1:6379/13s
Asia/Shanghais
configspider.downloads
configspider.parseN(
configspider.downloads
configspider.parse(
BROKER_URLt
CELERY_RESULT_BACKENDt
CELERY_TIMEZONEt
CELERY_IMPORTS(
/Users/leeyang/tianzhao_spider/time_spider/configspider/config.pyt
<module>