[ create a new paste ] login | about

Link: http://codepad.org/NCnvxmi3    [ raw code | output | fork ]

C, pasted on Aug 7:
from binascii import *
from gmpy2 import *
def str2num(s):
    return int(s.encode('hex'),16)

def num2str(n):
    d = ('%x' % n)
    if len(d) % 2 == 1:
        d = '0' + d
    return d.decode('hex')

N = 25504352309535290475248970674346405639150033303276037621954645287836414954584485104061261800020387562499019659311665606506084209652278825297538342995446093360707480284955051977871508969158833725741319229528482243960926606982225623875037437446029764584076579733157399563314682454896733000474399703682370015847387660034753890964070709371374885394037462378877025773834640334396506494513394772275132449199231593014288079343099475952658539203870198753180108893634430428519877349292223234156296946657199158953622932685066947832834071847602426570899103186305452954512045960946081356967938725965154991111592790767330692701669

e = 65537


ticket = 'ticket:admin|root|'
print 'ticket = ',str2num(ticket)
ticket = str2num(ticket)
a = '\xff' + 'flag'
a = str2num(a)
random = 0
while True:
    b = ticket*invert(a,N) % N
    if num2str(b)[0] == '\xff':
	print 'a = ',a
        print 'hex_a = ',hex(a) 
	print 'b = ',b
	print 'hex_b = ',hex(b)
	break
    a = a + 1
#sign a
a = 0x1616498e4b7dc75d8cafa30f71ee1e24330e4f5b7acabc8973d5ca3ad4562d9ca0ee09b3f2338234e5e75ff25daf2bb4c09efca3be2521cf38ef6871b3d564ed4e20b569d526147186702e8f2a2a993d3cc6dd5a1497428995affa596ee1cc9b6cc5a5a80b4b7d716d8456d90ba05460c9fbdaae6a18be82c733edd2c000ea1092cddcfb8253c11f3e9113b31be94344c5b773f88b589f8b39db3e295ee9ca5eeedbfc60ffd872fb1361419a747dddcf62290a487334b35fc92bd06fbd63a4bd840ce244565da8aaf2c07b7d6a581fdfde51e8361773c3072a1dbb858b893ed5f882c86615bc0bb00ad8fb4f20b3210a5f7df084e47352fbeb6f313ec2706945
#sign b 
b = 0x4a60b9adcb9e7ddf5bb9d36108efb01878b4850a4e3060bab3915c2ba01d729d2acfd69e9734a1f7c6ad08d736f52107c0e2067d8aaa1e8cfda46a6c0a7945d37b1df959e75ccb7bc03a99ca8743d6215e22fff7021aa68a623868cf6a8742af46614ec59644132a7589148cbd53e2976a4e69b5b176da4aa3afb1a3c3f0ca7dc7b9236ebbf902cca30f3cf276f230a86e404771f6d6eb71c9ecd78b3bdbe0bbb5400ede1364444553eeea4d86c2c808415399f1afaadc67970791549943bc869cf1a4dd853f1a81cadb72e81cc080e6282c17f0d139f691d63439f38c05588d083db6be71a80d18b54a8bdb9ae59941d1e9d40886f3e9bdcb3768018d00789d
#calculate sig(ticket)
ticket = a*b % N
print 'ticket = ', hex(ticket)


Output:
Line 1: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'binascii'
Line 24: warning: multi-character character constant
Line 9: warning: multi-character character constant
Line 20: warning: multi-character character constant
Line 4: warning: integer constant is too large for its type
Line 12: warning: this decimal constant is unsigned only in ISO C90
Line 12: warning: integer constant is too large for 'long' type
Line 9: warning: character constant too long for its type
Line 6: warning: character constant too long for its type
Line 13: warning: multi-character character constant
Line 7: warning: multi-character character constant
Line 14: warning: character constant too long for its type
Line 7: warning: multi-character character constant
Line 7: warning: character constant too long for its type
Line 1: error: invalid preprocessing directive #sign
Line 4: warning: integer constant is too large for its type
Line 33: warning: integer constant is too large for 'long' type
Line 1: error: invalid preprocessing directive #sign
Line 4: warning: integer constant is too large for its type
Line 35: warning: integer constant is too large for 'long' type
Line 1: error: invalid preprocessing directive #calculate
Line 6: warning: character constant too long for its type


Create a new paste based on this one


Comments: