본 프로젝트는 [SecuriSuite]로, SecuriSuite는 브라우저에서 정보 보안 도구를 사용하기 위한 그래픽 인터페이스입니다.
사용자는 웹 UI를 통해 nmap, crunch, httrack, johnTheRipper 등의 보안 도구를 직접 사용할 수 있습니다.
이 프로젝트는 Kali Linux 도구를 참조로 사용합니다.
데이터 처리 아키텍처 및 각 API에 대한 완성된 예시입니다.
이 예시는 실제 프로젝트에서 나온 것입니다.
데이터 처리 아키텍처
1. Interfaces 계층
- 이 계층은 사용자 또는 외부 시스템으로부터 데이터를 수신합니다.
- 수신된 데이터는 DTO(Data Transfer Object) 형태의 Request로 캡슐화되어 다음 단계로 전달됩니다.
2. Facade 계층
- DTO(Request)를 받아 Command 객체로 변환하는 역할을 합니다.
- 이곳에서 다양한 외부 시스템과의 연계를 관리하고 통합하는 중앙 지점 역할을 합니다.
3. Domain 계층
- Command 객체를 Domain 객체로 변환합니다.
- 이곳에서 비즈니스 로직이 구현되며, 데이터의 실제 처리가 이루어집니다.
- Domain 계층은 핵심 비즈니스 규칙과 데이터의 무결성을 관리합니다.
- 데이터 처리 결과를 Info 객체로 변환합니다.
- Info 객체는 처리된 데이터를 요약하거나 표현하는데 사용됩니다.
4. Infrastructure 계층
- 이 프로젝트에서는 Spring Data JPA를 사용하여 MariaDB 데이터베이스와의 상호작용을 관리합니다.
5. 응답
- 처리된 데이터는 최종적으로 DTO(Response) 형태로 변환되어 사용자 또는 요청자에게 응답됩니다.
API
Nmap
/api/v1/nmap
Request
URL : /api/v/nmap/execute
Method : POST
Auth required : NO
데이터 제약
{
"option": "[ALL 또는 SET]",
"ip": "[아이피]",
"port": "[포트]"
}
데이터 예시
{
"option": "ALL",
"ip": "172.16.234.1"
}
또는
{
"option": "SET",
"ip": "172.16.234.1",
"port": "80"
}
Response
Code : 200 OK
성공 응답
{
"result": "SUCCESS",
"data": {
"option": "ALL",
"ip": "172.16.234.1",
"port": null,
"cmd": "nmap -all 172.16.234.1 ",
"regDts": "20240112154624",
"logName": "20240112154624_nmap.txt",
"log": "Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-01-12 15:46 KST\nNmap scan report for 172.16.234.1\nHost is up (0.0021s latency).\nNot shown: 999 closed tcp ports (conn-refused)\nPORT STATE SERVICE\n3306/tcp open mysql\n\nNmap done: 1 IP address (1 host up) scanned in 0.67 seconds\n",
"time": "0.67",
"result": {
"1": {
"port": "3306",
"state": "open",
"service": "mysql"
}
}
},
"message": null
}
실패 응답 1
조건 : IP가 없는 경우
Code : 200 OK
내용 :
{
"result": "FAIL",
"data": null,
"message": "적절하지 않은 요청입니다.Validation failed for argument [0] in public com.security.securisuite.common.response.CommonResponse com.security.securisuite.nmap.interfaces.NmapApiController.execute(com.security.securisuite.nmap.interfaces.dto.NmapDto$NmapRequest): [Field error in object 'nmapRequest' on field 'ip': rejected value []; codes [NotEmpty.nmapRequest.ip,NotEmpty.ip,NotEmpty.java.lang.String,NotEmpty]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [nmapRequest.ip,ip]; arguments []; default message [ip]]; default message [IP는 필수값입니다.]] "
}
실패 응답 2
조건 : 포트가 지정되지 않은 경우
Code : 200 OK
내용 :
{
"result": "FAIL",
"data": null,
"message": "포트 지정은 필수입니다."
}
Crunch
/api/v1/crunch
1. Execute
Request
URL : /api/v1/crunch/execute
Method : POST
Auth required : NO
데이터 제약
{
"minWord": "[최소길이]",
"maxWord": "[최대길이]",
"words": "[모든문자]"
}
데이터 예시
{
"minWord": 8,
"maxWord": 8,
"words": "0123456789"
}
Response
Code : 200 OK
성공 응답
{
"result": "SUCCESS",
"data": {
"minWord": 8,
"maxWord": 8,
"words": "0123456789",
"cmd": "/bin/sh -c crunch 8 8 0123456789 -o ./logs/20240112155626_crunch.txt > ./logs/20240112155626_crunch_output.txt 2>&1 & ",
"regDts": "20240112155626",
"logName": "20240112155626_crunch.txt",
"log": "Crunch will now generate the following amount of data: 900000000 bytes\n858 MB\n0 GB\n0 TB\n0 PB\nCrunch will now generate the following number of lines: 100000000 \n",
"crunchResult": {
"amountByte": "900000000",
"amountMb": "858",
"amountGb": "0",
"amountTb": "0",
"amountPb": "0",
"amountLine": "100000000"
}
},
"message": null
}
- 응답받은 regDts를 통해 진행 상태를 확인할 수 있습니다.
실패 응답 1
조건 : 최소 길이가 0이하 이거나 13이상일 경우
Code : 200 OK
내용 :
{
"result": "FAIL",
"data": null,
"message": "적절하지 않은 요청입니다.Validation failed for argument [0] in public com.security.securisuite.common.response.CommonResponse com.security.securisuite.crunch.interfaces.CrunchApiController.execute(com.security.securisuite.crunch.interfaces.dto.CrunchDto$CrunchRequest): [Field error in object 'crunchRequest' on field 'minWord': rejected value [0]; codes [Min.crunchRequest.minWord,Min.minWord,Min.int,Min]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [crunchRequest.minWord,minWord]; arguments []; default message [minWord],1]; default message [최소값은 1 이상이어야 합니다.]] "
}
실패 응답 2
조건 : 최대 길이가 0이하 이거나 13이상일 경우
Code : 200 OK
내용 :
{
"result": "FAIL",
"data": null,
"message": "적절하지 않은 요청입니다.Validation failed for argument [0] in public com.security.securisuite.common.response.CommonResponse com.security.securisuite.crunch.interfaces.CrunchApiController.execute(com.security.securisuite.crunch.interfaces.dto.CrunchDto$CrunchRequest): [Field error in object 'crunchRequest' on field 'maxWord': rejected value [13]; codes [Max.crunchRequest.maxWord,Max.maxWord,Max.int,Max]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [crunchRequest.maxWord,maxWord]; arguments []; default message [maxWord],12]; default message [최대값은 12 이하여야 합니다.]] "
}
실패 응답 3
조건 : 문자가 입력되지 않은 경우
Code : 200 OK
내용 :
{
"result": "FAIL",
"data": null,
"message": "적절하지 않은 요청입니다.Validation failed for argument [0] in public com.security.securisuite.common.response.CommonResponse com.security.securisuite.crunch.interfaces.CrunchApiController.execute(com.security.securisuite.crunch.interfaces.dto.CrunchDto$CrunchRequest): [Field error in object 'crunchRequest' on field 'words': rejected value []; codes [Size.crunchRequest.words,Size.words,Size.java.lang.String,Size]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [crunchRequest.words,words]; arguments []; default message [words],2147483647,1]; default message [문자열은 필수값입니다.]] "
}
2. Progress
URL : /api/v1/crunch/progress
Method : POST
Auth required : NO
데이터 제약
{
"regDts": "[execute 작업을 통해 전달받은 regDts]"
}
데이터 예시
{
"regDts": "20240112155626"
}
Response
Code : 200 OK
성공 응답
{
"result": "SUCCESS",
"data": {
"regDts": "20240112160420",
"log": "crunch: 23% completed generating output\n",
"percent": "23%"
},
"message": null
}
- 0% ~ 100%의 값을 전달받을 수 있습니다.
Httrack
/api/v1/httrack
해당 기능을 이용하기 위해서, 먼저 패키지를 설치해야 합니다.
sudo apt install httrack
1. Execute
Request
URL : /api/v1/httrack/execute
Method : POST
Auth required : NO
데이터 제약
{
"url": "[크롤링 하고자 하는 URL]"
}
데이터 예시
{
"url": "http://hoowave.dothome.co.kr"
}
Response
Code : 200 OK
성공 응답
{
"result": "SUCCESS",
"data": {
"url": "http://hoowave.dothome.co.kr",
"transUrl": "20240117173342_http_hoowave_dothome_co_kr",
"cmd": "/bin/sh -c (mkdir /var/www/html/download/files/20240117173342_http_hoowave_dothome_co_kr && httrack http://hoowave.dothome.co.kr -O /var/www/html/download/files/20240117173342_http_hoowave_dothome_co_kr -%v > /var/www/html/download/logs/20240117173342_httrack.txt && zip -r /var/www/html/download/files/20240117173342_http_hoowave_dothome_co_kr.zip /var/www/html/download/files/20240117173342_http_hoowave_dothome_co_kr && rm -rf /var/www/html/download/files/20240117173342_http_hoowave_dothome_co_kr) > /var/www/html/download/logs/20240117173342_tempLog.txt 2>&1 & ",
"regDts": "20240117173342",
"logName": "20240117173342_httrack.txt",
"tempLog": "20240117173342_tempLog.txt"
},
"message": null
}
- 작업 명령을 내린 URL과 응답받은 regDts를 통해 진행 상태를 확인할 수 있습니다.
실패 응답
조건 : URL이 입력되지 않은 경우
Code : 200 OK
내용 :
{
"result": "FAIL",
"data": null,
"message": "적절하지 않은 요청입니다.Validation failed for argument [0] in public com.security.securisuite.common.response.CommonResponse com.security.securisuite.httrack.interfaces.HttrackApiController.execute(com.security.securisuite.httrack.interfaces.dto.UrlRequest): [Field error in object 'urlRequest' on field 'url': rejected value []; codes [NotEmpty.urlRequest.url,NotEmpty.url,NotEmpty.java.lang.String,NotEmpty]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [urlRequest.url,url]; arguments []; default message [url]]; default message [URL은 필수값입니다.]] "
}
2. Completion
Request
URL : /api/v1/httrack/completion
Method : POST
Auth required : NO
데이터 제약
{
"url": "[execute 작업 명령을 내린 URL]",
"regDts": "[execute 작업을 통해 전달받은 regDts]"
}
데이터 예시
{
"url": "http://hoowave.dothome.co.kr",
"regDts": "20240117173850"
}
Response
Code : 200 OK
성공 응답 1
{
"result": "SUCCESS",
"data": {
"url": "http://hoowave.dothome.co.kr",
"regDts": "20240117173851",
"transUrl": "http_hoowave_dothome_co_kr",
"fileName": "20240117173851_http_hoowave_dothome_co_kr.zip",
"logName": "20240117173851_httrack.txt",
"tempLog": "20240117173851_tempLog.txt",
"complete": false,
"message": "유효한 작업이 아닙니다."
},
"message": null
}
- 해당 작업이 존재하지 않을 경우
성공 응답 2
{
"result": "SUCCESS",
"data": {
"url": "http://hoowave.dothome.co.kr",
"regDts": "20240117173850",
"transUrl": "http_hoowave_dothome_co_kr",
"fileName": "20240117173850_http_hoowave_dothome_co_kr.zip",
"logName": "20240117173850_httrack.txt",
"tempLog": "20240117173850_tempLog.txt",
"complete": false,
"message": "작업이 진행중입니다."
},
"message": null
}
- 작업이 진행중인 경우
성공 응답 3
{
"result": "SUCCESS",
"data": {
"url": "http://hoowave.dothome.co.kr",
"regDts": "20240117173850",
"transUrl": "http_hoowave_dothome_co_kr",
"fileName": "20240117173850_http_hoowave_dothome_co_kr.zip",
"logName": "20240117173850_httrack.txt",
"tempLog": "20240117173850_tempLog.txt",
"complete": true,
"message": "작업이 완료되었습니다."
},
"message": null
}
- 작업이 완료된 경우
3. Wget
Request
URL : /api/v1/httrack/wget
Method : POST
Auth required : NO
데이터 제약
{
"url": "[미러링 하고자 하는 URL]"
}
데이터 예시
{
"url": "http://hoowave.dothome.co.kr"
}
Response
Code : 200 OK
성공 응답
{
"result": "SUCCESS",
"data": {
"url": "http://hoowave.dothome.co.kr",
"transUrl": "20240117175830_http_hoowave_dothome_co_kr",
"cmd": "/bin/sh -c mkdir /var/www/html/download/files/20240117175830_http_hoowave_dothome_co_kr && wget -P /var/www/html/download/files/20240117175830_http_hoowave_dothome_co_kr -m http://hoowave.dothome.co.kr > /var/www/html/download/logs/20240117175830_wget.txt 2>&1 && zip -r /var/www/html/download/files/20240117175830_http_hoowave_dothome_co_kr.zip /var/www/html/download/files/20240117175830_http_hoowave_dothome_co_kr && rm -rf /var/www/html/download/files/20240117175830_http_hoowave_dothome_co_kr ",
"regDts": "20240117175830",
"logName": "20240117175830_wget.txt",
"fileName": "20240117175830_20240117175830_http_hoowave_dothome_co_kr.zip"
},
"message": null
}
- 정적인 페이지를 탐색하기 때문에, Httrack보다 비교적 속도가 빠릅니다.
실패 응답
조건 : URL이 입력되지 않은 경우
Code : 200 OK
내용 :
{
"result": "FAIL",
"data": null,
"message": "적절하지 않은 요청입니다.Validation failed for argument [0] in public com.security.securisuite.common.response.CommonResponse com.security.securisuite.httrack.interfaces.HttrackApiController.wget(com.security.securisuite.httrack.interfaces.dto.UrlRequest): [Field error in object 'urlRequest' on field 'url': rejected value []; codes [NotEmpty.urlRequest.url,NotEmpty.url,NotEmpty.java.lang.String,NotEmpty]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [urlRequest.url,url]; arguments []; default message [url]]; default message [URL은 필수값입니다.]] "
}
JohnTheRipper
/api/v1/john
1. Execute
Request
URL : /api/v1/john/execute
Method : POST
Content-Type : multipart/form-data
Auth required : NO
데이터 제약 1
{
targetFile: [압축파일 또는 문서파일]
text: '{"johnOption": "[DEFAULT 또는 CUSTOM]"}'
}
데이터 예시 1
{
targetFile: (testimg.zip)
text: '{"johnOption": "DEFAULT"}'
}
데이터 제약 2
{
targetFile: [압축파일 또는 문서파일]
text: '{"johnOption": "[DEFAULT 또는 CUSTOM]"}'
customList: [단어 목록]
}
- johnOption이 CUSTOM인 경우, customList을 필요로 합니다.
데이터 예시 2
{
targetFile: (testimg.zip)
text: '{"johnOption": "CUSTOM"}'
customList: (20240119164309_crunch.txt)
}
Response
Code : 200 OK
성공 응답
{
"result": "SUCCESS",
"data": {
"johnOption": "CUSTOM",
"johnType": "ARCHIVE",
"cmd": "/bin/sh -c zip2john /var/www/html/upload/20240119165555_testimg.zip > /var/www/html/download/logs/20240119165555_hash.txt && john -w:/var/www/html/upload/20240119165555_20240119164309_crunch.txt /var/www/html/download/logs/20240119165555_hash.txt && john /var/www/html/download/logs/20240119165555_hash.txt --show > /var/www/html/download/logs/20240119165555_johnTheRipper.txt ",
"regDts": "20240119165555",
"logName": "20240119165555_johnTheRipper.txt",
"hashName": "20240119165555_hash.txt",
"targetFileName": "20240119165555_testimg.zip",
"customListName": "20240119165555_20240119164309_crunch.txt"
},
"message": null
}
- 응답받은 regDts를 통해 진행 상태를 확인할 수 있습니다.
실패 응답 1
조건 : targetFile이 입력되지 않았거나 지원하지 않는 확장자를 입력했을 경우
Code : 200 OK
내용 :
{
"result": "FAIL",
"data": null,
"message": "지원하지 않는 확장자입니다."
}
실패 응답 2
조건 : johnOption을 입력되지 않은 경우
Code : 200 OK
{
"result": "FAIL",
"data": null,
"message": "적절하지 않은 요청입니다.Validation failed for argument [0] in public com.security.securisuite.common.response.CommonResponse com.security.securisuite.johntheripper.interfaces.JohnApiController.execute(com.security.securisuite.johntheripper.interfaces.dto.JohnDto$JohnRequest): [Field error in object 'johnRequest' on field 'johnOption': rejected value [null]; codes [NotNull.johnRequest.johnOption,NotNull.johnOption,NotNull.com.security.securisuite.johntheripper.domain.JohnOption,NotNull]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [johnRequest.johnOption,johnOption]; arguments []; default message [johnOption]]; default message [옵션은 필수값입니다.]] "
}
실패 응답 3
조건 : johnOption을 CUSTOM으로 하고 customList이 입력되지 않은 경우
Code : 200 OK
내용 :
{
"result": "FAIL",
"data": null,
"message": "사용자 리스트는 필수입니다."
}
2. Completion
Request
URL : /api/v1/john/completion
Method : POST
Auth required : NO
데이터 제약
{
"regDts": "[execute 작업을 통해 전달받은 regDts]"
}
데이터 예시
{
"regDts": "20240119165250"
}
Response
Code : 200 OK
성공 응답 1
{
"result": "SUCCESS",
"data": {
"regDts": "20240119165556",
"logName": "20240119165556_johnTheRipper.txt",
"hashName": "20240119165556_hash.txt",
"complete": false,
"message": "유효한 작업이 아닙니다.",
"password": null
},
"message": null
}
- 해당 작업이 존재하지 않을 경우
성공 응답 2
{
"result": "SUCCESS",
"data": {
"regDts": "20240119165555",
"logName": "20240119165555_johnTheRipper.txt",
"hashName": "20240119165555_hash.txt",
"complete": true,
"message": "작업이 진행중입니다.",
"password": null
},
"message": null
}
- 작업이 진행중인 경우
성공 응답 3
{
"result": "SUCCESS",
"data": {
"regDts": "20240119165555",
"logName": "20240119165555_johnTheRipper.txt",
"hashName": "20240119165555_hash.txt",
"complete": true,
"message": "작업이 완료되었습니다.",
"password": "hoowave"
},
"message": null
}
- 작업이 완료된 경우
System
/api/v1/system
1. Execute
Request
URL : /api/v1/system/execute
Method : POST
Auth required : NO
데이터 제약
{
"cmd": "[명령어]"
}
데이터 예시
{
"cmd": "ls -al"
}
Response
Code : 200 OK
성공 응답
{
"result": "SUCCESS",
"data": {
"cmd": "/bin/sh -c ls -al ",
"regDts": "20240112161209",
"logName": "20240112161209_system.txt",
"result": "total 72\ndrwxr-xr-x 8 hoowave hoowave 4096 Jan 12 13:25 .\ndrwxr-xr-x 3 hoowave hoowave 4096 Jan 12 13:24 ..\n-rw-r--r-- 1 hoowave hoowave 6148 Jan 9 14:44 .DS_Store\n-rw-r--r-- 1 hoowave hoowave 444 Jan 5 15:21 .gitignore\ndrwxr-xr-x 5 hoowave hoowave 4096 Jan 5 15:24 .gradle\ndrwxr-xr-x 3 hoowave hoowave 4096 Jan 12 13:24 .idea\n-rw-r--r-- 1 hoowave hoowave 1125 Jan 5 15:21 HELP.md\ndrwxr-xr-x 9 hoowave hoowave 4096 Jan 12 13:24 build\n-rw-r--r-- 1 hoowave hoowave 797 Jan 5 16:23 build.gradle\ndrwxr-xr-x 3 hoowave hoowave 4096 Jan 5 15:21 gradle\n-rwxr-xr-x 1 hoowave hoowave 8692 Jan 5 15:21 gradlew\n-rw-r--r-- 1 hoowave hoowave 2868 Jan 5 15:21 gradlew.bat\ndrwxr-xr-x 2 hoowave hoowave 4096 Jan 12 16:12 logs\n-rw-r--r-- 1 hoowave hoowave 33 Jan 5 15:21 settings.gradle\ndrwxr-xr-x 4 hoowave hoowave 4096 Jan 9 14:14 src\n"
},
"message": null
}
실패 응답
조건 : 명령어가 없는 경우
Code : 200 OK
내용 :
{
"result": "FAIL",
"data": null,
"message": "적절하지 않은 요청입니다.Validation failed for argument [0] in public com.security.securisuite.common.response.CommonResponse com.security.securisuite.system.interfaces.SystemApiController.execute(com.security.securisuite.system.interfaces.dto.SystemDto$SystemRequest): [Field error in object 'systemRequest' on field 'cmd': rejected value []; codes [NotEmpty.systemRequest.cmd,NotEmpty.cmd,NotEmpty.java.lang.String,NotEmpty]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [systemRequest.cmd,cmd]; arguments []; default message [cmd]]; default message [명령어는 필수값입니다.]] "
}
2. Pid
Request
URL : /api/v1/system/pid
Method : POST
Auth required : NO
데이터 제약
{
"processName": "[프로세스이름]"
}
데이터 예시
{
"processName": "crunch"
}
Response
Code : 200 OK
성공 응답
{
"result": "SUCCESS",
"data": {
"processName": "crunch",
"cmd": "/bin/sh -c ps aux | grep crunch | grep -v grep ",
"regDts": "20240112161615",
"logName": "20240112161615_pid.txt",
"log": "hoowave 128933 10.9 0.1 13460 2176 pts/0 Rl+ 16:16 0:00 crunch 8 8 0123456789 -o ./logs/20240112161612_crunch.txt\n",
"pid": "128933"
},
"message": null
}
실패 응답 1
조건 : 프로세스이름이 입력되지 않은 경우
Code : 200 OK
내용 :
{
"result": "FAIL",
"data": null,
"message": "적절하지 않은 요청입니다.Validation failed for argument [0] in public com.security.securisuite.common.response.CommonResponse com.security.securisuite.system.interfaces.SystemApiController.pid(com.security.securisuite.system.interfaces.dto.ProcessNameRequest): [Field error in object 'processNameRequest' on field 'processName': rejected value []; codes [NotEmpty.processNameRequest.processName,NotEmpty.processName,NotEmpty.java.lang.String,NotEmpty]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [processNameRequest.processName,processName]; arguments []; default message [processName]]; default message [프로세스명은 필수값입니다.]] "
}
실패 응답 2
조건 : 프로세스가 실행중이지 않은 경우
Code : 200 OK
내용 :
{
"result": "FAIL",
"data": null,
"message": "해당 프로세스는 존재하지 않습니다."
}
3. Terminate
Request
URL : /api/v1/system/terminate
Method : POST
Auth required : NO
데이터 제약
{
"processName": "[프로세스이름]"
}
데이터 예시
{
"processName": "crunch"
}
Response
Code : 200 OK
성공 응답
{
"result": "SUCCESS",
"data": {
"processName": "crunch",
"pid": "131913",
"cmd": "kill -9 131913 ",
"regDts": "20240112162226"
},
"message": null
}
실패 응답 1
조건 : 프로세스이름이 입력되지 않은 경우
Code : 200 OK
내용 :
{
"result": "FAIL",
"data": null,
"message": "적절하지 않은 요청입니다.Validation failed for argument [0] in public com.security.securisuite.common.response.CommonResponse com.security.securisuite.system.interfaces.SystemApiController.terminate(com.security.securisuite.system.interfaces.dto.ProcessNameRequest): [Field error in object 'processNameRequest' on field 'processName': rejected value []; codes [NotEmpty.processNameRequest.processName,NotEmpty.processName,NotEmpty.java.lang.String,NotEmpty]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [processNameRequest.processName,processName]; arguments []; default message [processName]]; default message [프로세스명은 필수값입니다.]] "
}
실패 응답 2
조건 : 프로세스가 실행중이지 않은 경우
Code : 200 OK
내용 :
{
"result": "FAIL",
"data": null,
"message": "해당 프로세스는 존재하지 않습니다."
}
Report
/api/v1/report
1. Dashboard
Request
URL : /api/v1/report/dashboard
Method : POST
Auth required : NO
데이터 제약
{
}
데이터 예시
{
}
Response
Code : 200 OK
성공 응답
{
"result": "SUCCESS",
"data": {
"counts": {
"crunch": 0,
"system": 2,
"john": 0,
"nmap": 0,
"httrack": 0
}
},
"message": null
}
2. Filelist
Request
URL : /api/v1/report/files
Method : POST
Auth required : NO
데이터 제약
{
}
데이터 예시
{
}
Response
Code : 200 OK
성공 응답
{
"result": "SUCCESS",
"data": {
"httrackFileInfos": [
{
"httrackRegDts": "20240205052516",
"httrackTransUrl": "20240205052516_http_hoowave_dothome_co_kr",
"httrackUrl": "http://hoowave.dothome.co.kr",
"httrackType": "wget"
}
],
"crunchFileInfos": {
"1": {
"crunchMinWord": 4,
"crunchMaxWord": 4,
"crunchWords": "0123456789",
"crunchRegDts": "20240205052522",
"crunchLogName": "20240205052522_crunch.txt"
}
}
},
"message": null
}
3. Loglist
Request
URL : /api/v1/report/logs
Method : POST
Auth required : NO
데이터 제약
{
}
데이터 예시
{
}
Response
Code : 200 OK
성공 응답
{
"result": "SUCCESS",
"data": {
"logList": [
{
"type": "system",
"logName": "20240205050749_system.txt",
"regDts": "20240205050749"
},
{
"type": "system",
"logName": "20240205050745_system.txt",
"regDts": "20240205050745"
}
]
},
"message": null
}
'Project > SecuriSuite' 카테고리의 다른 글
[SecuriSuite] 시작하기 (0) | 2025.03.28 |
---|---|
[SecuriSuite] Interface (0) | 2025.03.28 |
[SecuriSuite] 기술 스택 & 패키지 (0) | 2025.03.28 |
[SecuriSuite] 프로젝트 개요 및 소개 (0) | 2025.03.28 |