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) |
[Debian] libc6 버전 2.13 이상 사용하고 싶다면? (0) | 2014.01.03 |
---|---|
[리눅스 취약점 점검] Linux Exploit Suggester (0) | 2013.12.31 |
Smartphone-Pentest-Framework (SPF) - Console (10) (0) | 2013.12.28 |
Smartphone-Pentest-Framework (SPF) - Console (8) (0) | 2013.12.27 |
Smartphone-Pentest-Framework (SPF) - Console (1) (0) | 2013.11.27 |