2013년 12월 17일 화요일

[Python] 프로그램 소스코드 라인 세기

#!/usr/local/bin/python

import re
import os
import sys
import glob

# regex to handle various comment styles.
expression = re.compile('^\s*?[/*|//|#][*]*.*?')

def parse(sourcefile):
    lcount, ccount = 0, 0

    try:
        file = open(sourcefile, 'r')
    except IOError:
        sys.exit(0)

    for line in file.readlines():
        lcount += 1
        if expression.match(line):
            ccount += 1

    file.close()
    return lcount, ccount


def main():
    # total line count, total comment count
    tlc = tcc = 0   
    
    if not len(sys.argv) > 1:
        print 'Provide filename or extension'
    else:
        for file in glob.glob(sys.argv[1]):
            lc, cc = parse(file)
            print 'processing file: %(file)s %(lc)s' % locals()
            tlc += lc
            tcc += cc
   
    print 'total lines = %(tlc)s\ntotal comments = %(tcc)s' % locals()


if __name__ == "__main__": main()

Reentrancy Attack: 블록체인 스마트 컨트랙트의 치명적인 취약점

블록체인 기술이 전 세계적으로 주목받으면서 스마트 컨트랙트(Smart Contract)의 사용이 급격히 증가하고 있습니다. 하지만 그만큼 보안 취약점도 함께 늘어나고 있는데, 그 중에서도 Reentrancy Attack(재진입 공격)은 매우 치명적이고...