2013年10月13日日曜日

最近は...

定期的に巡回して覗きにいくサイトがめっきりと減ってきた。
みんなどこにいってしまったのだろう?やっぱり、facebookとか twitterとか?

昔のブックマークを辿っていくと、だいたい2010年くらいから、更新が止まっているサイトが多いんだよね。blogの更新もそれなりに大変だし、まあ、ブームという状態は去ってしまったのだろうけれど、昔からサイトを運営している人達も、もういい年だし、飽きちゃったんだろうか。

Official系のサイトがつまらないのは今に始まったことではないけれど、それも最近はwordpressばかりでデザインまで変わり映えしないものが増えてきて....
一時期、CMS.CMSと呼びかけていた立場としては、やや複雑な気分だな。


2013年10月4日金曜日

NTTのGPL違反 ( その7 )

3)[続き]
ちなみに、16.00.0004の場合は、(ソースコードを入手していないので断定はしないけれど、)
該当する部分は、

ROOTIMG.BINを展開した /flash/ath_pci.o の この辺だと思う。

0224500 00 00 00 00 00 00 00 00 00 00 16 8c 00 00 00 1b
0224520 00 00 10 21 00 00 10 10 00 00 00 00 00 00 00 00
0224540 00 00 00 00 00 00 16 8c 00 00 00 1b 00 00 16 8c
0224560 00 00 10 62 00 00 00 00 00 00 00 00 00 00 00 00

0177500 00 00 1a 14 00 00 16 8c 00 00 1a 30 00 00 1a 3c
0177520 00 00 10 62 00 80 87 00 00 00 1a 5c e1 a0 c0 0d

前半部分は、カードに合わせて修正。10 62や10 21は、元のソースの通りにPCI_ANY_ID, PCI_ANY_IDに戻す。
後半部分は、運悪く純正カードと同じメーカーの違うカードに該当してしまった場合に、87を別の適当な数値に換えてやればよいように思う。

13型のカードならたぶんこんな感じ

< 0224500 00 00 00 00 00 00 00 00 00 00 16 8c 00 00 00 1b
< 0224520 00 00 10 21 00 00 10 10 00 00 00 00 00 00 00 00
---
> 0224500 00 00 00 00 00 00 00 00 00 00 16 8c 00 00 00 13
> 0224520 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00

修正が終わったら、/以下を固めなおして(mkfs.jffs2 -b -e 0x20000)、 チェックサム(filesize,md5sum)を計算しなおして、FILEINFO.TXTに反映させる。バージョン番号も少し増やした方がよいのかも。


まあ、お決まりの文句ですが、実行は自己責任で。

2013年10月3日木曜日

NTTのGPL違反 ( その6 )

なんだか、またNTTが懲りずに GPL違反の強制アップデートをたくらんでいるらしいから、過去記事を少しまとめておく。

1)NTTのGPL著作権表示義務違反

2010年3月22日の時点で、

さて、NTTによれば、「公開準備中」という回答なのだが、時間稼ぎをしてうやむやにするつもりなのかな。もう一ヶ月も待たされているのだけどね。

という説明が、担当者からあったけれども、結局3年経った現時点においても公開の正式アナウンスはない(個別には対応していると思うが、当初説明の「正式公開」とは違うと思う)。
すくなくとも、最新バージョンのダウンロードのページの周辺にわかりやすい位置にその旨を表示することをGPLは要請していたと思うが、見つからないと思う。

2) バイナリファイルの形式

配布されている バイナリファイルは単純に tar+gz でまとめただけのものなので、それを4つのファイル(CALLTBL.DEF,FILEINFO.TXT,KERNEL.BIN,ROOTIMG.BIN)に戻すのは容易い。
このうち、KERNEL.BINはlinuxのkernelで、これを黙って配布している点ですでに 完全に黒のGPL違反。

BOOTIMG.BINは、jffs2形式のファイルシステムイメージなので、これを読むには、(debianの場合)
a. apt-get install mtd-utils
b. bigendian形式なので、littleendian 形式に変換する。
    jffs2dump -b --endianconvert=ROOTIMG.BIN.LE ROOTIMG.BIN
c. loopbackでマウントする。
   modprobe mtd
   modprobe mtdblock
   modprobe jffs2
   losetup -vf  ROOTIMG.BIN.LE
  modprobe block2mtd block2mtd=/dev/loop0,131072
  mount -r -t jffs2 /dev/mtdblock0 /mnt

パスワードファイルとかは昔と変化していないみたいね。
( vr-engineerのパスワードも、rootのパスワードも、vr-mainteのパスワードも相変わらず、PARA.BINの中に平文で書かれている。vr-mainteの方は以前に比べると多少判りにくい位置に移動しているけれど、 vr-engineerとrootのはとても判りやすい場所に残っている。)


3) 問題の修正部分(6.30.18) 

diff -c -r OS/drivers/vr/madwifi/madwifi/ath/if_ath_pci.c OS.modified/drivers/vr/madwifi/madwifi/ath/if_ath_pci.c
*** OS/drivers/vr/madwifi/madwifi/ath/if_ath_pci.c      2010-04-07 08:10:59.000000000 +0900
--- OS.modified/drivers/vr/madwifi/madwifi/ath/if_ath_pci.c     2010-05-11 12:35:54.000000000 +0900
***************
*** 81,102 ****
   * the HAL check them by defining a probe method.
   */
  static struct pci_device_id ath_pci_id_table[] __devinitdata = {
!       { 0x168c, 0x0007, PCI_ANY_ID, PCI_ANY_ID },
!       { 0x168c, 0x0012, PCI_ANY_ID, PCI_ANY_ID },
!       { 0x168c, 0x0013, PCI_ANY_ID, PCI_ANY_ID },
!       { 0xa727, 0x0013, PCI_ANY_ID, PCI_ANY_ID },     /* 3com */
!       { 0x10b7, 0x0013, PCI_ANY_ID, PCI_ANY_ID },     /* 3com 3CRDAG675 */
!       { 0x168c, 0x1014, PCI_ANY_ID, PCI_ANY_ID },     /* IBM minipci 5212 */
!       { 0x168c, 0x101a, PCI_ANY_ID, PCI_ANY_ID },     /* some Griffin-Lite */
!       { 0x168c, 0x0015, PCI_ANY_ID, PCI_ANY_ID },
!       { 0x168c, 0x0016, PCI_ANY_ID, PCI_ANY_ID },
!       { 0x168c, 0x0017, PCI_ANY_ID, PCI_ANY_ID },
!       { 0x168c, 0x0018, PCI_ANY_ID, PCI_ANY_ID },
!       { 0x168c, 0x0019, PCI_ANY_ID, PCI_ANY_ID },
!       { 0x168c, 0x001a, PCI_ANY_ID, PCI_ANY_ID },
!       { 0x168c, 0x001b, PCI_ANY_ID, PCI_ANY_ID },
!       { 0x168c, 0x001c, PCI_ANY_ID, PCI_ANY_ID }, /* PCI Express 5424 */
!       { 0x168c, 0x001d, PCI_ANY_ID, PCI_ANY_ID }, /* PCI Express ???  */
        { 0 }
  };

--- 81,104 ----
   * the HAL check them by defining a probe method.
   */
  static struct pci_device_id ath_pci_id_table[] __devinitdata = {
! //      { 0x168c, 0x0007, PCI_ANY_ID, PCI_ANY_ID },
! //      { 0x168c, 0x0012, PCI_ANY_ID, PCI_ANY_ID },
! //      { 0x168c, 0x0013, PCI_ANY_ID, PCI_ANY_ID },
! //      { 0xa727, 0x0013, PCI_ANY_ID, PCI_ANY_ID },     /* 3com */
! //      { 0x10b7, 0x0013, PCI_ANY_ID, PCI_ANY_ID },     /* 3com 3CRDAG675 */
! //      { 0x168c, 0x1014, PCI_ANY_ID, PCI_ANY_ID },     /* IBM minipci 5212 */
! //      { 0x168c, 0x101a, PCI_ANY_ID, PCI_ANY_ID },     /* some Griffin-Lite */
! //      { 0x168c, 0x0015, PCI_ANY_ID, PCI_ANY_ID },
! //      { 0x168c, 0x0016, PCI_ANY_ID, PCI_ANY_ID },
! //      { 0x168c, 0x0017, PCI_ANY_ID, PCI_ANY_ID },
! //      { 0x168c, 0x0018, PCI_ANY_ID, PCI_ANY_ID },
! //      { 0x168c, 0x0019, PCI_ANY_ID, PCI_ANY_ID },
! //      { 0x168c, 0x001a, PCI_ANY_ID, PCI_ANY_ID },
! //      { 0x168c, 0x001b, PCI_ANY_ID, PCI_ANY_ID },
!         { 0x168c, 0x001b, 0x1021,     0x1010     },     /* SC-32KI new */
!         { 0x168c, 0x001b, 0x168c,     0x1062     },     /* SC-32KI */
! //      { 0x168c, 0x001c, PCI_ANY_ID, PCI_ANY_ID },     /* PCI Express 5424 */
! //      { 0x168c, 0x001d, PCI_ANY_ID, PCI_ANY_ID },     /* PCI Express ???  */
        { 0 }
  };

***************
*** 142,148 ****
        if (pci_enable_device(pdev))
                return (-EIO);

!
  if (pci_request_regions (pdev, "ath"))
      goto bad;

--- 144,150 ----
        if (pci_enable_device(pdev))
                return (-EIO);

! // mizutani
  if (pci_request_regions (pdev, "ath"))
      goto bad;

***************
*** 174,180 ****
         * set it to the value used by other systems.  It may be worth
         * tweaking this setting more.
         */
!       pci_write_config_byte(pdev, PCI_LATENCY_TIMER, 0xa8);

        pci_set_master(pdev);

--- 176,182 ----
         * set it to the value used by other systems.  It may be worth
         * tweaking this setting more.
         */
!       pci_write_config_byte(pdev, PCI_LATENCY_TIMER, 0xa8);  // mizutani

        pci_set_master(pdev);

***************
*** 196,202 ****
        }
  */
        mem = (unsigned long) ioremap(phymem, pci_resource_len(pdev, 0));
!

        if (!mem) {
                printk(KERN_ERR "ath_pci: cannot remap PCI memory region\n") ;
--- 198,204 ----
        }
  */
        mem = (unsigned long) ioremap(phymem, pci_resource_len(pdev, 0));
!     //mem = phymem;

        if (!mem) {
                printk(KERN_ERR "ath_pci: cannot remap PCI memory region\n") ;
***************
*** 238,243 ****
--- 240,257 ----
        if (ath_attach(id->device, dev) != 0)
                goto bad4;

+         if( id->vendor    == 0x168c && id->device    == 0x001b &&
+             id->subvendor == 0x168c && id->subdevice == 0x1062){
+
+             if( !(dev->dev_addr[0] == 0x00 &&
+                   dev->dev_addr[1] == 0x80 &&
+                   dev->dev_addr[2] == 0x87 )) {
+
+                 ath_detach(dev);
+                 goto bad4;
+             }
+         }
+
        athname = ath_hal_probe(id->vendor, id->device);
        printk(KERN_INFO "%s: %s: mem=0x%lx, irq=%d\n",
                dev->name, athname ? athname : "Atheros ???", phymem, dev->irq);


どう見てもセコイ修正だな。プログラムの改良となるべき部分は一切無し。ひたすら改悪が目的の修正だ。

デーブルの大きさが2になってしまったので、binary patchだと、2種類のカードしか使えないけれど、修正するべき場所は多分、0x168c で binary fileを検索してやれば、すぐにわかるのではないかな。