Research
Security News
Malicious npm Package Targets Solana Developers and Hijacks Funds
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
Latest Version: 1.0.3
pip install kcaptcha==1.0.3
已通过pypi发布。可通过pip install kcaptcha
安装。(但是不想写文档!先忍一下[doge])
from kcaptcha.core import SlideKiller
slide_killer = SlideKiller()
# test slide match mode
with open('imgs/slide_match_target_1.jpg', 'rb') as f:
test_match_target = f.read()
with open('imgs/slide_match_bg_1.jpg', 'rb') as f:
test_match_background = f.read()
match_result = slide_killer.match(test_match_target, test_match_background, simple_target=True,
target_threshold=(200, 300),
method=4,
background_threshold=(100, 200), debug=True, border=True)
增加了debug参数,用来显示识别过程中各阶段的图片,方便调整阈值参数。
通过 API 提供字符型验证码识别、滑块验证码的滑动距离识别、点选验证码的点击位置识别服务。
HOST: 192.168.0.155:9898
功能 | URI | 备注 |
---|---|---|
通用字符型验证码识别 | /common/ocr/file | 通过开源的onnx格式ai模型实现 |
通用点选验证码识别 | /common/det/file | 通过开源的onnx格式ai模型实现 |
通用滑块验证码识别-匹配模式 | /common/slide-match/file | 通过cv库实现 |
通用滑块验证码识别-对比模式 | /common/slide-match/file | 通过cv库实现 |
极验文字点选验证码识别 | /geetest/order-click/file | 通过cv库及ai模型实现 |
可以处理的验证码示例如下:
通用字符型验证
通用点选(不带语序,仅目标识别)
通用滑块-匹配模式
适用于能获取滑块图片(target_img)及带缺口背景图(bg_img)的滑块验证码,返回滑块的位置
通用滑块-比较模式
适用于能获取完整背景图及带缺口背景图的滑块验证码,返回滑动距离
极验文字点选验证码识别
按顺序点选文字验证码,图标形式暂未实现。
名称 | 类型 | 必填 | 示例 | 描述 |
---|---|---|---|---|
img | String | 是 | 图片二进制文件 | 图片的二进制文件,调用时把图片二进制文件放入到HTTP body 中上传即可。 |
名称 | 类型 | 示例 | 描述 |
---|---|---|---|
code | Integer | 200 | 状态码 |
msg | String | "" | 状态描述 |
results | String | "jepv" | 识别结果 |
import requests
url = HOST + '/common/ocr/file'
img_file_path = {Your Img Filepath}
files = {
'img': ('img', open(img_file_path, 'rb'))
}
response = requests.post(url, files=files)
{"code": 200, "results": "jepv", "msg": ""}
名称 | 类型 | 必填 | 示例 | 描述 |
---|---|---|---|---|
img | String | 是 | 图片二进制文件 | 图片的二进制文件,调用时把图片二进制文件放入到HTTP body 中上传即可。 |
名称 | 类型 | 示例 | 描述 |
---|---|---|---|
code | Integer | 200 | 状态码 |
msg | String | "" | 状态描述 |
results | Array | [[131, 53, 182, 103], [214, 52, 258, 96]] | 识别结果:列表每项为一个四元组,该四元组表示一个区域,分别为左上x坐标、左上y坐标、右下x坐标、右下y坐标。 |
import requests
url = HOST + '/common/det/file'
img_file_path = {Your Img Filepath}
files = {
'img': ('img', open(img_file_path, 'rb'))
}
response = requests.post(url, files=files)
{"code": 200, "results": [[131, 53, 182, 103], [214, 52, 258, 96], [299, 105, 350, 154], [292, 17, 341, 65]], "msg": ""}
名称 | 类型 | 必填 | 示例 | 描述 |
---|---|---|---|---|
target_img | String | 是 | 图片二进制文件 | 滑块图片的二进制文件,调用时把图片二进制文件放入到HTTP body 中上传即可 |
bg_img | String | 是 | 图片二进制文件 | 带缺口背景图片的二进制文件,调用时把图片二进制文件放入到HTTP body 中上传即可 |
method | Integer | 否 | 4 | 进行滑块匹配的算法模式,可选值为0~4,具体算法含义可参考cv2的文档 |
target_threshold_min | Integer | 否 | 100 | 滑块图二值化处理的最小阈值 |
target_threshold_max | Integer | 否 | 300 | 滑块图二值化处理的最大阈值 |
background_threshold_min | Integer | 否 | 100 | 背景图二值化处理的最小阈值 |
background_threshold_max | Integer | 否 | 130 | 背景图二值化处理的最大阈值 |
border | Bool | 否 | True | 对滑块图片处理时是否添加边框 |
注:因各类滑块验证码存在差异,当发现识别准确率不高时,可尝试调整 method、target_threshold_min、target_threshold_max、background_threshold_min、background_threshold_max、border 参数
名称 | 类型 | 示例 | 描述 |
---|---|---|---|
code | Integer | 200 | 状态码 |
msg | String | "" | 状态描述 |
results | Object | {"target_y": 0, "target": [191, 116, 259, 184]} | 识别结果:target_y 为Y轴方向上移动的距离;target 为缺口位置,以四元组表示,分别为左上x坐标、左上y坐标、右下x坐标、右下y坐标。 |
import requests
url = HOST + '/common/slide-match/file'
target_img_file_path = {Your Img Filepath}
bg_img_file_path = {Your Img Filepath}
data = {
'method': 4,
'target_threshold_min': 100,
'target_threshold_max': 300,
'background_threshold_min': 100,
'background_threshold_max': 130,
'border': True
}
files = {
'target_img': ('img', open(target_img_file_path, 'rb')),
'bg_img': ('img', open(bg_img_file_path, 'rb')),
}
response = requests.post(url, files=files, data=data)
{"code": 200, "results": {"target_y": 0, "target": [191, 116, 259, 184]}, "msg": ""}
名称 | 类型 | 必填 | 示例 | 描述 |
---|---|---|---|---|
full_bg_img | String | 是 | 图片二进制文件 | 完整背景图片的二进制文件,调用时把图片二进制文件放入到HTTP body 中上传即可 |
bg_img | String | 是 | 图片二进制文件 | 带缺口背景图片的二进制文件,调用时把图片二进制文件放入到HTTP body 中上传即可 |
名称 | 类型 | 示例 | 描述 |
---|---|---|---|
code | Integer | 200 | 状态码 |
msg | String | "" | 状态描述 |
results | Object | {'target': [124, 79]} | 识别结果:target 为缺口位置,以二元组表示,分别为缺口左侧距做边框的距离、纵坐标。 |
import requests
url = HOST + '/common/slide-compare/file'
full_bg_img_path = {Your Img Filepath}
bg_img_path = {Your Img Filepath}
files = {
'full_bg_img': ('img', open(full_bg_img, 'rb')),
'bg_img': ('img', open(bg_img_path, 'rb')),
}
response = requests.post(url, files=files)
{"code": 200, "results": {'target': [124, 79]}, "msg": ""}
名称 | 类型 | 必填 | 示例 | 描述 |
---|---|---|---|---|
img | String | 是 | 图片二进制文件 | 图片的二进制文件,调用时把图片二进制文件放入到HTTP body 中上传即可。 |
名称 | 类型 | 示例 | 描述 |
---|---|---|---|
code | Integer | 200 | 状态码 |
msg | String | "" | 状态描述 |
results | Array | [{"char": "松", "target": [149, 125, 207, 182]}, {"char": "油", "target": [9, 242, 67, 300]}, {"char": "醇", "target": [94, 25, 156, 87]}] | 识别结果:按顺序返回识别结果,每项中char为识别的字,target为一个四元组,分别为左上x坐标、左上y坐标、右下x坐标、右下y坐标。 |
import requests
url = HOST + '/geetest/order-click/file'
img_file_path = {Your Img Filepath}
files = {
'img': ('img', open(img_file_path, 'rb'))
}
response = requests.post(url, files=files)
{"code": 200, "results": [{"char": "松", "target": [149, 125, 207, 182]}, {"char": "油", "target": [9, 242, 67, 300]}, {"char": "醇", "target": [94, 25, 156, 87]}], "msg": ""}
通过pypi发布,以提供更便捷的使用方式
增加可选的debug功能:调用时可返回中间的过程图,方便调整阈值等参数提高准确率
极验图标点选验证
极验语序点选验证码
计算式验证码处理
FAQs
kill captcha
We found that kcaptcha demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
Security News
Research
Socket researchers have discovered malicious npm packages targeting crypto developers, stealing credentials and wallet data using spyware delivered through typosquats of popular cryptographic libraries.
Security News
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.