better password level
This commit is contained in:
		
							parent
							
								
									97b3f8a830
								
							
						
					
					
						commit
						2fb330fa9b
					
				
							
								
								
									
										1
									
								
								public/js/moment.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								public/js/moment.js
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										6
									
								
								public/js/vue.min.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								public/js/vue.min.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @ -35,4 +35,43 @@ code { | |||||||
|   position: relative; |   position: relative; | ||||||
|   background-color: black; |   background-color: black; | ||||||
|   width: 100%; |   width: 100%; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | input { | ||||||
|  |   height: 20px; | ||||||
|  |   margin: 10px; | ||||||
|  |   padding: 5px; | ||||||
|  |   width: 300px; | ||||||
|  |   transition: border-color .8s, background-color .8s; | ||||||
|  |   color: black; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .score0 { | ||||||
|  |   background-color: #ff222288; | ||||||
|  |   border: 2px solid red; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .score1 { | ||||||
|  |   background-color: #ff5716cc; | ||||||
|  |   border: 2px solid #ff6644; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .score2 { | ||||||
|  |   background-color: #ff9955; | ||||||
|  |   border: 2px solid #ffcc88; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .score3 { | ||||||
|  |   background-color: #0067FF; | ||||||
|  |   border: 2px solid #6496ff; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .score4 { | ||||||
|  |   background-color: #33dd33; | ||||||
|  |   border: 2px solid #99FF00; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | button { | ||||||
|  |   cursor: pointer; | ||||||
|  |   height: 34px; | ||||||
| } | } | ||||||
| @ -3,30 +3,61 @@ extends layout | |||||||
| block content | block content | ||||||
|   p. |   p. | ||||||
|     Bla bla bla qui devi scegliere una buona password |     Bla bla bla qui devi scegliere una buona password | ||||||
|  |     cosa puoi provare: | ||||||
| 
 | 
 | ||||||
|   input#password(type="password", name="password") |   li cia0Antaniqwer10102018 | ||||||
|   p#crackTime |   li Tr0ub4dour&3 | ||||||
|   p#feedback |   br | ||||||
|   p#sequence |   #app | ||||||
|  |     input( | ||||||
|  |       type='password', | ||||||
|  |       v-model='password',  | ||||||
|  |       @input='checkStrength' | ||||||
|  |       :class="['score' + estimationScore]" | ||||||
|  |     ) | ||||||
|  |     button(:disabled="estimationScore!==4") ➜ | ||||||
|  |     p(v-if='password.length>2'). | ||||||
|  |       Questa password è {{score[estimationScore]}}, dopo un sequestro uno bravo | ||||||
|  |       ci mette più o meno <b>{{slowCrackTime}}</b> a scoprirla, | ||||||
|  |       la CIA circa <b>{{fastCrackTime}}</b>: | ||||||
|  |      | ||||||
|  |     li(v-for="s in sequence") | ||||||
|  |       span(v-if="s.pattern=='bruteforce'") {{s.token}} forza bruta | ||||||
|  |       span(v-else-if="s.pattern=='dictionary'"). | ||||||
|  |         {{s.token}} dizionario: {{s.dictionary_name}}  | ||||||
|  |         {{s.reversed?'(invertita ' + s.matched_word + ')':''}} | ||||||
|  |         {{s.l33t?'(con sostituzione ' + s.sub_display +')':''}} | ||||||
|  |         {{s.uppercase_variations>1?'(con maiuscola)':''}} | ||||||
|  |       span(v-else-if="s.pattern=='sequence'") {{s.token}} sequenze: ({{s.sequence_name}}) | ||||||
|  |       span(v-else-if="s.pattern=='spatial'") {{s.token}} sequenze spaziali: ({{s.graph}}) | ||||||
|  |       span(v-else-if="s.pattern=='repeat'") {{s.token}} ripetizione: ({{s.base_token}}) | ||||||
|  |       span(v-else-if="s.pattern=='date'") {{s.token}} data {{s.day}}/{{s.month}}/{{s.year}} | ||||||
|  |       span(v-else-if="s.pattern=='regex'") {{s.token}} pattern {{s.regex_name}} | ||||||
|  |       span(v-else) {{s}} | ||||||
| 
 | 
 | ||||||
|   a#vinto(style="visibility: hidden") vinto |   script(src='/js/vue.min.js') | ||||||
| 
 |   script(src='/js/zxcvbn.js') | ||||||
|   script(src="/js/zxcvbn.js") |   script(src='/js/moment.js') | ||||||
|   script. |   script. | ||||||
|     var crackTime = document.getElementById('crackTime') |     moment.locale('it'); | ||||||
|     var feedback = document.getElementById('feedback') |     var app = new Vue({ | ||||||
|     var sequence = document.getElementById('sequence') |       el: '#app', | ||||||
|     var vinto = document.getElementById('vinto') |       data: { | ||||||
| 
 |         password: '', | ||||||
|     document.getElementById('password').oninput = function(ev, t) { |         estimationScore: 0, | ||||||
|       var ret = zxcvbn(this.value) |         score: ['inutile', 'pessima', 'brutta', 'così così', 'buona'], | ||||||
|       console.log(ret) |         scoreColor: 'red', | ||||||
|       crackTime.innerHTML = 'A craccarla ci metto circa ' + ret.crack_times_display.offline_slow_hashing_1e4_per_second; |         slowCrackTime: '', | ||||||
|       feedback.innerHTML = ret.feedback.suggestions.join(', ') |         fastCrackTime: '', | ||||||
|       sequence.innerHTML = ret.sequence.map(s => s.pattern).join(' ,') |         sequence: [], | ||||||
|       if (ret.score === 4){ |       }, | ||||||
|         vinto.style.visibility = 'visible'; |       methods: { | ||||||
|       } else { |         checkStrength (e) { | ||||||
|         vinto.style.visibility = 'hidden'; |           var estimation = zxcvbn(this.password) | ||||||
|  |           this.estimationScore = estimation.score; | ||||||
|  |           this.slowCrackTime = moment.duration(estimation.crack_times_seconds.offline_slow_hashing_1e4_per_second, 'seconds').humanize(); | ||||||
|  |           this.fastCrackTime = moment.duration(estimation.crack_times_seconds.offline_fast_hashing_1e10_per_second, 'seconds').humanize(); | ||||||
|  |           this.sequence = estimation.sequence; | ||||||
|  |         } | ||||||
|       } |       } | ||||||
|     } |     }) | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user