すみませんけど、「古い」の話だかも^^)、WINDOWSシステムに、「Application Data」→「Macromedia」(現在はAdobe)→「Flash Player」の配下の何にかフォルダの下には、「.sol」ファイルというのがある可能性があります。これって一体何ですか?

SOLファイルというのは、Flashのcookieファイルです。「Flash Player が利異様するクッキー(.solファイル)には、システムファイルの場所を推定できるような情報が含まれている。一方、リモートからその場所にファイルを保存させることができるので、クッキーにスクリプトを含ませておけばローカルのスクリプトとしてブラウザから実行させることができてしまう。ただし、そのためには攻撃者がローカルのユーザ名を知っている必要がある。」という弱点があります(現在のバージョンはその問題がなくなるね)。

以前、solファイルの内容を見に安いXMLに変換するため「s2x」というPythonスクリプトがあります。持っているリリースされた公式サイトには、すでにアクセスできないようです。そのスクリプト、現在のFlash Player環境などでは、すでに意味がないと思いますが、開発者に対しては、いい資料だと思います。

※XMLとは、文書やデータの意味や構造を記述するためのマークアップ言語の一つ。マークアップ言語とは、「タグ」と呼ばれる特定の文字列で地の文に構造を埋め込んでいく言語のことで、XMLはユーザが独自のタグを指定できることから、マークアップ言語を作成するためのメタ言語とも言われる。

ソースは以下のようです。

  1. import sys
  2. from struct import *
  3. from xml.dom import minidom
  4. #s2x Runtime Error Class Definition:
  5. class s2xErr(Exception):
  6.     def __init__(self,msg):
  7.         self.msg=msg
  8. #constants start:
  9. #------------------------------------------------------------#
  10. NUMBER='\x00'
  11. BOOLEAN='\x01'
  12. STRING='\x02'
  13. OBJOBJ='\x03'
  14. NULL='\x05'
  15. UNDEF='\x06'
  16. OBJARR='\x08'
  17. #RAWARR='\x0A'
  18. OBJDATE='\x0B'
  19. OBJM='\x0D'
  20. OBJXML='\x0F'
  21. OBJCC='\x10'
  22. #constants end.
  23. #------------------------------------------------------------#
  24. argv=sys.argv
  25. if len(argv)<3:
  26.     print 's2x v 0.75 by iceeLyne, Dec., 2003.'
  27.     print 'usage:'
  28.     print 'python s2x.py -x foo.sol [foo.xml]'
  29.     print 'python s2x.py -s foo.xml [foo.sol]'
  30. else:
  31.     argvSw=argv[1]
  32.     argvInpFile=argv[2]
  33.     if len(argv)>3:
  34.         argvOutFile=argv[3]
  35.     else:
  36.         argvOutFile=''
  37.     if argvSw=='-x':
  38.         # parse sol to xml
  39.         try:
  40.             f=open(argvInpFile,'rb')
  41.         except IOError:
  42.             print 'Could Not Open The Input File: '+argvInpFile
  43.         else:
  44.             def num2x():
  45.                 global cparent,sVname
  46.                 s=f.read(8)
  47.                 if s=='\x7F\xF0\x00\x00\x00\x00\x00\x00':
  48.                     sValue='Infinity'
  49.                 elif s=='\xFF\xF0\x00\x00\x00\x00\x00\x00':
  50.                     sValue='-Infinity'
  51.                 elif s=='\x7F\xF8\x00\x00\x00\x00\x00\x00':
  52.                     sValue='NaN'
  53.                 else:
  54.                     nValue,=unpack('>d',s)#Double,Big-endian
  55.                     sValue=str(nValue)
  56.                 c=cparent.appendChild(d.createElement('data'))
  57.                 c.setAttribute('type','number')
  58.                 c.setAttribute('name',sVname)
  59.                 c.setAttribute('value',sValue)
  60.             def bol2x():
  61.                 global cparent,sVname
  62.                 b=f.read(1)
  63.                 if b=='\x00':
  64.                     sValue='false'
  65.                 elif b=='\x01':
  66.                     sValue='true'
  67.                 else:
  68.                     print 'Warning: Boolean Value Error.'
  69.                     sValue='true'
  70.                 c=cparent.appendChild(d.createElement('data'))
  71.                 c.setAttribute('type','boolean')
  72.                 c.setAttribute('name',sVname)
  73.                 c.setAttribute('value',sValue)
  74.             def str2x():
  75.                 global cparent,sVname
  76.                 nLenStr,=unpack('>H',f.read(2))#Unsigned Short,Big-endian
  77.                 s=f.read(nLenStr)
  78.                 s=s.decode('utf-8')#
  79.                 c=cparent.appendChild(d.createElement('data'))
  80.                 c.setAttribute('type','string')
  81.                 c.setAttribute('name',sVname)
  82.                 c.appendChild(d.createCDATASection(s))
  83.             def obj2x():
  84.                 global cparent,sVname,nLenVname#is necessary
  85.                 c=cparent.appendChild(d.createElement('data'))
  86.                 c.setAttribute('type','object')
  87.                 c.setAttribute('name',sVname)
  88.                 cparent=cparent.lastChild
  89.                 nLenVname,=unpack('>H',f.read(2))#Unsigned Short,Big-endian
  90.                 while nLenVname!=0:
  91.                     sVname=f.read(nLenVname)
  92.                     sVname=sVname.decode('utf-8')#
  93.                     type=f.read(1)
  94.                     if type==NUMBER:
  95.                         num2x()
  96.                     elif type==BOOLEAN:
  97.                         bol2x()
  98.                     elif type==STRING:
  99.                         str2x()
  100.                     elif type==OBJARR:
  101.                         arr2x()
  102.                     elif type==OBJOBJ:
  103.                         obj2x()
  104.                     elif type==OBJDATE:
  105.                         dat2x()
  106.                     elif type==OBJXML:
  107.                         xml2x()
  108.                     elif type==OBJCC:
  109.                         occ2x()
  110.                     elif type==OBJM:
  111.                         ojm2x()
  112.                     elif type==NULL:
  113.                         nul2x()
  114.                     elif type==UNDEF:
  115.                         und2x()
  116.                     else:
  117.                         raise s2xErr('Unexpected Data Type: '+hex(ord(type)))
  118.                     nLenVname,=unpack('>H',f.read(2))
  119.                 objend=f.read(1)#=='\x09'
  120.                 cparent=cparent.parentNode
  121.             def arr2x():
  122.                 global cparent,sVname,nLenVname#is necessary
  123.                 nArrLength,=unpack('>L',f.read(4))#Unsigned Long,Big-endian
  124.                 c=cparent.appendChild(d.createElement('data'))
  125.                 c.setAttribute('type','array')
  126.                 c.setAttribute('name',sVname)
  127.                 c.setAttribute('length',str(nArrLength))
  128.                 cparent=cparent.lastChild
  129.                 nLenVname,=unpack('>H',f.read(2))#Unsigned Short,Big-endian
  130.                 while nLenVname!=0:
  131.                     sVname=f.read(nLenVname)
  132.                     sVname=sVname.decode('utf-8')#
  133.                     type=f.read(1)
  134.                     if type==NUMBER:
  135.                         num2x()
  136.                     elif type==BOOLEAN:
  137.                         bol2x()
  138.                     elif type==STRING:
  139.                         str2x()
  140.                     elif type==OBJOBJ:
  141.                         obj2x()
  142.                     elif type==OBJARR:
  143.                         arr2x()
  144.                     elif type==OBJDATE:
  145.                         dat2x()
  146.                     elif type==OBJXML:
  147.                         xml2x()
  148.                     elif type==OBJCC:
  149.                         occ2x()
  150.                     elif type==OBJM:
  151.                         ojm2x()
  152.                     elif type==NULL:
  153.                         nul2x()
  154.                     elif type==UNDEF:
  155.                         und2x()
  156.                     else:
  157.                         raise s2xErr('Unexpected Data Type: '+hex(ord(type)))
  158.                     nLenVname,=unpack('>H',f.read(2))
  159.                 objend=f.read(1)#=='\x09'
  160.                 cparent=cparent.parentNode
  161.             def dat2x():
  162.                 global cparent,sVname
  163.                 nMsec,=unpack('>d',f.read(8))#Double,Big-endian
  164.                 nMinOffset,=unpack('>h',f.read(2))#Short,Big-endian
  165.                 nOffset=nMinOffset/60
  166.                 c=cparent.appendChild(d.createComment('DateObject:Milliseconds Count From Dec. 1, 1969; Timezone UTC + Offset.'))
  167.                 c=cparent.appendChild(d.createElement('data'))
  168.                 c.setAttribute('type','date')
  169.                 c.setAttribute('name',sVname)
  170.                 c.setAttribute('msec',str(nMsec))
  171.                 c.setAttribute('utcoffset',str(-nOffset))
  172.             def xml2x():
  173.                 global cparent,sVname
  174.                 nLenCData,=unpack('>L',f.read(4))#Unsigned Long,Big-endian
  175.                 sCData=f.read(nLenCData)
  176.                 sCData=sCData.decode('utf-8')#
  177.                 c=cparent.appendChild(d.createElement('data'))
  178.                 c.setAttribute('type','xml')
  179.                 c.setAttribute('name',sVname)
  180.                 c.appendChild(d.createCDATASection(sCData))
  181.             def occ2x():
  182.                 global cparent,sVname,nLenVname#is necessary
  183.                 nLenCname,=unpack('>H',f.read(2))#Unsigned Short,Big-endian
  184.                 sCname=f.read(nLenCname)
  185.                 sCname=sCname.decode('utf-8')#
  186.                 c=cparent.appendChild(d.createElement('data'))
  187.                 c.setAttribute('type','c_object')
  188.                 c.setAttribute('name',sVname)
  189.                 c.setAttribute('class_name',sCname)
  190.                 cparent=cparent.lastChild
  191.                 nLenVname,=unpack('>H',f.read(2))#Unsigned Short,Big-endian
  192.                 while nLenVname!=0:
  193.                     sVname=f.read(nLenVname)
  194.                     sVname=sVname.decode('utf-8')#
  195.                     type=f.read(1)
  196.                     if type==NUMBER:
  197.                         num2x()
  198.                     elif type==BOOLEAN:
  199.                         bol2x()
  200.                     elif type==STRING:
  201.                         str2x()
  202.                     elif type==OBJARR:
  203.                         arr2x()
  204.                     elif type==OBJOBJ:
  205.                         obj2x()
  206.                     elif type==OBJDATE:
  207.                         dat2x()
  208.                     elif type==OBJXML:
  209.                         xml2x()
  210.                     elif type==OBJCC:
  211.                         occ2x()
  212.                     elif type==OBJM:
  213.                         ojm2x()
  214.                     elif type==NULL:
  215.                         nul2x()
  216.                     elif type==UNDEF:
  217.                         und2x()
  218.                     else:
  219.                         raise s2xErr('Unexpected Data Type: '+hex(ord(type)))
  220.                     nLenVname,=unpack('>H',f.read(2))
  221.                 objend=f.read(1)#=='\x09'
  222.                 cparent=cparent.parentNode
  223.             def ojm2x():
  224.                 global cparent,sVname
  225.                 c=cparent.appendChild(d.createElement('data'))
  226.                 c.setAttribute('type','m_object')
  227.                 c.setAttribute('name',sVname)
  228.             def nul2x():
  229.                 global cparent,sVname
  230.                 c=cparent.appendChild(d.createElement('data'))
  231.                 c.setAttribute('type','null')
  232.                 c.setAttribute('name',sVname)
  233.             def und2x():
  234.                 global cparent,sVname
  235.                 c=cparent.appendChild(d.createElement('data'))
  236.                 c.setAttribute('type','undefined')
  237.                 c.setAttribute('name',sVname)
  238.             d=minidom.parseString('<solx/>')
  239.             try:
  240.                 f.seek(0,2)
  241.                 nLenFile=f.tell()
  242.                 f.seek(0)
  243.                 sHeader=f.read(2)
  244.                 sLenData=f.read(4)
  245.                 nLenData,=unpack('>L',sLenData)#Unsigned Long,Big-endian
  246.                 if nLenFile!=nLenData+6:
  247.                     print 'Warning: Data Length Mismatch.'
  248.                 sFileType=f.read(4)#=='TCSO'
  249.                 sth1=f.read(6)
  250.                 nLenSoln,=unpack('>H',f.read(2))#Unsigned Short,Big-endian
  251.                 solname=f.read(nLenSoln)
  252.                 solname=solname.decode('utf-8')#
  253.                 sth2=f.read(4)
  254.                 solxroot=d.firstChild
  255.                 solxroot.setAttribute('std_version','0.75')
  256.                 solxroot.setAttribute('std_author','iceeLyne')
  257.                 solxroot.setAttribute('sol_name',solname)
  258.                 cparent=solxroot
  259.                 while f.tell()<nLenFile:
  260.                     nLenVname,=unpack('>H',f.read(2))#Unsigned Short,Big-endian
  261.                     sVname=f.read(nLenVname)
  262.                     sVname=sVname.decode('utf-8')#
  263.                     type=f.read(1)
  264.                     if type==NUMBER:
  265.                         num2x()
  266.                     elif type==BOOLEAN:
  267.                         bol2x()
  268.                     elif type==STRING:
  269.                         str2x()
  270.                     elif type==OBJOBJ:
  271.                         obj2x()
  272.                     elif type==OBJARR:
  273.                         arr2x()
  274.                     elif type==OBJDATE:
  275.                         dat2x()
  276.                     elif type==OBJXML:
  277.                         xml2x()
  278.                     elif type==OBJCC:
  279.                         occ2x()
  280.                     elif type==OBJM:
  281.                         ojm2x()
  282.                     elif type==NULL:
  283.                         nul2x()
  284.                     elif type==UNDEF:
  285.                         und2x()
  286.                     else:
  287.                         raise s2xErr('Unexpected Data Type: '+hex(ord(type)))
  288.                     end=f.read(1)#=='\x00'
  289.                 sxmloutput=d.toprettyxml('\t','\n','utf-8')
  290.                 if argvOutFile=='':
  291.                     argvOutFile=argvInpFile[:argvInpFile.rfind('.')]+'.xml'
  292.                 foutput=open(argvOutFile,'w')
  293.                 foutput.write(sxmloutput)
  294.                 foutput.close()
  295.                 print 'Converted File: '+argvOutFile+' Was Successfully Created.'
  296.             except s2xErr,e:
  297.                 print e.msg
  298.             except:
  299.                 print 'Unexpected Error.'
  300.             d.unlink()#
  301.             f.close()#
  302.     elif argvSw=='-s':
  303.         # parse xml to sol
  304.         try:
  305.             d=minidom.parse(argvInpFile)
  306.         except IOError:
  307.             print 'Could Not Open The Input File: '+argvInpFile
  308.         except:
  309.             print 'Error At Parsing XML File Input.'
  310.         else:
  311.             def x2num():
  312.                 global sData,sLenVname,sVname,c
  313.                 sData+=sLenVname+sVname+NUMBER
  314.                 sValue=c.getAttribute('value')
  315.                 if sValue=='Infinity':
  316.                     sData+='\x7F\xF0\x00\x00\x00\x00\x00\x00'
  317.                 elif sValue=='-Infinity':
  318.                     sData+='\xFF\xF0\x00\x00\x00\x00\x00\x00'
  319.                 elif sValue=='NaN':
  320.                     sData+='\x7F\xF8\x00\x00\x00\x00\x00\x00'
  321.                 else:
  322.                     nValue=float(sValue)
  323.                     sData+=pack('>d',nValue)
  324.             def x2bol():
  325.                 global sData,sLenVname,sVname,c
  326.                 sData+=sLenVname+sVname+BOOLEAN
  327.                 sValue=c.getAttribute('value')
  328.                 if sValue=='true':
  329.                     sData+='\x01'
  330.                 elif sValue=='false':
  331.                     sData+='\x00'
  332.                 else:
  333.                     raise s2xErr('Unexpected Boolean Value: '+sValue)
  334.             def x2str():
  335.                 global sData,sLenVname,sVname,c
  336.                 sData+=sLenVname+sVname+STRING
  337.                 sCData=''
  338.                 for cData in c.childNodes:
  339.                     if cData.nodeType==4:#CDATA_SECTION_NODE
  340.                         sCData=cData.nodeValue
  341.                         break
  342.                 sCData=sCData.encode('utf-8')#
  343.                 nLenCData=len(sCData)
  344.                 sLenCData=pack('>H',nLenCData)
  345.                 sData+=sLenCData+sCData
  346.             def x2obj():
  347.                 global sData,sLenVname,sVname,c
  348.                 sData+=sLenVname+sVname+OBJOBJ
  349.                 temp=c
  350.                 c=c.firstChild
  351.                 while c:
  352.                     if c.nodeType==1:#ELEMENT_NODE
  353.                         sVname=c.getAttribute('name')
  354.                         sVname=sVname.encode('utf-8')#
  355.                         nLenVname=len(sVname)
  356.                         sLenVname=pack('>H',nLenVname)
  357.                         type=c.getAttribute('type')
  358.                         if type=='number':
  359.                             x2num()
  360.                         elif type=='boolean':
  361.                             x2bol()
  362.                         elif type=='string':
  363.                             x2str()
  364.                         elif type=='object':
  365.                             x2obj()
  366.                         elif type=='array':
  367.                             x2arr()
  368.                         elif type=='date':
  369.                             x2dat()
  370.                         elif type=='xml':
  371.                             x2xml()
  372.                         elif type=='c_object':
  373.                             x2occ()
  374.                         elif type=='m_object':
  375.                             x2ojm()
  376.                         elif type=='null':
  377.                             x2nul()
  378.                         elif type=='undefined':
  379.                             x2und()
  380.                         else:
  381.                             raise s2xErr('Unexpected Data Type: '+type)
  382.                     c=c.nextSibling
  383.                 sData+='\x00\x00\x09'
  384.                 c=temp
  385.             def x2arr():
  386.                 global sData,sLenVname,sVname,c
  387.                 sData+=sLenVname+sVname+OBJARR
  388.                 nArrLength=float(c.getAttribute('length'))
  389.                 sArrLength=pack('>L',nArrLength)
  390.                 sData+=sArrLength
  391.                 temp=c
  392.                 c=c.firstChild
  393.                 while c:
  394.                     if c.nodeType==1:#ELEMENT_NODE
  395.                         sVname=c.getAttribute('name')
  396.                         sVname=sVname.encode('utf-8')#
  397.                         nLenVname=len(sVname)
  398.                         sLenVname=pack('>H',nLenVname)
  399.                         type=c.getAttribute('type')
  400.                         if type=='number':
  401.                             x2num()
  402.                         elif type=='boolean':
  403.                             x2bol()
  404.                         elif type=='string':
  405.                             x2str()
  406.                         elif type=='object':
  407.                             x2obj()
  408.                         elif type=='array':
  409.                             x2arr()
  410.                         elif type=='date':
  411.                             x2dat()
  412.                         elif type=='xml':
  413.                             x2xml()
  414.                         elif type=='c_object':
  415.                             x2occ()
  416.                         elif type=='m_object':
  417.                             x2ojm()
  418.                         elif type=='null':
  419.                             x2nul()
  420.                         elif type=='undefined':
  421.                             x2und()
  422.                         else:
  423.                             raise s2xErr('Unexpected Data Type: '+type)
  424.                     c=c.nextSibling
  425.                 sData+='\x00\x00\x09'
  426.                 c=temp
  427.             def x2dat():
  428.                 global sData,sLenVname,sVname,c
  429.                 sData+=sLenVname+sVname+OBJDATE
  430.                 nMsec=float(c.getAttribute('msec'))
  431.                 nMinOffset=-60*int(c.getAttribute('utcoffset'))
  432.                 sData+=pack('>dh',nMsec,nMinOffset)
  433.             def x2xml():
  434.                 global sData,sLenVname,sVname,c
  435.                 sData+=sLenVname+sVname+OBJXML
  436.                 sCData=''
  437.                 for cData in c.childNodes:
  438.                     if cData.nodeType==4:#CDATA_SECTION_NODE
  439.                         sCData=cData.nodeValue
  440.                         break
  441.                 sCData=sCData.encode('utf-8')#
  442.                 nLenCData=len(sCData)
  443.                 sLenCData=pack('>L',nLenCData)
  444.                 sData+=sLenCData+sCData
  445.             def x2occ():
  446.                 global sData,sLenVname,sVname,c
  447.                 sData+=sLenVname+sVname+OBJCC
  448.                 sCname=c.getAttribute('class_name')
  449.                 sCname=sCname.encode('utf-8')#
  450.                 nLenCname=len(sCname)
  451.  
  452.                 sLenCname=pack('>H',nLenCname)
  453.                 sData+=sLenCname+sCname
  454.                 temp=c
  455.                 c=c.firstChild
  456.                 while c:
  457.                     if c.nodeType==1:#ELEMENT_NODE
  458.                         sVname=c.getAttribute('name')
  459.                         sVname=sVname.encode('utf-8')#
  460.                         nLenVname=len(sVname)
  461.                         sLenVname=pack('>H',nLenVname)
  462.                         type=c.getAttribute('type')
  463.                         if type=='number':
  464.                             x2num()
  465.                         elif type=='boolean':
  466.                             x2bol()
  467.                         elif type=='string':
  468.                             x2str()
  469.                         elif type=='object':
  470.                             x2obj()
  471.                         elif type=='array':
  472.                             x2arr()
  473.                         elif type=='date':
  474.                             x2dat()
  475.                         elif type=='xml':
  476.                             x2xml()
  477.                         elif type=='c_object':
  478.                             x2occ()
  479.                         elif type=='m_object':
  480.                             x2ojm()
  481.                         elif type=='null':
  482.                             x2nul()
  483.                         elif type=='undefined':
  484.                             x2und()
  485.                         else:
  486.                             raise s2xErr('Unexpected Data Type: '+type)
  487.                     c=c.nextSibling
  488.                 sData+='\x00\x00\x09'
  489.                 c=temp
  490.             def x2ojm():
  491.                 global sData,sLenVname,sVname,c
  492.                 sData+=sLenVname+sVname+OBJM
  493.             def x2nul():
  494.                 global sData,sLenVname,sVname,c
  495.                 sData+=sLenVname+sVname+NULL
  496.             def x2und():
  497.                 global sData,sLenVname,sVname,c
  498.                 sData+=sLenVname+sVname+UNDEF
  499.             try:
  500.                 solxroot=d.firstChild
  501.                 if solxroot.tagName!='solx' or float(solxroot.getAttribute('std_version'))>0.75:
  502.                     raise s2xErr('Not Solx File Or Incorrect File Version.')
  503.                 sHeader='\x00\xBF'
  504.                 sLenData='\x00\x00\x00\x00'
  505.                 sFileType='TCSO'
  506.                 sth1='\x00\x04\x00\x00\x00\x00'
  507.                 solname=solxroot.getAttribute('sol_name')
  508.                 solname=solname.encode('utf-8')#
  509.                 nLenSoln=len(solname)
  510.                 sLenSoln=pack('>H',nLenSoln)#2 bytes
  511.                 sth2='\x00\x00\x00\x00'
  512.                 sData=sFileType+sth1+sLenSoln+solname+sth2
  513.                 c=solxroot.firstChild
  514.                 while c:
  515.                     if c.nodeType==1:#ELEMENT_NODE
  516.                         sVname=c.getAttribute('name')
  517.                         sVname=sVname.encode('utf-8')#
  518.                         nLenVname=len(sVname)
  519.                         sLenVname=pack('>H',nLenVname)
  520.                         type=c.getAttribute('type')
  521.                         if type=='number':
  522.                             x2num()
  523.                         elif type=='boolean':
  524.                             x2bol()
  525.                         elif type=='string':
  526.                             x2str()
  527.                         elif type=='object':
  528.                             x2obj()
  529.                         elif type=='array':
  530.                             x2arr()
  531.                         elif type=='date':
  532.                             x2dat()
  533.                         elif type=='xml':
  534.                             x2xml()
  535.                         elif type=='c_object':
  536.                             x2occ()
  537.                         elif type=='m_object':
  538.                             x2ojm()
  539.                         elif type=='null':
  540.                             x2nul()
  541.                         elif type=='undefined':
  542.                             x2und()
  543.                         else:
  544.                             raise s2xErr('Unexpected Data Type: '+type)
  545.                         sData+='\x00'
  546.                     c=c.nextSibling
  547.                 if argvOutFile=='':
  548.                     argvOutFile=argvInpFile[:argvInpFile.rfind('.')]+'.sol'
  549.                 f=open(argvOutFile,'wb')
  550.                 sLenData=pack('>L',len(sData))
  551.                 f.write(sHeader+sLenData+sData)
  552.                 f.close()
  553.                 print 'Converted File: '+argvOutFile+' Was Successfully Created.'
  554.             except s2xErr,e:
  555.                 print e.msg
  556. ##            except:
  557. ##                print 'Unexpected Error.'
  558.             d.unlink()#
  559.     else:
  560.         print 'Invalid Switch: '+argvSw

リソース
http://osflash.org/s2x そこだけs2xに関して資料はまだ残してるようです。。。

メインコンテンツEND ■
1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

Posted on Sunday, 22nd February 2009 by admin

Tags: , , , ,
Posted in Flash Project, Python | Comments (2) | 11,445 views

2 Responses to “s2x: Flashのcookieファイル(*.sol)とXMLフォーマットの互换用Pythonスクリプトソース”

  1. 500行のif文 Says:

    サンプルだとしても、あまりにヒドすぎね?

  2. admin Says:

    えーー、500行以上のソース量があるよね

Leave a Reply