查看: 17193|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    6 H# _- ], l+ r2 H+ M0 P( P' @: Y
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig4 ?. P" T# o7 u7 ?3 P
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
3 |) K" S! C9 j/ V7 e! |usage: himr <address> <value>. sample: himr 0x80040000 0x0
4 E! a! d+ \" X0 n) l5 i+ z  c6 z8 n& Y- M8 N: I3 W
7 @4 P9 `; D2 i. m6 b
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
( @  G  U  V9 z: Z% y( n$ l' ^  ]5 ^* c. ~3 B
补充内容 (2012-3-8 09:42):" i- Q7 g% M0 Y/ }! q5 ~
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数9 o7 k( d$ l& p3 I" N2 g" d! n
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。* `. ]5 j0 P+ d' n, t" ~
' e  c7 ^' ^9 t. r9 o' N: Y) A
himr <address> <value>. sample: himr 0x80040000 0x0
7 h5 l( h: X: h" \) w  I. F: z4 }" |$ l8 I# H  U
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。: g; z" T$ p' e! d
himr 0x80040000 0x00+ ~  p9 i' A5 f$ O) @
himr 0x80040001 0x11
0 i# ^' l! I  A$ [( C' K$ \himr 0x80040002 0x226 l! q, |/ c: B$ K% i" R
himr 0x80040003 0x33
+ M! u% `$ |4 c# A" e' `9 S8 V: whimr 0x80040004 0x443 f; P$ b& Q$ B" q; B2 x7 ]( t
himr 0x80040005 0x55" s1 O+ F) b: m" C
0 X6 ~5 [5 M" N/ [) v" o: ]: I: `
SN也是类似。
! |$ m7 \" _. X7 X5 w! e( D1 q  @" u/ T8 Q2 V
现在主要是,谁告诉我们MAC和SN的地址?3 y- W8 E# P' Z: m: p
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
4 m2 w7 e6 N" \4 F+ f2 Y一直想找到运程修改MAC和SN的办法,苦于无解啊
% E6 L: R1 ^6 h! ?
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 7 U, H6 b& b% c2 V# d' ?, v3 Y5 ]

- |' G2 Y7 @& D& O7 V修改的代码早有了。到今天不会编译。$ z* i1 B* @+ h2 i
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    8 f' r' u! O+ s6 y5 j
  2. #include <malloc.h>8 @' ]: @6 b: u+ t
  3. #include <sys/types.h>7 n0 F8 y& c% }) m- I$ n  Z
  4. #include <sys/stat.h>
    * z4 h- q* h" }8 X: |* O
  5. #include <sys/ioctl.h>
    # ?! @! J2 F( f2 {' }, q
  6. #include <stdio.h>
      S" ]) N0 g- M, D+ O3 W0 j3 v
  7. #include <string.h>9 b2 r8 k3 Y- w/ G5 v3 l
  8. : ~' X0 j& l6 E) ]% i
  9. typedef struct {
    ( \; Z+ c  t3 [8 ]+ J! Z/ F+ {
  10.         unsigned int        e2prom_cmd_sub_addr;
    . I8 u6 u; P: e, P4 S
  11.         unsigned int        sub_addr_count;% M) M" _; ]# \: v6 o
  12.         unsigned char*        e2prom_cmd_data;3 ^  }- D7 D+ ]+ B" X2 I1 j0 F
  13.         unsigned int        data_count;0 y- r9 P$ s6 W1 n1 S( h& Z' K' n3 v
  14. } e2prom_s_cmd;
    5 O9 ]0 m( O$ s- Y, m
  15. 7 N% d4 X  H) ~
  16. #define E2PROM_CMD_READ 1
    4 y/ [" `1 s: |: A& E* z
  17. #define E2PROM_CMD_WRITE 2$ r. c% X* Q5 E& S3 q6 K( Y5 k
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"7 B5 n: @- j# ?$ `# \
  19. + D: e, B8 k! W' R0 K8 J
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    6 @6 T6 U" N1 \8 Y$ V7 w
  21. {
    % i8 _+ n% |6 ^5 M9 S
  22.         int fd, ret;
    + ?3 _9 n0 M  B& Z
  23.         e2prom_s_cmd arg;" H  s1 J$ \. p+ N0 ~
  24.         unsigned char buf[0x18];
    ; S6 s* H+ w# ]9 }, D
  25. - U" G5 u: E% S( }* }* q
  26.         fd = open(E2PROM_DEVICE, O_RDWR);6 M1 X$ ]) ^; z; s$ H# b
  27.         if (fd  < 0) {; s/ _1 C7 Y$ K3 {4 t" W
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);4 G# t$ R# h' m( T0 L6 y7 o
  29.                 return -1;! O+ J. i* I% @/ [+ D( Y7 Y
  30.         }
    : a0 ?- m2 v$ m6 s9 `* \4 r
  31.         arg.sub_addr_count      = 2;3 r7 c" v8 T. r6 p, p6 m1 {5 Z
  32.         arg.data_count          = 0x18;9 b) T" n7 v+ ~, G3 d, k$ [, H  U
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    4 M! @. w4 F# N. d* s) t* E" `
  34.         arg.e2prom_cmd_data     = buf;
    - W! N. r# o- Z0 |- ^8 }7 B
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    % {: N& {' x# O  ^
  36.         if (ret != 0) {
    : \$ e2 @! A( |5 X9 X" y5 I7 Q" C* C
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    6 ]  v% T( p3 o3 W2 v) k
  38.                 return -1;
    " D& B0 H% J& j+ Z6 B5 P1 {/ o8 Q
  39.         }. v4 V' B; a( X
  40.         memcpy(mac, buf, 6);* K  H0 n& \, x' u
  41.         memcpy(stbid, &buf[6], 18);  C5 J) A) n' k7 O
  42.         stbid[18] = '\0';6 I( U% P7 [: i6 ^. D. N

  43.   f4 |! ?. |1 m' t8 N( L
  44.         return 0;
    4 E1 h* r: ^6 p) o
  45. }
    $ ^2 X. [+ T2 G5 R& m. w7 v
  46. " j/ o% }) t! z0 P
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)% `( t) E" _  G0 {- n1 Q
  48. {( |; D8 L3 x9 |' |$ E
  49.         int fd, ret;- {  V. H0 n5 b, v+ f# ?' k
  50.         e2prom_s_cmd arg;1 Y) U0 U7 d3 [" e* ]
  51.         unsigned char buf[0x18];2 S& K  s2 V( r. Y+ j9 E$ e- K
  52. 6 t0 a8 u) G4 B& \
  53.         memcpy(buf, mac, 6);
    8 r, }# D' P% `8 z! `1 t
  54.         memcpy(&buf[6], stbid, 18);3 Y* |1 c, M9 |: }4 z9 |5 S' m
  55.         fd = open(E2PROM_DEVICE, O_RDWR);  O* t7 t9 F% N+ _
  56.         if (fd  < 0) {( [/ ~: E& q% j) L' C# M
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    / u2 @  z" w& @% Q7 g+ }
  58.                 return -1;; y$ E8 N* B) x- v5 v" v- K% B
  59.         }
    7 S& |, h" g1 W2 r( r; }+ C# u0 _
  60.         arg.sub_addr_count      = 2;
    8 F& P" L1 f' @6 ]% l
  61.         arg.data_count          = 0x18;$ w& J+ e7 d" E; W( A/ k# V
  62.         arg.e2prom_cmd_sub_addr = 0x290;4 T0 I* K9 f# G+ T6 C2 U7 f/ v
  63.         arg.e2prom_cmd_data     = buf;5 ^7 h2 _, }, W  ^
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    . Q( m/ a* I' k; ^
  65.         if (ret != 0) {6 c" B/ H/ K3 c) j6 E, D. m* h
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    9 b# {, Q6 E/ L3 H, X0 a4 i
  67.                 return -1;, W+ \" V$ r' z: i2 L7 x- ^! h
  68.         }7 I. s0 U7 Y) ^9 c; o
  69. 8 {1 }6 b: |: f
  70.         return 0;4 g5 h; H' q; [& L" @+ j4 L
  71. }
    0 b% |8 m* S% i4 f" I

  72. : i, j# o2 ~& O
  73. int main()1 T/ l; t# r+ j" h# g
  74. {  A! X0 T* y5 f, ^! I
  75.         char c;. T8 F6 Z7 P& w4 v' g' V) i$ ~5 i
  76.         int i, macs[6];4 M1 E) P& i! `5 b+ P2 o* i
  77.         unsigned char mac[6];
    % v% a* U$ A- C
  78.         unsigned char stbid[256];& n. c7 p5 G/ u+ H

  79. $ a1 K1 u/ M$ b' g6 W6 l& Y
  80.         if (readparam(mac, stbid) < 0)
    0 Y% H0 L6 I/ g, K9 N" P
  81.                 return 1;
    , C$ t1 v: |+ c! |# t, t
  82. ; M. f- {. g, p9 m
  83.         printf("Current parameters: \n");
    3 T8 i8 {' |* R
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    1 p1 r- ]0 Q4 @6 r# Q- h
  85.         printf("  STBID: %s\n", stbid);/ ~0 X- I# ~5 a6 p, e$ v
  86.         8 E. m$ \+ s5 x' w
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");# f4 y; v) z0 ^% s) {- g
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {* H* M1 |( R$ h; G& Q# x. d
  89.                 printf("Input MAC error\n");, O' W$ I- C* L3 F4 t9 b7 d( t: L
  90.                 return 1;
    / b6 [8 J& q: M# ]9 L) q* g* y
  91.         }* Z. u5 M- r# j! |1 N! E
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    4 i" f, o! V1 n  J: _  H- E  G
  93.         printf("\nPlease input new STBID: ");  w& G  x3 y3 j. n" K4 {$ ^6 V8 m
  94.         scanf("%s", stbid);7 B4 x' _- Y) Q6 W2 [: m8 [
  95.         if (strlen(stbid) != 18) {  n, i3 o) d' z; V# ~* p( m
  96.                 printf("Invalid stbid\n");
    ) F3 M* P7 l5 T' J& P* a
  97.                 return 1;4 F* U3 }! ?3 d
  98.         }! M% [9 W, z; ~/ m  D7 ~' W
  99.         printf("\nNew parameters: \n");
    9 g9 i7 Q$ {7 G3 I
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    1 ?- O  g; w# r% M$ v+ z7 l
  101.         printf("  STBID: %s\n", stbid);5 w8 A& ]8 w& b; Y2 h/ Z
  102. # k4 H- N  x0 P6 c1 T  g( [  Y
  103.         printf("\nDo you want to change paramemters? (y/N) ");' _" [$ K/ f$ B
  104.         for (;;) {, K$ D% c: W8 `
  105.                 c = getchar();1 ]! @2 j- V1 {
  106.                 if (c == 'y' || c == 'Y'): H% F1 `( ^/ {1 ~; E, e- n
  107.                         break;' `' k" |* o( S
  108.                 if (c == 'n' || c == 'N') {
    7 Z- X9 ^% m& H+ \. z% |: k
  109.                         printf("\nAborted.\n");+ Z& @" v6 X- K/ ]3 i3 r
  110.                         return 1;
    ; D  Z' a: u: a$ J+ ~& m4 ?, Z" [
  111.                 }4 P% \4 Z3 {6 X9 e; P
  112.         }+ e, u( E  y8 O  n! S9 R& i
  113.         if (writeparam(mac, stbid) == 0) 0 G0 B2 e! }& H
  114.                 printf("Parameters changed.\n");5 x) i) n* V9 |0 G

  115. 4 o* L3 ]" h# _* m3 r2 j
  116.         return 0;7 Q0 w1 q/ k( K4 J+ Q1 h" P
  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
" a! r4 K. X8 _( f$ a# t在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
$ e; C  e1 x) u- H% k
你用的编译命令行格式是什么?
" K: R& V; @# H* m6 W' T
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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