找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15676|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr  I8 Z+ q$ C+ f- s; k
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    - M* T( {( V9 \; v5 ]) ?& d
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
  F+ q# s9 T6 qusage: himr <address> <value>. sample: himr 0x80040000 0x0% }/ g& n- P8 p4 W; s( {

  B$ a- F3 A. r. V# I+ P* _# `' }$ S: F6 C
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?$ n8 z8 }, J" O+ G7 L' p& A" _
+ d0 L" }8 N. M+ u% ?; e2 l
补充内容 (2012-3-8 09:42):8 f6 r- O. ~; `9 j) i
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
; i$ x- u# N4 F8 g; q: y这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。6 |  ~2 _3 j0 u) j( A
& h' h$ \. O" ^3 @' x8 R7 z
himr <address> <value>. sample: himr 0x80040000 0x06 y* w* F" i, {3 M

' z, M' k& k/ h例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。7 Y3 P  }9 ]. K7 e- L1 {& L" L
himr 0x80040000 0x000 K" [$ X: y9 Q! V
himr 0x80040001 0x11
0 Y4 H) }. z/ O2 |8 \  R4 S4 phimr 0x80040002 0x22
: f' f+ O4 w( S$ d8 d# @# fhimr 0x80040003 0x33
, w5 e% f- ~) Ihimr 0x80040004 0x44! H6 ]* A( D4 I3 B1 f/ h7 H- C
himr 0x80040005 0x55
+ ?! p% {' w2 O, ?! a4 M$ V1 H' u0 O1 d+ [$ S1 A1 i0 r, H; K" K
SN也是类似。
) Z# W" b, S1 a0 e2 K% K- w
* V. J% s/ K. v& g9 n现在主要是,谁告诉我们MAC和SN的地址?5 ]* [7 W8 t- j
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
  o8 J8 r9 y' o% a; ]0 ]  K一直想找到运程修改MAC和SN的办法,苦于无解啊
: R4 Y6 J- _0 q% e
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 " ?0 f3 [( Q! c+ v( F4 ^- J- j
. O: }/ X* d6 U  F
修改的代码早有了。到今天不会编译。
+ O+ t7 z" O( B8 c" F& ?( g. J. Q需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>" T1 v+ e% T4 n' r  Y# B- z( k
  2. #include <malloc.h>
    / q( h# Q! L% B* l% b
  3. #include <sys/types.h>
    + Q8 o7 y' P8 E. s! q3 C
  4. #include <sys/stat.h>! g( K2 q1 ?  b( n
  5. #include <sys/ioctl.h>/ X+ k, }/ i7 D, X0 L2 {5 X
  6. #include <stdio.h>" T' \+ V/ F% \) A
  7. #include <string.h>2 e  m. G, U' |' }" O* I
  8. 2 U& P8 N% h/ a( k( {5 o: Z
  9. typedef struct {$ l) c4 A# p! c& W( w( r+ Q
  10.         unsigned int        e2prom_cmd_sub_addr;
    8 p& e4 A* Y: z& G& }5 R% `1 E3 {
  11.         unsigned int        sub_addr_count;
    ) M% ~! a7 Q' K8 L/ C
  12.         unsigned char*        e2prom_cmd_data;
    5 _, \/ I, }" q8 l( h2 g
  13.         unsigned int        data_count;
    % D% Y1 C- C* z( V* _
  14. } e2prom_s_cmd;$ H8 Z1 F2 v6 s! b
  15. * e7 |; l) ~  k0 m/ g6 ^/ U6 h9 q
  16. #define E2PROM_CMD_READ 12 C) p: b5 P/ T- b0 J
  17. #define E2PROM_CMD_WRITE 2
    4 E* B" t/ x3 @: L6 @6 L2 G" S
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"2 C2 G. T' t. ^0 o

  19. 0 m1 N; ^; J" _' ^% R
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    % V5 x! Z6 S4 V' K
  21. {
    - h; q6 B6 G- }
  22.         int fd, ret;
    7 c" g; E# \, e  T) U2 S9 i- U
  23.         e2prom_s_cmd arg;
    ; ^$ m3 `$ a; p0 t* p2 B( t* `
  24.         unsigned char buf[0x18];* l* }$ |' P: m5 o* W
  25. % y8 d% F5 F+ n0 G# o: G/ }: I! q
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    : [4 F; H. b& p, T1 H! c: N1 K
  27.         if (fd  < 0) {
    0 `" _0 F& ?- n9 h& g% ?. ^  a
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    2 i' K0 ^7 F6 m# ~+ `" a
  29.                 return -1;
    $ Q, B! d/ [( \3 E( H, }/ @: o
  30.         }
    2 m; |& V+ ?6 S/ u
  31.         arg.sub_addr_count      = 2;( Z) g# ^! o+ ]7 ~
  32.         arg.data_count          = 0x18;& R9 l! ~6 T9 Q: t
  33.         arg.e2prom_cmd_sub_addr = 0x290;8 b  V9 Y8 l3 p  F5 R/ W+ w/ b/ y
  34.         arg.e2prom_cmd_data     = buf;
    7 l' B( B( ?% p) Z
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);% k" H* o8 c- s" J7 G
  36.         if (ret != 0) {4 @9 J( |1 |- Y  B" X
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);$ @8 `, r% w5 d! {+ m0 }
  38.                 return -1;, t- w( j  y/ B- s5 B7 y( O) _
  39.         }, G# B9 E: M! q9 |
  40.         memcpy(mac, buf, 6);
    - g+ i% j0 w* Q# R; O/ }8 q
  41.         memcpy(stbid, &buf[6], 18);
    - t+ `2 E) R2 L" y
  42.         stbid[18] = '\0';2 |7 @/ g/ x1 n4 J
  43. 9 t( o0 N( D* v) p) n  f
  44.         return 0;% v/ X$ B: B( J9 x  t
  45. }
    # S; ~! D3 M. P  Y8 j- B8 `

  46. ) b3 W3 r$ [' U6 e/ C
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)4 U' }; |% U; z! z) W
  48. {: r* T& L3 M) y* ?% F$ |
  49.         int fd, ret;) E6 z/ T1 i5 c
  50.         e2prom_s_cmd arg;
    - d2 E3 s* q" k  n" ~; h+ j2 N5 H
  51.         unsigned char buf[0x18];
    1 ~: A2 N" h; }
  52. - C$ S% Q( D( n% r
  53.         memcpy(buf, mac, 6);7 j: R3 b" u2 ?
  54.         memcpy(&buf[6], stbid, 18);& \- E* j' Q* L; j2 r6 q
  55.         fd = open(E2PROM_DEVICE, O_RDWR);+ \7 z6 O# r) Q3 Z8 u9 g
  56.         if (fd  < 0) {8 O: w+ n  Z; V/ D( M1 O  ?
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    5 i/ Z# q, l; @) N  B9 Y
  58.                 return -1;. E) `) j. [# Q6 h' d. U
  59.         }% K! W1 D6 U" ]) B! Y9 `
  60.         arg.sub_addr_count      = 2;
    ; n* h% {) W% c
  61.         arg.data_count          = 0x18;
    - a2 i" c) I- Z6 L* @1 \
  62.         arg.e2prom_cmd_sub_addr = 0x290;' X, V+ h; c& |% H& w
  63.         arg.e2prom_cmd_data     = buf;
    ' P% J' Q0 \" h# t# Y# P6 p
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    1 N2 M# w# f6 M' L: Q' k! z
  65.         if (ret != 0) {
    . N  I1 D$ f' Z$ w* n
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);) b, [) _( Y& W8 m
  67.                 return -1;2 r: T9 l. p) H6 a
  68.         }
    $ _6 r$ y2 k# h7 v1 U  x6 q' F. @
  69. " Y& A! V' v5 ]1 q  W
  70.         return 0;
    8 I6 S. n7 x' q& o3 B
  71. }
    3 G* [( B* p' g/ B/ n: o) ~8 A

  72. . ^/ @* v5 r5 z
  73. int main(): _1 l) O5 f( D5 p# q' \3 d
  74. {
    " x# V4 H/ k9 ]6 l! C5 q, M1 ~" L
  75.         char c;" |( w1 A* |0 H9 M) `7 G+ T
  76.         int i, macs[6];
    9 I& f! B& f/ I, N' I
  77.         unsigned char mac[6];
    5 F! G  f' E# J1 x: l
  78.         unsigned char stbid[256];  g  K. }+ O- v$ A) |) Q; p: A
  79. / ~) H+ E  N- a* H* |6 M
  80.         if (readparam(mac, stbid) < 0)
    : f; |* i: U5 x+ s: X, D' D7 ~2 D
  81.                 return 1;; z0 i( A) |% O
  82. 2 P0 N) k0 T  c- a2 g
  83.         printf("Current parameters: \n");
    4 l1 m* y1 Q( H3 a! V
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    + E, m7 w( ^4 D/ W
  85.         printf("  STBID: %s\n", stbid);
    7 L& B9 q7 `( ~' A! L; s: Q1 N$ A
  86.         6 I. C/ f7 c' `( S9 p
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");6 _# P$ c- y9 n! e. S% |0 `  S) U) v
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ; t/ D# v, p/ l" y
  89.                 printf("Input MAC error\n");4 Z4 t! Y" z! _# `& l
  90.                 return 1;) I) c* o% d4 H2 |9 F
  91.         }8 v$ Z1 q. N3 H3 ?7 p
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    + Y4 w1 t  [3 G- d
  93.         printf("\nPlease input new STBID: ");
    ! q2 p& l" Y% t
  94.         scanf("%s", stbid);
    0 v. ]1 _3 R( ]7 Z& Z
  95.         if (strlen(stbid) != 18) {
    , x6 t$ h) O" V, E: J
  96.                 printf("Invalid stbid\n");
    + o, x& i2 v; |& K/ I8 O
  97.                 return 1;
    1 U! K) J! d' w  g' s
  98.         }
    : Z/ W2 r% G# ~" C# [
  99.         printf("\nNew parameters: \n");7 b, o9 A' m& j# ?0 [
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    # f6 `( c6 L5 X4 }+ G
  101.         printf("  STBID: %s\n", stbid);0 Y4 o2 s; }$ l% {5 N( y

  102. * |" h* B3 s4 W) g& n% p
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    - m6 k) u; i6 B) O# x* h, {+ E
  104.         for (;;) {
    9 K7 o- d( ?# |1 D+ A5 D( m
  105.                 c = getchar();
    $ E  {9 T8 o% |2 G/ H7 T8 u1 c5 K
  106.                 if (c == 'y' || c == 'Y')
    3 @$ c- [! K3 W, y+ B  k
  107.                         break;
    6 N2 \! c2 ~2 @( N- K5 w  e
  108.                 if (c == 'n' || c == 'N') {9 M' z( k' p' A! b  N- ^$ C$ z) N
  109.                         printf("\nAborted.\n");% a/ t0 h4 x5 z6 {0 u
  110.                         return 1;: Q: e- }8 f, u" {& V$ A
  111.                 }
    % w+ z6 n# U7 Z+ y# u
  112.         }8 y; X  j# r) W& k/ j1 Q/ u
  113.         if (writeparam(mac, stbid) == 0) . @, ^2 U  m% f5 ~) }( f
  114.                 printf("Parameters changed.\n");2 z; H( e& J9 D& U/ A5 D
  115. / G# c( Q- h, T: ~
  116.         return 0;* d# Q  }# w1 Y+ @4 _
  117. }
复制代码
 楼主| 发表于 2012-3-23 18:24:12 | 显示全部楼层
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
发表于 2012-5-11 11:20:03 | 显示全部楼层
0522 发表于 2012-3-23 18:24   z4 i1 G. U6 G. q
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
- |2 o5 E  B- g! E# ?
你用的编译命令行格式是什么?
9 C/ m+ v# V: ?
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2026-2-25 13:28 , Processed in 0.026638 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表