标签: brute-force

我将如何实施此算法?

不久前,我试图强行发送一个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位?

compression algorithm brute-force

9
推荐指数
1
解决办法
477
查看次数

解决填字游戏

我有一个填字游戏和一个可用于解决它的单词列表(单词可以放置多次或甚至不放一次).对于给定的填字游戏和单词列表,始终存在解决方案.

我搜索了如何解决这个问题的线索,发现它是NP-Complete.我的最大填字游戏大小是250乘250,列表的最大长度(可以用来解决它的单词数量)是200.我的目标是通过强力/回溯来解决这个大小的填字游戏,这应该是可能的几秒钟(这是我的粗略估计,如果我错了,请纠正我).

例:

可用于解决填字游戏的给定单词列表:

  • 能够
  • 音乐
  • 金枪鱼

给定的空填字游戏(X是无法填写的字段,需要填充空字段):

需要解决的空填字游戏

解决方案:

解决上述问题

现在我的方法是将填字游戏表示为二维数组并搜索空格(填字游戏上的2次迭代).然后我根据它们的长度将单词与空格匹配,然后我尝试所有单词组合来清空具有相同长度的空格.这种方法变得非常混乱非常快,我迷失了尝试实现这一点,是否有更优雅的解决方案?

java algorithm brute-force backtracking

9
推荐指数
1
解决办法
5063
查看次数

试图暴力破解平均密码/非侵入性但有意义的限制?

关于通过应用限制来防止强制执行Web服务密码的SO,有几个有用的答案.我找不到任何好的数字,但我在这方面的专业知识很少,所以问题是:

通常需要多少次尝试才能强制使用6个或更多字符的平均密码(没有可能有帮助的额外知识,但考虑到密码可能容易受到字典攻击)并且基于此,有什么意义限制在不中断用户体验的情况下应用限制算法?

这是我目前的计划:

  • 登录表单使用随机数,因此攻击者必须等待完整的请求周期才能获得登录尝试的结果并检索新令牌.
  • 我允许每个IP检索登录表单50次,请求之间不到一分钟,之后IP将被阻止1分钟.在这一分钟内的任何新尝试都将重新启动超时.
  • sleep每次获取登录页面都有一个应用# of attempts / 5,所以在请求之间不到一分钟的5次请求之后,需要> 1秒才能获取表单,10次请求> 2秒后等等.
  • 此外,我只允许每个用户帐户登录尝试失败100次,尝试间隔2小时,之后帐户被阻止2小时.
  • 为了避免频繁的帐户DoS,可以将IP列入白名单(不应用限制)或列入黑名单(完全忽略任何登录尝试).

基于到目前为止的答案,我已经调整它像这样工作:

  • 检索登录表单会逐步降低每个IP的速度.每个新请求都会睡# of requests / 2几秒钟.10分钟无登录活动后,计数器将重置.
  • 我正在为每个IP保留一堆FIFO登录尝试.如果IP在2小时内未能登录30次,则会暂停.我还保留了每个IP的暂停数量列表,暂停时间计算为2 ^ (# of suspensions + 1) hours.这应该导致持续违规的IP快速事实上的黑名单.
  • 此外,如果帐户在一天内未能登录20次,则会被暂停2小时.我对这个措施还不太确定,因为这意味着帐户可以很容易地进行DoS.但是,如果没有庞大的分布式僵尸网络,违规的IP应该变得事实上被列入黑名单,而不是一个帐户永久性的DoS.这也是保护帐户的有效措施.

我认为这些限制不应该损害普通用户,即使是那些经常忘记密码并尝试多次登录的用户.考虑到服务的平均大小,IP限制对于大量NAT用户也应该可以正常工作.有人可以用一些可靠的数学来证明这是有效率还是低效率?:)

language-agnostic security algorithm brute-force

8
推荐指数
2
解决办法
6820
查看次数

Euler项目的非强力解决方案25

项目欧拉问题25:

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)

python brute-force fibonacci

8
推荐指数
1
解决办法
6798
查看次数

会话暴力强迫

暴力会议有多可行?

我目前正在使用CodeIgniter数据库会话,它不使用本机PHP会话 - 会话cookie加密和用户代理匹配已打开.

假设我将会话过期时间设置为4个月,是否有人可以通过会话ID来强制执行?不仅要接管会话,还要大量删除帐户中的内容,导致一般混乱等(CI的CSRF保护已打开)

我想给大多数用户一个持久的会话ID,匿名用户被赋予注册用户的大部分功能,比如喜欢的东西 - 类似于StackOverflow.

security authentication session codeigniter brute-force

7
推荐指数
1
解决办法
1283
查看次数

会话只存储在浏览器中吗?

我的网站遭到暴力攻击,攻击者试图访问用户帐户.机器人没有用户代理.我有一个系统阻止一个人在10分钟内超过每个帐户3次尝试登录.

我还检查了用户代理,如果没有,退出.

我的问题是:会话只存储在浏览器中吗?我在想的是他们正在使用通过命令行执行的脚本.

我也实现了这个:

if(!isset($_COOKIE[ini_get('session.name')])) {
header("HTTP/1.0 404 Not Found");
exit;
}
Run Code Online (Sandbox Code Playgroud)

我还能做些什么来阻止这些攻击吗?

php cookies session brute-force session-hijacking

7
推荐指数
1
解决办法
4846
查看次数

限制PHP中的用户登录尝试

我见过网页应用程序有限制用户登录尝试.

这是安全必需品,如果是,为什么?

例如: 您有三次失败的登录尝试,让我们在10分钟内再试一次!!

php security captcha login brute-force

6
推荐指数
2
解决办法
1万
查看次数

找到使图像在列表中唯一的像素,你可以改善蛮力吗?

假设我有一个字符串列表,其中每个字符串都是

  • 正好4个字符长
  • 在列表中是唯一的.

对于这些字符串中的每一个,我想识别字符串中字符的位置,使字符串唯一.

所以对于三个字符串的列表

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". …

language-agnostic algorithm image-processing brute-force

6
推荐指数
1
解决办法
770
查看次数

我该如何防止暴力攻击?

我正在进行身份验证并添加强力保护.我不知道该怎么办.

在尝试某个IP地址失败15次之后,我应该只是做一个平坦的阻止......还是应该将它绑定到用户名?是否应该有验证码阈值和绝对截止值?

我应该遵循其他模式吗?

security authentication brute-force

6
推荐指数
1
解决办法
645
查看次数

暴力评估和内存消耗的暴力

我实现了一个小函数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)

haskell brute-force lazy-evaluation ghc

6
推荐指数
3
解决办法
724
查看次数