# Web TunnelWeb, 260 points  
>I was just going to search some random cat videos on a Saturday morning when my friend came up to me and told me to reach the end of this tunnel (http://tunnel.web.easyctf.com/). Can you do it for me?
Behind the link was a site with a single link to a qr image.
![Example qr code image](./KjZqZwwKROwxELfzz6fN.png)
The qr image contained a string that was similiar to the previous qr code filename. Appending the string to http://tunnel.web.easyctf.com/ revealed another qr code. This pattern seemed to continue so, I wrote a python script to read each of the qr codes. I used [qrtools](https://github.com/primetang/qrtools) to read the qr codes, and StringIO to avoid having to save any of the qr images to a hard drive. For retrieving the qr codes from the web, I used a subprocess call to curl. 
``` pythonfrom StringIO import StringIOimport qrtoolsimport subprocessimport timeimport sys
url_suffix = '.png' url_prefix = 'http://tunnel.web.easyctf.com/'qr = qrtools.QR()
# Parse the first pagestart = subprocess.check_output(['curl', '-q', url_prefix])start = ''.join(start.split(    'here')[0].replace('\'', '')url_prefix += start.split('/')[0] + '/'filename = start.split('/')[1]
while True:    # Read all the qr codes    print filename    qr_file = subprocess.check_output(        ['curl', '-q', url_prefix + filename])    qr_io = StringIO(qr_file)    try:        qr.decode(qr_io)    except IOError:        sys.exit()    time.sleep(1)    filename = qr.data + url_suffix```
The flag was: easyctf{w0w_y0u_reached_th3_3nd_0f_my_tunnel!!!!!}