На сайті Ukrainian security community eLwaux виложив скрипт на PHP, що дає можливість зберігати дані в своєму коді. Я ж вирішив повторити цей маленький скриптик на Python.
В результаті був записаний скрипт і скрінкаст про його створення і використання:
Python. Selfchange script. Screencast from presidentua on Vimeo.
Відео краще дивится на сайті вімео, там можна в hd якості.
Скрипт:
#! /usr/bin/python
# -*- coding: utf-8 -*-
#begin_data
#name1=qwerty
#end_data
__author__="presidentua"
__date__ ="$14.06.2009 19:36:45$"
import inspect
import sys
import re
def write_vars(data):
f = open( inspect.getsourcefile(sys.modules[__name__]) , 'r')
src = f.read()
f.close()
match = re.search(r"#begin_data(.*?)#end_data",src,re.S)
vars = ''
for item in data:
vars += "\n#%s=%s" % ( item, data[item] )
src = src[:match.start(1)] + vars + src[match.end(1)-1:]
f = open( inspect.getsourcefile(sys.modules[__name__]) , 'w')
f.write(src)
f.close()
def read_vars():
f = open( inspect.getsourcefile(sys.modules[__name__]) , 'r')
rez = {}
status = 0
for str in f.readlines():
if ( str.strip() == '#begin_data' ) or ( str.strip() == '#end_data' ):
status += 1
if status == 1:
val = re.findall(r'#(.*?)=(.*)',str.strip())
if val:
rez[ val[0][0] ] = val[0][1]
elif status == 2:
break
f.close()
return rez
if __name__ == "__main__":
data = read_vars()
print "readed all vars: \n\t%s" % data
data['new_varr'] = 'new_valueee'
write_vars(data)
print 'saved all change, and new value: \n\t%s' % data

