which command line to use here - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: which command line to use here (/thread-12580.html) |
which command line to use here - SoulsKeeper - Sep-01-2018 hi guys i need to execute this file but don't know which command line to use could you help me figure it out and maybe tell me how to look for it myself so i wont have to bother you Thanks! main.py: from __future__ import print_function from random import randint, shuffle import sys from struct import unpack, pack as pk from io import BytesIO as BIO import lzwlib up = lambda *args: unpack(*args)[0] def F(f): assert f.read(3) == 'GIF', '' assert f.read(3) == '89a', '' w, h = unpack('HH', f.read(4)) assert 32 <= w <= 500, '' assert 32 <= h <= 500, '' logflags = up('B', f.read(1)) assert logflags & 0x80, '' size_count = logflags & 0x07 gct_count = 2**(size_count+1) assert 4 <= gct_count <= 256, '' bgcoloridx = up('B', f.read(1)) f.seek(1, 1) clrs = [] for i in range(gct_count): clr = (up('B', f.read(1)), up('B', f.read(1)), up('B', f.read(1))) clrs.append(clr) assert len(clrs) > bgcoloridx, '' return clrs, bgcoloridx, size_count, h, w class T(object): I = 0 EG = 1 EA = 2 EC = 3 ET = 4 def C(f): rb = f.read(1) b = up('B', rb) while b != 0x3B: buf = '' buf += rb if b == 0x2c: nbuf = f.read(2*4) eb = f.read(1) assert (up('B', eb) & 0x03) == 0, '' nbuf += eb nbuf += f.read(1) nbuf += V(f) t = T.I elif b == 0x21: rb = f.read(1) buf += rb b = up('B', rb) if b == 0xF9: nbuf = f.read(1) blksize = up('B', nbuf) nbuf += f.read(blksize) nbuf += f.read(1) assert nbuf[-1] == '\x00', '' t = T.EG elif b in [0xFF, 0x01]: nbuf = f.read(1) blksize = up('B', nbuf) nbuf += f.read(blksize) nbuf += V(f) t = (b+3) & 0x0F elif b == 0xFE: nbuf = V(f) t = T.EC else: raise Exception("unsupprted thing @{}".format(f.tell())) buf += nbuf yield t, buf rb = f.read(1) b = up('B', rb) yield None, '\x3B' raise StopIteration def WB(buf): blockcount = len(buf)/0xFF blockcount += 1 if len(buf) % 0xFF else 0 blocks = [ pk('B', len(subblock))+subblock for subblock in [ buf[i:0xFF+i] for i in range(0, blockcount*0xFF, 0xFF) ] ] return ''.join(blocks) + '\x00' def k(bf): combined_buf = '' while True: cb = ord(bf.read(1)) if not cb: break combined_buf += bf.read(cb) return combined_buf def V(f): sbx = '' while True: rcb = f.read(1) sbx += rcb if rcb == '\x00': break cb = up('B', rcb) blk = f.read(cb) sbx += blk return sbx def Q(delay, w, h, x, y, tidx): assert 0 <= tidx <= 255 assert 0 <= delay < 2**16 indices = [tidx]*(w*h) buf = BIO('') buf.write('\x21\xF9\x04\x05') buf.write(pk('H', delay)) buf.write(pk('B', tidx)) buf.write('\x00') buf.write('\x2c') buf.write(pk('H', x)) buf.write(pk('H', y)) buf.write(pk('H', w)) buf.write(pk('H', h)) buf.write('\x00') LZWMinimumCodeSize = 8 cmprs, _ = lzwlib.Lzwg.compress( indices, LZWMinimumCodeSize) obuf = pk('B', LZWMinimumCodeSize) + WB(cmprs) buf.write(obuf) buf.seek(0) return buf.read() def z(n): import math for i in range(1, int(math.sqrt(n) + 1)): if n % i == 0: yield i def m(a, mm, hh): if a < 0x08: if a % 2: _0 = 0 _1 = 1 _4 = a << 2 _3 = randint(4, mm-1) else: _0 = 1 _1 = a << 1 _3 = randint(4, mm/2) _4 = randint(4, hh/3) else: ds = list(z(a)) _0 = 0 _1 = 0 shuffle(ds) _4 = ds[0] assert a % _4 == 0 _3 = a/_4 return _0, _1, _3, _4 def h(b6, b1, mw, mh, mci, d=3): idx = randint(0, (mci-1)/2)*2 + b1 x, xx, xxx, xxxx = m(b6, mw, mh) f = Q(d, xxx, xxxx, x, xx, idx) return f def M(s): l = list(set(s.upper())) shuffle(l) d = ''.join(l) assert len(d) <= 2**6, '' return d, [(d.index(c.upper()), int(c.isupper())) for c in s] def E(f, s, o): global_colors, bgcoloridx, size_count, hh, ww = F(f) mp, ks = M(s) hdr_end = f.tell() f.seek(0) o.write(f.read(hdr_end)) fc = 0 o.write('\x21\xFE') o.write(WB('RDBNB'+mp)) o.flush() for t, buf in C(f): print('.', end='') if t == T.EC: continue if t == T.EG: if ks: delay = up('<H', buf[4:6]) assert delay >= 6 buf = buf[:4] + pk('<H', delay - 3) + buf[6:] obuf = buf elif t == T.I: fc += 1 total_raw_blocks_data = '' bf = BIO(buf) pref = bf.read(10) LZWMinimumCodeSize = ord(bf.read(1)) total_raw_blocks_data = k(bf) indices, dcmprsdcodes = lzwlib.Lzwg.decompress( total_raw_blocks_data, LZWMinimumCodeSize) xxx = unpack('<B H H H H B', pref) cmprs, codes = lzwlib.Lzwg.compress( indices, LZWMinimumCodeSize) obuf = pref + pk('B', LZWMinimumCodeSize) + WB(cmprs) if ks: mpindx, isup = ks.pop(0) obuf += h(mpindx, isup, ww, hh, len(global_colors)-1) else: obuf = buf o.write(obuf) o.flush() assert not ks, '' return 0 if __name__ == '__main__': assert len(sys.argv) > 2, 'bad input' fpath = sys.argv[1] flag = sys.argv[2] if len(sys.argv) > 3: outpath = sys.argv[3] else: outpath = fpath + '.out.gif' f = open(fpath, 'rb') o = open(outpath, 'wb') rv = E(f, flag, o) sys.exit(rv) RE: which command line to use here - j.crater - Sep-01-2018 Hello, open a terminal window (command prompt if you are on Windows). Write "python main.py" and press enter. That is if you navigate the terminal to location of main.py, or open a terminal at that location. Otherwise it's "python path\to\main.py" RE: which command line to use here - SoulsKeeper - Sep-01-2018 (Sep-01-2018, 08:24 AM)j.crater Wrote: Hello, Thank you but the command is incomplete it seems to have a path and flag if i'm not mistaken this is what i get when i tried to only execute main.py before (disregard the first line i wrote phythong instead of python) RE: which command line to use here - j.crater - Sep-01-2018 You are right, I didn't even look at your code close enough to see it requires arguments - two of them, third is optional. First is path to the file. Second is flag (no idea what it does). Third is path to created output file.
RE: which command line to use here - SoulsKeeper - Sep-01-2018 (Sep-01-2018, 09:58 AM)j.crater Wrote: You are right, I didn't even look at your code close enough to see it requires arguments - two of them, third is optional. The flag is a secret code i need to apply Main.py on a gif file, which means the only way to find out what the flag is, is through the gif file do you have an idea how might i do that? RE: which command line to use here - j.crater - Sep-01-2018 I don't know how to find a flag / secret code in gif file. However I am not sure this is a Python question. Or if the answer lies in the code you posted, its author / manual / docs should be of more help. RE: which command line to use here - SoulsKeeper - Sep-01-2018 (Sep-01-2018, 11:28 AM)j.crater Wrote: I don't know how to find a flag / secret code in gif file. However I am not sure this is a Python question. found this in the a file that is related to my query metadata comment, but i can't figure out what it means: RDBNBIYURO#{EW}GMFSK!LT_AH does it look like code to you? RE: which command line to use here - j.crater - Sep-01-2018 It does not look like code to me. But I must point out I don't know what you are looking for, or how it should look like. And also, if it is not related to Python coding, this forum (or at least sub-forum) is not the right place to look for answer. |