Welcome to HBH! If you have tried to register and didn't get a verification email, please using the following link to resend the verification email.
sever hacking - Python Code Bank
sever hacking
hack a sever
# Created by UnknownSinister
#Hack the Server Challenged
#Given Data: Base 1511^x, modulus and output.
base=1511
modulus=35948145881546650497425055363061529726
output=10899914993644372325321260353822561193
#Baby/Giant steps discrete logarithms to evaluate exponential $x.
#You need a lot of memory to be able to run that code.
#CAUTION: DO NOT RUN ON PHONE
def baby_steps_giant_steps(a,b,p,N = None):
if not N: N = 1 + int((p)**0.5)
#initialize baby_steps table
baby_steps = {}
baby_step = 1
for r in range(N+1):
baby_steps[baby_step] = r
baby_step = baby_step * a % p
#now take the giant steps
giant_stride = pow(a,(p-2)*N,p)
giant_step = b
for q in range(N+1):
if giant_step in baby_steps:
return q*N + baby_steps[giant_step]
else:
giant_step = giant_step * giant_stride % p
return "No Match"
#I run this on my desktop PC and waited to obtain the results
# Code: baby_steps_giant_steps(base,output,modulus)
#I have also used the Pohlig-Hellman Algorith to obtain the folowing output:
x=5846138770670624478648053421625897
y=13876455641232175195163569384472100
#Note that y is just an arbitary output because it is not the exponential and give the output
def check(x):
true="The value "+str(x) +" is the corresponding value of exponential $x"
false="The value "+str(x)+" is NOT the corresponding value of exponential $x"
if pow(1511,x,modulus)==output:
return str(true)
else:
return str(false)
#The true exponential value will be in the form:
# $x = x+y*k where k is a constant
#Hence I find a value k such that I get a 39 digit long exponential
#Note: I have ensured that the lenght of x is 39 digit long because 38 digit will produce a 31 characters flag.
#The demanded length of the flag is 32 characters.
#Thus length of x must be 39 digit long
def find(x,y):
i=0
while True:
z=x+y*i
if len(str(z))!=39:
i+=1
else:
break
return i
#Convert it into hexadecimal form
def dec2hex(dec):
hexstring=["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"]
c=0
remainder=[]
res=""
if dec>0:
while dec>0:
remainder.append(dec%16)
dec=dec//16
c+=1
for reverse in remainder[::-1]:
res+=hexstring[reverse]
else:
res="0"
return res
def hacktheserver(x,y):
yes="~#### SERVER HAS BEEN HACKED ####~"
print("~#### HACK THE SERVER CHALLENGE ####~")
print("The value of x is:",x)
print("The value of y is:",y)
print("The Exponential is in the form x+y*k")
print("The value of k is:",find(x,y))
print(check(x+y*find(x,y)))
print("Flag decimal value:",x+y*find(x,y))
print("Flag 32 hexadecimal characters:",dec2hex(x+y*find(x,y)))
print("Flag has been obtained")
return yes
#AT LAST:
print(hacktheserver(x,y))
Comments
Sorry but there are no comments to display