Go Back  
Reply
 
Thread Tools
Old 02-17-2013   #1
JPlayer
Apprentice
 
Join Date: Jan 2013
Posts: 1
Likes: 0
Liked 1 Time in 1 Post
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
naehrwert and ECDSA

Code:
/*
* Copyright (c) 2012-2013 by naehrwert
* This file is released under the GPLv2.
*/

#include <stdio.h>

#include "types.h"
#include "sha1.h"
#include "ecdsa.h"

/*! EID0 section entry. */
typedef struct _section
{
	u8 data[0x38];
	u8 R[0x14];
	u8 S[0x14];
	u8 pub[0x28];
	u8 unk[0x20];
	u8 omac[0x10];
	u8 padding[0x08];
} section_t;

/*! ECDSA curve. */
typedef struct _curve
{
	u8 p[20];
	u8 a[20];
	u8 b[20];
	u8 N[21];
	u8 Gx[20];
	u8 Gy[20];
} curve_t;

/*! EID0 Section 0 - 1. */
u8 section0_1[0xC0] = {
	//Paste a decrypted EID0 section 0 here.
};

/*! EID0 Section 0 - 2. */
u8 section0_2[0xC0] = {
	//Paste a different (!) decrypted EID0 section 0 here.
};

/*! One sexy curve. */
u8 curve0[0x79] = {
	//SHA1: https://twitter.com/naehrwert/status/286745714434899968
	//(9035B33F58DFAEF389FD49187F93C4FC2D2DD268)
};

/*!
* \brief Hexdump, dummy.
*/
void _hexdump(const char *name, u32 offset, u8 *buf, int len, int print_addr)
{
	int i, j, align = strlen(name) + 1;

	printf("%s ", name);
	if(print_addr)
		printf("%08X: ", offset);
	for(i = 0; i < len; i++)
	{
		if(i % 16 == 0 && i != 0)
		{
			printf("\n");
			for(j = 0; j < align; j++)
				putchar(' ');
			if(print_addr)
				printf("%08X: ", offset + i);
		}
		printf("%02X ", buf[i]);
	}
	printf("\n");
}

/*!
* \brief Dump section info.
* \param name Name.
* \param s Section.
*/
void dump_section(const char *name, section_t *s)
{
	printf("Section%s:\n", name);
	_hexdump(" DATA     ", 0x00, s->data, 0x38, 1);
	_hexdump(" ECDSA R  ", 0x38, s->R, 0x14, 1);
	_hexdump(" ECDSA S  ", 0x4C, s->S, 0x14, 1);
	_hexdump(" ECDSA PUB", 0x60, s->pub, 0x28, 1);
	_hexdump(" UNK      ", 0x88, s->unk, 0x20, 1);
	_hexdump(" OMAC     ", 0xA8, s->omac, 0x10, 1);
	_hexdump(" PADDING  ", 0xB8, s->padding, 0x08, 1);
	printf("\n");
}

/*!
* \brief Verify section.
* \param s Section.
* \param c Curve.
* \return Verify result.
*/
int verify_section(section_t *s, curve_t *c)
{
	u8 hash[0x14];
	u8 _R[21] = {0}, _S[21] = {0};

	memcpy(_R + 1, s->R, 20);
	memcpy(_S + 1, s->S, 20);

	sha1(s->data, 0x38, hash);
	ecdsa_set_curve(c->p, c->a, c->b, c->N, c->Gx, c->Gy);
	ecdsa_set_pub(s->pub);
	return ecdsa_verify(hash, _R, _S);
}

//Maybe you're lucky?!
int main()
{
	dump_section("0_1", (section_t *)section0_1);
	dump_section("0_2", (section_t *)section0_2);
	printf("sig. 1 verified: %s\n", verify_section((section_t *)section0_1, (curve_t *)curve0) ? "yay" : "nay");
	printf("sig. 2 verified: %s\n", verify_section((section_t *)section0_2, (curve_t *)curve0) ? "yay" : "nay");
	printf("R_1 == R_2: %s\n", memcmp(((section_t *)section0_1)->R, ((section_t *)section0_2)->R, 0x14) ? "nay :(" : "yay :)");
	getchar();
	return 0;
}
Source: on pastie.org /6169158#103,121
Interesting solution. However, I can't see how far away it may be from a breakthrough. Does anyone know more?
JPlayer is offline   Reply With Quote
Old 02-17-2013   #2
babytuti
Member
 
babytuti's Avatar
 
Join Date: Oct 2012
Location: Puchi Island
Posts: 95
Likes: 10
Liked 16 Times in 10 Posts
Mentioned: 3 Post(s)
Tagged: 0 Thread(s)
The 49 digits of the ECDSA algorithim will soon be ours!!
babytuti is offline   Reply With Quote
Old 02-17-2013   #3
xxmcvapourxx
Member
 
Join Date: May 2010
Posts: 92
Likes: 49
Liked 65 Times in 39 Posts
Mentioned: 15 Post(s)
Tagged: 0 Thread(s)
Give you a clue thats for dex ECDSA :-P it disables the check's!!!
xxmcvapourxx is offline   Reply With Quote
Likes: (2)
Old 02-17-2013   #4
babytuti
Member
 
babytuti's Avatar
 
Join Date: Oct 2012
Location: Puchi Island
Posts: 95
Likes: 10
Liked 16 Times in 10 Posts
Mentioned: 3 Post(s)
Tagged: 0 Thread(s)
Originally Posted by xxmcvapourxx View Post
Give you a clue thats for dex ECDSA :-P it disables the check's!!!
You're messing with him right?
babytuti is offline   Reply With Quote
Reply

Bookmarks

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump



PS3Hax.net is Copyright © 2010-2013.
Use of this site is governed by our Terms of Use and Privacy Policy. All Trademarks and images are owned by their respected owners.
Posts and links are subject to each author on this forum and are no way affiliated with the operations and/or opinions of ps3hax.net
All times are GMT -5. The time now is 08:52 AM.