{"id":21,"date":"2010-06-27T17:14:33","date_gmt":"2010-06-27T08:14:33","guid":{"rendered":"http:\/\/hitoriblog.com\/?p=21"},"modified":"2016-03-16T11:47:29","modified_gmt":"2016-03-16T02:47:29","slug":"ipad%e3%81%b8usb%e7%b5%8c%e7%94%b1%e3%81%a7ssh%e6%8e%a5%e7%b6%9a","status":"publish","type":"post","link":"http:\/\/hitoriblog.com\/?p=21","title":{"rendered":"iPad\u3078USB\u7d4c\u7531\u3067Mac\/NetWalker\u304b\u3089SSH\u63a5\u7d9a"},"content":{"rendered":"<p>iPad\u3092\u3044\u3058\u304f\u308b\u305f\u3081\u306bSSH\u63a5\u7d9a\u3092\u3057\u307e\u304f\u308b\u308f\u3051\u3067\u3059\u304c\u3001\u73fe\u72b6\u3060\u3068iPad\u306e\u7d14\u6b63Tethering\u3092\u6709\u52b9\u306b\u3059\u308b\u624b\u3060\u3066\u304c\u306a\u3044\u3088\u3046\u3067\u3001Wi-Fi\u7d4c\u7531\u306eSSH\u3092\u4f59\u5100\u306a\u304f\u3055\u308c\u307e\u3059\u3002<\/p>\n<p>\u3057\u304b\u3057\u3001Wi-Fi\u7d4c\u7531\u3060\u3068\u30e2\u30c3\u30b5\u30ea\u3068\u9045\u3044\u306e\u3067\u6848\u914d\u304c\u3088\u308d\u3057\u304f\u3042\u308a\u307e\u305b\u3093\u3002<br \/>\n\u3069\u3046\u306b\u304b\u7d14\u6b63\u30c6\u30b6\u30ea\u30f3\u30b0\u4ee5\u5916\u306e\u65b9\u6cd5\u3067\u3001USB\u7d4c\u7531\u306eSSH\u63a5\u7d9a\u3092\u3057\u305f\u3044\u3082\u306e\u3067\u3059\u3002<\/p>\n<p>Linux\u306e\u4e16\u754c\u306b\u306fiTunnel\u3068\u3044\u3046\u3082\u306e\u304c\u3042\u308a\u3001\u3053\u308c\u3067USB\u7d4c\u7531\u306eSSH\u63a5\u7d9a\u304c\u53ef\u80fd\u3067\u3059\u3002<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n$ sudo itunnel 3024 &amp;\r\n$ ssh -p 3024 mobile@localhost\r\n<\/pre>\n<p>\u305d\u306e\u767a\u5c55\u7cfb\u3067\u3042\u308busbmuxd\u304cUbuntu10.04\u306b\u8f09\u308b\u3068\u3044\u3046\u3053\u3068\u3067\u8a71\u984c\u306b\u306a\u3063\u3066\u307e\u3059\u304c\u3001\u304b\u306a\u308a\u898f\u6a21\u306e\u5927\u304d\u3044\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u306a\u3063\u3066\u3044\u308b\u4e00\u65b9\u3001iTunnel\u306f\u6a5f\u80fd\u304c\u5358\u7d14\u306a\u4ee3\u308f\u308a\u306b\u81f3\u6975\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u304c\u30b7\u30f3\u30d7\u30eb\u3067\u3001Mac OS X\u3067\u3082\u52d5\u304f\u3068\u306e\u8a18\u8f09\u304c\u3042\u3063\u305f\u306e\u3067Mac OS X 10.6.4\u3067\u52d5\u304b\u3057\u3066\u307f\u307e\u3057\u305f\u3002(\u7d9a\u304d\u306f[MORE]\u304b\u3089)<\/p>\n<p><!--more--><\/p>\n<p>\u73fe\u5728iTunnel\u3092\u30b3\u30f3\u30d1\u30a4\u30eb\u3092\u3057\u3088\u3046\u3068\u3057\u3066\u56f0\u308b\u306e\u304c\u3001libusb\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u306e\u554f\u984c\u3067\u3059\u3002libusb\u306f0.1\u7cfb\u30681.0\u7cfb\u3067\u306f\u30d8\u30c3\u30c0\u306e\u30d5\u30a1\u30a4\u30eb\u540d\u304b\u3089\u95a2\u6570\u540d\u307e\u3067\u9055\u3044\u307e\u3059\u3002\u666e\u901a\u306bMacPorts\u304b\u3089\u5165\u308blibusb\u306f1.0\u7cfb\u5217\u306b\u306a\u308b\u306e\u3067\u3059\u304c\u3001\u305d\u308c\u3060\u3068iTunnel\u306e\u30b3\u30f3\u30d1\u30a4\u30eb\u3082\u30ea\u30f3\u30af\u3082\u3067\u304d\u307e\u305b\u3093\u3002libusb\u306e0.1\u7cfb\u5217\u306b\u4f9d\u5b58\u3059\u308b\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u3068\u4e92\u63db\u6027\u3092\u53d6\u308b\u305f\u3081\u306blibusb-compat\u3068\u3044\u3046\u30e9\u30c3\u30d1\u30fc\u304c\u3042\u308b\u306e\u3067\u3001\u305d\u308c\u3092\u4f75\u305b\u3066\u5c0e\u5165\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n$ sudo port install libusb libusb-compat\r\n<\/pre>\n<p>iTunnel\u306e\u6700\u7d42\u72480.0.9\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3001\u89e3\u51cd\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n$ wget http:\/\/www.cs.toronto.edu\/~jingsu\/itunnel\/itunnel-0.0.9.tgz\r\n$ tar xvzf itunnel-0.0.9.tgz\r\n$ cd itunnel-0.0.9\r\n<\/pre>\n<p>Makefile\u3092MacPorts\u306e\u30d8\u30c3\u30c0\u3001\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u898b\u308b\u3088\u3046\u306b\u4fee\u6b63\u3057\u307e\u3059\u3002\u307e\u305f\u3001Mac OS X\u3067\u306flibrt\u3092\u4f7f\u7528\u3057\u306a\u3044\u306e\u3067\u30ea\u30f3\u30af\u6307\u5b9a\u3092\u524a\u9664\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n--- Makefile.org    2010-06-27 16:39:25.000000000 +0900\r\n+++ Makefile    2010-06-27 16:39:53.000000000 +0900\r\n@@ -4,10 +4,10 @@\r\n OBJS := $(patsubst %.c,%.o,$(wildcard $(SRCDIR)\/*.c))\r\n\r\n CC := gcc\r\n-CFLAGS := -Wall -g -O0 -I\/usr\/local\/include\/\r\n+CFLAGS := -Wall -g -O0 -I\/opt\/local\/include\/\r\n\r\n #LDFLAGS :=  -L\/usr\/local\/lib -lpthread -lusb -lrt -liphone\r\n-LDFLAGS :=  -L\/usr\/local\/lib -lpthread -lusb -lrt\r\n+LDFLAGS :=  -L\/opt\/local\/lib -L\/usr\/local\/lib -lpthread -lusb\r\n\r\n all:    $(TARGET)&lt;\/pre&gt;\r\n<\/pre>\n<p>\u7d9a\u3044\u3066\u3001iphone.c\u306e\u4fee\u6b63\u3067\u3059\u3002Mac OS X\u306b\u306f\u7121\u3044clock_gettime()\u3092gettimeofday()\u306b\u7f6e\u304d\u63db\u3048\u3001\u307e\u305f\u5bfe\u8c61\u3068\u3059\u308b\u30c7\u30d0\u30a4\u30b9ID\u30920x1297\u304b\u3089iPad\u306e0x129a\u306e\u7bc4\u56f2\u307e\u3067\u306b\u62e1\u5927\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n--- iphone.c.org    2009-09-02 22:52:56.000000000 +0900\r\n+++ iphone.c    2010-06-27 16:50:30.000000000 +0900\r\n@@ -279,7 +279,7 @@\r\n for (bus = usb_get_busses(); bus != NULL; bus = bus-&gt;next)\r\n for (dev = bus-&gt;devices; dev != NULL; dev = dev-&gt;next)\r\n if (dev-&gt;descriptor.idVendor == 0x05ac\r\n-                &amp;&amp; dev-&gt;descriptor.idProduct &gt;= 0x1290 &amp;&amp; dev-&gt;descriptor.idProduct &lt;= 0x1297)\r\n+                &amp;&amp; dev-&gt;descriptor.idProduct &gt;= 0x1290 &amp;&amp; dev-&gt;descriptor.idProduct &lt;= 0x129a)\r\n return iphone_get_specific_device(bus-&gt;location, dev-&gt;devnum, device);\r\n\r\n return IPHONE_E_NO_DEVICE;\r\n@@ -607,7 +607,8 @@\r\n uint32 blocksize = 0;\r\n if (client-&gt;wr_window &lt;= 0) {\r\n struct timespec ts;\r\n-        clock_gettime(CLOCK_REALTIME, &amp;ts);\r\n+        \/\/clock_gettime(CLOCK_REALTIME, &amp;ts);\r\n+    gettimeofday(&amp;ts, 0);\r\n \/\/ts.tv_sec += 1;\r\n ts.tv_nsec += 750 * 1000;\r\n if (pthread_cond_timedwait(&amp;client-&gt;wait, &amp;client-&gt;mutex, &amp;ts) == ETIMEDOUT) {\r\n@@ -928,7 +929,8 @@\r\n\r\n if (timeout &gt; 0 &amp;&amp; (client-&gt;recv_buffer == NULL ||client-&gt;r_len == 0)) {\r\n struct timespec ts;\r\n-        clock_gettime(CLOCK_REALTIME, &amp;ts);\r\n+        \/\/clock_gettime(CLOCK_REALTIME, &amp;ts);\r\n+    gettimeofday(&amp;ts, 0);\r\n ts.tv_sec += timeout;\r\n \/\/ts.tv_nsec += millis * 1000;\r\n pthread_cond_timedwait(&amp;client-&gt;wait, &amp;client-&gt;mutex, &amp;ts);\r\n<\/pre>\n<p>\u3053\u308c\u3067\u30b3\u30f3\u30d1\u30a4\u30eb\u3059\u308c\u3070iPad\u5bfe\u5fdcitunnel\u30b3\u30de\u30f3\u30c9\u306e\u51fa\u6765\u4e0a\u304c\u308a\u3067\u3059\u3002<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nMacBook-Pro:itunnel-0.0.9 stallman$ make\r\ngcc -Wall -g -O0 -I\/opt\/local\/include\/   -c -o iphone.o iphone.c\r\niphone.c: In function \u2018iphone_mux_send\u2019:\r\niphone.c:611: warning: implicit declaration of function \u2018gettimeofday\u2019\r\ngcc -Wall -g -O0 -I\/opt\/local\/include\/   -c -o itunnel.o itunnel.c\r\nitunnel.c: In function \u2018clientthread\u2019:\r\nitunnel.c:189: warning: assignment makes pointer from integer without a cast\r\nitunnel.c:197: warning: assignment makes pointer from integer without a cast\r\nitunnel.c:258: warning: comparison between pointer and integer\r\nitunnel.c:261: warning: assignment makes pointer from integer without a cast\r\ngcc -Wall -g -O0 -I\/opt\/local\/include\/ -L\/opt\/local\/lib -L\/usr\/local\/lib -lpthread -lusb .\/iphone.o .\/itunnel.o -o itunnel\r\n<\/pre>\n<p>iPad\u3068Mac\u3092USB\u30b1\u30fc\u30d6\u30eb\u3067\u63a5\u7d9a\u3057\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u3059\u308c\u3070SSH\u3067\u30ed\u30b0\u30a4\u30f3\u3067\u304d\u308b\u306f\u305a\u3067\u3059\u3002\u5b9f\u884c\u306b\u306froot\u6a29\u9650\u304c\u5fc5\u8981\u3067\u3059\u3002\u5f53\u7136\u306e\u3053\u3068\u306a\u304c\u3089\u3001iPad\u306fJailbreak\u3092\u3057\u3001OpenSSH\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3066\u30ed\u30b0\u30a4\u30f3\u3067\u304d\u308b\u72b6\u614b\u306b\u306a\u3063\u3066\u3044\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002\u540c\u69d8\u306b\u3001iPhone\u306b\u3082SSH\u3067\u30ed\u30b0\u30a4\u30f3\u3067\u304d\u308b\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n<p>\u30c8\u30f3\u30cd\u30eb\u6398\u308a(\u7d42\u4e86\u306fCtrl-C):<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nMacBook-Pro:itunnel-0.0.9 stallman$ sudo .\/itunnel 3024\r\nget_iPhone() success\r\n- successfully got device\r\nserver waiting for ssh connection on port 3024\r\n<\/pre>\n<p><iframe src=\"http:\/\/rcm-jp.amazon.co.jp\/e\/cm?t=hitoriblog0c-22&#038;o=9&#038;p=15&#038;l=st1&#038;mode=electronics-jp&#038;search=netwalker&#038;fc1=000000&#038;lt1=&#038;lc1=3366FF&#038;bg1=FFFFFF&#038;f=ifr\" marginwidth=\"0\" marginheight=\"0\" width=\"468\" height=\"240\" border=\"0\" frameborder=\"0\" style=\"border:none;\" scrolling=\"no\"><\/iframe><\/p>\n<p>\u5225\u306e\u30bf\u30fc\u30df\u30ca\u30eb\u304b\u3089SSH\u3067\u30ed\u30b0\u30a4\u30f3:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nMacBook-Pro:~ stallman$ ssh -p 3024 mobile@localhost\r\niPad:~ mobile$ ls\r\nApplications\/\r\nConsole\/\r\nDSDisplayController.cy*\r\nDocuments\/\r\nGeekTool.cy*\r\nGoodReaderDocuments@\r\nHelloApp\/\r\nHelloApp.zip\r\nHelloAppiPhone\/\r\nLibrary\/\r\nMedia\/\r\nMobileSubstrate\/\r\nSBSettings\/\r\nSBSettingsHeaders\/\r\nTabBarSample\/\r\nTabBarSample.zip\r\nTerminal-426-unstable.zip\r\ncom.hitoriblog.vmenabler_0.1-1_darwin-arm\/\r\ncom.hitoriblog.vmenabler_0.1-1_darwin-arm.deb\r\ncycript\/\r\ndelegate\/\r\ndelegate9.9.7\/\r\ndelegate9.9.7.tar.gz\r\nipad-toolchain.deb\r\nnotifyddump.cy*\r\nprivoxy-3.0.16-stable-2\/\r\nprivoxy-3.0.16-stable-2_darwin-arm-private-minimum.deb\r\nsnipMate.zip\r\nwwwoffle-2.9f\/\r\nwwwoffle-2.9f.tgz\r\niPad:~ mobile$\r\n<\/pre>\n<p>Wi-Fi\u7d4c\u7531\u3068\u9055\u3044\u3001\u975e\u5e38\u306b\u8efd\u3044\u3002\u3057\u304b\u3057\u3001\u305d\u308c\u306a\u308a\u306b\u4e0d\u5b89\u5b9a\u306a\u90e8\u5206\u3082\u3042\u308b\u3088\u3046\u3067\u3059\u3002\u8a66\u884c\u932f\u8aa4\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<p>NetWalker\u3067\u3082\u52d5\u4f5c\u78ba\u8a8d\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>NetWalker\u3067\u306f\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306blibusb\u95a2\u4fc2\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u305f\u5f8c\u3001iphone.c\u306e\u30c7\u30d0\u30a4\u30b9ID\u306e\u3068\u3053\u308d\u3060\u3051\u3044\u3058\u308c\u3070\u3001iPad\u3068\u3064\u306a\u304c\u308bitunnel\u30b3\u30de\u30f3\u30c9\u304c\u51fa\u6765\u308b\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n$ sudo apt-get install libusb-dev libusb-compat&lt;\/pre&gt;\r\n<\/pre>\n<p>\u305d\u308c\u3067\u306f\u3001Happy Hacking!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>iPad\u3092\u3044\u3058\u304f\u308b\u305f\u3081\u306bSSH\u63a5\u7d9a\u3092\u3057\u307e\u304f\u308b\u308f\u3051\u3067\u3059\u304c\u3001\u73fe\u72b6\u3060\u3068iPad\u306e\u7d14\u6b63T &#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spay_email":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false},"categories":[8,9,10,7],"tags":[],"jetpack_featured_media_url":"","jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p6Z3gA-l","_links":{"self":[{"href":"http:\/\/hitoriblog.com\/index.php?rest_route=\/wp\/v2\/posts\/21"}],"collection":[{"href":"http:\/\/hitoriblog.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/hitoriblog.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/hitoriblog.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/hitoriblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=21"}],"version-history":[{"count":0,"href":"http:\/\/hitoriblog.com\/index.php?rest_route=\/wp\/v2\/posts\/21\/revisions"}],"wp:attachment":[{"href":"http:\/\/hitoriblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=21"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/hitoriblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=21"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/hitoriblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=21"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}