不久前,我试图强行发送一个12位二进制"密钥"的遥控器.
我制作的设备工作,但速度非常慢,因为它以每秒约50位的速度尝试每个组合(4096个代码= 49152位= ~16分钟)
我打开接收器,发现它使用移位寄存器检查代码,尝试之间不需要延迟.这意味着接收器只是查看要接收的最后12位,看它们是否与密钥匹配.
这意味着如果流111111111111000000000000被发送,它已经有效地尝试了所有这些代码.
111111111111 111111111110 111111111100 111111111000
111111110000 111111100000 111111000000 111110000000
111100000000 111000000000 110000000000 100000000000
000000000000
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我使用了24位来尝试13个12位组合(> 90%压缩).
有没有人知道一种算法可以通过利用这个来减少我发送的49152位?
我有一个填字游戏和一个可用于解决它的单词列表(单词可以放置多次或甚至不放一次).对于给定的填字游戏和单词列表,始终存在解决方案.
我搜索了如何解决这个问题的线索,发现它是NP-Complete.我的最大填字游戏大小是250乘250,列表的最大长度(可以用来解决它的单词数量)是200.我的目标是通过强力/回溯来解决这个大小的填字游戏,这应该是可能的几秒钟(这是我的粗略估计,如果我错了,请纠正我).
例:
可用于解决填字游戏的给定单词列表:
给定的空填字游戏(X是无法填写的字段,需要填充空字段):
解决方案:
现在我的方法是将填字游戏表示为二维数组并搜索空格(填字游戏上的2次迭代).然后我根据它们的长度将单词与空格匹配,然后我尝试所有单词组合来清空具有相同长度的空格.这种方法变得非常混乱非常快,我迷失了尝试实现这一点,是否有更优雅的解决方案?
关于通过应用限制来防止强制执行Web服务密码的SO,有几个有用的答案.我找不到任何好的数字,但我在这方面的专业知识很少,所以问题是:
通常需要多少次尝试才能强制使用6个或更多字符的平均密码(没有可能有帮助的额外知识,但考虑到密码可能容易受到字典攻击)并且基于此,有什么意义限制在不中断用户体验的情况下应用限制算法?
这是我目前的计划:
sleep每次获取登录页面都有一个应用# of attempts / 5,所以在请求之间不到一分钟的5次请求之后,需要> 1秒才能获取表单,10次请求> 2秒后等等.基于到目前为止的答案,我已经调整它像这样工作:
# of requests / 2几秒钟.10分钟无登录活动后,计数器将重置.2 ^ (# of suspensions + 1) hours.这应该导致持续违规的IP快速事实上的黑名单.我认为这些限制不应该损害普通用户,即使是那些经常忘记密码并尝试多次登录的用户.考虑到服务的平均大小,IP限制对于大量NAT用户也应该可以正常工作.有人可以用一些可靠的数学来证明这是有效率还是低效率?:)
Fibonacci序列由递归关系定义:
F n = F n-1 + F n-2,其中F 1 = 1且F 2 = 1.因此前12项将是F 1 = 1,F 2 = 1,F 3 = 2,F 4 = 3 ,F 5 = 5,F 6 = 8,F 7 = 13,F 8 = 21,F 9 = 34,F 10 = 55,F 11 = 89,F 12 = 144
第12个学期F 12是第一个包含三位数的术语.
Fibonacci序列中包含1000位数的第一项是什么?
我在Python中制作了一个强力解决方案,但计算实际解决方案绝对是永远的.任何人都可以提出非暴力解决方案吗?
def Fibonacci(NthTerm):
if NthTerm == 1 or NthTerm == 2:
return 1 # Challenge defines 1st and 2nd term …Run Code Online (Sandbox Code Playgroud) 暴力会议有多可行?
我目前正在使用CodeIgniter数据库会话,它不使用本机PHP会话 - 会话cookie加密和用户代理匹配已打开.
假设我将会话过期时间设置为4个月,是否有人可以通过会话ID来强制执行?不仅要接管会话,还要大量删除帐户中的内容,导致一般混乱等(CI的CSRF保护已打开)
我想给大多数用户一个持久的会话ID,匿名用户被赋予注册用户的大部分功能,比如喜欢的东西 - 类似于StackOverflow.
我的网站遭到暴力攻击,攻击者试图访问用户帐户.机器人没有用户代理.我有一个系统阻止一个人在10分钟内超过每个帐户3次尝试登录.
我还检查了用户代理,如果没有,退出.
我的问题是:会话只存储在浏览器中吗?我在想的是他们正在使用通过命令行执行的脚本.
我也实现了这个:
if(!isset($_COOKIE[ini_get('session.name')])) {
header("HTTP/1.0 404 Not Found");
exit;
}
Run Code Online (Sandbox Code Playgroud)
我还能做些什么来阻止这些攻击吗?
我见过网页应用程序有限制用户登录尝试.
这是安全必需品,如果是,为什么?
例如: 您有三次失败的登录尝试,让我们在10分钟内再试一次!!
假设我有一个字符串列表,其中每个字符串都是
对于这些字符串中的每一个,我想识别字符串中字符的位置,使字符串唯一.
所以对于三个字符串的列表
abcd
abcc
bbcb
Run Code Online (Sandbox Code Playgroud)
对于第一个字符串,我想识别第四个位置d中的字符,因为d没有出现在任何其他字符串的第4个位置.
对于第二个字符串,我想识别第四个位置c中的字符.
对于第三个字符串,我想识别第一个位置b中的字符和第四个位置的字符,也是b.
这可以简洁地表示为
abcd -> ...d
abcc -> ...c
bbcb -> b..b
Run Code Online (Sandbox Code Playgroud)
如果您考虑相同的问题,但使用二进制数列表
0101
0011
1111
Run Code Online (Sandbox Code Playgroud)
那么我想要的结果就是
0101 -> ..0.
0011 -> .0..
1111 -> 1...
Run Code Online (Sandbox Code Playgroud)
保持二进制主题我可以使用XOR来识别哪个位在两个二进制数内是唯一的
0101 ^ 0011 = 0110
Run Code Online (Sandbox Code Playgroud)
我可以解释为这意味着在这种情况下,第二和第三位(从左到右读取)在这两个二进制数之间是唯一的.这种技术可能是红鲱鱼,除非它以某种方式可以扩展到更大的列表.
蛮力方法是依次查看每个字符串,并为每个字符串迭代列表中其余字符串的垂直切片.
所以列表
abcd
abcc
bbcb
Run Code Online (Sandbox Code Playgroud)
我会先说
abcd
Run Code Online (Sandbox Code Playgroud)
并迭代垂直切片
abcc
bbcb
Run Code Online (Sandbox Code Playgroud)
这些垂直切片将在哪里
a | b | c | c
b | b | c | b
Run Code Online (Sandbox Code Playgroud)
或以列表形式,"ab","bb","cc","cb". …
我正在进行身份验证并添加强力保护.我不知道该怎么办.
在尝试某个IP地址失败15次之后,我应该只是做一个平坦的阻止......还是应该将它绑定到用户名?是否应该有验证码阈值和绝对截止值?
我应该遵循其他模式吗?
我实现了一个小函数bruteforce,使用惰性求值来找到问题的第一个有效解决方案:
import Data.Maybe
bruteforce :: (a -> Bool) -> [a] -> Maybe a
bruteforce f xs
| null result = Nothing
| otherwise = Just $ head result
where
result = mapMaybe bruteforce' xs
-- test one instance
bruteforce' x
| f x = Just x
| otherwise = Nothing
generatorString :: Int -> [String]
generatorString 0 = [""]
generatorString deep = concatMap (\x -> map (\ys -> (x:ys)) nextgen) ['a'..'z']
where nextgen = generatorString (deep - 1) …Run Code Online (Sandbox Code Playgroud) brute-force ×10
algorithm ×4
security ×4
php ×2
session ×2
backtracking ×1
captcha ×1
codeigniter ×1
compression ×1
cookies ×1
fibonacci ×1
ghc ×1
haskell ×1
java ×1
login ×1
python ×1