본문 바로가기

여기저기 쓰이는 짧은 실용함수/파이썬

인터넷이 없는 상황에서도 쓸 수 있는 사용 인증 키

제 첫 실용 프로그램이었던 원랜디 조합도우미입니다.

원피스랜덤디펜스라는 게임을 할 때 보다 편하게 하기 위해 만든 프로그램입니다.

 

소스는 6행만 보시면 됩니다.

6행에 보면 pasi를 import했음을 알 수 있습니다.

 

pasi의 실행화면입니다.

오늘의 사용코드를 입력해야 다음으로 넘어갈 수 있습니다.

코드발행기에서 오늘의 사용코드를 확인하여 입력해주면 프로그램을 사용할 수 있게됩니다.

 

 

 

#pasi.py

#코드로 잠금을 걸고싶은 부분 앞에 pasi.py를 import해주세요. 그러면 해당 줄 이후는 하루에 한 번 코드를 입력해야 사용할 수 있게됩니다.

import datetime
#클라이언트컴퓨터용
now = datetime.datetime.now()


#요일
dayname = now.weekday()
#연
year = now.year
#월
month = now.month
#일
day = now.day

today = str(year)+str(month)+str(day)

#오늘 사용자가 인증했는지 확인하는 방법.
#아래 파일경로를 임의로 바꿔주세요
f=open('C:/ordhelper/HrPr/run/int/todayis.txt','r')
fcontent=f.read()
f.close()
if str(today) == fcontent:
	pass
else:
	#code1 = ['a','b','c','d,'e','f','g',h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
	#코드생성규칙
	code2 = ['Z','C','B','V','E','F','G','H','I','J','K','L','M','N','O','P','X','R','S','T','U','D','W','Q','Y','A']

	daylist = ['월','화','수','목','금','토','일']



	if dayname %4 ==0:
		if dayname ==0:
			dayname+=day
		oncode = dayname*1067+year+month+day
	else:
		oncode = dayname*7203+month+year+day

	twcode = str(day%4)[0]+str(oncode**3)[4:]+str(day*7)[-1]


	#kk is last code
	kk=''
	a=0
	for i in range(len(twcode)):
		if i < len(code2):
			kk += code2[int(twcode[i])]
		else:
			kk += code2[int(twcode[i])-len(code2)]
		a+=1

		if a==4:
			kk+='-'
			a=0
	if kk[-1] =='-':
		kk = kk[:-1]
	#맞는 코드를 입력할 때까지 무한루프탈출불가능
	while True:
		usercode = input('코드는 https://blog.naver.com/fox_93에 매일자정(24:00) 업로드 됩니다\n\n사용코드입력\n:')
		if usercode == kk:
			f=open('C:/ordhelper/HrPr/run/int/todayis.txt','w')
			f.write(today)
			f.close()
			break
		else:
			print("코드가 틀렸습니다. 정확히 복사해서 붙여넣기 해주세요")

 

 

#코드발행기

발행기를 돌리면 오늘부터 for문의 range만큼 일 수의 사용코드가 나옵니다.

적절히 조절해서 코드를 배포하시면 되겠습니다~

import datetime
#발행컴퓨터용
now = datetime.datetime.now()


#요일
dayname = now.weekday()
#연
year = now.year
#월
month = now.month
#일
day = now.day
savedayname=dayname
today = str(year)+str(month)+str(day)
f=open('C:/ordhelper/HrPr/run/int/todayis.txt','r')
fcontent=f.read()
f.close()
if str(today) == fcontent:
	print("오늘의 인증이 완료되었습니다.")
	pass
for i in range(7):
	savedayname = dayname
	#code1 = ['a','b','c','d,'e','f','g',h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
	code2 = ['Z','C','B','V','E','F','G','H','I','J','K','L','M','N','O','P','X','R','S','T','U','D','W','Q','Y','A']

	daylist = ['월','화','수','목','금','토','일']


	#코드규칙
	if dayname %4 ==0:
		if dayname ==0:
			savedayname = dayname
			dayname+=day
		oncode = dayname*1067+year+month+day
	else:
		oncode = dayname*7203+month+year+day

	twcode = str(day%4)[0]+str(oncode**3)[4:]+str(day*7)[-1]


	#kk is last code
	kk=''
	a=0
	for i in range(len(twcode)):
		if i < len(code2):
			kk += code2[int(twcode[i])]
		else:
			kk += code2[int(twcode[i])-len(code2)]
		a+=1

		if a==4:
			kk+='-'
			a=0
	if kk[-1] =='-':
		kk = kk[:-1]
	dayname = savedayname
	print(str(year)+'.'+str(month)+'.'+str(day)+str(daylist[dayname])+'요일의 사용코드입니다:\n'+ kk+'\n\n')
	day +=1
	dayname+=1

	#요일변환
	if dayname ==7:
		dayname =0
#2 4 6 9 11
	#월변환
	if day ==31:
		if month ==2 or month ==4 or month ==6 or month ==9 or month ==11:
			day =1
			month +=1
	if day ==32:
		day=1
		month +=1
	if day ==29 and month ==2:
		day =1
		month +=1

	if month ==13:
		month =1
		year +=1
'''
	while True:
		usercode = input('코드는 https://blog.naver.com/fox_93에 매일자정(24:00) 업로드 됩니다\n\n사용코드입력\n:')
		if usercode == kk:
			f=open('C:/ordhelper/HrPr/run/int/todayis.txt','w')
			f.write(today)
			f.close()
			break
'''