查看: 16674|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    - U* [; H' t& E, C$ I
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ; L  z( z+ c! L3 c1 G, z; k
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:: r) @: }4 |$ S
usage: himr <address> <value>. sample: himr 0x80040000 0x0
  d9 v* F& ?* j1 }3 }
. Y% {2 w' p# }1 j1 l+ K  ~, y
, h1 x* D& ^. t% F# u# G2 X& ?不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
$ U" b' n' c. b. u! n0 U
# {7 [% c( M# ]4 B7 k/ @5 A, E补充内容 (2012-3-8 09:42):3 q! J2 b( S1 Q0 L* Y
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数- k5 A5 X! H' i& o9 k
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。6 \! t& h% l! K. k. }+ N

( ]! |1 \  {# k. \7 C% xhimr <address> <value>. sample: himr 0x80040000 0x0* X( I# v0 y$ Z* C0 H

5 |/ p; t6 {% G; Q  `- ]例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
2 I1 f" m- f. B# q9 n  `himr 0x80040000 0x00% _# S+ {* s8 B4 u9 b
himr 0x80040001 0x11( \4 R6 z/ }' D$ S6 Q
himr 0x80040002 0x22
1 e- y! ]1 {& C. b. F4 `* ihimr 0x80040003 0x33# W) e: M( Y9 y( B# ~4 C( s
himr 0x80040004 0x44( U5 K: H" E. @3 g* X
himr 0x80040005 0x55) W) z  m1 `; T% Z$ w( [4 q: t

0 F( y/ z: L3 YSN也是类似。
  w0 u$ }- A1 M0 p, G  i' a6 H2 d# T% M* _! e8 }: P
现在主要是,谁告诉我们MAC和SN的地址?6 d7 ^6 a  \$ |% R" b4 K: o4 W
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
' }* }% f" D8 Y- \# r一直想找到运程修改MAC和SN的办法,苦于无解啊

4 d7 v( E; u# n, V  y$ q% L0 @源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
; G( y8 @* x$ r& W) b5 F/ l
( O8 i) {4 q, T4 R: z9 V/ ^修改的代码早有了。到今天不会编译。1 e6 o7 D+ ^' V
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ; E; j2 g. K5 N
  2. #include <malloc.h>
    + A% _: x4 v$ T- ]& r
  3. #include <sys/types.h>, v& a; J) h+ O4 r7 |  d
  4. #include <sys/stat.h>9 W* z$ ~# L6 e$ w
  5. #include <sys/ioctl.h>& ?# ^1 w: W. L1 g
  6. #include <stdio.h>. T6 d& P: |! @5 _2 p4 N- R
  7. #include <string.h>
    ; |& A' {! P! [" \- D
  8. 1 ]0 {' p; j6 G" Y4 t4 G- ?( U
  9. typedef struct {* W! G! S1 R3 y! C3 ^
  10.         unsigned int        e2prom_cmd_sub_addr;
    * Z! E) a' x9 r' T2 n7 W- ?' K
  11.         unsigned int        sub_addr_count;2 r* O' n" Z' V% [# o1 ~# O4 T
  12.         unsigned char*        e2prom_cmd_data;
    * E0 K" }+ ^8 r
  13.         unsigned int        data_count;; m% p8 _. |' j: Q- Q( V
  14. } e2prom_s_cmd;
    ( a0 U3 v1 T& m4 t4 P6 K

  15. 4 h9 U. Y! s2 n" c8 C* p6 T
  16. #define E2PROM_CMD_READ 1
    $ \. n: @! y0 L; k8 c  ^
  17. #define E2PROM_CMD_WRITE 27 E: C/ I8 x( |6 |% v$ [1 W
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    4 ?5 ]7 |) f4 ]  Q

  19. . Z* z7 b/ I3 u7 e5 r$ t6 `
  20. static int readparam(unsigned char *mac, unsigned char *stbid)* r, C; M& P, m' H
  21. {
    % i& |8 f! G: [$ A' g
  22.         int fd, ret;
    : X# x0 E( ~" C6 ]0 I+ t# a
  23.         e2prom_s_cmd arg;
    . [* h4 z/ _" K- {% Y3 |1 U
  24.         unsigned char buf[0x18];
    7 `4 p/ E" z' F% m' U: ~! E

  25. & B( y4 Z; J; d) u% l# l
  26.         fd = open(E2PROM_DEVICE, O_RDWR);# v7 R' |/ D( z3 Z2 n* a1 _
  27.         if (fd  < 0) {6 Q/ J3 t6 y9 i, V$ b& H
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    7 v+ h- o3 w, x# J1 _
  29.                 return -1;
    # H  \0 F8 q8 m( x$ `. m: l9 v: r
  30.         }
    - Z+ O+ P( L, C% {  Z
  31.         arg.sub_addr_count      = 2;
    % T) T4 \' a3 P# M9 s1 q4 e
  32.         arg.data_count          = 0x18;
    % B5 J8 s- A+ [/ a
  33.         arg.e2prom_cmd_sub_addr = 0x290;3 }6 R8 r8 t# w; d( ^- G
  34.         arg.e2prom_cmd_data     = buf;
    8 Z8 O. j3 ]3 Q0 b
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    2 t9 z8 v1 f4 e' v# v& @3 \
  36.         if (ret != 0) {
    $ C  m/ u2 p( E3 C: v% Q
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    & d$ z6 y, E2 o+ M
  38.                 return -1;
    3 B' B. z+ K$ m+ H0 ^
  39.         }
    5 N3 c8 O0 n  F2 l' h
  40.         memcpy(mac, buf, 6);. k5 Z' N% x( T1 {, \
  41.         memcpy(stbid, &buf[6], 18);- Z6 ]& ^7 M) z' ^( O
  42.         stbid[18] = '\0';
    : V# m/ c0 b$ W

  43. : i2 I7 z. s5 q: P* ~6 `
  44.         return 0;* u% V1 l# C! l6 T
  45. }
    ; f" j5 F0 w9 l9 r+ Q! u

  46. 7 E; u/ y$ Z! c# i
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    , r: e( {! S9 o7 D$ k" f
  48. {2 u  F) |+ r6 |. s2 R9 j
  49.         int fd, ret;
    9 m% G6 w- K  {% a! N) J! [
  50.         e2prom_s_cmd arg;
    , N3 U! c: f- k, z6 A/ T
  51.         unsigned char buf[0x18];' M3 s/ t) z1 W* r
  52. 6 R: V* J5 c' |. {% c& e0 ~; z
  53.         memcpy(buf, mac, 6);
    * m9 S0 y0 N8 y
  54.         memcpy(&buf[6], stbid, 18);
    6 C7 B: G5 V" t1 |
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ) q* N+ ]( `. s  |: k- q
  56.         if (fd  < 0) {' B1 N6 D) S2 f& {+ |6 V8 [; Q, p
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    / Y6 b' X/ q! V% |/ K8 h, K
  58.                 return -1;+ ~* U( D* V0 e& n% F
  59.         }
    1 v8 j% {) M; U. W$ I& _
  60.         arg.sub_addr_count      = 2;3 P) Y6 w8 `  g, B/ L% T: a- D
  61.         arg.data_count          = 0x18;
    7 R: Q" G/ H7 i# |: I
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ; f2 O1 J0 b3 \- e+ N" I% l
  63.         arg.e2prom_cmd_data     = buf;
    : R9 V: B+ [) G% y* g; Z8 E4 g
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    . `- U3 [5 Y( t
  65.         if (ret != 0) {4 A  q* C5 C! _! n$ T  {; n$ l
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);- B: I5 l) H# t/ m/ _* {
  67.                 return -1;1 o; N, c( ?) x. Q3 G9 C! j8 l" f+ Z
  68.         }
    7 R+ Y  N) G* ~: n, S+ z& o
  69. ! R) y# Q; m; E* Y/ u8 l, W: r* D
  70.         return 0;1 [' X. N7 e8 a4 V* n& _9 j! O
  71. }
    * ?. v8 m* c' E* y& y

  72. $ ?9 H8 n4 }7 z8 a2 v0 {0 |" l
  73. int main()9 H9 n8 ]3 c5 R  G" C9 U9 \
  74. {. t4 a5 e' P3 N; Z- Y& `; e
  75.         char c;( B! D( @4 v" A# t% M; N. y
  76.         int i, macs[6];2 Z* K5 `' ^0 l* V% S# Y
  77.         unsigned char mac[6];
    % m9 l# P) a: d) r
  78.         unsigned char stbid[256];
    : }8 w* E% A2 e8 s* G! E. T' X9 D& Q

  79. ' c$ y0 s. X3 q) U
  80.         if (readparam(mac, stbid) < 0); e* A4 X9 a+ d9 T, W: \
  81.                 return 1;! h8 P: d9 X' @5 Z; I. b
  82. , B' U4 ?  |% C. h( W: n  e
  83.         printf("Current parameters: \n");
    8 j% K2 L; p! ]
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);$ j" H% }( y- z& p
  85.         printf("  STBID: %s\n", stbid);
    0 o; l5 t# X" n/ ], t/ G  r1 ^1 C) I
  86.         3 [' z4 t) {& a7 y) e  ~6 _  I2 ~
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    3 u2 h. p: g/ U1 N: i' Z1 H
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ; v) y# O2 [5 I
  89.                 printf("Input MAC error\n");7 f- i& Z8 N; a# R3 c# c, r6 x
  90.                 return 1;
    ' B9 P+ x, Q1 `! N
  91.         }5 @: R1 {0 l: a8 b( `! ~
  92.         for (i=0; i<6; i++)mac[i] = macs[i];2 H5 ~" y. l4 H: W$ P6 c
  93.         printf("\nPlease input new STBID: ");
    # ^: }# v, x7 F3 z
  94.         scanf("%s", stbid);, R! B) H. k3 e1 {0 v* J* n3 U
  95.         if (strlen(stbid) != 18) {% U! ?6 `7 P+ @# d: A. s2 X
  96.                 printf("Invalid stbid\n");9 F/ t6 e4 J8 P. [2 D, R
  97.                 return 1;
    3 m" B2 B" Y0 \
  98.         }# I, |# d6 ^% x0 d, J+ v
  99.         printf("\nNew parameters: \n");1 t+ k% M* y  L* Z& S. Y
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    + d5 @+ |! I  {( [% O2 r0 d$ {" y
  101.         printf("  STBID: %s\n", stbid);% g2 ?' H3 i  c: V% j; B; U
  102.   D/ W6 y. ?6 U6 ^8 K/ k7 R
  103.         printf("\nDo you want to change paramemters? (y/N) ");3 W. t& @" @: m4 O4 E
  104.         for (;;) {
    6 I' t3 h+ I; D, I$ Z, H! u$ Y
  105.                 c = getchar();
    4 ?9 L. O1 z+ a% F
  106.                 if (c == 'y' || c == 'Y')+ L' G5 x. Q/ R
  107.                         break;. W7 \/ o( F8 S% U
  108.                 if (c == 'n' || c == 'N') {7 G4 x% W9 _/ K2 c( g$ Q
  109.                         printf("\nAborted.\n");! {* a. m5 {) X2 A! {
  110.                         return 1;* {$ R+ g5 ~; P$ i
  111.                 }
    2 ^6 G( L3 m. u5 m. E
  112.         }
    : C: A* T3 b4 s' K. F/ d) u  h
  113.         if (writeparam(mac, stbid) == 0) & r5 J- y. f0 y  q
  114.                 printf("Parameters changed.\n");  o0 b. A* N! {0 [6 ^

  115. # ^: u2 P9 e8 o4 E: I6 j4 k
  116.         return 0;
    * j3 l- v0 E3 e# Y& h( x: `
  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 : c2 l2 b0 W4 k! M8 q9 V+ h
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
8 q% T: F2 a/ {- o' k( T
你用的编译命令行格式是什么?
* y+ M- h" y2 ^1 u0 i
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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