{"id":30142707,"url":"https://github.com/soulee-dev/vkeypad-bypass","last_synced_at":"2026-02-22T20:00:57.495Z","repository":{"id":152407605,"uuid":"625585810","full_name":"soulee-dev/vkeypad-bypass","owner":"soulee-dev","description":"가상키보드(vKeypad) 우회도구","archived":false,"fork":false,"pushed_at":"2025-08-09T06:48:41.000Z","size":99,"stargazers_count":54,"open_issues_count":1,"forks_count":7,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-13T16:59:31.648Z","etag":null,"topics":["crawling","korean","python","requests","rpa","scrapping","security","selenium","vkeyboard","vkeypad","webautomation"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/soulee-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-04-09T15:13:37.000Z","updated_at":"2025-12-30T15:09:28.000Z","dependencies_parsed_at":null,"dependency_job_id":"2739d5df-9ad6-4dc8-a91f-10a32291c71b","html_url":"https://github.com/soulee-dev/vkeypad-bypass","commit_stats":null,"previous_names":["soulee-dev/vkeypad-bypass","soulee-dev/fuckvkeypad"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/soulee-dev/vkeypad-bypass","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soulee-dev%2Fvkeypad-bypass","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soulee-dev%2Fvkeypad-bypass/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soulee-dev%2Fvkeypad-bypass/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soulee-dev%2Fvkeypad-bypass/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/soulee-dev","download_url":"https://codeload.github.com/soulee-dev/vkeypad-bypass/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soulee-dev%2Fvkeypad-bypass/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29725287,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-22T19:57:12.410Z","status":"ssl_error","status_checked_at":"2026-02-22T19:54:50.710Z","response_time":110,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["crawling","korean","python","requests","rpa","scrapping","security","selenium","vkeyboard","vkeypad","webautomation"],"created_at":"2025-08-11T06:02:14.940Z","updated_at":"2026-02-22T20:00:57.396Z","avatar_url":"https://github.com/soulee-dev.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ⌨️ vkeypad-bypass\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n[![Lint](https://github.com/soulee-dev/vkeypad-bypass/actions/workflows/black.yml/badge.svg)](https://github.com/soulee-dev/vkeypad-bypass/actions/workflows/black.yml)\n[![codecov](https://codecov.io/gh/soulee-dev/vkeypad-bypass/branch/main/graph/badge.svg?token=V3MK4N5X5X)](https://codecov.io/gh/soulee-dev/vkeypad-bypass)\n![PyPI](https://img.shields.io/pypi/v/vkeypad-bypass)\n\n\n![vKeypad1](images/img1.png)\n![vKeypad2](images/img2.png)\n\n금융, 정부 웹사이트등에 널리 쓰이는 보안 프로그램인 가상키보드(vKeypad)를 우회합니다\n\n**미리 각 키별 이미지를 저장해두고**, 저장한 이미지와의 유사도를 분석하는 방식으로 가상키보드를 우회합니다.\n\n**키 배열이 무작위로 바뀌는 경우에도 인식이 가능합니다**\n\n# 사용 방법\n## vKeypad-Studio\nvkeypad-studio는 각 키별 이미지와, 키보드상 이미지 좌표 추출을 도와주는 도구입니다.\n\n편안한 레이아웃 추출을 위해 figma에서 그린 각 레이어의 위치를 분석해 이미지와, 좌표값을 저장해줍니다.\n\n[사용 방법 영상 - YouTube](https://www.youtube.com/watch?v=4kE4m3oMGX8)\n1. 가상키보드 이미지를 준비합니다\n2. Figma에서 가상 키보드 이미지를 업로드 합니다\n3. Figma에서 사각형으로 가상 키보드 각각의 키를 덮어줍니다\n4. Figma에서 svg 파일로 Export 합니다\n5. 터미널에서 ``vkeypad-studio [이미지 파일] [svg 파일]`` 을 입력합니다\n6. 새로 뜬 창에서, 이미지에 해당되는 키보드 키를 눌러줍니다\n7. assets 폴더 속 사진들과, data.json을 보관 합니다.\n\n이 라이브러리에선 aseets속 사진들과, data.json를 이용해 이미지 비교도를 분석하여 어떤 키인지 확인합니다.\n\n## vkeypad-bypass\n### 설치\n```\npip install vkeypad-bypass\n```\n\n### 예제\n```python\nimport cv2\nfrom vkeypadbypass import get_keymap\n\nimg = cv2.imread(\"test_assets/vKeypad.png\")\nkeymap = get_keymap(\n    img=img, asset_path=\"test_assets/\", data_path=\"test_assets/data.json\", threshold=100\n)\n\nprint(keymap)\n```\n - img: cv2로 읽은 데이터\n - asset_path: assets 폴더 경로\n - data_path: data.json의 경로\n - threshold: 이미지 일치도 가중치\n\n\n결과값: 바운딩 박스의 좌표와 키코드를 순서대로 출력합니다\n```python\n[\n  {\"box\": [0, 0, 55, 55], \"key_code\": 49},\n  {\"box\": [58, 0, 113, 55], \"key_code\": 50},\n  {\"box\": [116, 0, 171, 55], \"key_code\": 51},\n  {\"box\": [0, 58, 55, 113], \"key_code\": 52},\n  {\"box\": [58, 58, 113, 113], \"key_code\": 53},\n  {\"box\": [116, 58, 171, 113], \"key_code\": 54},\n  {\"box\": [0, 116, 55, 171], \"key_code\": 55},\n  {\"box\": [58, 116, 113, 171], \"key_code\": 56},\n  {\"box\": [116, 116, 171, 171], \"key_code\": 57},\n  {\"box\": [58, 174, 113, 229], \"key_code\": 48},\n]\n```\nSelenium에서 좌표를 이용한 Click 혹은, tag를 이용한 Click이 가능합니다.\n\n# Special Thanks\n이 라이브러리는[simple_bank_korea](https://github.com/Beomi/simple_bank_korea)에서 영감을 받아 제작하였습니다\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoulee-dev%2Fvkeypad-bypass","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsoulee-dev%2Fvkeypad-bypass","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoulee-dev%2Fvkeypad-bypass/lists"}