小编Eth*_*man的帖子

Java Applet可以发现多少硬件细节?

我正在编写一个Java applet,在不同的硬件下运行不同.例如,如果我知道计算机有大量的RAM但是处理器很弱,我可以改变一些时间内存权衡的平衡.能够发现运行applet的CPU的确切品牌和型号可能会有所帮助.拥有这些信息将使我能够针对不同的系统对我的软件进行基准测试并找到瓶颈.

一般来说我正在寻找的是:

  • 核心和/或处理器的数量
  • 32位与64位CPU
  • CPU缓存行大小
  • L1,L2,L3缓存的大小
  • 设置缓存的关联性
  • TLB的大小
  • 关于CPU的精确制造/型号信息
  • FSB信息
  • RAM的数量
  • 交换/虚拟内存量
  • 正在运行applet的JVM
  • 运行JVM的操作系统
  • 系统负载
  • 已使用/未使用的Kernal线程数
  • 互联网连接的带宽
  • 内存可用
  • 显卡正在使用中
  • 如果正在显示操作系统
  • 正在使用的网络资源

是否有任何此类信息都嵌入到Java Applet中.是否有用于查找此类信息的库?Applet基准测试工具来发现/猜测其中的一些?你能想到任何聪明的技巧吗?

他们的计算机硬件的任何方面都是阻塞的.也就是说,Java applet可以通过尝试访问它并被拒绝(可能是特定的TCP端口或图形加速器)来检测某些内容正在使用或不可用.

免责声明:我知道关心硬件违背了不关心硬件的Java意识形态.虽然评论指出这可能对其他阅读此问题的读者有所帮助,但请注意,这些答案并非我所期待的.

编辑

添加了其他信息:

java.lang中.management提供有关运行JVM的系统的各种信息.

java.lang.management.OperatingSystemMXBean提供:

  1. getAvailableProcessors()可用处理器的数量等效Runtime.availableProcessors()
  2. getSystemLoadAverage()系统平均负载最后一分钟的系统负载平均值.

java.lang.management.ManagementFactory

  1. getGarbageCollectorMXBeans()返回GarbageCollectorMXBeans列表.可以查询每个 GarbageCollectorMXBean以获取以下信息:

    1. getCollectionCount()使用此bean发生的gc数.
    2. getCollectionTime()在gc之间经过的近似累计时间(以毫秒为单位).(注意:Java虚拟机实现可能使用高分辨率计时器来测量经过的时间.)
    3. getName()内存管理器的名称.
    4. getMemoryPoolNames()此gc管理的内存池.
  2. getThreadMXBean()返回 ThreadMXBean,它提供:

    1. getCurrentThreadCpuTime()毫秒为单位返回当前线程的总CPU时间.如果实现区分用户模式时间和系统模式时间,则返回的CPU时间是当前线程在用户模式或系统模式下执行的时间量.
  3. getRuntimeMXBean返回 RuntimeMXBean
    1. getUptime() Java虚拟机的正常运行时间(以毫秒为单位).
    2. getStartTime() Java虚拟机的开始时间(以毫秒为单位).
    3. getInputArguments()返回传递给Java虚拟机的输入参数,该参数不包含main方法的参数.
  4. getCompilationMXBean返回 CompilationMXBean
    1. getName() JIT的名称
    2. getTotalCompilationTime()编译代码所用的时间(以毫秒为单位).

java benchmarking operating-system

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

多重冲突与散列函数的第一次或第二次前映像攻击有什么区别?

散列函数中的多重碰撞与第一或第二前映像之间的区别是什么.

  • 第一个preimage攻击:给定一个哈希h,找到一个这样的消息

    hash(m)= h.

  • 第二个preimage攻击:给定一个固定的消息m1,找到一个不同的消息m2

    hash(m2)= hash(m1).

  • 多冲突攻击:生成一系列消息m1,m2,... mN,这样

    hash(m1)= hash(m2)= ... = hash(mN).

维基百科告诉我们,preimage攻击与碰撞攻击的不同之处在于存在被攻击的固定哈希或消息.

令我感到困惑的是那些make语句如下:

这些技术不仅有效地搜索碰撞,而且还适用于探索MD4的第二原像.关于第二个原像攻击,他们发现随机消息是一个概率为2 ^ -122的弱消息,它只需要一次性的MD4计算来找到对应于弱消息的第二个原像.

对MD4的第二次原像攻击

如果我理解作者似乎在说的是他们已经开发了一个多冲突攻击,其中包含一组足够大的消息,这些消息给出了随机消息,那么它与其中一个消息重叠的可能性非常小.碰撞.

我在许多论文中看到了类似的论点.我的问题是什么时候攻击不再是多次碰撞攻击并成为第二次原像攻击

  • 如果多次碰撞与2 ^ 300其他消息发生碰撞,那么它会被计为第二个原像,因为多次碰撞可以用来计算它碰撞的其中一个消息的"前映像"吗?分界线在哪里,2 ^ 60,2 ^ 100,2 ^ 1000?

  • 如果您可以生成以23开头的所有哈希摘要的原像,该怎么办?当然它不符合preimage的严格定义,但它也是加密哈希函数中的一个严重缺陷.

  • 如果某人有大的多次碰撞,那么他们总能恢复与多次碰撞相冲突的任何消息的图像.例如,

    hash(m1)= hash(m2)= hash(m3)= h

    有人请求h的原像,他们用m2回复.什么时候停止愚蠢并成为真正的攻击?

经验法则?知道有关评估哈希函数攻击的任何好资源吗?

相关链接:

cryptography hash-collision cryptanalysis cryptographic-hash-function

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

捕获奇怪的C指针算术错误

我最近遇到了一个非常偷偷摸摸的错误,我忘了取消引用一个字符串(char数组)的指针,因此有时会覆盖堆栈上的一个字节.

坏:

char ** str;
(*str) = malloc(10);
...
str[2] = 'a'; //overwrites 3 bytes from the location in which str is stored
Run Code Online (Sandbox Code Playgroud)

更正:

char ** str;
(*str) = malloc(10);
...
(*str)[2] = 'a'; 
Run Code Online (Sandbox Code Playgroud)

GCC没有发出警告,这个错误会导致一个非常严重和真实的漏洞,因为它有时覆盖的值保持缓冲区的大小.我只抓住了这个bug,因为我很幸运,它导致了明显的失败.

  • 除了依靠运气和/或从不使用C进行任何操作外,您使用什么防御性编码技巧和技巧来捕获奇怪的C错误?

  • 我正在考虑搬到valgrind的MemCheck,有人用它吗?我怀疑它不会抓住这个bug.谁知道?

  • 是否有捕获指针解除引用或算术错误的工具?这甚至可能吗?

UPDATE

这是请求的示例代码,它不会抛出任何警告.

#include <stdlib.h>

void test(unsigned char** byteArray){
    (*byteArray) = (unsigned char*)malloc(5);
    byteArray[4] = 0x0;
}

int main(void){
    unsigned char* str;
    test(&str);  
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

编译不会导致错误:

gcc -Wall testBug.c -o testBug
Run Code Online (Sandbox Code Playgroud)

运行导致seg故障:

./testBug
Segmentation fault
Run Code Online (Sandbox Code Playgroud)

这是我正在使用的GCC版本:

gcc -v

Using built-in …
Run Code Online (Sandbox Code Playgroud)

c pointers findbugs

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

缓冲区溢出攻击格式

通常我们都看到基本的缓冲区溢出格式,它具有: - NOPs + shellcode + return_address

为什么我们不使用, NOPs + return_address + shellcode?我们将返回地址指向shellcode的开头?

我猜这是因为如果漏洞位于main()中,我们可能会尝试在堆栈段外写入数据.我对吗?如果我,那是唯一的原因吗?

哦,是的,我不是指使用return-to-libc,ptrace等的其他类型的攻击; 我只想知道为什么最基本的缓冲区溢出攻击以第一种方式展示而不是第二种方式.

c security x86 buffer-overflow shellcode

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

Java集合实现(例如HashMaps vs HashSet vs HashTable ......),选择错误的成本是多少?

在我的代码中,我默认使用ArrayList表示所有列表,HashMap表示所有映射,HashSet表示所有集合.

从实际角度来看,通过选择错误的实现,我在灵活性,可伸缩性,可读性和性能方面失去了多少?什么时候花时间决定使用一个而不是另一个?

我当然看到一个非常明确的案例,说明为什么有人会在某些情况下使用LinkedList而不是ArrayList.什么时候有人认为它是关键的,他们使用的是HashMap而不是TreeMap或HashTable?套装怎么样?

问题:

  1. 选择不好的成本是多少?
  2. 有没有人有关于选择错误的实现和数据中心着火的灾难故事?
  3. 有什么好的经验法则吗?
  4. 是否有任何模糊的集合实现,你不能没有?

我读过:

我从理论的角度发现这个问题是有关系的,但我对现实世界更感兴趣,在战壕里回答.

java collections hashmap

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

是否有可能为Android手机编写一个wifi破解工具?监控模式与多播?

考虑为android平台编写一个wifi破解(wep,wpa)审计工具,但我想知道是否有可能没有root电话.由于手机wifi芯片忽略了没有发往手机的数据包,我原本以为无法在无根电话上运行.也就是说,如果没有将wifi芯片设置为监控模式的能力,许多这些攻击都无法工作.

我很惊讶地发现android支持多播数据包.也就是说,可以将android手机设置为接收未发送给它们的数据包.

我的问题是:

  • 拥有多播锁意味着我可以接收所有广播数据包,还是仅适用于具有多播标志的数据包(如果存在这样的话)?

  • 监控模式和组播之间有区别吗?

  • android api有没有切换频道的系统?

更一般地说,我很好奇:

  • 是否有人熟悉在Android上运行的其他wifi破解项目(谷歌搜索出现的很少)?

  • 我可能遇到什么困难?

这个问题与SO问题有关无论如何将Android WIFI(机器人手机)置于多种监控模式

security encryption android wifi android-wifi

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

通过在Visual C++中强制转换为函数指针来执行shellcode

在gcc中这很好用.代码类似于:

unsigned char b[50] = "\xda\xd1 ... \x0"; //some shellcode with terminating \x0
( (void(*)())b )(); //cast b to function pointer from void to void, then run it
Run Code Online (Sandbox Code Playgroud)

但是当它放在Visual C++中时,它会吐出这个错误消息:

1>..\test.cpp(132): error C2440: 'type cast' : cannot convert from 'unsigned char [50]' to 'void (__cdecl *)(void)'
1>          There is no context in which this conversion is possible
Run Code Online (Sandbox Code Playgroud)

谁知道为什么会这样?

c++ casting shellcode

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

有关N路组关联缓存的信息

我在互联网上使用的一些资源在集合关联缓存的工作方式上存在分歧.

例如硬件机密似乎相信它的工作原理如下:

然后,主RAM存储器被划分为存储器高速缓存中可用的相同数量的块.保持512 KB 4路组关联示例,主RAM将被分成2,048个块,内存缓存中可用的块数相同.每个内存块都链接到缓存中的一组行,就像在直接映射缓存中一样.

http://www.hardwaresecrets.com/printpage/481/8

他们似乎在说每个缓存块(4个缓存行)映射到特定的连续RAM块.他们说不连续的系统内存块(RAM)无法映射到同一个缓存块.

这是有关hardwaresecrets认为它如何工作的图片 http://www.hardwaresecrets.com/fullimage.php?image=7864

与维基百科的关联缓存图片对比 http://upload.wikimedia.org/wikipedia/commons/9/93/Cache%2Cassociative-fill-both.png.

布朗不同意硬件机密

考虑如果每个高速缓存行具有两组字段可能发生的情况:两个有效位,两个脏位,两个标记字段和两个数据字段.一组字段可以缓存主存储器的一个区域的数据,另一组字段可以缓存到恰好映射到同一缓存线的另一个区域.

http://www.spsu.edu/cs/faculty/bbrown/web_lectures/cache/

也就是说,非连续的系统存储器块可以映射到相同的高速缓存块.

如何创建系统内存和缓存块上的非连续块之间的关系.我在某处读到这些关系是基于缓存步幅的,但除了它们存在之外,我找不到有关缓存步幅的任何信息.

谁是对的?如果实际使用了跨步,那么跨步工作如何?我是否拥有正确的技术名称?如何找到特定系统的步幅?它是基于寻呼系统?有人能指出一个能够详细解释N路组关联缓存的网址吗?

另见:http: //www.cs.umd.edu/class/sum2003/cmsc311/Notes/Memory/set.html

caching operating-system memory-management systems-programming

5
推荐指数
1
解决办法
7009
查看次数

作业 - 无法利用缓冲区溢出

我试图学习在Backtrack Linux上利用简单的缓冲区流技术.

这是我的C程序

#include <stdio.h>
#include <string.h>

int main(int argc, char **argv)
{
    char buffer[500];
    if(argc==2)
    {

    strcpy(buffer, argv[1]);  //vulnerable function

    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是我正在使用的shellcode,它对应于简单的/bin/ls \ x31\xc0\x83\xec\x01\x88\x04\x24\x68\x6e\x2f\x6c\x73\x66\x68\x62\x69\x83\xec\X01\XC6\X04\X24\X2F\X89\XE6\X50\X56\XB0\X0B\X89\XF3\X89\XE1\X31\XD2\XCD\X80\XB0\X01\X31\XDB\XCD\X80

我使用以下命令在gdb中注入此shellcode

run $(python -c 'print "\x90" * 331 + "\x31\xc0\x83\xec\x01\x88\x04\x24\x68\x6e\x2f\x6c\x73\x66\x68\x62\x69\x83\xec\x01\xc6\x04\x24\x2f\x89\xe6\x50\x56\xb0\x0b\x89\xf3\x89\xe1\x31\xd2\xcd\x80\xb0\x01\x31\xdb\xcd\x80" + "\x0c\xd3\xff\xff"*35')
Run Code Online (Sandbox Code Playgroud)

当我逐步完成应用程序时,它会SIG FAULT在最终ret指令上生成.此时EIP正确设置为0xffffd30c.这个地址是可寻址的,包含一系列的NOP,后跟我的shell代码,如有效负载中所示.

我已经禁用了ASLR sudo echo 0 > /proc/sys/kernel/randomize_va_space

并使用fno-stack-protector选项编译我的二进制文件.

知道SIGSEGV的原因是什么?

c buffer-overflow shellcode

5
推荐指数
1
解决办法
1684
查看次数

利用Glibc 2.12.1开发堆

我一直在寻找没有好结果.

我想知道在文本中解释为Malloc Maleficarum或Malloc Des-Malleficarum的技术在glibc版本2.12.1中是否有效.

在第二个提到的文本中说这些技术是在glibc 2.7和2.8版本中测试的,所以我真的不知道它们是否适用于我的glibc版本.当然我可以测试它们,但是,首先,只有他们自己的技术才真的很难,而另一方面,如果他们不工作我不知道是不是因为glibc版本或我的错.

而且,我还没有发现任何实际的堆漏洞.而且,我也找不到通过这些glibc版本实现的更改.

提前致谢.

exploit glibc heap-corruption shellcode

5
推荐指数
1
解决办法
764
查看次数