Ejemplo n.º 1
0
def run(ctx):
    token = input("[-]input your token: ")
    token = token.strip()
    data = validate_then_decrypt(token, AES_KEY, HMAC_KEY)
    if len(data) != 74:
        print(Printer.in_fg_color("[+]wrong token", r.red4))
        sys.exit(0)
    acct = validate_game_account(ctx, data)

    if not is_account_exist(ctx, acct.address):
        print(Printer.in_fg_color("[+]wrong token", r.red4))
        sys.exit(0)

    transfer_txhash = input(
        "[-]input your transaction hash of transfer enough ETH to deployer: ")
    if not transfercheck(ctx, acct, transfer_txhash):
        print(Printer.in_fg_color("[+]wrong transaction hash", r.red4))
        sys.exit(0)

    tx_hash = deployer.run(ctx, acct)

    # generate new token
    data = acct.address.encode() + acct.key + tx_hash
    new_token = encrypt_then_mac(data, AES_KEY, HMAC_KEY)
    Printer.ppln(
        Printer.in_fg_color("[+]new token: {}".format(new_token), r.white1))
    Printer.ppln("[+]Your goal is to convert 1wei Chaitin into 80 Flag")
Ejemplo n.º 2
0
def run(ctx):
    new_token = input("[-]input your new token: ")
    new_token = new_token.strip()
    try:
        data = validate_then_decrypt(new_token, AES_KEY, HMAC_KEY)
    except Exception as err:
        print("[!]bad token")
        sys.exit(0)

    if len(data) != 114:
        print("[!]wrong token")
        sys.exit(0)

    data, msg = data[:-40], data[-40:]
    acct = validate_game_account(ctx, data)
    res = check_if_has_topic(ctx, acct, "0x" + msg.decode())
    if res:
        flag = getflag()
        p.ppln(p.in_fg_color("[+] Congratulation! Here's the flag:", white1))
        p.ppln(p.in_fg_color(flag, red1))
    else:
        p.ppln(
            p.in_fg_color("[!] It seems that you didn't solve the puzzle.",
                          white1))
        p.ppln(
            p.in_fg_color(
                "[!] Note that it may take time for ethereum to update, so please try 1 min latter if you feel necessary.",
                white1))

        #mov2(PANIC_INFO, SORRY_INFO, sz_col, sz_row)
Ejemplo n.º 3
0
def register2_review(ctx, _acct, _txhash):
	w3 = ctx['web3instance']
	#p.ppln("[*] Checking for registerCode2 status... ")
	try:
		tx_receipt = w3.eth.waitForTransactionReceipt(_txhash, timeout=720)
	except Exception as err:
		p.ppln(str(err))
		exit(0)
	addr = tx_receipt['transactionHash'].hex()

	if not addr:
		p.pln(p.in_fg_color("[!] registerCode Broken down", r.red5))
	else:
		p.ppln("[+] registerCode " + p.in_fg_color("success", r.green1) + ", transaction hash: " + p.in_fg_color(addr, r.blue1))
Ejemplo n.º 4
0
def run(ctx):
    token = input("[-]input your token: ")
    token = token.strip()
    try:
        data = validate_then_decrypt(token, AES_KEY, HMAC_KEY)
    except Exception as err:
        print("[!]bad token")
        sys.exit(0)
    if len(data) != 74:
        #print(Printer.in_fg_color("[-]wrong token", r.red4))
        print("[!]wrong token")
        sys.exit(0)
    acct = validate_game_account(ctx, data)

    if not balancecheck(ctx, acct):
        print(
            "[!]game account balance not enough, should >={} ETH, please send more..."
            .format(est_gas / 10**18))
        sys.exit(0)

    montagy_address = deployer.run(ctx, acct)

    # generate new token
    data = acct.address.encode() + acct.key + montagy_address.encode()
    new_token = encrypt_then_mac(data, AES_KEY, HMAC_KEY)
    Printer.ppln(
        Printer.in_fg_color("[+]new token: {}".format(new_token), r.white1))
    Printer.ppln(
        "[+]Your goal is to empty the Montagy contract's ETH balance.")
Ejemplo n.º 5
0
def mint_review(ctx, _acct, _txhash):
    w3 = ctx['web3instance']
    p.ppln("[-] Check for mintflagtoken successful... ")
    try:
        tx_receipt = w3.eth.waitForTransactionReceipt(_txhash, timeout=720)
    except Exception as err:
        p.ppln(str(err))
        exit(0)
    addr = tx_receipt['transactionHash'].hex()

    if not addr:
        p.pln(p.in_fg_color("[!] mintflagtoken Broken down", r.red5))
    else:
        p.ppln("[+] mintflagtoken " + p.in_fg_color("success", r.green1))
        p.ppln("[!] mintflagtoken transaction hash is " +
               p.in_fg_color(addr, r.blue1))
Ejemplo n.º 6
0
def transfercheck(ctx, _acct, _txhash):
    w3 = ctx['web3instance']
    if 'transfercheck' not in ctx['deployedcontracts'][_acct.address].keys():
        try:
            tx_receipt = w3.eth.waitForTransactionReceipt(_txhash, timeout=120)
        except:
            return False
        _from = tx_receipt['from']
        _to = tx_receipt['to']

        if _to != _acct.address:
            return False

        try:
            balance = w3.eth.getBalance(_acct.address)
        except:
            return False

        if balance < MINSTARTBALANCE:
            p.pln(
                p.in_fg_color(
                    "contructor Balance Not Enough, Please Send More ETH...",
                    r.red4))

        update_user_deploy_contracts(ctx, _acct.address, 'transfercheck',
                                     _from)
        return True
    else:
        return True
Ejemplo n.º 7
0
def register2(ctx, _contract, _bytecode, _acct, _acc_nonce):
	#p.ppln("[*] calling registerCode2...")
	err, txhash = registerCode2(ctx, _contract, _bytecode, _acct, _acc_nonce)
	if err:
		p.ppln(p.in_fg_color(("[!] " + str(err)), r.red5))
		exit(0)
	else:
		return None, txhash.hex()
Ejemplo n.º 8
0
def newPuzzle2(ctx, _contract, _p2bytes, _acct, _acc_nonce):
	#p.ppln("[*] calling newPuzzle2...")
	err, txhash = setNewPuzzle2(ctx, _contract, _p2bytes, _acct, _acc_nonce)
	if err:
		p.ppln(p.in_fg_color(("[!] " + str(err)), r.red5))
		exit(0)
	else:
		return None, txhash.hex()
Ejemplo n.º 9
0
def review(ctx, _acct, _txhash):
    w3 = ctx['web3instance']
    #p.ppln("[*] checking deployment statue... ")
    try:
        tx_receipt = w3.eth.waitForTransactionReceipt(_txhash, timeout=720)
    except Exception as err:
        p.p(str(err))
        exit(0)
    addr = tx_receipt['contractAddress']

    if not addr:
        p.pln(p.in_fg_color("[!] contract montagy deploy Broken down", r.red5))
        exit(0)
    else:
        p.ppln("[+] contract Montagy deploy " +
               p.in_fg_color("success", r.green1) + ", address: " +
               p.in_fg_color(addr, r.blue1))
        return addr
Ejemplo n.º 10
0
def review(ctx, _acct, _txhash):
    w3 = ctx['web3instance']
    p.ppln("[-] Check for feitoken contract successful deployment... ")
    if 'feitoken' not in ctx['deployedcontracts'][_acct.address].keys():
        try:
            tx_receipt = w3.eth.waitForTransactionReceipt(_txhash, timeout=720)
        except Exception as err:
            p.p(str(err))
            exit(0)
        addr = tx_receipt['contractAddress']
        update_user_deploy_contracts(ctx, _acct.address, 'feitoken', addr)
    else:
        addr = ctx['deployedcontracts'][_acct.address]['feitoken']

    if not addr:
        p.pln(p.in_fg_color("[!] contract feitoken deploy Broken down", r.red5))
    else:
        p.ppln("[+] contract feitoken deploy " + p.in_fg_color("success", r.green1))
        p.ppln("[!] feitoken contract address is " + p.in_fg_color(addr, r.blue1))
Ejemplo n.º 11
0
def check_if_has_topic(ctx, _acct, montagy_addr):
    acc_nonce = get_acc_nonce(ctx, _acct)
    err, balance = balanceofflagtoken(ctx, montagy_addr, _acct, acc_nonce)

    if err:
        p.pln(p.in_fg_color(str(err), r.red4))

    if balance == TOPIC:
        return True
    else:
        return False
def allpairs(ctx, _contract, _acct):
    if 'allpairschaitinfactory' not in ctx['deployedcontracts'][
            _acct.address].keys():
        p.ppln("[-] try to allpairschaitinfactory...")
        err, pair_addr = allpairschaitinfactory(ctx, _contract, _acct)
        if err:
            p.ppln(p.in_fg_color(("[!] " + str(err)), r.red5))
            exit(0)
        else:
            update_user_deploy_contracts(ctx, _acct.address,
                                         'allpairschaitinfactory', pair_addr)
            p.ppln("[+] allpairschaitinfactory " +
                   p.in_fg_color("success", r.green1))
            p.ppln("[!] chaitinToken-feiToken pair address is: " +
                   p.in_fg_color(pair_addr, r.blue1))
            return None, pair_addr
    else:
        pair_addr = ctx['deployedcontracts'][
            _acct.address]['allpairschaitinfactory']
        p.ppln("[!] chaitinToken-feiToken pair address is: " +
               p.in_fg_color(pair_addr, r.blue1))
        return None, pair_addr
def check_if_has_topic(ctx, _acct):
    acc_nonce = get_acc_nonce(ctx, _acct)
    flagtoken_addr = ctx['deployedcontracts'][_acct.address]['flagtoken']
    gamer_account = ctx['deployedcontracts'][_acct.address]['transfercheck']
    err, balance = balanceofflagtoken(ctx, flagtoken_addr, gamer_account,
                                      _acct, acc_nonce)

    if err:
        p.pln(p.in_fg_color(str(err), r.red4))

    if (TOPIC < balance or TOPIC == balance) and balance < ONEHUNDRED:
        return True
    else:
        return False
def deploy(ctx, _acct, _acc_nonce):
    if 'chaitintoken' not in ctx['deployedcontracts'][_acct.address].keys():
        p.ppln("[-] try to deploy chaitintoken contracts...")
        abi = ctx['compiledcontracts']['chaitintoken']['abi']
        bin = ctx['compiledcontracts']['chaitintoken']['bin']
        w3 = ctx['web3instance']
        err, txhash = chaitintoken(w3, abi, bin, _acct, _acc_nonce)
        if err:
            p.ppln(p.in_fg_color(("[!] " + str(err)), r.red5))
            exit(0)
        else:
            return None, txhash
    else:
        txhash = ctx['deployedcontracts'][_acct.address]['chaitintoken']
        return None, txhash
Ejemplo n.º 15
0
def mint(ctx, _contract, _to_address, _amount, _acct, _acc_nonce):
    if 'mintflagtoken' not in ctx['deployedcontracts'][_acct.address].keys():
        p.ppln("[-] try to mintflagtoken to deployer...")
        err, txhash = mintflagtoken(ctx, _contract, _to_address, _amount,
                                    _acct, _acc_nonce)
        if err:
            p.ppln(p.in_fg_color(("[!] " + str(err)), r.red5))
            exit(0)
        else:
            update_user_deploy_contracts(ctx, _acct.address, 'mintflagtoken',
                                         txhash.hex())
            return None, txhash.hex()
    else:
        txhash = ctx['deployedcontracts'][_acct.address]['mintflagtoken']
        return None, txhash
Ejemplo n.º 16
0
def deploy(ctx, _acct, _acc_nonce):
    #p.ppln("[*] trying to deploy montagy contracts...")
    abi = ctx['compiledcontracts']['montagy']['abi']
    bin = ctx['compiledcontracts']['montagy']['bin']
    w3 = ctx['web3instance']

    bin = re.sub('a265627a7a72315820.{64}64736f6c634300050b0032',
                 'a265627a7a72315820' + randhex(64) + '64736f6c634300050b0032',
                 bin)
    #bin.repalce("627a7a72315820f044b77d8376499313d5239e6881baadb3dec8e7f36eca97638fed329186930964736f6c634300050b0032","627a7a" + ''.join(random.sample(string.hexdigits, 10)).lower()*9 + "0032")
    err, txhash = montagy(w3, abi, bin, _acct, _acc_nonce)
    if err:
        p.ppln(p.in_fg_color(("[!] " + str(err)), r.red5))
        exit(0)
    else:
        return None, txhash
def addliquidity(ctx, _contract, _tokenA, _tokenB, _amountA, _amountB,
                 _to_address, _acct, _acc_nonce):
    if 'addliquiditychaitinrouter' not in ctx['deployedcontracts'][
            _acct.address].keys():
        p.ppln("[-] try to addliquiditychaitinrouter to deployer...")
        err, txhash = addliquiditychaitinrouter(ctx, _contract, _to_address,
                                                _tokenA, _tokenB, _amountA,
                                                _amountB, _acct, _acc_nonce)
        if err:
            p.ppln(p.in_fg_color(("[!] " + str(err)), r.red5))
            exit(0)
        else:
            update_user_deploy_contracts(ctx, _acct.address,
                                         'addliquiditychaitinrouter',
                                         txhash.hex())
            return None, txhash.hex()
    else:
        txhash = ctx['deployedcontracts'][
            _acct.address]['addliquiditychaitinrouter']
        return None, txhash
Ejemplo n.º 18
0
MENU = '''
We design a pretty easy contract game. Enjoy it!
1. Create a game account
2. Deploy a game contract
3. Request for flag
Game environment: ropsten testnet
Option 1, get an account which will be used to deploy the contract;
Before option 2, please transfer some eth to this account (for gas);
Option 2, the robot will use the account to deploy the contract for the problem;
Option 3, use this option to obtain the flag after the event is triggered.
You can finish this challenge in a lot of connections.
'''


WELCOME = _f.in_column_center(_p.in_fg_color('.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.\r', 40))+\
_f.in_column_center(_p.in_fg_color('.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.\n', 40))+\
_f.in_column_center(_p.in_fg_color('( Welcome to EasyDefi!                          )\n', 41))+\
_f.in_column_center(_p.in_fg_color(' )we will give you 1 wei Chaitin token,         (\n', 42))+\
_f.in_column_center(_p.in_fg_color('( And you need to exchange it for 80 FlagTokens )\n', 43))+\
_f.in_column_center(_p.in_fg_color('"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"\n', 44))


SRC_TEXT = '''
https://github.com/PandaTea/NightCity-backup
'''

DEPLOY_SUCCESS_CELEBRATION = "\n\n\n\n\n\n\n\n" + _f.in_column_center(_p.in_fg_color('.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.\r', 40))+\
                             _f.in_column_center(_p.in_fg_color(' .+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.\n', 39))+\
_f.in_column_center(_p.in_fg_color('( ALL CONTRACTS Deployed SUCCESSFUL           )\n',75))+\
_f.in_column_center(_p.in_fg_color(' )Congratulations!!!, You are so lucky!      (\n',111))+\
Ejemplo n.º 19
0
from src.utils.prettyprint.Red import Printer, Formator
_p = Printer()
_f = Formator()
deploy_panic_imp_info = "人们不能预见、不可避免、不能克服的自然、社会现象客观情况。社会及自然现象包括但不限于天灾人祸如地震、战争、市政工程建设、其它政府政策或矿工不给你打包交易"

MENU = '''
Game environment: rinkeby
1. Create a game account
2. Deploy game contract(s)
3. Request for flag
'''


WELCOME = _f.in_column_center(_p.in_fg_color('.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.\r', 40))+\
_f.in_column_center(_p.in_fg_color('.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.\n', 40))+\
_f.in_column_center(_p.in_fg_color('(               Welcome to Re:Montagy!          )\n', 41))+\
_f.in_column_center(_p.in_fg_color(' )              Shall we play a game?          ( \n', 42))+\
_f.in_column_center(_p.in_fg_color('(                       Enjoy it !              )\n', 43))+\
_f.in_column_center(_p.in_fg_color('"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"\n', 44))

SRC_TEXT = '''
https://github.com/PandaTea/NightCity-backup
'''

DEPLOY_SUCCESS_CELEBRATION = "\n\n\n\n\n\n\n\n" + _f.in_column_center(_p.in_fg_color('.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.\r', 40))+\
                             _f.in_column_center(_p.in_fg_color(' .+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.\n', 39))+\
_f.in_column_center(_p.in_fg_color('( ALL CONTRACTS Deployed SUCCESSFUL           )\n',75))+\
_f.in_column_center(_p.in_fg_color(' )Congratulations!!!, You are so lucky!      (\n',111))+\
_f.in_column_center(_p.in_fg_color('( The blessings of the miners are with you!!! )\n',147))+\
_f.in_column_center(_p.in_fg_color(' "+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"\n',183)) + "\n\n\n\n"