Contact - Josh Blum
GNU Radio Queries
If you have a gnuradio or grc question, please send your email to the gnuradio.org mailing list. You can subscribe to the list here. And you can send your email directly to discuss-gnuradio@gnu.org.
Why should you send your mail to the list and not to me directly?
- Someone else may be able to help you before I can answer or when I cannot answer
- Your email will be on the public archive and available to others with the same problem
USRP Hardware Discussions
Public discussions or inquiries about the Ettus Research hardware (and not about gnuradio) should go to the USRP users mailing list usrp-users@lists.ettus.com
Ettus Research Support
If you have questions about the Ettus Research products or software, please send your email to support@ettus.com. I am not tech-support, and I may not be able to help you. The support channel will route your inquiry to the appropriate person.
Contact Me Directly
Email only please.
- Email: josh AT joshknows DOT com
- Secure email: download my public key
- Phone(md5): a7852454caf08e4e8de354677d41c36f
I have been receiving too many weird calls at odd hours. So I have re-listed my phone number as an md5 hash. The original string was in the format xxx-xxx-xxxx. If you can decode it you can call it. Using google cached webpages would be cheating.
Example python code to "brute-force" my phone number
import hashlib, random my_phone_num_hash = 'a7852454caf08e4e8de354677d41c36f' def get_phone_numbers(): to_phone = lambda x: x[:3] + '-' + x[3:6] + '-' + x[6:10] while True: yield to_phone(str(random.random())[2:]) for phone_num in get_phone_numbers(): if hashlib.md5(phone_num).hexdigest() == my_phone_num_hash: print phone_num; break
Example C code to "brute-force" my phone number
unsigned char cmp[] = {0xa7,0x85,0x24,0x54,0xca,0xf0,0x8e,0x4e,
0x8d,0xe3,0x54,0x67,0x7d,0x41,0xc3,0x6f};
int main ()
{
MD5_CTX c;
unsigned char md[16];
char *ph = "XXX-XXX-XXXX";
char phbuf[16];
unsigned long long foo;
memset (phbuf, 0x0, sizeof(phbuf));
strcpy (phbuf, ph);
srand48 (getpid() ^ time(0));
for (foo = 0LL;;foo++)
{
int j;
if ((foo % 1000000LL) == 0)
{
fprintf (stderr, "Trial number %lld\n", foo);
}
for (j = 0; phbuf[j] != 0; j++)
{
if (phbuf[j] != '-')
{
phbuf[j] = (lrand48() % 10 ) + '0';
}
}
MD5_Init(&c);
MD5_Update (&c, phbuf, 12);
MD5_Final (md, &c);
if (memcmp (md, cmp, sizeof(cmp)) == 0)
{
break;
}
}
fprintf (stdout, "The value is %s\n", phbuf);
exit (0);
}