最近接到不下5起此类问题求助,疑似用户使用了某某注册机导致。
ESSystem.ES_SysInfo
中 Version
值被篡改清空,Es_repcase表被写了加密触发器(通常叫tl_RLB)。
所有人
登陆时显示密码不对!ES_user表被篡改,用户密码全部被改成ABD17C808C4EBD04954089BF1698E348
(md5)
从ESModel库中复制GetNewId_s存储过程替换应用库的存储过程。
将ES_user表中密码都清空,让用户重设密码,如果用户太多,可以从历史库中update到本库。
感谢 @Mr.Qili
和 @王达
两位筒子提供的解法
目前尚无任何组织个人声称对此类黑手
行为负责,请大家小心。
请不要使用不明来历的ES注册机,特别是有限制时间的,尤其是来自淘宝贩子,真爱生命,远离盗版。
使用自带编号简单点,不过自动编号浪费资源严重,你懂的。
使用填入公式节省资源,但是修改略麻烦。
大公司编号通常还是人工编制,因为编码规则往往非常复杂。
今早代码撸得正爽时,突然N个QQ消息闪动,打开一看,村民们都在私信我,为什么QQ群被封了?
打开[达摩院]群一看,我了个去,duang~!
这类封号是无解的,好吧,立马重组新群,本来还想群克隆一下,蛋疼的是没法克隆,那就一个个加吧,60%的用户都拉一遍,剩下的就等主动来找回家的路了。
新技术讨论QQ群(ESAP水镜禅院):365159025 «点击加入
为了防止世界再度被破坏,为了维护世界的和平,贯彻爱与真实的开车,可爱又迷人的ESAP。
永远的灯塔,回家之路在此↓↓↓
目前尚无任何组织和个人声称对此次举报封停事件负责。
据统计,目前暂无人员伤亡,虽然部分新近资料没来得及收录到ESBOOK,不过损失可忽略不计。
村长目前心情也不错,新群新气象,ESAP会继续带大家飞,go~go~go~O(∩_∩)O。
by @一零村长
2018-2-7
好久没有更新博客了,最近收到一台@宁波-老方
送来的神盾ICR-100U身份证阅读器,于是花了半天捣鼓了一下ES玩转身份证扫描识别。
本次实践参考了宝典中的ES调用身份证阅读器方案,感谢@云
童鞋提供的宝贵教程。
一机器,一USB线,一驱动盘而已。
我的电脑是win10,安装完32位驱动后还要手工更新驱动到64位,具体方法驱动盘里有pdf资料,这里就不写了。
Public Declare Function InitComm Lib "termb.dll" (ByVal port As Integer) As Integer
Public Declare Function InitCommExt Lib "termb.dll" () As Integer
Public Declare Function Authenticate Lib "termb.dll" () As Integer
Public Declare Function AuthenticateExt Lib "termb.dll" () As Integer
Public Declare Function Read_Content_Path Lib "termb.dll" (ByVal fileName As String, ByVal active As Integer) As Integer
Public Declare Function Read_Content Lib "termb.dll" (ByVal active As Integer) As Integer
Public Declare Function CloseComm Lib "termb.dll" () As Integer
Public Declare Function GetSAMID Lib "termb.dll" () As String
'状态1
Const ReadState = "读卡状态"
Const DebugState = "调试状态"
'状态2
Const OpenPortError = "打开串口失败!"
Const TimeOutError = "通讯超时!"
Const RecError = "操作失败!"
Const XpError = "相片解码错误!"
Const FileExtError = "wlt文件后缀错误!"
Const FileOpenError = "wlt文件打开错误!"
Const FileFormatError = "wlt文件格式错误!"
Const JmError = "软件未授权!"
Const CardError = "卡认证错误!"
Const UnknowError = "未知错误!"
'状态3
Const Swipe = "请放卡..."
Const ReadOK = "读卡成功!请放下一张卡..."
Const ReadError = "读卡失败!请重新放卡..."
Const NewAddError = "读最新住址失败!"
Const IINSNDNError = "读芯片号失败!"
Const Reading = "正在读卡..."
'路径
Const strPathName = "C:"
'变量
Dim bcc, TimeOutFlag As Byte
Dim OutByte() As Byte
Dim RecCount, i, j As Long
Dim PortNum As Integer
Dim ComPort, ReadMode, tmp As String
Dim nametmp, sextmp, nationtmp, borntmp, addresstmp, IDNtmp, regtmp, datetmp As String
Dim RecTmp(), RecByte() As String
'读卡按钮代码
Sub ReadCard()
ans = InitCommExt '开串口
If ans = 0 Then
PortNum = 1001
ans = InitComm(PortNum) '开USB口
If ans <> 1 Then
ret = MsgBox("打开端口失败!", , "错误")
End
End If
End If
If ans >= 1001 Then Application.StatusBar = "连接USB口,请放卡..."
Dim strSAMID As String '* 37
strSAMID = GetSAMID()
Dim s
s = Split(strSAMID, "-", -1, 1)
If UBound(s) > 3 Then Application.Caption = "(" + "授权号: " + s(2) + "-" + s(3) + ") "
'卡认证
ans = Authenticate()
'卡认证成功
If ans = 1 Then
Application.StatusBar = Reading
ans = Read_Content_Path(strPathName, 1)
Select Case ans
Case 1 '读卡成功
Application.StatusBar = ReadOK
Call Display(strPathName) 'App.Path)
Case -1 '相片解码错误
Call Display(App.Path)
Application.StatusBar = XpError
Case -2 'wlt文件后缀错误
Application.StatusBar = FileExtError
Case -3 'wlt文件打开错误
Application.StatusBar = FileOpenError
Case -4 'wlt文件格式错误
Application.StatusBar = FileFormatError
Case -5 '软件未授权
Application.StatusBar = JmError
Case Else '读卡失败
Application.StatusBar = ReadError
End Select
End If
CloseComm
End Sub
'显示信息
Private Sub Display(ByRef strFilePath As String)
Dim tmp1 As Byte
Dim tmp2 As Byte
Dim rddata As String
Open strFilePath & "\wz.txt" For Binary As #1
Do While Not EOF(1) ' 检查文件尾。
Get #1, , tmp1
Get #1, , tmp2
rddata = rddata + ChrW(tmp2 * CLng(256) + tmp1)
Loop
Close #1
'姓名
nametmp = Mid(rddata, 1, 15)
'性别
sextmp = Mid(rddata, 16, 1)
'民族
nationtmp = Mid(rddata, 17, 2)
'出生日期
borntmp = Mid(rddata, 19, 8)
'住址
addresstmp = Mid(rddata, 27, 35)
'公民身份号码
IDNtmp = Mid(rddata, 62, 18)
'签发机关
regtmp = Mid(rddata, 80, 15)
'有效期限
ValidDatetmp = Mid(rddata, 95, 16)
'【姓名单元格】 请改成自己的range
Range("C4").Value = nametmp
'【性别单元格】 请改成自己的range
Select Case sextmp
Case "0"
Range("E4").Value = "未知"
Case "1"
Range("E4").Value = "男"
Case "2"
Range("E4").Value = "女"
Case Else
Range("E4").Value = "未说明"
End Select
'【民族单元格】 请改成自己的range
Dim nationtmp1 As String
ans = GetNation(nationtmp, nationtmp1)
Range("E5").Value = nationtmp1
'【地址单元格】 请改成自己的range
Range("E10").Value = addresstmp
'【身份证号单元格】 请改成自己的range
Range("G8").Value = IDNtmp
'【照片单元格】 请改成自己的range
Range("H4").Select
Application.COMAddIns("ESClient10.Connect").Object.AddPicture strFilePath & "\zp.bmp", 1, 4, 8 ' 插入图片
End Sub
'民族代码查表
Public Function GetNation(ByVal strNationcode As String, ByRef strNation As String)
Dim strNationArray As Variant
strNationArray = Array("汉", "蒙古", "回", "藏", "维吾尔", "苗", "彝", "壮", "布依", "朝鲜", _
"满", "侗", "瑶", "白", "土家", "哈尼", "哈萨克", "傣", "黎", "傈僳", _
"佤", "畲", "高山", "拉祜", "水", "东乡", "纳西", "景颇", "柯尔克孜", "土", _
"达斡尔", "仫佬", "羌", "布朗", "撒拉", "毛南", "仡佬", "锡伯", "阿昌", "普米", _
"塔吉克", "怒", "乌孜别克", "俄罗斯", "鄂温克", "德昂", "保安", "裕固", "京", "塔塔尔", _
"独龙", "鄂伦春", "赫哲", "门巴", "珞巴", "基诺")
If Trim(strNationcode) <> "" Then
If ((CByte(Trim(strNationcode)) - 1) >= 0) And ((CByte(Trim(strNationcode)) - 1) <= 55) Then
strNation = strNationArray(CByte(Trim(strNationcode)) - 1)
Else
strNation = "其他"
End If
End If
End Function
最终效果,点击【读卡】就可以了,棒棒哒,偶尔读不了,是设备问题,拿起再放下就能读了。
有些童鞋对【插图】按钮的代码感兴趣,这里也一起提供了,嗯,不要谢谢村长,请直接发红包,○( ^皿^)っHiahiahia…逃~
Sub IPIC()
' function AddPicture(path:BSTR; sh:I2; r:I4; c:I4); ES vba 接口
Dim fn '存放打开的文件
'弹出文件打开选框
fn = Application.GetOpenFilename("图片文件(*.JPG;*.PNG;*.BMP),*.JPG;*.PNG;*.BMP", , "打开(可多选)")
If fn = "" Then Exit Sub '用户未选择文件
Cells(4, 8).Select '图片单元格,4,8改成自己的
Application.COMAddIns("ESClient10.Connect").Object.AddPicture fn, 1, 4, 8 ' 插入图片,4,8改成自己的
End Sub
by @一零村长
2017双十二
继v2.8版发布后,村长暂停了一系列其他开发,经过近两个多月的时间专攻v3.0,今天终于站稳了脚跟。
本次发行代号为:Strike(强袭)
esap发行代号都来自于高达seed这部动漫,strike 强袭高达是一种新型作战兵器,对应战况的不同可换装3种不同的战斗部件。
esap3.0的设计定位与强袭高达如出一辙,v3.0不仅整合了企业号和公众号,还能同时管理更多的数据库、应用和计划任务。
v3.0会随着用户能力的提升而提升!
v3.0已实现的特性包含图表
和多媒体库
,还有海量的规划中特性待实现。这里我们不讲特性,只讲应用。
普通用户可以把esap当作一个OA提醒工具,这不需要任何技术,只要配置好应用和数据库,然后开启【微信提醒】任务即可。 除了微信提醒,还可以配置其他应用,开启以下任务:
如果用户掌握了sql
,esap就会升级成一柄大宝剑^_^,完全解锁超级强大的【微信查询】功能。
除了微信查询,还能解锁以下新姿势:
如果用户掌握了sql + html5
,esap就会荣升大炮!完全释放全部黑暗能量,前端开发者可以独自开发任何web应用!
同时还能解锁以下全新姿势:
v3.0版最值得关注的特性之一是通过admin模块可以建库建表,这意味着我们可以轻松植入任意ERP,例如聚表等。
v3.0版目前仅有x64版本,使用esap-cli工具一键安装和更新,主数据库需要sql2005+(非主库支持sql2000)。
v3.0版的规划还有有物联网和支付类应用待实现,欢迎会golang的童鞋和我们一同打造新的未来。
by @一零村长
2017-9-16