查看: 16079|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    . W* n' U0 J  d5 O$ g
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig; s  h0 _! n/ q/ V
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
% S* e3 e$ D, g1 X5 m# i( xusage: himr <address> <value>. sample: himr 0x80040000 0x0
. H, J0 p8 c3 n5 c
& B8 l6 C: U  }6 q' A0 n+ n$ G+ U: B( {) e1 q
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?, R( ]! z' j9 ^# Z+ {0 i# A/ n
5 K0 a3 _' }* A+ R% p* T9 r" i; a- o
补充内容 (2012-3-8 09:42):: D% F# E! s% l" k9 j. U1 K
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
# f2 ^2 H# i9 W  I! D2 _) H这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
8 \+ y. r9 n1 _- d; ]4 h& ?6 X6 E5 [% J( i7 @- D' ^6 P
himr <address> <value>. sample: himr 0x80040000 0x0
7 k8 v6 ~, g' ], G
3 V9 n- b0 n) D0 J/ H例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
4 K) i4 B( W. Z  B- ^6 ahimr 0x80040000 0x00+ f- l# K# R) v. b3 q+ S
himr 0x80040001 0x11
+ l: X& @4 t& I! lhimr 0x80040002 0x22
9 I8 z! C% [; e- @himr 0x80040003 0x33
" A+ d+ o9 T+ }  {himr 0x80040004 0x44
  I/ L9 F. u- Rhimr 0x80040005 0x55; [; v$ b  v. \  c% t+ @

& T* i. K( D5 D3 l/ PSN也是类似。
2 K8 t" d: W9 b4 K/ }) r& S( s7 ^+ P. F4 Q  @6 x
现在主要是,谁告诉我们MAC和SN的地址?$ @/ x$ f% G5 Q/ g0 t
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ! ^+ `. ~. S/ ^; u/ u+ m$ R
一直想找到运程修改MAC和SN的办法,苦于无解啊

$ X4 m1 U2 t: w4 I. b$ c6 Y源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 % p7 o# ~; i/ |7 o1 s
# w, g- a0 W; Q/ r7 [
修改的代码早有了。到今天不会编译。4 ?: @4 Y! f+ }# l0 y) N6 P
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>- X% U' }* \6 |# c4 c- Q
  2. #include <malloc.h>
    7 a( o5 l* \, y7 b' C
  3. #include <sys/types.h>
    3 @8 p! _) h2 k3 Q* H9 o
  4. #include <sys/stat.h>
    ' F/ s" K6 X0 B/ S
  5. #include <sys/ioctl.h>
    ) }4 S# Q  N* `1 N; X
  6. #include <stdio.h>4 c/ }% ~/ \: I5 g
  7. #include <string.h>2 J; d/ k) D1 s( ]1 g/ S0 i

  8. . f( X8 W3 V) i: f4 q8 S
  9. typedef struct {2 l% f; y% b# c  b/ E. @5 ?
  10.         unsigned int        e2prom_cmd_sub_addr;
    8 k' g4 h# d! J' i( _' s. \1 m
  11.         unsigned int        sub_addr_count;7 V; m! q( \# i7 O
  12.         unsigned char*        e2prom_cmd_data;/ H5 f0 r1 u) s% E5 B
  13.         unsigned int        data_count;$ j' @! i6 o* T/ k7 u; P
  14. } e2prom_s_cmd;
    , U- L! D3 ]0 |- Q* O0 {# C
  15. 9 k, c- U2 ^- x* [8 l& k  `+ U) U
  16. #define E2PROM_CMD_READ 1
    3 t" }: b) D; |  i1 I% d
  17. #define E2PROM_CMD_WRITE 27 h  ^/ h) [! Q! Q7 |. I; Z  z7 F- M! b
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"3 n" \6 n. z  G1 F6 p
  19. 3 ~6 H" K; ]; y4 B! i
  20. static int readparam(unsigned char *mac, unsigned char *stbid)" A7 R' L# ~2 _  V1 U4 T) i
  21. {
    2 C5 N- K6 \/ s# L0 u
  22.         int fd, ret;
    0 \, h) p* D8 n& C2 _$ V- q
  23.         e2prom_s_cmd arg;! S+ D4 T; ^4 R6 P$ S6 `
  24.         unsigned char buf[0x18];
    $ Z; S0 X, g; {$ l. l- b

  25. : g3 l, d) |- z6 ~7 A# A
  26.         fd = open(E2PROM_DEVICE, O_RDWR);9 E. ~# f9 C' _- P+ X3 o3 e
  27.         if (fd  < 0) {6 R8 d- ?3 T% s: V+ C9 K# W1 l
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    4 G" f9 j4 {1 \* f& F0 X) C5 _
  29.                 return -1;
    ' Y' W) I9 X: g, Y* C, `4 ^* w% ]9 I
  30.         }; w2 g% c  V7 R+ @( O; n3 m
  31.         arg.sub_addr_count      = 2;5 H1 H" M/ H5 I* B5 _, p
  32.         arg.data_count          = 0x18;
    . Y; I4 Z9 U* i9 ~+ {
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    - X$ j+ f( J) g5 s9 t+ i6 G) U  `7 @
  34.         arg.e2prom_cmd_data     = buf;  L3 z5 J) a- p+ L4 x. L1 L( f
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    8 P4 [, p* _5 q% `  V
  36.         if (ret != 0) {
    ! R. Q# n; K) N/ A  B
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);( y! H$ _8 S- y, @3 g
  38.                 return -1;" U3 s& \" y. ~' `, e( @
  39.         }
    6 H! v5 V4 V$ X- E- \  D( R
  40.         memcpy(mac, buf, 6);
    9 o/ }5 f4 l0 D, D5 S
  41.         memcpy(stbid, &buf[6], 18);
    & @0 _1 F$ i/ \
  42.         stbid[18] = '\0';6 i1 _2 u5 M5 C) R/ i* V% S
  43. ( g. P1 M  i9 K
  44.         return 0;, ]) j8 ^# w( ]8 y
  45. }
    : T  V3 o2 {6 H+ w
  46. 0 F& ]* d* p2 m% S) d* r
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    9 ~# m8 p+ H0 J
  48. {
    + f8 }% t5 e( A# T& `5 {9 {( T
  49.         int fd, ret;. e9 B5 P4 F' }/ c8 T
  50.         e2prom_s_cmd arg;; z. x; B: j+ K5 e! R) q+ x, D
  51.         unsigned char buf[0x18];
    9 E, p6 B( \% f% e

  52. 9 ], W3 h% t# v- M8 b2 {
  53.         memcpy(buf, mac, 6);
    ) X2 b0 R+ G6 g+ F! p4 s
  54.         memcpy(&buf[6], stbid, 18);. B* Q+ L$ e5 R5 b
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    # u9 p9 J  O$ d* K8 s; S
  56.         if (fd  < 0) {
    3 v% S( }& I% L, t2 x
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);8 I. ^9 H/ j  N3 F8 r+ c9 ?* E9 k
  58.                 return -1;7 a6 o7 d$ m: K  y/ G  f( I% z
  59.         }
    & W7 t6 v& U! R8 d$ Y
  60.         arg.sub_addr_count      = 2;
    2 k# |/ K% c, ^' l9 b7 N
  61.         arg.data_count          = 0x18;
    / a$ d" R5 a2 i7 G
  62.         arg.e2prom_cmd_sub_addr = 0x290;- Y2 h- Z$ B0 d0 ], P  z: i
  63.         arg.e2prom_cmd_data     = buf;5 q' f, [5 F2 U9 b8 P
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);9 }2 l, r* t' C5 W  w: |
  65.         if (ret != 0) {
    $ I4 S9 a$ m' d5 L% D/ m& S# X
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    7 t5 o1 v" @& k8 u
  67.                 return -1;
    / g* {2 X6 j/ |5 a7 _1 z, [; {
  68.         }
    ! V5 d: @& o2 S& }8 h+ ~- _

  69. - u) A% y+ D! _9 }: W8 z; W
  70.         return 0;, q8 v4 s5 p: W/ [9 y2 _
  71. }
    / W7 o* j: l: X: a7 x

  72. ; b9 P$ f. u/ i8 U; n
  73. int main()
    ' B2 m8 T" L3 P& b# ]8 o
  74. {8 c0 A/ _  [6 O9 a- F
  75.         char c;5 x1 X1 e1 f/ S. f7 V% n; C( O  m
  76.         int i, macs[6];5 n1 R$ n6 E7 X3 J! f# N% f7 q
  77.         unsigned char mac[6];
    + a" x. k9 c# j% c7 a$ ]7 @! w# g
  78.         unsigned char stbid[256];$ K( a, L! h) z6 {: |7 h3 ^" Q% D
  79. 3 e" l! T/ J/ L  s; ~
  80.         if (readparam(mac, stbid) < 0)
    " G" l3 N' ?0 J5 N) _9 q2 Y
  81.                 return 1;, {# R/ n2 ^( F7 P3 \1 k

  82. 0 t; w5 C% N: ~/ b* ^$ ]" a
  83.         printf("Current parameters: \n");
    ) S. e; M; K5 V
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    , f1 w" U0 y. p. W
  85.         printf("  STBID: %s\n", stbid);
    + L. I+ X/ `8 j) H. T
  86.         0 i% y, @9 P5 ?# ^/ `
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");/ {4 @9 W2 H  i  b. R* @7 ?( Z/ S
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    9 G3 B2 @9 l8 Z# x# Z7 |
  89.                 printf("Input MAC error\n");; z+ t/ I% H4 I0 _2 _
  90.                 return 1;
    ) f6 S$ s1 n* Y+ n' o4 w" W5 C
  91.         }# N" r4 d3 W& e3 f$ P
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    6 V' W% Q( J% k2 M1 Y1 Q
  93.         printf("\nPlease input new STBID: ");; s( \* q7 T$ W
  94.         scanf("%s", stbid);
    4 e) S5 b  J9 j, T: m* }
  95.         if (strlen(stbid) != 18) {. J5 h% ~% j8 U! l! f) X$ I  m) z
  96.                 printf("Invalid stbid\n");
    ' l/ H$ N+ u5 t2 n& D4 k
  97.                 return 1;
    ) H8 C  W7 M% F4 m' ?5 M
  98.         }
    6 O, W8 R( @& Y6 ~% x( F
  99.         printf("\nNew parameters: \n");+ Y( q6 \' b. M
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    - R5 ?" d6 [* R% G& W
  101.         printf("  STBID: %s\n", stbid);0 l) b# K7 F3 j

  102. , T1 Q+ F* H! h
  103.         printf("\nDo you want to change paramemters? (y/N) ");- s1 `& z* K$ S* X) x7 U: k
  104.         for (;;) {
      J) [1 ^$ l' ^5 y
  105.                 c = getchar();
    7 x" Q5 y+ m7 ~8 O
  106.                 if (c == 'y' || c == 'Y'). Z8 h# h* l: @1 F. ~) L- n+ ^
  107.                         break;
    6 v8 n: p! g9 d, ~  S
  108.                 if (c == 'n' || c == 'N') {) F. `6 s8 ]7 f8 W; A7 d# ?
  109.                         printf("\nAborted.\n");1 _3 k4 Y7 w* O, b3 X1 S- K' g
  110.                         return 1;
    $ Y+ H9 V$ o$ j
  111.                 }
    & y# A7 g/ f' z# b
  112.         }* y. V% c+ J) n( L4 M
  113.         if (writeparam(mac, stbid) == 0)
    . X8 }* @, w/ K9 r
  114.                 printf("Parameters changed.\n");
    8 j7 _7 A2 Y( F2 X" u  J% C6 y

  115. 4 f1 r1 i1 p% P( s
  116.         return 0;2 ]( X% E' j4 O2 E
  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 6 K. F8 l4 a: o
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

6 i7 C( t- j5 J/ a$ t你用的编译命令行格式是什么?. h' U, Y( U2 T/ W& r' U& v; j4 V
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

相关侵权、举报、投诉及建议等,请发 E-mail:yesdong@qq.com

Powered by Discuz! X5.0 Licensed © 2001-2026 Discuz! Team.44152102000001

在本版发帖QQ客服返回顶部