diff options
author | John Denker <jsd@av8n.com> | 2012-06-02 18:38:28 -0700 |
---|---|---|
committer | John Denker <jsd@av8n.com> | 2012-06-02 18:38:28 -0700 |
commit | 78488dc84afac1398e582ae6bbaf9606d07afa1e (patch) | |
tree | 71723e916f23a6a07422587de275dece3ea60252 /checkpasswd/x86cpuid.c | |
parent | 81b5f8f3ab26a7969956faef29a90499ece40ff5 (diff) |
checkpassword ... as downloaded
Diffstat (limited to 'checkpasswd/x86cpuid.c')
-rw-r--r-- | checkpasswd/x86cpuid.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/checkpasswd/x86cpuid.c b/checkpasswd/x86cpuid.c new file mode 100644 index 0000000..900d7d5 --- /dev/null +++ b/checkpasswd/x86cpuid.c @@ -0,0 +1,38 @@ +#include <signal.h> + +void nope() +{ + exit(1); +} + +main() +{ + unsigned long x[4]; + unsigned long y[4]; + int i; + int j; + char c; + + signal(SIGILL,nope); + + x[0] = 0; + x[1] = 0; + x[2] = 0; + x[3] = 0; + + asm volatile(".byte 15;.byte 162" : "=a"(x[0]),"=b"(x[1]),"=c"(x[3]),"=d"(x[2]) : "0"(0) ); + if (!x[0]) return 0; + asm volatile(".byte 15;.byte 162" : "=a"(y[0]),"=b"(y[1]),"=c"(y[2]),"=d"(y[3]) : "0"(1) ); + + for (i = 1;i < 4;++i) + for (j = 0;j < 4;++j) { + c = x[i] >> (8 * j); + if (c < 32) c = 32; + if (c > 126) c = 126; + putchar(c); + } + + printf("-%08x-%08x\n",y[0],y[3]); + + return 0; +} |