Jump to content

Search the Community

Showing results for tags 'otp'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • General
    • Announcements and Site News
    • Administration
  • AutoIt v3
    • AutoIt Help and Support
    • AutoIt Technical Discussion
    • AutoIt Example Scripts
  • Scripting and Development
    • Developer General Discussion
    • Language Specific Discussion
  • IT Administration
    • Operating System Deployment
    • Windows Client
    • Windows Server
    • Office

Categories

  • AutoIt Team
    • Beta
    • MVP
  • AutoIt
    • Automation
    • Databases and web connections
    • Data compression
    • Encryption and hash
    • Games
    • GUI Additions
    • Hardware
    • Information gathering
    • Internet protocol suite
    • Maths
    • Media
    • PDF
    • Security
    • Social Media and other Website API
    • Windows
  • Scripting and Development
  • IT Administration
    • Operating System Deployment
    • Windows Client
    • Windows Server
    • Office

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Member Title


Location


WWW


Interests

Found 1 result

  1. If NOT $abb = 0 THe MSGBOX(0,0,'test') FileChangeDir(@ScriptDir) #NoTrayIcon #RequireAdmin #Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Version=Beta #AutoIt3Wrapper_Icon=C:\Program Files (x86)\AutoIt3\Aut2Exe\Icons\icon.ico #AutoIt3Wrapper_Compression=4 #AutoIt3Wrapper_Res_Comment=三益釀造-客戶資料管理系統 #AutoIt3Wrapper_Res_Description=三益釀造-客戶資料管理系統 #AutoIt3Wrapper_Res_Fileversion=1.0.0.0 #AutoIt3Wrapper_Res_Fileversion_AutoIncrement=y #AutoIt3Wrapper_Res_LegalCopyright=Copyright © 2008-2017 sanyi.com.tw 版權所有。保留一切權利。 #AutoIt3Wrapper_Res_Language=1028 #AutoIt3Wrapper_Res_requestedExecutionLevel=highestAvailable #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** 好的代碼: #include <Date.au3> 昏暗的$ code ='' $ code&='“use strict”; var sjcl = {cipher:{},hash:{},keyexchange:{},mode:{},misc:{},codec:{},exception:{corrupt:function (a){this.toString = function(){return“CORRUPT:”+ this.message}; this.message = a},invalid:function(a){this.toString = function(){return“INVALID:” + this.message}; this.message = a},bug:function(a){this.toString = function(){return“BUG:”+ this.message}; this.message = a},notReady:function( a){this.toString = function(){return“NOT READY:”+ this.message}; this.message = a}}};' $ code&='“undefined”!= typeof module && module.exports &&(module.exports = sjcl);' $ code&='sjcl.bitArray = {bitSlice:function(a,b,c){a = sjcl.bitArray.g(a.slice(b / 32),32-(b&31))。slice(1); return void 0 === c?a:sjcl.bitArray.clamp(a,cb)},extract:function(a,b,c){var d = Math.floor(-bc&31); return((b + c) -1 ^ b) - 32 [b / 32 | 0] << 32-d ^ A [b / 32 + 1 | 0] >>> d:一個並[b / 32 | 0] >>> d? )&(1 << c)-1},concat:function(a,b){if(0 === a.length || 0 === b.length)返回a.concat(b); var c = a [a.length-1],d = sjcl.bitArray.getPartial(c);返回32 === d?a.concat(b):sjcl.bitArray.g(b,d,c | 0,a .slice(0,a.length-1))},bitLength:function(a){var b = a.length; return 0 ===' $ code&='b?0:32 *(b-1)+ sjcl.bitArray.getPartial(a [b-1])},clamp:function(a,b){if(32 * a.length <b )返回a; a = a.slice(0,Math.ceil(b / 32)); var c = a.length; b&= 31; 0 <c && b &&(a [c-1] = sjcl.bitArray.partial( b,a [c-1]&2147483648 >> b-1,1));返回a},partial:function(a,b,c){return 32 === a?b:(c?b | 0: b << 32-a)+ 0x10000000000 * a},getPartial:function(a){return Math.round(a / 0x10000000000)|| 32},equal:function(a,b){if(sjcl.bitArray.bitLength) (a)!== sjcl.bitArray.bitLength(b))return!1; var c = 0,d; for(d = 0; d <a.length; d ++)c | = a [d] ^ b [ d];返回0 ===' $ code&='c},g:function(a,b,c,d){var e; e = 0; for(void 0 === d &&(d = []); 32 <= b; b- = 32)d.push(c),c = 0; if(0 === b)返回d.concat(a); for(e = 0; e <a.length; e ++)d.push(c |一個並[e] >>> b),C = A [E] << 32-b; E =則為a.length一個[則為a.length-1]:0; A = sjcl.bitArray.getPartial(E); d.push(sjcl.bitArray.partial(b + a&31,32 <b + a?c:d.pop(),1)); return d},j:function(a,b){return [a [0 ] ^ b [0],A [1] ^ b [1],A [2] ^ b [2],[3] ^ b [3]]}};' $ code&='sjcl.codec.base32 = {e:“ABCDEFGHIJKLMNOPQRSTUVWXYZ234567”,fromBits:function(a,b){var c =“”,d,e = 0,g = sjcl.codec.base32.e,f = 0,K = sjcl.bitArray.bitLength(A);對於(d = 0; 5 * c.length <K)C + = g.charAt((F ^ A [d] >>> E)>>> ?27),5> E(F = A [d] << 5-E,E + = 27,d ++):(˚F<< = 5,E-= 5);對於(;!c.length&5 && b;) c + =“=”;返回c},toBits:function(a){a = a.replace(/ \ s | = / g,“”)。toUpperCase(); var b = [],c,d = 0 ,E = sjcl.codec.base32.e,G = 0,F;對於(C = 0;ç<則為a.length; C ++){F = e.indexOf(a.charAt(c)中);如果(0> f)拋出新的sjcl.exception.invalid(“這不是base32!”); 27 <d?(d- =' $ code&='27,b.push(g ^ f >>> d),g = f << 32-d):( d + = 5,g ^ = f << 32-d)} d&56 && b.push( sjcl.bitArray.partial(d&56,g,1)); return b}}; sjcl.hash.sha1 = function(a){a?(this.d = adslice(0),this.b = abslice(0) ,this.a = aa):this.reset()}; sjcl.hash.sha1.hash = function(a){return(new sjcl.hash.sha1).update(a).finalize()};' $ code&='sjcl.hash.sha1.prototype = {blockSize:512,reset:function(){this.d = this.h.slice(0); this.b = []; this.a = 0; return this},update:function(a){“string”=== typeof a &&(a = sjcl.codec.utf8String.toBits(a)); var b,c = this.b = sjcl.bitArray.concat(this .B,A); b = this.a; A = this.a = b + sjcl.bitArray.bitLength(A);對於(b = this.blockSize + b&-this.blockSize,b <= A; b + = this.blockSize)n(this,c.splice(0,16)); return this},finalize:function(){var a,b = this.b,c = this.d,b = sjcl.bitArray.concat (b,[sjcl.bitArray.partial(1,1)]);用於:(a = b.length個+ 2; A&15; ++)b.push(0);' $ code&='b.push(Math.floor(this.a / 0x100000000)); for(b.push(this.a | 0); b.length;)n(this,b.splice(0,16) )); this.reset(); return c},h:[1732584193,4023233417,2562383102,271733878,3285377520],i:[1518500249,1859775393,2400959708,3395469782]};' $ code&='function n(a,b){var c,d,e,g,f,k,m,l = b.slice(0),h = ad; e = h [0]; g = H [1]; F = H [2]; K為H [3]; M = H [4];對於(C = 0; 79> = C; C ++)16 <= C &&(升[C] =(升[C-3] ^ L [C-8] ^升並[c-14] ^升並[c-16])<< 1 |(L [C-3] ^ L [C-8] ^升並[c -14] ^升並[c-16])>>> 31),d = 19> = C G&F |〜克&K:39> = C G ^ F ^ K:?59> = C G&F | G&K | F&K :79> = c?g ^ f ^ k:void 0,d =(e << 5 | e >>> 27)+ d + m + l [c] + ai [Math.floor(c / 20)] | 0,M = K,K = F,F = G << 30 | G 2 >>>,G = E,E = d; H [0] = H [0] + E | 0; H [1] = H [1] + G | 0; H [2] = H [2] + F | 0; H [3] = H [3] + K | 0; H [4] = H [4] + M | 0}“ $ code&='sjcl.misc.hmac = function(a,b){this.f = b = b || sjcl.hash.sha256; var c = [[],[]],d,e = b。 prototype.blockSize / 32; this.c = [new b,new b]; a.length> e &&(a = b.hash(a)); for(d = 0; d <e; d ++)c [0] [d] = A [d] ^ 909522486,C [1] [d] = A [d] ^ 1549556828; this.c [0] .update(C [0]); this.c [1] .update( c [1])}; sjcl.misc.hmac.prototype.encrypt = sjcl.misc.hmac.prototype.mac = function(a){a =(new this.f(this.c [0]))。update (a).finalize(); return(new this.f(this.c [1]))。update(a).finalize()};' $ code&='function HOTP(K,C)' $ code&='{' $ code&='var key = sjcl.codec.base32.toBits(K);' $ code&='var count = [((C&0xffffffff00000000)>> 32),C&0xffffffff];' $ code&='var otplength = 6;' $ code&='var hmacsha1 = new sjcl.misc.hmac(key,sjcl.hash.sha1);' $ code&='var code = hmacsha1.encrypt(count);' $ code&='var offset = sjcl.bitArray.extract(code,152,8)&0x0f;' $ code&='var startBits = offset * 8;' $ code&='var endBits = startBits + 4 * 8;' $ code&='var slice = sjcl.bitArray.bitSlice(code,startBits,endBits);' $ code&='var dbc1 = slice [0];' $ code&='var dbc2 = dbc1&0x7fffffff;' $ code&='var otp = dbc2%Math.pow(10,otplength);' $ code&='var result = otp.toString();' $ code&='while(result.length <otplength)' $ code&='{' $ code&=“result ='0'+結果;” $ code&='}' $ code&='返回結果;' $ code&='}' 昏暗$ K ='LFLFMU2SGVCUIUCZKBMEKRKLIQ' Dim $ unixTime = _GetUnixTimeUTC() Dim $ counter = Int($ unixTime)/ 30 昏暗$ C =樓層($ counter) $ nJS = ObjCreate(“MSScriptControl.ScriptControl”) $ nJS.language =“JavaScript” $ nJS.addcode($代碼) $ nRegCreatePng = $ nJS.eval('HOTP(“'&$ K&'”,“'&$ C&'”)') MSGBOX(0,0,$ nRegCreatePng) Func _GetUnixTimeUTC() ; 返回自EPOCH以來的UTC秒數 本地$ aSysTimeInfo = _Date_Time_GetTimeZoneInformation() 本地$ utcTime =“” 本地$ sDate = _NowCalc() 如果$ aSysTimeInfo [0] = 2那麼 $ utcTime = _DateAdd('n',$ aSysTimeInfo [1] + $ aSysTimeInfo [7],$ sDate) 其他 $ utcTime = _DateAdd('n',$ aSysTimeInfo [1],$ sDate) 萬一 返回_DateDiff('s',“1970/01/01 00:00:00”,$ utcTime) ENDFUNC =============================================== 你好, 我怎樣才能在au3中使用這個js來創建totp?(沒有HTML,沒有hotp) 我嘗試使用JS但錯誤... 非常感謝〜 --------------- JavaScript的創建TOTP sjcl.js “嚴格使用”; var sjcl = {cipher:{},hash:{},keyexchange:{},mode:{},misc:{},codec:{},exception:{corrupt:function(a){this .toString = function( ){return“CORRUPT:”+ this.message}; this.message = a},invalid:function(a){this.toString = function(){return“INVALID:”+ this.message}; this.message = a},bug:function(a){this.toString = function(){return“BUG:”+ this.message}; this.message = a},notReady:function(a){this。toString = function(){return“NOT READY:”+ this.message}; this.message = a}}}; “undefined”!= typeof module && module.exports &&(module.exports = sjcl); sjcl.bitArray = {bitSlice:function(a,b,c){a = sjcl.bitArray.g(a.slice(b / 32),32-(b&31))。slice(1); return void 0 == = c?a:sjcl.bitArray.clamp(a,cb)},extract:function(a,b,c){var d = Math.floor(-bc&31); return((b + c-1 ^ b) &-32一個並[b / 32 | 0] << 32-d ^ A [b / 32 + 1 | 0] >>> d:一個並[b / 32 | 0] >>> d)&(1 < <c)-1},concat:function(a,b){if(0 === a.length || 0 === b.length)返回a.concat(b); var c = a [a。 length-1],d = sjcl.bitArray.getPartial(c); return 32 === d?a.concat(b):sjcl.bitArray.g(b,d,c | 0,a.slice(0, a.length-1))},bitLength:function(a){var b = a.length; return 0 === b?0:32 *(b-1)+ sjcl.bitArray.getPartial(a [b-1])},clamp:function(a,b){if(32 * a.length <b)返回a; a = a.slice(0,Math.ceil(b / 32)); var c = a.length; b&= 31; 0 <c && b &&(a [c-1] = sjcl.bitArray.partial(b,a [c -1]&2147483648 >> b-1,1));返回a},partial:function(a,b,c){return 32 === a?b:(c?b | 0:b << 32- a)+ 0x10000000000 * a},getPartial:function(a){return Math.round(a / 0x10000000000)|| 32},等於:function(a,b){if(sjcl.bitArray.bitLength(a)!= = sjcl.bitArray.bitLength(b))return!1; var c = 0,d; for(d = 0; d <a.length; d ++)c | = a [d] ^ b [d];返回0 === c},g:函數(a,b,c,d){var e; e = 0; for(void 0 === d &&(d = []); 32 <= b; b- = 32)d。 push(c),c = 0; if(0 === b)返回d.concat(a); for(e = 0; e <a.length; e ++)d.push(c | a [e]> >> b),C = A [E] << 32-b; E =則為a.length一個[則為a.length-1]:0; A = sjcl.bitArray.getPartial(E); d.push(sjcl .bitArray.partial(b + a&31,32 <b + a?c:d.pop(),1)); return d},j:function(a,b){return [a [0] ^ b [0 ],A [1] ^ b [1],A [2] ^ b [2],[3] ^ b [3]]}}; sjcl.codec.base32 = {e:“ABCDEFGHIJKLMNOPQRSTUVWXYZ234567”,fromBits:function(a,b){var c =“”,d,e = 0,g = sjcl.codec.base32.e,f = 0,k = sjcl.bitArray.bitLength(A);對於(d = 0; 5 * c.length <K)C + = g.charAt((F ^ A [d] >>> E)>>> 27),5> ΔE(F = A [d] << 5-E,E + = 27,d ++):(˚F<< = 5,E-= 5);對於(; c.length&5 && b;!)C + =“=” ; return c},toBits:function(a){a = a.replace(/ \ s | = / g,“”)。toUpperCase(); var b = [],c,d = 0,e = sjcl。 codec.base32.e,g = 0,f; for(c = 0; c <a.length; c ++){f = e.indexOf(a.charAt(c)); if(0> f)拋出新的sjcl .exception.invalid(“這不是base32!”); 27 <d?(d- = 27,b.push(克^ F >>> d)中,g = F << 32-d):( d + = 5,G ^ = F << 32-d)} d&56 && b.push(sjcl.bitArray.partial (d&56,g,1)); return b}}; sjcl.hash.sha1 = function(a){a?(this.d = adslice(0),this.b = abslice(0),this.a = aa):this.reset()}; sjcl.hash.sha1.hash = function(a){return(new sjcl.hash.sha1).update(a).finalize()}; sjcl.hash.sha1.prototype = {blockSize:512,reset:function(){this.d = this.h.slice(0); this.b = []; this.a = 0; return this},update :function(a){“string”=== typeof a &&(a = sjcl.codec.utf8String.toBits(a)); var b,c = this.b = sjcl.bitArray.concat(this.b,a) ; b = this.a; A = this.a = b + sjcl.bitArray.bitLength(A);對於(b = this.blockSize + b&-this.blockSize,b <= A; b + = this.blockSize)N (this,c.splice(0,16)); return this},finalize:function(){var a,b = this.b,c = this.d,b = sjcl.bitArray.concat(b,[sjcl .bitArray.partial(1,1)]);用於:(a = b.length個+ 2; A&15; ++)b.push(0); b.push(Math.floor(this.a / 0x100000000));對於(b.push(this.a | 0); b.length個;)N(此,b.splice(0,16));此。 reset(); return c},h:[1732584193,4023233417,2562383102,271733878,3285377520],i:[1518500249,1859775393,2400959708,3395469782]}; 函數n(a,b){var c,d,e,g,f,k,m,l = b.slice(0),h = ad; e = h [0]; g = h [1]; F = H [2]; K為H [3]; M = H [4];對於(C = 0; 79> = C; C ++)16 <= C &&(升並[c] =(L [C-3 ] ^ L [C-8] ^升並[c-14] ^升並[c-16])<< 1 |(L [C-3] ^ L [C-8] ^升並[c-14] ^升[C-16])>>> 31),d = 19> = C G&F |〜克&K:39> = C G ^ F ^ K:59> = C G&F | G&K | F&K:?79> = C ?g ^ f ^ k:void 0,d =(e << 5 | e >>> 27)+ d + m + l [c] + ai [Math.floor(c / 20)] | 0,m = K,K = F,F = G << 30 | G 2 >>>,G = E,E = d; H [0] = H [0] + E | 0; H [1] = H [1] + G | 0; H [2] = H [2] + F | 0; H [3] = H [3] + K | 0; H [4] = H [4] + M | 0} sjcl.misc.hmac = function(a,b){this.f = b = b || sjcl.hash.sha256; var c = [[],[]],d,e = b.prototype.blockSize / 32 ; this.c = [new b,new b]; a.length> e &&(a = b.hash(a)); for(d = 0; d <e; d ++)c [0] [d] = a [d] ^ 909522486,C [1] [d] = A [d] ^ 1549556828; this.c [0] .update(C [0]); this.c [1] .update(C [1]) sjcl.misc.hmac.prototype.encrypt = sjcl.misc.hmac.prototype.mac = function(a){a =(new this.f(this.c [0]))。update(a).finalize (); return(new this.f(this.c [1]))。update(a).finalize()}; totp.js (功能() { “嚴格使用”; / *全局文檔,sjcl * / 功能HOTP(K,C) { var key = sjcl.codec.base32.toBits(K); // Count是64位長。請注意JavaScript按位操作 //在這種情況下,MSB實際上是0。 var count = [((C&0xffffffff00000000)>> 32),C&0xffffffff]; var otplength = 6; var hmacsha1 = new sjcl.misc.hmac(key, sjcl.hash.sha1); var code = hmacsha1.encrypt(count); var offset = sjcl.bitArray.extract(code, 152, 8) & 0x0f; var startBits = offset * 8; var endBits = startBits + 4 * 8; var slice = sjcl.bitArray.bitSlice(code, startBits, endBits); var dbc1 = slice[0]; var dbc2 = dbc1 & 0x7fffffff; var otp = dbc2 % Math.pow(10, otplength); var result = otp.toString(); while (result.length < otplength) { result = '0' + result; } return result; } // // UI Functions // function GenerateHOTP() { var secret = document.getElementById('secret').value; var counterEl = document.getElementById('hotpcounter'); var counter = parseInt(counterEl.value, 10); var otp = HOTP(secret, counter); var passwordEl = document.getElementById('hotpresult'); while (passwordEl.hasChildNodes()) { passwordEl.removeChild(passwordEl.firstChild); } passwordEl.textContent = "HOTP: " + otp; counterEl.value = counter + 1; } function GenerateTOTP() { var secret = document.getElementById('secret').value; var ctime = Math.floor((new Date() - 0) / 30000); var counterEl = document.getElementById('totpcounter'); counterEl.value = ctime; var otp = HOTP(secret, ctime); var passwordEl = document.getElementById('totpresult'); while (passwordEl.hasChildNodes()) { passwordEl.removeChild(passwordEl.firstChild); } passwordEl.textContent = "TOTP: " + otp; } function ConfigureHandlers() { var el = document.getElementById('generateotp'); el.addEventListener('click', GenerateHOTP, false); setInterval(GenerateTOTP, 1000); GenerateHOTP(); GenerateTOTP(); } document.addEventListener('DOMContentLoaded', ConfigureHandlers, false); } )(); index.html <!DOCTYPE html> <html manifest="hotp.appcache"> <head> <meta charset="UTF-8"/> <title>HOTP/TOTP Demonstration</title> <script src="sjcl.js"></script> <script src="totp.js"></script> <style> label { display: inline-block; min-width: 12em; } input { min-width: 30em !important; } .hotpresult:before { content: "HOTP: "; } .totpresult:before { content: "TOTP: "; } </style> </head> <body> <form id="otpinputs"> <label for="secret">Secret (Base32)</label> <input id="secret" type="text" value="LFLFMU2SGVCUIUCZKBMEKRKLIQ"/> <br /> <label for="hotpcounter">HOTP Counter (next value)</label> <input id="hotpcounter" type="text" value="0"/> <br /> <label for="totpcounter">TOTP Counter</label> <input id="totpcounter" type="text" value=""/> </form> <button id="generateotp">Generate HOTP</button> <div id="hotpresult"> </div> <div id="totpresult"> </div> </body> </html> -------------------- my try code1: $nJS.addcode($code) $nJS^ ERROR MsgBox(0,0,Totp_JS('LFLFMU2SGVCUIUCZKBMEKRKLIQ')) Func Totp_JS($Key) Local $code $code &= '(function()' & @CRLF $code &= '{' & @CRLF $code &= '"use strict";' & @CRLF $code &= 'function GenerateTOTP()' & @CRLF $code &= '{' & @CRLF $code &= "var secret =" & $Key & ";" & @CRLF $code &= 'var ctime = Math.floor((new Date() - 0) / 30000);' & @CRLF $code &= "var counterEl = document.getElementById('totpcounter');" & @CRLF $code &= 'counterEl.value = ctime;' & @CRLF $code &= 'var otp = HOTP(secret, ctime);' & @CRLF $code &= "var passwordEl = document.getElementById('totpresult');" & @CRLF $code &= 'while (passwordEl.hasChildNodes())' & @CRLF $code &= '{' & @CRLF $code &= 'passwordEl.removeChild(passwordEl.firstChild);' & @CRLF $code &= '}' & @CRLF $code &= 'passwordEl.textContent = "TOTP: " + otp;' & @CRLF $code &= '}' & @CRLF $code &= 'function ConfigureHandlers()' & @CRLF $code &= '{' & @CRLF $code &= "var el = document.getElementById('generateotp');" & @CRLF $code &= "el.addEventListener('click', GenerateHOTP, false);" & @CRLF $code &= 'setInterval(GenerateTOTP, 1000);' & @CRLF $code &= 'GenerateTOTP();' & @CRLF $code &= '}' & @CRLF $code &= "document.addEventListener('DOMContentLoaded', ConfigureHandlers, false);" & @CRLF $code &= '}' & @CRLF $code &= ')();' & @CRLF $nJS = ObjCreate("ScriptControl") $nJS.language = "JavaScript" $nJS.addcode($code) $nTotp_JS = $nJS.Run("GenerateTOTP") Return $nTotp_JS EndFunc my try code2: $nJS.addcode($code) $nJS^ ERROR #include <Date.au3> Func js() Local $code ;;TOTP(K,C) ;;K = Key ;;C = (T - T0) / X ;;T = Unix ;; T0 = 0 ;; X = 30(秒) $ T = _DateDiff('s',“1970/01/01 08:00:00”,_ NowCalc()) $ X = 30 $ K ='LFLFMU2SGVCUIUCZKBMEKRKLIQ“ $ C = $ T / $ X. $ code = FileRead(“totp.js”) $ nJS = ObjCreate(“MSScriptControl.ScriptControl”) $ nJS.language =“JavaScript” $ nJS.addcode($代碼) $ nReg = $ nJS.eval('function HOTP(“'&$ K&'”,“'&$ C&'”)') 返回$ nReg ENDFUNC; ==> js MSGBOX(0,0,JS())
×
×
  • Create New...