요즘들어 휴대폰에 도박, 주식 추천 등의 스팸 메시지가 하루에도 두 자리 수만큼 오고 있습니다.
그냥 무시하려고 했는데, 점점 가만히 둘 수 없을 정도로 많이 쌓이기 시작해서
AI를 활용한 스팸 차단 앱을 만들어보고자 데이터셋을 수집하는데
아무리 찾아봐도 휴대폰 문자(SMS)를 CSV 등 가공할 수 있는 포맷으로 내보내는 앱이 없더라고요.
Play 스토어에 하나 있긴 한데 22,000원 상당의 유료 앱이기도 하고요.
그래서 직접 만들게 되었습니다.
이번에 만든 앱은 SMS Extractor 입니다.
[ Version 2.1 ]
Download File: app-release.apk
SHA-256: f1765d684ce732dec221897578b72c13e0611ba11cb6e4c05f883a7decfddbeb
MD5: 0f596678beabcb51d4a94a1435a068b6
Virustotal: Report Link [1/67]
VirusTotal 검사 시 Avast Mobile에서 탐지가 되는데
휴리스틱 탐지이고 기존에 확인되지 않은 앱인데다 기능 자체가 문자를 내보내는 것이다 보니
악성 앱으로 분류될 수도 있겠다는 생각이 들긴 합니다
이번에도 마찬가지로 앱 아이콘은 없습니다
앱 이름도 그냥 기능에 충실하게 SMS Extractor로 해뒀고
그래도 나름 한국어, 영어로 다국어를 지원합니다
실행하면 위 사진처럼 표시됩니다.
위에서부터 수집할 SMS/MMS의 기간을 설정할 수 있습니다.
'전체 기간 (ALL)'을 선택하면 기기에 저장된 SMS/MMS 전체를 내보낼 수 있습니다.
그 다음은 유형 선택입니다.
SMS와 MMS 중 원하는 것만 내보낼 수도 있고,
받은 메시지(수신), 보낸 메시지(발신)도 선택이 가능합니다.
마지막으로 CSV에 저장할 데이터 유형을 선택할 수 있습니다.
기본 값으로는 Type(유형), Sender Number(발신자 번호), Datetime(날짜/시간), Body(메시지 내용) 순서대로 저장되며,
사용자가 직접 Element Capsule을 끌어다가 순서를 바꾸거나,
아래에 있는 다른 데이터를 추가하여 CSV를 커스터마이징할 수도 있습니다
Type (유형) - SMS, MMS 유형을 표시합니다.
Receiver Number (수신자 번호) - 기기 설정에 따라 국가 번호를 포함하거나, 'Me'로 표시될 수 있습니다.
Sender Number (발신자 번호) - 기기 설정에 따라 국가 번호를 포함하거나, 'Me'로 표시될 수 있습니다.
Direction (방향) - Outgoing(발신), Incoming(수신) 여부를 표시합니다.
Date (날짜) - yyyy-MM-dd 형식으로 날짜를 표시합니다.
Time (시간) - HH:mm:ss 형식으로 시간을 표시합니다. (이때 ss는 기기 설정에 따라 00으로 표시될 수 있음)
Datetime (일시) - yyyy-MM-dd HH:mm:ss 형식으로 날짜와 시간을 표시합니다.
Title (제목) - MMS의 경우 메시지 제목을 표시합니다.
Body (내용) - SMS/MMS의 내용을 표시합니다.
내보내기 버튼을 누르면 시스템의 기본 파일 관리자를 통해 파일을 저장합니다.
이때 기본 파일 명은 'sms_backup_yyyyMMddHHmm.csv' 이며,
사용자가 직접 파일 명과 저장 경로를 바꿀 수 있습니다.
저장 후에는 자동으로 공유 기능을 활성화합니다.
필요에 따라 메일, 문자, 메신저로 전송하여 바로 사용을 할 수 있도록 하였습니다.
추출된 CSV 파일을 Microsoft Office Excel로 실행하였을 때,
인코딩 문제로 한글이 깨지는 경우가 발생합니다.
타 소프트웨어(메모장, Mi 스프레드시트, Google 스프레드시트 등)에서는 모두 정상적으로 표시되나,
UTF-8로 CSV를 저장했음에도 Excel에서 오류가 발생하는 문제는 해결이 되지 않았습니다.
이 경우,
Excel의 [ 데이터 ] 메뉴에서 [ 데이터 가져오기 ] → [ 텍스트/CSV ]를 선택하고 파일을 불러와
파일 원본 / 인코딩 설정을 유니코드(UTF-8)로 설정해주시면 정상적으로 표시됨을 확인하실 수 있습니다.
자잘한 버그가 많아 수정 작업이 꽤나 길어졌습니다.
CSV Columns 캡슐을 눌렀는데 다른 캡슐이 동작한다던지 등등 (...)
아마 지금도 오류, 버그가 많을 겁니다.
발견하시면 제 메일이나 트위터 DM으로 알려주시면 감사하겠습니다.
또는 Github에서 직접 기여해주셔도 좋습니다.
삼성 메시지의 '채팅+'나 Google Message의 '채팅'과 같은 RCS(Rich Communication Services) 메시지는 지원하지 않습니다. 추후 API 공개 또는 개방된 내용이 있는 경우 업데이트를 통해 지원할 예정입니다.
원래는 Admob 광고를 부착한 후 Play 스토어에 게시하려 했으나,
광고 삽입하는 코드를 넣기가 너무 귀찮아져서 포기햇ㅅ습니다.
아무쪼록 유용하게 사용해주셨으면 좋겠습니다.
감사합니다.
'[ IT ] > Develop' 카테고리의 다른 글
안드로이드용 트위터 인용 보기 (454) | 2024.01.13 |
---|---|
네이버 치지직(CHZZK) API [작성 중] (338) | 2023.12.22 |
[번역] 부동 소수점 문제의 예시 (22) | 2023.01.23 |
개발 적당히, 정치 적당히, 일상 적당히, 그냥 뭐든지 적당히만 하는 소프트웨어전공 대학생, 쏘가리입니다. Profile Image by REN (Twt@Ren_S2_)
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!