Infomation

Smartphone-Pentest-Framework (SPF) - Console (7)

DarkSoul.Story 2013. 12. 28. 07:40
반응형

7)  Clear/Create Database

SPF는 에이전트와 연결될 시 생성되는 데이터들을 데이터베이스에 저장하고 있다. Clear/Create Database 메뉴는 데이터베이스에 저장되어 있는 데이터들을 삭제하고, 데이터베이스에 새로운 데이블을 생성하는 메뉴이다. Clear/Create Database 메뉴를 선택하면 아래와 같이 데이터가 삭제된다는 메시지를 출력한다음 잠시 후 다시 메인 메뉴로 돌아온다. 



화면을 보기에는 아무것도 하지 않는것 처럼 보이지만 소스코드를 살펴 보면 어떠한 작업을 하고 있는지 바로 확인할 수 있다. 먼저 데이터베이스의 테이블을 삭제하는 쿼리를 보내 데이터를 삭제한다. 그 다음으로 config 파일에서 데이터베이스의 종류를 확인하고 config 파일에서 설정한 데이터베이스에 맞게 테이블을 생성하는 쿼리를 보낸다.


1196 def database_clear():

1197     choice = raw_input('This will destroy all your data. Are you sure you want to? (y/N)?').strip().lower()

1198     if choice == 'y':

1199         db_not_exists = False

1200         try:

1201             db = DB(config=config)

1202         except DBException as e:

1203             if e[0] == 2:

1204                 print "Database doesn't exist. Creating it"

1205                 db_not_exists = True

1206             else:

1207                 raise

1208   

1209         queryes = [

1210             "DROP TABLE IF EXISTS agents",

1211             "DROP TABLE IF EXISTS data",

1212             "DROP TABLE IF EXISTS modems",

1213             "DROP TABLE IF EXISTS remote",

1214             "DROP TABLE IF EXISTS client",

1215         ]

1216   

1217         dbtype = config.get("DATABASETYPE")

1218

1219         if dbtype == "postgres":

1220             queryes.append("create table agents (id SERIAL NOT NULL PRIMARY KEY, number varchar(12),path va     rchar(1000), controlkey varchar(7), controlnumber varchar(12), platform varchar(12), osversion varchar(10))     ")

1221             queryes.append("create table data (id SERIAL NOT NULL PRIMARY KEY, sms varchar(2000),contacts v     archar(1000), picture varchar(100), root varchar(50), ping varchar(2000), file varchar(100), packages varch     ar(10000))")

1222             queryes.append("create table modems (id SERIAL NOT NULL PRIMARY KEY, number varchar(12), path v     archar(1000), controlkey varchar(7), type varchar(3))")

1223             queryes.append("create table remote (id SERIAL NOT NULL PRIMARY KEY, ip varchar(15), exploit va     rchar(200), vuln varchar(3), agent varchar(3))")

1224             queryes.append("create table client (id SERIAL NOT NULL PRIMARY KEY, number varchar(12), exploi     t varchar(200), vuln varchar(3))")

1225

1226             if db_not_exists:

1227                 os.system("sudo su postgres -c psql -c \"createdb framework\"")

1228

1229         elif dbtype == "mysql":

1230             queryes.append("create table agents (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, number varchar     (15),path varchar(1000), controlkey varchar(7), controlnumber varchar(12), platform varchar(12), osversion      varchar(10))")

1231             queryes.append("create table data (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, sms varchar(2000     ),contacts varchar(1000), picture varchar(100), root varchar(50),ping varchar(2000), file varchar(100), pac     kages varchar(5000))")

1232             queryes.append("create table modems (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, number varchar     (12), path varchar(1000), controlkey varchar(7), type varchar(3))")

1233             queryes.append("create table remote (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, ip varchar(15)     , exploit varchar(200), vuln varchar(3), agent varchar(3))")

1234             queryes.append("create table client (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, number varchar     (12), exploit varchar(200), vuln varchar(3))")

1235

1236             if db_not_exists:

1237                 os.system("mysqladmin -u " + config.get("MYSQLUSER") + " create framework -p" + config.get(     "MYSQLPASS"))

1238

1239         if db_not_exists:

1240             db = DB(config=config)

1241             db_not_exists = False

1242

1243         for query in queryes:

1244             db.query(query)




반응형