Update README.md
Browse files
README.md
CHANGED
|
@@ -1,130 +1,130 @@
|
|
| 1 |
-
---
|
| 2 |
-
language:
|
| 3 |
-
- ko
|
| 4 |
-
tags:
|
| 5 |
-
- security
|
| 6 |
-
- smishing-detection
|
| 7 |
-
- roberta
|
| 8 |
-
- text-classification
|
| 9 |
-
pipeline_tag: text-classification
|
| 10 |
-
license: mit
|
| 11 |
-
base_model: klue/roberta-base
|
| 12 |
-
metrics:
|
| 13 |
-
- f1
|
| 14 |
-
- precision
|
| 15 |
-
- recall
|
| 16 |
-
---
|
| 17 |
-
|
| 18 |
-
# Smishing Detection RoBERTa Base ๐ก๏ธ๐ฑ
|
| 19 |
-
|
| 20 |
-
## ๐ Model Description
|
| 21 |
-
|
| 22 |
-
์ด ๋ชจ๋ธ์ **์ค๋ฏธ์ฑ(Smishing, SMS Phishing)** ๋ฌธ์๋ฅผ ์ค์๊ฐ์ผ๋ก ํ์งํ๊ธฐ ์ํด `klue/roberta-base`๋ฅผ ํ์ธํ๋(Fine-tuning)ํ ๋ชจ๋ธ์
๋๋ค.
|
| 23 |
-
ํ๊ตญ์ด ๋ฌธ์ ๋ฉ์์ง์ ๋ฌธ๋งฅ์ ๋ถ์ํ์ฌ ํด๋น ๋ฉ์์ง๊ฐ ์ ์์ ์ธ ๋ํ์ธ์ง, ์๋๋ฉด ์
์์ ์ธ ์ค๋ฏธ์ฑ ์๋์ธ์ง ๋ถ๋ฅํฉ๋๋ค.
|
| 24 |
-
|
| 25 |
-
์ด ๋ชจ๋ธ์ **"Smishing Forecast: Self-Evolving AI-Powered Smishing Defense System"** ํ๋ก์ ํธ์ ์ผํ์ผ๋ก ๊ฐ๋ฐ๋์์ผ๋ฉฐ, ์ต์ ๋ด์ค ๊ธฐ๋ฐ์ ๊ณต๊ฒฉ ์๋๋ฆฌ์ค(Red Team)์ ์ด์ ๋์ํ๋ ๋ฐฉ์ด ์์คํ
(Blue Team) ๊ฐ์ ์ ๋์ ํ์ต(Adversarial Training)์ ํตํด ์ฑ๋ฅ์ด ๊ณ ๋ํ๋์์ต๋๋ค.
|
| 26 |
-
|
| 27 |
-
- **Developed by:** Donghyun Hwang (and Smishing Forecast Team)
|
| 28 |
-
- **Model Type:** Text Classification (Binary)
|
| 29 |
-
- **Language:** Korean
|
| 30 |
-
- **Base Model:** [klue/roberta-base](https://huggingface.co/klue/roberta-base)
|
| 31 |
-
|
| 32 |
-
## ๐ฏ Intended Uses & Limitations
|
| 33 |
-
|
| 34 |
-
### ์ฌ์ฉ ๋ชฉ์ (Intended Use)
|
| 35 |
-
- **์ค๋ฏธ์ฑ ํ์ง**: SMS, ๋ฉ์ ์ ๋ฑ์์ ์์ ๋ ํ
์คํธ๊ฐ ์ค๋ฏธ์ฑ์ธ์ง ํ๋ณ
|
| 36 |
-
- **๋ณด์ ์ ํ๋ฆฌ์ผ์ด์
**: ๋ชจ๋ฐ์ผ ๋ณด์ ์ฑ, ์คํธ ํํฐ๋ง ์์คํ
์ ๋ฐฑ์๋ ๋ชจ๋ธ
|
| 37 |
-
- **๊ธ์ต ์ฌ๊ธฐ ์๋ฐฉ**: ์ํ ์ฌ์นญ, ๋์ถ ์ฌ๊ธฐ, ์นด์นด์คํก ์ง์ธ ์ฌ์นญ ๋ฑ์ ํ์ง
|
| 38 |
-
|
| 39 |
-
### ์ ํ ์ฌํญ (Limitations)
|
| 40 |
-
- **๋ฐ์ดํฐ ํธํฅ**: ํ์ต ๋ฐ์ดํฐ์ ๋๋ถ๋ถ์ด GPT-4๋ฅผ ํตํด ์์ฑ๋ **ํฉ์ฑ ๋ฐ์ดํฐ(Synthetic Data)**์
๋๋ค. ๋ฐ๋ผ์ ์ค์ ๋ฆฌ์ผ์๋ ๋ฐ์ดํฐ(Wild Data)์ ๋ํด์๋ ์ฑ๋ฅ์ด ๋ค์ ๋จ์ด์ง ์ ์์ต๋๋ค(Overfitting possibility).
|
| 41 |
-
- **์ต์ ๊ณต๊ฒฉ ์ ํ**: ํ์ต๋์ง ์์ ์ ์ข
๊ณต๊ฒฉ ํจํด์ ๋ํด์๋ ํ์ง์จ์ด ๋ฎ์ ์ ์์ต๋๋ค.
|
| 42 |
-
|
| 43 |
-
## ๐ Training Data
|
| 44 |
-
|
| 45 |
-
ํ์ต ๋ฐ์ดํฐ๋ **GPT-4**๋ฅผ ํ์ฉํ์ฌ ์์ฑ๋ 3,000๊ฑด ์ด์์ ํฉ์ฑ ๋ฐ์ดํฐ์
์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.
|
| 46 |
-
- **Normal (Label 0)**: ์ผ์ ๋ํ, ํ๋ฐฐ ์๋ฆผ, ์นด๋ ๊ฒฐ์ ๋ฌธ์, ๊ธฐ์์ฒญ ์๋ฆผ ๋ฑ
|
| 47 |
-
- **Smishing (Label 1)**:
|
| 48 |
-
- ์ ๋ถ ๊ธฐ๊ด ์ฌ์นญ (์ง์๊ธ์ ์ฒญ ๋ฑ)
|
| 49 |
-
- ๊ฐ์กฑ/์ง์ธ ์ฌ์นญ (์ก์ ํ์, ๊ธ์ ์์ฒญ)
|
| 50 |
-
- ๊ธ์ต ๊ธฐ๊ด ์ฌ์นญ (์ ๊ธ๋ฆฌ ๋์ถ, ํ์ ๊ฒฐ์ ์น์ธ)
|
| 51 |
-
- ๊ฒฝ์กฐ์ฌ ์ฌ์นญ (๋ชจ๋ฐ์ผ ์ฒญ์ฒฉ์ฅ, ๋ถ๊ณ ์ฅ)
|
| 52 |
-
|
| 53 |
-
## ๐ Evaluation Results
|
| 54 |
-
|
| 55 |
-
ํฉ์ฑ ํ
์คํธ ๋ฐ์ดํฐ์
(100๊ฑด) ๊ธฐ์ค ์ฑ๋ฅ์
๋๋ค.
|
| 56 |
-
*(์ฃผ์: ํฉ์ฑ ๋ฐ์ดํฐ์ ์ต์ ํ๋ ๊ฒฐ๊ณผ์ด๋ฏ๋ก ์ค์ ํ๊ฒฝ ์ฑ๋ฅ๊ณผ๋ ์ฐจ์ด๊ฐ ์์ ์ ์์ต๋๋ค.)*
|
| 57 |
-
|
| 58 |
-
| Metric | Score |
|
| 59 |
-
| :--- | :--- |
|
| 60 |
-
| **Precision** | 1.00 |
|
| 61 |
-
| **Recall** | 1.00 |
|
| 62 |
-
| **F1-Score** | 1.00 |
|
| 63 |
-
|
| 64 |
-
## ๐ How to Use
|
| 65 |
-
|
| 66 |
-
Python์ `transformers` ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํด ์ฝ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค.
|
| 67 |
-
|
| 68 |
-
```python
|
| 69 |
-
from transformers import AutoTokenizer, AutoModelForSequenceClassification
|
| 70 |
-
import torch
|
| 71 |
-
import re
|
| 72 |
-
|
| 73 |
-
# 1. ๋ชจ๋ธ๊ณผ ํ ํฌ๋์ด์ ๋ก๋
|
| 74 |
-
model_name = "donghyun95/smishing-detection-roberta-base"
|
| 75 |
-
tokenizer = AutoTokenizer.from_pretrained(model_name)
|
| 76 |
-
model = AutoModelForSequenceClassification.from_pretrained(model_name)
|
| 77 |
-
|
| 78 |
-
# 2. ์ ์ฒ๋ฆฌ ํจ์ (ํน์๋ฌธ์ ์ ๊ฑฐ ๋ฑ ๊ถ์ฅ)
|
| 79 |
-
def preprocess(text):
|
| 80 |
-
text = re.sub(r'[^๊ฐ-ํฃa-zA-Z0-9\s]', '', text) # ํน์๋ฌธ์ ์ ๊ฑฐ
|
| 81 |
-
return text.strip()
|
| 82 |
-
|
| 83 |
-
# 3. ์์ธก ํจ์
|
| 84 |
-
def predict_smishing(text):
|
| 85 |
-
clean_text = preprocess(text)
|
| 86 |
-
inputs = tokenizer(clean_text, return_tensors="pt", truncation=True, max_length=128)
|
| 87 |
-
|
| 88 |
-
with torch.no_grad():
|
| 89 |
-
outputs = model(**inputs)
|
| 90 |
-
|
| 91 |
-
probs = torch.softmax(outputs.logits, dim=1)
|
| 92 |
-
smishing_prob = probs[0][1].item() # Label 1์ด ์ค๋ฏธ์ฑ
|
| 93 |
-
|
| 94 |
-
return smishing_prob
|
| 95 |
-
|
| 96 |
-
# 4. ํ
์คํธ
|
| 97 |
-
sample_text = "์๋ง ๋ ํฐ ๊ณ ์ฅ๋์ ์๋ฆฌ๋งก๊ฒผ์ด. ์ด ๋ฒํธ๋ก ๋ฌธ์์ค."
|
| 98 |
-
probability = predict_smishing(sample_text)
|
| 99 |
-
|
| 100 |
-
print(f"์ค๋ฏธ์ฑ ํ๋ฅ : {probability * 100:.2f}%")
|
| 101 |
-
if probability > 0.7:
|
| 102 |
-
print("๐จ ์ค๋ฏธ์ฑ ์์ฌ ๋ฌธ์์
๋๋ค!")
|
| 103 |
-
else:
|
| 104 |
-
print("โ
์ ์ ๋ฌธ์์
๋๋ค.")
|
| 105 |
-
```
|
| 106 |
-
|
| 107 |
-
## โ ๏ธ Disclaimer
|
| 108 |
-
์ด ๋ชจ๋ธ์ ์ฐ๊ตฌ ๋ฐ ๊ต์ก ๋ชฉ์ ์ผ๋ก ๊ฐ๋ฐ๋์์ต๋๋ค. ์ค์ ๊ธ์ต ๊ฑฐ๋๋ ๋ณด์ ์์คํ
์ ๋จ๋
์ผ๋ก ์์กดํ์ฌ ์ฌ์ฉํ๊ธฐ์๋ ์ํ์ด ๋ฐ๋ฅผ ์ ์์ผ๋ฉฐ, ๋ณด์กฐ์ ์ธ ์๋จ์ผ๋ก ํ์ฉํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค.
|
| 109 |
-
|
| 110 |
-
## ๐๏ธ Citation
|
| 111 |
-
|
| 112 |
-
If you use this model in your research or project, please cite it as follows:
|
| 113 |
-
|
| 114 |
-
**BibTeX:**
|
| 115 |
-
```bibtex
|
| 116 |
-
@misc{smishing-forecast-2026,
|
| 117 |
-
author = {Hwang, Donghyun and Cho, Eunkyung and Ahn, Seongmin and Hwang,
|
| 118 |
-
title = {Smishing Forecast: Self-Evolving AI-Powered Smishing Defense System},
|
| 119 |
-
year = {2026},
|
| 120 |
-
publisher = {GitHub},
|
| 121 |
-
journal = {GitHub repository},
|
| 122 |
-
howpublished = {\url{https://github.com/DongHyun925/SmishingForecast}}
|
| 123 |
-
}
|
| 124 |
-
```
|
| 125 |
-
|
| 126 |
-
**APA:**
|
| 127 |
-
Hwang, D., Cho, E., Ahn, S., & Hwang, S. (2026). *Smishing Forecast: Self-Evolving AI-Powered Smishing Defense System*. GitHub. https://github.com/DongHyun925/SmishingForecast
|
| 128 |
-
|
| 129 |
-
## ๐ License
|
| 130 |
-
[MIT License](https://opensource.org/licenses/MIT)
|
|
|
|
| 1 |
+
---
|
| 2 |
+
language:
|
| 3 |
+
- ko
|
| 4 |
+
tags:
|
| 5 |
+
- security
|
| 6 |
+
- smishing-detection
|
| 7 |
+
- roberta
|
| 8 |
+
- text-classification
|
| 9 |
+
pipeline_tag: text-classification
|
| 10 |
+
license: mit
|
| 11 |
+
base_model: klue/roberta-base
|
| 12 |
+
metrics:
|
| 13 |
+
- f1
|
| 14 |
+
- precision
|
| 15 |
+
- recall
|
| 16 |
+
---
|
| 17 |
+
|
| 18 |
+
# Smishing Detection RoBERTa Base ๐ก๏ธ๐ฑ
|
| 19 |
+
|
| 20 |
+
## ๐ Model Description
|
| 21 |
+
|
| 22 |
+
์ด ๋ชจ๋ธ์ **์ค๋ฏธ์ฑ(Smishing, SMS Phishing)** ๋ฌธ์๋ฅผ ์ค์๊ฐ์ผ๋ก ํ์งํ๊ธฐ ์ํด `klue/roberta-base`๋ฅผ ํ์ธํ๋(Fine-tuning)ํ ๋ชจ๋ธ์
๋๋ค.
|
| 23 |
+
ํ๊ตญ์ด ๋ฌธ์ ๋ฉ์์ง์ ๋ฌธ๋งฅ์ ๋ถ์ํ์ฌ ํด๋น ๋ฉ์์ง๊ฐ ์ ์์ ์ธ ๋ํ์ธ์ง, ์๋๋ฉด ์
์์ ์ธ ์ค๋ฏธ์ฑ ์๋์ธ์ง ๋ถ๋ฅํฉ๋๋ค.
|
| 24 |
+
|
| 25 |
+
์ด ๋ชจ๋ธ์ **"Smishing Forecast: Self-Evolving AI-Powered Smishing Defense System"** ํ๋ก์ ํธ์ ์ผํ์ผ๋ก ๊ฐ๋ฐ๋์์ผ๋ฉฐ, ์ต์ ๋ด์ค ๊ธฐ๋ฐ์ ๊ณต๊ฒฉ ์๋๋ฆฌ์ค(Red Team)์ ์ด์ ๋์ํ๋ ๋ฐฉ์ด ์์คํ
(Blue Team) ๊ฐ์ ์ ๋์ ํ์ต(Adversarial Training)์ ํตํด ์ฑ๋ฅ์ด ๊ณ ๋ํ๋์์ต๋๋ค.
|
| 26 |
+
|
| 27 |
+
- **Developed by:** Donghyun Hwang (and Smishing Forecast Team)
|
| 28 |
+
- **Model Type:** Text Classification (Binary)
|
| 29 |
+
- **Language:** Korean
|
| 30 |
+
- **Base Model:** [klue/roberta-base](https://huggingface.co/klue/roberta-base)
|
| 31 |
+
|
| 32 |
+
## ๐ฏ Intended Uses & Limitations
|
| 33 |
+
|
| 34 |
+
### ์ฌ์ฉ ๋ชฉ์ (Intended Use)
|
| 35 |
+
- **์ค๋ฏธ์ฑ ํ์ง**: SMS, ๋ฉ์ ์ ๋ฑ์์ ์์ ๋ ํ
์คํธ๊ฐ ์ค๋ฏธ์ฑ์ธ์ง ํ๋ณ
|
| 36 |
+
- **๋ณด์ ์ ํ๋ฆฌ์ผ์ด์
**: ๋ชจ๋ฐ์ผ ๋ณด์ ์ฑ, ์คํธ ํํฐ๋ง ์์คํ
์ ๋ฐฑ์๋ ๋ชจ๋ธ
|
| 37 |
+
- **๊ธ์ต ์ฌ๊ธฐ ์๋ฐฉ**: ์ํ ์ฌ์นญ, ๋์ถ ์ฌ๊ธฐ, ์นด์นด์คํก ์ง์ธ ์ฌ์นญ ๋ฑ์ ํ์ง
|
| 38 |
+
|
| 39 |
+
### ์ ํ ์ฌํญ (Limitations)
|
| 40 |
+
- **๋ฐ์ดํฐ ํธํฅ**: ํ์ต ๋ฐ์ดํฐ์ ๋๋ถ๋ถ์ด GPT-4๋ฅผ ํตํด ์์ฑ๋ **ํฉ์ฑ ๋ฐ์ดํฐ(Synthetic Data)**์
๋๋ค. ๋ฐ๋ผ์ ์ค์ ๋ฆฌ์ผ์๋ ๋ฐ์ดํฐ(Wild Data)์ ๋ํด์๋ ์ฑ๋ฅ์ด ๋ค์ ๋จ์ด์ง ์ ์์ต๋๋ค(Overfitting possibility).
|
| 41 |
+
- **์ต์ ๊ณต๊ฒฉ ์ ํ**: ํ์ต๋์ง ์์ ์ ์ข
๊ณต๊ฒฉ ํจํด์ ๋ํด์๋ ํ์ง์จ์ด ๋ฎ์ ์ ์์ต๋๋ค.
|
| 42 |
+
|
| 43 |
+
## ๐ Training Data
|
| 44 |
+
|
| 45 |
+
ํ์ต ๋ฐ์ดํฐ๋ **GPT-4**๋ฅผ ํ์ฉํ์ฌ ์์ฑ๋ 3,000๊ฑด ์ด์์ ํฉ์ฑ ๋ฐ์ดํฐ์
์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.
|
| 46 |
+
- **Normal (Label 0)**: ์ผ์ ๋ํ, ํ๋ฐฐ ์๋ฆผ, ์นด๋ ๊ฒฐ์ ๋ฌธ์, ๊ธฐ์์ฒญ ์๋ฆผ ๋ฑ
|
| 47 |
+
- **Smishing (Label 1)**:
|
| 48 |
+
- ์ ๋ถ ๊ธฐ๊ด ์ฌ์นญ (์ง์๊ธ์ ์ฒญ ๋ฑ)
|
| 49 |
+
- ๊ฐ์กฑ/์ง์ธ ์ฌ์นญ (์ก์ ํ์, ๊ธ์ ์์ฒญ)
|
| 50 |
+
- ๊ธ์ต ๊ธฐ๊ด ์ฌ์นญ (์ ๊ธ๋ฆฌ ๋์ถ, ํ์ ๊ฒฐ์ ์น์ธ)
|
| 51 |
+
- ๊ฒฝ์กฐ์ฌ ์ฌ์นญ (๋ชจ๋ฐ์ผ ์ฒญ์ฒฉ์ฅ, ๋ถ๊ณ ์ฅ)
|
| 52 |
+
|
| 53 |
+
## ๐ Evaluation Results
|
| 54 |
+
|
| 55 |
+
ํฉ์ฑ ํ
์คํธ ๋ฐ์ดํฐ์
(100๊ฑด) ๊ธฐ์ค ์ฑ๋ฅ์
๋๋ค.
|
| 56 |
+
*(์ฃผ์: ํฉ์ฑ ๋ฐ์ดํฐ์ ์ต์ ํ๋ ๊ฒฐ๊ณผ์ด๋ฏ๋ก ์ค์ ํ๊ฒฝ ์ฑ๋ฅ๊ณผ๋ ์ฐจ์ด๊ฐ ์์ ์ ์์ต๋๋ค.)*
|
| 57 |
+
|
| 58 |
+
| Metric | Score |
|
| 59 |
+
| :--- | :--- |
|
| 60 |
+
| **Precision** | 1.00 |
|
| 61 |
+
| **Recall** | 1.00 |
|
| 62 |
+
| **F1-Score** | 1.00 |
|
| 63 |
+
|
| 64 |
+
## ๐ How to Use
|
| 65 |
+
|
| 66 |
+
Python์ `transformers` ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํด ์ฝ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค.
|
| 67 |
+
|
| 68 |
+
```python
|
| 69 |
+
from transformers import AutoTokenizer, AutoModelForSequenceClassification
|
| 70 |
+
import torch
|
| 71 |
+
import re
|
| 72 |
+
|
| 73 |
+
# 1. ๋ชจ๋ธ๊ณผ ํ ํฌ๋์ด์ ๋ก๋
|
| 74 |
+
model_name = "donghyun95/smishing-detection-roberta-base"
|
| 75 |
+
tokenizer = AutoTokenizer.from_pretrained(model_name)
|
| 76 |
+
model = AutoModelForSequenceClassification.from_pretrained(model_name)
|
| 77 |
+
|
| 78 |
+
# 2. ์ ์ฒ๋ฆฌ ํจ์ (ํน์๋ฌธ์ ์ ๊ฑฐ ๋ฑ ๊ถ์ฅ)
|
| 79 |
+
def preprocess(text):
|
| 80 |
+
text = re.sub(r'[^๊ฐ-ํฃa-zA-Z0-9\s]', '', text) # ํน์๋ฌธ์ ์ ๊ฑฐ
|
| 81 |
+
return text.strip()
|
| 82 |
+
|
| 83 |
+
# 3. ์์ธก ํจ์
|
| 84 |
+
def predict_smishing(text):
|
| 85 |
+
clean_text = preprocess(text)
|
| 86 |
+
inputs = tokenizer(clean_text, return_tensors="pt", truncation=True, max_length=128)
|
| 87 |
+
|
| 88 |
+
with torch.no_grad():
|
| 89 |
+
outputs = model(**inputs)
|
| 90 |
+
|
| 91 |
+
probs = torch.softmax(outputs.logits, dim=1)
|
| 92 |
+
smishing_prob = probs[0][1].item() # Label 1์ด ์ค๋ฏธ์ฑ
|
| 93 |
+
|
| 94 |
+
return smishing_prob
|
| 95 |
+
|
| 96 |
+
# 4. ํ
์คํธ
|
| 97 |
+
sample_text = "์๋ง ๋ ํฐ ๊ณ ์ฅ๋์ ์๋ฆฌ๋งก๊ฒผ์ด. ์ด ๋ฒํธ๋ก ๋ฌธ์์ค."
|
| 98 |
+
probability = predict_smishing(sample_text)
|
| 99 |
+
|
| 100 |
+
print(f"์ค๋ฏธ์ฑ ํ๋ฅ : {probability * 100:.2f}%")
|
| 101 |
+
if probability > 0.7:
|
| 102 |
+
print("๐จ ์ค๋ฏธ์ฑ ์์ฌ ๋ฌธ์์
๋๋ค!")
|
| 103 |
+
else:
|
| 104 |
+
print("โ
์ ์ ๋ฌธ์์
๋๋ค.")
|
| 105 |
+
```
|
| 106 |
+
|
| 107 |
+
## โ ๏ธ Disclaimer
|
| 108 |
+
์ด ๋ชจ๋ธ์ ์ฐ๊ตฌ ๋ฐ ๊ต์ก ๋ชฉ์ ์ผ๋ก ๊ฐ๋ฐ๋์์ต๋๋ค. ์ค์ ๊ธ์ต ๊ฑฐ๋๋ ๋ณด์ ์์คํ
์ ๋จ๋
์ผ๋ก ์์กดํ์ฌ ์ฌ์ฉํ๊ธฐ์๋ ์ํ์ด ๋ฐ๋ฅผ ์ ์์ผ๋ฉฐ, ๋ณด์กฐ์ ์ธ ์๋จ์ผ๋ก ํ์ฉํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค.
|
| 109 |
+
|
| 110 |
+
## ๐๏ธ Citation
|
| 111 |
+
|
| 112 |
+
If you use this model in your research or project, please cite it as follows:
|
| 113 |
+
|
| 114 |
+
**BibTeX:**
|
| 115 |
+
```bibtex
|
| 116 |
+
@misc{smishing-forecast-2026,
|
| 117 |
+
author = {Hwang, Donghyun and Cho, Eunkyung and Ahn, Seongmin and Hwang, Sunwoo},
|
| 118 |
+
title = {Smishing Forecast: Self-Evolving AI-Powered Smishing Defense System},
|
| 119 |
+
year = {2026},
|
| 120 |
+
publisher = {GitHub},
|
| 121 |
+
journal = {GitHub repository},
|
| 122 |
+
howpublished = {\url{https://github.com/DongHyun925/SmishingForecast}}
|
| 123 |
+
}
|
| 124 |
+
```
|
| 125 |
+
|
| 126 |
+
**APA:**
|
| 127 |
+
Hwang, D., Cho, E., Ahn, S., & Hwang, S. (2026). *Smishing Forecast: Self-Evolving AI-Powered Smishing Defense System*. GitHub. https://github.com/DongHyun925/SmishingForecast
|
| 128 |
+
|
| 129 |
+
## ๐ License
|
| 130 |
+
[MIT License](https://opensource.org/licenses/MIT)
|