查看: 17655|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    . _& N, ~  z- p  D0 B' ^7 W
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    + N9 M+ p; u1 h4 d. b# e% b
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
5 V/ P- j' j5 A& z+ d& Zusage: himr <address> <value>. sample: himr 0x80040000 0x0
  w3 W3 I4 m1 o0 b
/ D2 G* I0 e# u: R( t& F
7 s/ d0 |5 x4 A不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?" y# w6 B2 `2 Y3 d# I

+ X  j# b, d  j1 b! r补充内容 (2012-3-8 09:42):
  k+ D$ T: c. n% n2 {5 b3 B  jhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数' @- z9 F* a3 G$ H2 w
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。, |4 J8 c" o" }6 ^0 r4 d: w

. x! p) H  \1 o9 Z* D! _4 Whimr <address> <value>. sample: himr 0x80040000 0x0
3 y/ v, ]4 @) Y# e1 S; h! e" `  z# J0 l! q6 b% `4 M. z( ~
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
) v7 \/ u2 d, |himr 0x80040000 0x00
, C/ Z5 u# A+ Q0 G7 vhimr 0x80040001 0x11( M/ d9 F: R1 A" c
himr 0x80040002 0x22% X$ g7 F! p) `3 x
himr 0x80040003 0x33
/ _6 [4 b( Y+ X- whimr 0x80040004 0x44
  ]5 W/ o4 O9 |' M/ Ihimr 0x80040005 0x55
+ F$ \. }2 B% g$ j4 h1 V# K1 M+ T5 S
SN也是类似。5 ~4 K- A* Q9 E1 Y
* g' Q  U( ^" k% V% Y! o
现在主要是,谁告诉我们MAC和SN的地址?
* ~5 r% J* U2 w# B
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
8 @* [1 |# @! R5 d/ V% ^一直想找到运程修改MAC和SN的办法,苦于无解啊

5 M  N1 R1 u! _7 k0 d源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 & }' ~, N4 b4 @
( [# J  g! d3 B2 n8 `; {; Y
修改的代码早有了。到今天不会编译。9 ^0 Q. ?  H* A  S5 P* j9 n
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    5 g- K1 J! h1 S2 j! s
  2. #include <malloc.h>
    5 S$ P, M, i1 [9 Q2 ?- V6 P0 M
  3. #include <sys/types.h>
    8 a& d6 _! n6 i
  4. #include <sys/stat.h>
    6 \. F/ ]+ K* K# `8 F. \
  5. #include <sys/ioctl.h>5 \9 l6 M8 |( q! H5 v1 }" V6 h
  6. #include <stdio.h>
    $ z. x+ y! w, d/ O* O4 A2 o
  7. #include <string.h>
    . P% L5 C: r9 [" z
  8. * f9 e0 v/ j2 E; `4 r8 u. ], d2 I
  9. typedef struct {
    0 B( D; Q. f$ s, f& i0 i9 \
  10.         unsigned int        e2prom_cmd_sub_addr;$ q  e7 G7 x/ B9 p6 f9 h5 s
  11.         unsigned int        sub_addr_count;
    ; E- i! \( B$ F" d
  12.         unsigned char*        e2prom_cmd_data;- L6 u8 J/ V7 p, Q9 R
  13.         unsigned int        data_count;
    4 W# l7 h5 r0 `% E- K
  14. } e2prom_s_cmd;
    # p% l3 F$ t  z! J- @. v
  15. # p5 [4 Q5 l4 H8 M' F8 o% }) Q
  16. #define E2PROM_CMD_READ 1% r2 Z9 u2 {/ I. h1 h
  17. #define E2PROM_CMD_WRITE 2
    $ P2 Z0 J# k8 u, C9 p, _3 R
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"  e9 B9 P  A2 I, s( a- x' o/ @

  19. " \3 n5 Z* }, v# q# T* `( o  F
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    9 w& g3 z3 z$ H/ Z4 ]
  21. {
    ! H* D5 k4 a& x9 R) R1 t
  22.         int fd, ret;5 y. M$ `9 i! {  U$ ^! f- Z2 L
  23.         e2prom_s_cmd arg;
    3 b$ k: X' X& _7 {6 c* I4 L
  24.         unsigned char buf[0x18];
    5 h5 Z0 g4 U6 N' m# t; r$ C

  25. . |6 [! G+ t: L6 [& j$ u
  26.         fd = open(E2PROM_DEVICE, O_RDWR);# I8 w' Q. O6 H- d5 {& ?
  27.         if (fd  < 0) {
    # g" }% U0 N# R- B
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    $ ^, e: \& W: A" M' c. F* p2 K& E
  29.                 return -1;$ t. Y# O  b0 k& L
  30.         }/ r1 I# E% `/ T3 r; M" W; i" c: y
  31.         arg.sub_addr_count      = 2;
    ! }; A: R9 a2 v. D
  32.         arg.data_count          = 0x18;
    9 j5 G; _0 n+ W* F4 W, a" `1 S/ O
  33.         arg.e2prom_cmd_sub_addr = 0x290;2 [3 F  O$ r. L: A3 r$ Y: t; K
  34.         arg.e2prom_cmd_data     = buf;% z- t( X* i; m* i' i
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ' N6 S: ~& ^$ w- F; @
  36.         if (ret != 0) {
    & l) |$ R2 c" q; Y' l$ k7 M# _
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    * U7 Q& D6 N% j
  38.                 return -1;: m, f' G$ i9 L: K4 E+ Q% K
  39.         }
    & d* j- V. i- D/ r7 I% F9 T# V
  40.         memcpy(mac, buf, 6);5 b! [6 C$ s2 R$ N
  41.         memcpy(stbid, &buf[6], 18);
    8 r! ], k, `) x, K! x$ F; z0 Q
  42.         stbid[18] = '\0';$ V; w( f1 c! X* f
  43.   v. J" D, a8 d7 N2 ?) W! K
  44.         return 0;$ D5 w( ~2 `( \$ N; {' C) E. a
  45. }
    / Q& b  M, u; J( g( F

  46. & l% T! E: o  R
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)1 y* F5 P6 Y9 @: X! K! g: d0 @
  48. {, Z/ y9 j) D/ l  b
  49.         int fd, ret;
    3 ], ?( z- f# L$ N) q
  50.         e2prom_s_cmd arg;
    $ H0 W+ V- Q8 L% }4 j: `
  51.         unsigned char buf[0x18];1 v9 Z* ]+ l6 S8 m0 b7 h& D

  52. ' `* e/ H% u! \6 o* m1 u: `
  53.         memcpy(buf, mac, 6);. _) w2 o  k+ U3 d
  54.         memcpy(&buf[6], stbid, 18);& w0 n7 m5 K$ Z2 g* a. V9 B
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ) j# q$ a1 }. g4 j
  56.         if (fd  < 0) {% ]3 w' A  I7 m4 s
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);' ?/ m1 X% A! v- c" a
  58.                 return -1;
    7 ^9 I8 b+ k7 o1 f
  59.         }8 [/ S+ a) k  J' x3 @" I4 C
  60.         arg.sub_addr_count      = 2;% f7 ?& h* V& y& |9 ^  ], l2 F, ?
  61.         arg.data_count          = 0x18;1 t$ [% C) {' c' v/ Y* o: L
  62.         arg.e2prom_cmd_sub_addr = 0x290;: M9 E; y  k7 l$ \# [
  63.         arg.e2prom_cmd_data     = buf;
    , r5 P% n9 i+ S2 W! q( Y4 y
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    : q$ w/ R0 V1 O' u
  65.         if (ret != 0) {9 j3 c8 S: W- s3 W- Q: }
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);  s4 p6 c( Y2 D% ^
  67.                 return -1;
    : d5 ]8 p. u& p" X8 f; z
  68.         }
    1 n$ G! j4 V3 s' A8 R- g

  69. 8 e8 i1 f/ n9 b
  70.         return 0;- l* j. H# H5 a% N# t! `
  71. }
    * e5 s0 U" X7 V* u

  72. : P! n, q3 _1 @& ?+ G
  73. int main()
    8 f. ]1 Z2 E' M- u
  74. {
    9 c$ N0 c* o6 \0 A( N0 s5 u
  75.         char c;4 n- {, L  T* F+ s( E) D
  76.         int i, macs[6];
    ; O3 u4 h7 b0 U" f' N: D2 O: {% R
  77.         unsigned char mac[6];, {5 D0 @9 z' ?' r( F
  78.         unsigned char stbid[256];1 Y1 `8 L1 r; R

  79. 2 n0 N! o) w4 `$ o, L9 Z9 y, I0 d9 A
  80.         if (readparam(mac, stbid) < 0)
    * H' F! {) d: Y* Q: w! t! p, x
  81.                 return 1;
    , J/ ^6 i: d; v$ L+ j

  82. " K/ z# ~7 s1 |  {* v
  83.         printf("Current parameters: \n");
    , |2 A5 B* u/ m0 S/ V
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    4 M: Q! S0 X1 u8 ?# ]
  85.         printf("  STBID: %s\n", stbid);0 B+ ]: G9 v$ k& l" Z+ E# p' w/ g
  86.         / z1 p* D; Q! o9 c5 y! M
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");7 b/ ?) l3 I( K, A0 M
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {' [* U6 p% t  U  _  W! R
  89.                 printf("Input MAC error\n");/ |% M8 l  U! A& q/ ~8 `. O+ I
  90.                 return 1;5 T& j! D) H/ h* x! p) ]+ T" O* w
  91.         }
    1 p+ Y+ @1 f4 A% W
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ' p* T* [+ p9 _8 q
  93.         printf("\nPlease input new STBID: ");4 h  M9 o( \2 v& ~
  94.         scanf("%s", stbid);
    0 B0 J. Q5 p: p: S4 A, \
  95.         if (strlen(stbid) != 18) {0 J8 p3 d# N) H9 }' }
  96.                 printf("Invalid stbid\n");
    ! s$ q4 C' m5 I3 X
  97.                 return 1;1 N3 O5 F+ \3 [7 b! K: R, h
  98.         }
    : R1 ~2 h. ~1 s1 m. d, z
  99.         printf("\nNew parameters: \n");- C  @+ x7 p' F) f; d7 [
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    # {) r/ Y( R  \* _2 U
  101.         printf("  STBID: %s\n", stbid);$ j3 s0 W! a: H' G# _; g

  102. 5 ]. E$ q  m3 X. y6 T; p0 ~4 M1 B
  103.         printf("\nDo you want to change paramemters? (y/N) ");0 I" i. X! A  @/ K  ~8 _/ f
  104.         for (;;) {* J4 K. u1 x: v- X; ]
  105.                 c = getchar();
    8 [2 j- R4 E+ t3 u, ]& }0 i
  106.                 if (c == 'y' || c == 'Y')$ I' e; L3 M% X% b
  107.                         break;$ _+ P% u3 R4 n2 [+ o( f/ z
  108.                 if (c == 'n' || c == 'N') {$ D4 z$ y! I' ?& Q9 M
  109.                         printf("\nAborted.\n");
    $ W$ }9 P4 Q7 B& u$ t0 @
  110.                         return 1;
    $ b, K% A2 A( J  z# F$ W: f
  111.                 }
    ; m* ?* u; L% c; G# \$ J
  112.         }5 \0 p1 n, |; w) e. f
  113.         if (writeparam(mac, stbid) == 0) & L# j( f# h7 }9 d  c
  114.                 printf("Parameters changed.\n");/ K2 {) e# g9 ~$ s, e
  115. / E9 L- U/ ^/ e* ~  N3 I$ @! \$ ~! T8 W
  116.         return 0;1 {0 J" e; a% l+ h! `4 Y- H
  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 , ]+ P$ f5 i  U1 Z( D$ d9 L# B
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

) j7 Z3 E+ \- \你用的编译命令行格式是什么?$ N8 r* O7 S$ L9 I9 I% ?4 S7 n
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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