查看: 16857|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr6 g: b4 x: Q! {
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig; V5 b  M8 [( V" S$ C7 T% s4 ^4 U
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
- `* v$ w' ]! _9 B$ q/ vusage: himr <address> <value>. sample: himr 0x80040000 0x0
4 d0 c: {: S# _! o- _; U
9 d6 x0 v1 b& ^
3 }6 Z. i3 y% I( y1 [& i4 Q2 ~2 c不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
  Q0 b. Y- p+ I. H! ~6 _) Y" o/ i
补充内容 (2012-3-8 09:42):  z$ H/ J2 R: P6 J
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
& s" e% T/ U# a! x& x/ i9 \% c+ N这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
- I! L4 B: p% n* B9 E; Q8 K
2 G3 s* z5 P( n1 r# Q  n$ P- a; jhimr <address> <value>. sample: himr 0x80040000 0x0
0 a4 Q1 H; s1 q# ]9 J: R, E: I3 Y4 k. a. r5 w" D8 [5 t
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。% ?$ J  ]' T1 Z4 \$ W7 J
himr 0x80040000 0x000 x; S: l2 I$ f+ i$ q! d0 k
himr 0x80040001 0x11
; C# A* t) F( T; Vhimr 0x80040002 0x22; M# J/ Y, X4 R
himr 0x80040003 0x332 n0 g9 B  w3 ~% A
himr 0x80040004 0x44+ G% d2 |: E. N1 H! k' I7 u5 V
himr 0x80040005 0x55
% `( k4 e/ v/ `; {8 |  _/ E* e
0 [, c$ T; j) i" D4 J' VSN也是类似。/ {1 G, b+ O/ L8 T9 `) w; ~% R# J5 G

$ S/ q0 Q, A8 ~' g. _5 u+ ]4 U现在主要是,谁告诉我们MAC和SN的地址?
$ N1 R& H: S. W+ n- N
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
8 h6 _9 ]& }3 u( R6 N一直想找到运程修改MAC和SN的办法,苦于无解啊
2 E% C. `! R0 d! X) x
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 5 E, ~) w9 K! w5 b: n% E
' f+ m4 D! q4 L2 k& {( ~: O
修改的代码早有了。到今天不会编译。# V9 X) ^2 y- k- U0 b
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>( |- w6 m+ y( ~* w3 j& r+ j
  2. #include <malloc.h>
    7 w/ e& g; V! u3 t: b( a6 \% A
  3. #include <sys/types.h>  `0 w* i+ B. n
  4. #include <sys/stat.h>
    ! h  @+ \% x# k- B3 P
  5. #include <sys/ioctl.h>, [* X7 V8 v8 t& y4 }
  6. #include <stdio.h>0 J; q0 f6 W! u6 b; y9 ~" m
  7. #include <string.h>- y( Q3 E5 O/ P
  8. % t+ p  t4 }7 ~, {# e7 R. k
  9. typedef struct {
    + J: L$ F* z6 s& y  R2 a8 L
  10.         unsigned int        e2prom_cmd_sub_addr;
    . X8 \; b- b! f0 o# D
  11.         unsigned int        sub_addr_count;! c1 l4 s, }2 U8 |& B3 i. b" H
  12.         unsigned char*        e2prom_cmd_data;/ i$ {6 T  N! p- S+ n% v
  13.         unsigned int        data_count;
    ( J( d1 j/ q9 I. i
  14. } e2prom_s_cmd;
    ( `% B4 B; z& B8 A
  15. 5 S; A% d( }- Z" F  `5 a) V
  16. #define E2PROM_CMD_READ 1
    + |' q! M& ^/ Z% K  Z5 i! {
  17. #define E2PROM_CMD_WRITE 26 V9 Q/ V, l& }
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    7 m0 n4 u; R' d% e; x$ x

  19. 5 K- U4 Y- Y' B  a" D
  20. static int readparam(unsigned char *mac, unsigned char *stbid)5 Z# J4 b% o) j( \8 K2 S5 p7 ?) j' n9 j
  21. {
    . U3 J1 H/ c: r
  22.         int fd, ret;* b' v: j/ b& V, V/ J
  23.         e2prom_s_cmd arg;
    9 j. [% g" P; r3 X! J, w# d
  24.         unsigned char buf[0x18];- K$ K3 j/ \1 _) {9 x- d9 {: m" W* e
  25. 0 _, p1 t# {( W: |
  26.         fd = open(E2PROM_DEVICE, O_RDWR);/ K4 G/ m! n) E: [; R1 m% T# V$ n
  27.         if (fd  < 0) {
    2 Q# X) S; v3 z0 G2 O
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ( k* i  x4 d2 R' F2 j
  29.                 return -1;$ T. w9 x9 Q% G- Z% w
  30.         }# T; p3 q7 x0 |2 S& G/ e
  31.         arg.sub_addr_count      = 2;
    % e2 j% m. P  w, Q. L
  32.         arg.data_count          = 0x18;
    # V- Y) Z& F, p5 w2 m5 L
  33.         arg.e2prom_cmd_sub_addr = 0x290;9 d' T$ I$ K; ?$ w, f" o7 F
  34.         arg.e2prom_cmd_data     = buf;4 k, a+ U: U9 r
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    + ^( v: |) x' `' |" S
  36.         if (ret != 0) {/ I) N& E8 H) Q# L- [# P7 _& Z) S
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    . F; n5 a6 y7 L& D- r( G
  38.                 return -1;3 p% [" B' r6 }1 A# s
  39.         }/ x3 x# G& Y' Y& J6 t
  40.         memcpy(mac, buf, 6);
    * m1 G: _2 _% i( }- I6 r, b
  41.         memcpy(stbid, &buf[6], 18);
    5 Q$ V8 Q& @: X
  42.         stbid[18] = '\0';- i, f; w3 d% ]  D
  43. 5 [& l, V, @" c! \9 |8 C# T# V$ `+ x
  44.         return 0;
    , a: f  ~3 ]( n; r/ v# x% B1 ]+ Y
  45. }- ?  T$ m, ]% S

  46. 0 J( \$ u, @8 K) i# S5 o
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    # F- u  F0 \7 @0 v% x: |
  48. {
    5 ]& X$ w2 X! O
  49.         int fd, ret;
    4 q0 G* Y0 Y/ D* m3 p
  50.         e2prom_s_cmd arg;
    4 Z& j  N& F9 B
  51.         unsigned char buf[0x18];
    % ~4 d- Y# S6 {; r# g
  52. $ X2 I! x5 c. T; L
  53.         memcpy(buf, mac, 6);
    % G. I- ^2 `8 W% \5 @# z# o, C
  54.         memcpy(&buf[6], stbid, 18);
    9 A" G! c8 W8 K1 o0 g# w2 @4 p0 d
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    0 `% y1 ~* Y( ~, C
  56.         if (fd  < 0) {
    ) h7 I! L9 ~0 V  Q5 G! J, e
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    5 j/ ~7 P3 n2 k! T2 s, U: F
  58.                 return -1;
    6 o" I& r9 P8 J8 v
  59.         }
    2 C+ u8 s* a' ?! w
  60.         arg.sub_addr_count      = 2;
    5 c2 k" L! k6 q* T$ k
  61.         arg.data_count          = 0x18;
    " i; M! z0 e, k
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    / q) q( F0 R' Q& m* E
  63.         arg.e2prom_cmd_data     = buf;9 y7 F, u( X1 \0 w! y7 U5 t0 c: W
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    5 C" ]$ c9 T$ r( \
  65.         if (ret != 0) {) D$ D# i  ^9 k% z+ W$ e, f
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    8 ]( i5 y- O$ x' x: ^( x
  67.                 return -1;9 X4 r% J" t9 w0 w' }
  68.         }
    8 ?$ Z6 l6 m0 ~
  69. ) A- V4 \7 U: S1 K/ g9 ]
  70.         return 0;; [$ h1 ?* v2 F7 a; w% q
  71. }  }& [4 d0 y" n. o: t" {

  72. 5 ~% r: M: {) q3 Q+ D- n
  73. int main()
    : n" u5 |5 f; U3 Z# C( h
  74. {
    4 X5 Y: V3 D* M" E- v* B# w# \
  75.         char c;" K8 k. s# v# a/ m2 O
  76.         int i, macs[6];' `9 L2 J' \  z
  77.         unsigned char mac[6];& W7 D% t6 |1 d! m$ X6 s6 m
  78.         unsigned char stbid[256];
    , Z% d* t3 {( l8 ~

  79. ) L7 Z4 O& v6 L) j, Z
  80.         if (readparam(mac, stbid) < 0)
    4 I, ^$ Q) g4 x4 M$ D
  81.                 return 1;
    & M" t" ^  g0 o$ \+ d
  82. + V. a# ?) C9 O4 ~! ?
  83.         printf("Current parameters: \n");
    9 f  F7 M- V6 h6 x) a
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    # d! ~. G9 F4 L. w. E
  85.         printf("  STBID: %s\n", stbid);
    9 g4 t+ N5 ^2 N5 h1 w( J
  86.        
    & y* S; L' s8 u/ I) L3 N
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");5 Z  I9 v2 t; M* W  \
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {/ D3 \2 {8 y: y$ h4 G; {
  89.                 printf("Input MAC error\n");
    ; ?* P3 P8 A- p0 d. K. ~& V
  90.                 return 1;
      l- }  Q2 H) H' f/ f' k# k+ ^
  91.         }
    1 g* c- b8 U! {4 v
  92.         for (i=0; i<6; i++)mac[i] = macs[i];% O% ]/ C* {4 m1 r7 _! Q2 r
  93.         printf("\nPlease input new STBID: ");
    + M* T; m3 @  ~% Q1 C
  94.         scanf("%s", stbid);* D& p7 X* K0 i: y  C: S4 [. n& r
  95.         if (strlen(stbid) != 18) {
    # ], W: \" ]# @$ u. \! {2 B4 H0 T
  96.                 printf("Invalid stbid\n");( s; ^8 [# s' Z' i6 {0 `) h1 V
  97.                 return 1;* B' I6 _9 y( ?% l
  98.         }
    8 N) g1 I2 t) Y2 Z5 m3 i  d
  99.         printf("\nNew parameters: \n");4 X. e9 K( c% F# |; T+ d( d* y/ ^
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    9 D: p$ p1 ~# y+ E" u7 r( p: i
  101.         printf("  STBID: %s\n", stbid);. u- t$ M: l* }8 N
  102. * F$ q: I6 h! _
  103.         printf("\nDo you want to change paramemters? (y/N) ");) U6 I* W( ~9 A  w) {% M
  104.         for (;;) {7 |9 B6 p0 g/ C- d5 D, t
  105.                 c = getchar();
    & u* K( h: m) q! l  Z+ `
  106.                 if (c == 'y' || c == 'Y')# `/ k% Z: z& ~# s
  107.                         break;
    4 `/ K; k* w/ ~; f
  108.                 if (c == 'n' || c == 'N') {- i6 r! _) o- b3 L$ d- Q- ]
  109.                         printf("\nAborted.\n");
    7 L% k$ j3 V- N) H! B. G
  110.                         return 1;6 L9 n, e  Q! \% K5 H
  111.                 }  I# G9 H6 g  }: W% f) H5 M: F/ B
  112.         }- p  T- C; p6 U# x' t4 b% R
  113.         if (writeparam(mac, stbid) == 0) . ?, [# \. U$ k& Y3 E) E- v0 e
  114.                 printf("Parameters changed.\n");2 F* j' ~3 q# e5 t0 A/ g5 C5 p# p: \
  115. ' N( h7 \: v& V0 g4 D& A
  116.         return 0;$ @: m& t3 n& H( y  t  ]4 m
  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
$ C( G$ v2 f/ h, d4 Z在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

$ F% E9 S" X' d你用的编译命令行格式是什么?% S' B+ P/ M; b+ J  ^. U
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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